NMAP 扫描
-sT
— TCP connect 扫描 使用操作系统的 connect() 建立完整 TCP 连接(非特权用户可用)。容易被检测/记录,但兼容性最好。-sS
— SYN(半开)扫描(又称 stealth) 发送 SYN 后根据返回包判断端口状态(不完成三次握手)。需要 root/管理员权限,速度快、噪声较低,常用。-sA
— ACK 扫描 用于判断防火墙/过滤器的规则(映射出 filter/filtered vs unfiltered),不是端口开放性探测的首选,但对防火墙行为分析很有用。-sU
— UDP 扫描 探测 UDP 端口(速度慢、误报多、容易被丢弃/限速)。通常与 TCP 扫描结合:-sS -sU
。-sR
— RPC 扫描(历史选项) 探测 RPC 服务/接口(有些版本中已不常用或被替代);对 RPC-heavy 环境有帮助。-sP
— Ping 扫描(主机发现)(旧选项,现代等同-sn
) 只做主机存活探测,不做端口扫描。现在推荐用-sn
(Disable Port Scan:-sn
)。
常用补充选项
-p
指定端口或端口范围:-p 1-65535
、-p 80,443,8080
。-sV
服务/版本探测(探测服务并尝试识别版本)。-O
操作系统检测(需要 root 权限,可能不准确)。-A
等于启用-sV -O --script=default
(激进检测,输出信息多)。-Pn
跳过主机发现(把目标当作存活主机进行扫描)。-T0..T5
时间模板(速度/隐蔽性):T0
最慢最隐蔽,T5
最快最吵。--script
/-sC
使用 NSE 脚本(做漏洞/服务检查),如--script vuln
。输出:
-oN
(普通)、-oX
(XML)、-oG
(Grepable)、-oA <base>
(三种都保存)。--open
只显示被判定为 open 的端口。--reason
显示 nmap 判断的原因(返回包类型)。
常见命令示例
最常见的快速 SYN 扫描并做版本探测(需要 root):
sudo nmap -sS -sV -p 1-1000 -T4 target.com
TCP connect(非 root):
nmap -sT -p 22,80,443 target_ip
UDP 扫描(慢,通常与小端口范围一起):
sudo nmap -sU -p 53,161,123 target_ip
主机存活探测(不做端口扫描):
nmap -sn 192.168.1.0/24
防火墙/过滤规则探测(ACK):
sudo nmap -sA -p 80,443 target_ip
激进扫描(服务 + OS + 常用脚本):
sudo nmap -A -p- target_ip
使用 NSE 脚本检测已知漏洞(示例):
sudo nmap --script vuln -p 445 target_ip
保存输出为三种格式:
sudo nmap -sS -sV -oA scan_result target_ip
# 会生成 scan_result.nmap, scan_result.xml, scan_result.gnmap
使用建议与注意事项
权限:
-sS
、-sU
、-O
等通常需要 root/Administrator 权限。速率与隐蔽:遇到 IDS/WAF 或网速受限时降低速率:
-T2
或增加--scan-delay
。UDP 扫描耗时:若要全 UDP 扫描要非常小心(耗时极长)。
合法性:对非授权网络/主机进行扫描可能违法或触犯政策,请务必先取得授权(书面或明确)。
防火墙/IPS 干扰:有时会被防火墙/IPS 误判或限速,解析结果需结合网络环境判断。
版本差异:Nmap 选项演进,某些历史选项(例如
-sR
)在新版中使用频率低或替换,务必看本机nmap --help
或man nmap
确认。