一,神器nmap
nmap又称为诸神之眼,是一款功能强大的开源网络扫描和安全审计工具,最初由 Gordon Lyon(Fyodor)开发。它被广泛用于网络发现、端口扫描、操作系统识别、服务版本检测以及漏洞扫描等任务。Nmap 支持多种扫描技术,能够高效地探测目标网络中的主机和服务,是网络管理员、安全工程师和渗透测试人员的必备工具之一。
Nmap 的主要功能
- 主机发现
- 检测网络中存活的主机,支持 ICMP、TCP SYN、UDP 等多种探测方式。
- 可通过子网掩码或 IP 范围扫描整个网络。
- 端口扫描
- 支持 TCP SYN、TCP Connect、UDP、FIN、Xmas 等多种扫描技术。
- 可扫描单个端口、端口范围或全部 65535 个端口。
- 服务/版本检测
- 识别目标主机上运行的开放端口及其对应的服务和版本信息。
- 操作系统识别
- 通过分析 TCP/IP 协议栈指纹,推断目标主机的操作系统类型和版本。
- 脚本扫描
- 使用 Nmap 脚本引擎(NSE)执行自定义脚本,实现更高级的扫描功能,如漏洞利用、Web 应用检测等。
- 输出格式
- 支持多种输出格式,包括普通文本、XML、JSON、grepable 等,便于与其他工具集成。
基本扫描命令
扫描单个主机器默认1000个端口
nmap 主机ip
示例:
检测目标主机是否在线:
nmap -sn <目标IP或域名>
- 参数
-p <端口范围>
:指定扫描的端口范围。
-p-
:扫描所有65535个端口。超级漫长-sV
:服务版本检测。功能:识别开放端口上运行的服务及其版本-O
:操作系统检测。 功能:识别目标主机的操作系统类型和版本。--script=default
:运行默认脚本。功能:使用Nmap脚本引擎(NSE)进行高级扫描。-
--script=vuln
:运行漏洞检测脚本。功能同上
防火墙/IDS规避
- 功能:绕过防火墙或入侵检测系统(IDS)。
- 常用选项:
-f
:将数据包分片,以避免被简单防火墙检测。--mtu <大小>
:指定数据包的最大传输单元(MTU)。--data-length <长度>
:在数据包中添加随机数据。
输出格式
- 功能:将扫描结果保存到文件。
- 常用选项:
-oN <文件名>
:保存为普通文本格式。-oX <文件名>
:保存为XML格式。-oG <文件名>
:保存为grepable格式。
常用扫描类型
选项 | 描述 |
---|---|
-sS | TCP SYN扫描(半开放扫描,快速且隐蔽)。 |
-sT | TCP连接扫描(完整建立连接,适用于防火墙限制SYN扫描的情况)。 |
-sU | UDP扫描(检测开放的UDP端口)。 |
-sA | ACK扫描(用于防火墙规则检测)。 |
-sW | Window扫描(类似于ACK扫描,但更隐蔽)。 |
-sN | NULL扫描(不发送任何标志位)。 |
-sF | FIN扫描(发送FIN标志位)。 |
-sX | XMAS扫描(发送FIN、URG、PSH标志位)。 |
Nmap 常用命令和选项汇总表
功能分类 | 命令/选项 | 描述 |
---|---|---|
基本扫描 | nmap <目标IP> | 扫描目标主机的常用端口(默认 1000 个端口)。 |
nmap 192.168.1.0/24 | 扫描整个子网。 | |
端口扫描 | -p <端口> | 指定扫描的端口,例如 -p 80,443 。 |
-p- | 扫描所有 65535 个端口。 | |
-F | 快速扫描(仅扫描常用端口)。 | |
扫描技术 | -sS | TCP SYN 扫描(默认,快速且隐蔽)。 |
-sT | TCP Connect 扫描(完整连接,较慢但无权限要求)。 | |
-sU | UDP 扫描。 | |
-sA | ACK 扫描(用于防火墙探测)。 | |
服务/版本检测 | -sV | 检测开放端口上的服务版本信息。 |
操作系统检测 | -O | 识别目标主机的操作系统类型和版本。 |
主机发现 | -sn | 仅执行主机发现,不进行端口扫描。 |
NSE 脚本扫描 | --script=<脚本名> | 执行特定 NSE 脚本,例如 --script=smb-vuln-ms17-010 。 |
--script-help=<脚本名> | 查看特定脚本的帮助信息。 | |
输出格式 | -oN <文件名> | 将结果保存为普通文本格式。 |
-oX <文件名> | 将结果保存为 XML 格式。 | |
-oG <文件名> | 将结果保存为 grepable 格式(便于使用 grep 搜索)。 | |
绕过防火墙 | -f | 分片数据包,绕过简单防火墙。 |
--mtu <大小> | 指定数据包的最大传输单元(MTU),例如 --mtu 24 。 | |
其他选项 | -v | 增加详细输出(verbose)。 |
-d | 增加调试信息输出。 | |
--reason | 显示端口状态的原因(例如,closed、filtered)。 |
常用扫描组合(也是zenmap选项)
第一种:Intense scan
(nmap -T4-A -v)
一般来说,Intense scan可以满足一般扫描
-T4加快执行速度, 范围(0-5) (higher is faster).
-A操作系统及版本探测
-v显示详细的输出
第二种:Intense scan plus UDP.
(nmap -sS-sU -T4 -A -v).
即 UDP 扫描
-sS
TCP SYN 扫描
-sU UDP扫描
第三种:Intense scan,all TCP ports.
(nmap -p 1-65536-T4-A-v)
扫描所有端口,范围在1-65535,试图扫描所有端口的开放情况,速度比较慢。
p指定端口扫描范围
第四种:Intense scan,no ping.
(nmap -T4 -A-v -Pn).
非 ping 扫描
-Pn非ping 扫描
第五种:Ping scan
(nmap -sn).
Ping扫描
优点:速度快。
缺点:容易被防火墙屏蔽,导致无扫描结果
-sn ping 扫描
第六种:Quick scan
(nmap -T4 -F).
快速的扫描
-F快速模式
第七种:Quick scan plus.
(nmap-sV -T4 -O -F --version-light).
快速扫描加强模式
-sV探测端口及版本服务信息。·
-0开启服务器版本检测·
--version-light 设定侦测等级为2。
·
第八种:Quick traceroute
(nmap -sn -traceroute).
路由跟踪
-sn Ping扫描,关闭端口扫描
-traceroute显示本机到目标的路由节点。。
第九种:Regular scan
常规扫描·
第十种:Slow comprehensive scan
(nmap-sS-sU -T4 -A-v-PE -PP -PS80,443,-PA3389,PU40125-PY-g 53--script all).
慢速全面扫描
-PY简单的控制传输协议
-g指定源端口号。
NMAP防火墙
端口的状态:.
open,端口开放;
filtered,端口被防火墙或安全软件阻止了,也可能是网络堵塞;
closed,端口关闭。
-PS选项来实施TCP SYNping可绕过防火墙
-PA这种类型的扫描将只会扫描ACK包,可绕过防火墙
-PU扫描只会对目标进行udpping扫描。这种类型的扫描会发送UDP包来获取一个响应,可绕过防火
墙·
-PP选项进行一个ICMP时间戳ping扫描,可绕过防火墙
-PE参数进行一个IEMP(Internet控制报文协议)在指定的系统上输出ping,可绕防火墙
-Pn不采用ping方式进行扫描,可绕过防火墙。。
-sA用于发现防火墙规则,比如扫到的端口是过滤的,那么可以使用这个参数进行绕过。
NMAP脚本渗透测试
在Nmap安装目录下的scripts目录里存放了许多以".nse”后缀结尾的文本文件,这些就是Nmap
自带的脚本引擎。使用NmapScript时,需要添加参数“--script 脚本名称”。脚本路径在nmap/scripts
核心功能与命令
功能分类 | 脚本示例 | 命令示例 | 说明 |
---|---|---|---|
漏洞扫描 | vuln 类别脚本 | nmap -sV --script=vuln 192.168.1.100 | 扫描目标服务版本并检测CVE漏洞(如MS17-010、Log4j2等)。 |
弱口令探测 | http-form-brute | nmap -p 80 --script=http-form-brute --script-args='http-form-brute.path=/login' 192.168.1.100 | 对Web表单进行暴力破解,需指定登录路径及字典文件。 |
信息收集 | http-title 、ssh-hostkey | nmap -sV --script=banner,http-title,ssh-hostkey 192.168.1.100 | 提取目标服务Banner、Web标题、SSH密钥等信息。 |
暴力破解 | mysql-brute | nmap -p 3306 --script=mysql-brute --script-args='userdb=users.txt,passdb=passwords.txt' 192.168.1.100 | 针对MySQL服务进行用户名和密码爆破。 |
漏洞利用 | http-vuln-cve2021-44228 | nmap -p 80 --script=http-vuln-cve2021-44228 192.168.1.100 | 检测目标是否存在Log4j2远程代码执行漏洞。 |
主机发现 | arp-scan 、icmp-ping | nmap -sn --script=arp-scan 192.168.1.0/24 | 扫描局域网内活跃主机,结合ARP和ICMP协议。 |
服务枚举 | smb-enum-shares | nmap -p 445 --script=smb-enum-shares 192.168.1.100 | 枚举SMB共享目录,发现敏感文件或配置。 |
默认凭证检测 | http-default-accounts | nmap -p 8080 --script=http-default-accounts 192.168.1.100 | 检测Web服务(如Tomcat、Jenkins)的默认用户名和密码。 |
脚本分类与调用
NMAP脚本按功能分为以下类别,可通过--script
参数调用:具体可以去nmap官网查看http://nmap.org
类别 | 说明 |
---|---|
auth | 绕过认证机制(如SSH、FTP弱口令)。 |
broadcast | 在局域网内探测DHCP、DNS等服务。 |
brute | 暴力破解(如HTTP表单、数据库密码)。 |
default | 默认脚本集合(等价于-sC )。 |
discovery | 网络服务枚举(如SNMP查询、SMB枚举)。 |
dos | 拒绝服务攻击测试(需授权)。 |
exploit | 已知漏洞利用(如Shellshock、Struts2 RCE)。 |
fuzzer | 模糊测试(发送畸形数据包探测漏洞)。 |
intrusive | 高风险脚本(可能触发IDS/IPS或导致系统崩溃)。 |
malware | 检测后门、病毒或恶意软件。 |
safe | 低风险脚本(适合生产环境)。 |
version | 增强服务版本检测。 |
vuln | 漏洞扫描(如CVE、MS Bulletin)。 |
实战:
快速扫描已授权单位ip常用端口并识别系统类型并保存在can文件中
2,随机扫描+延时扫描达到隐藏自己的效果
完结撒花~