一、基础扫描类型
参数 |
说明 |
示例 |
-Pn |
跳过主机存活检测(Ping),直接扫描指定IP。 |
nmap -Pn 192.168.1.1 |
-p <端口> |
扫描指定端口(范围或列表)。 |
nmap -p 80,443,1-1000 192.168.1.1 |
-p- |
扫描所有 65535 个端口。 |
nmap -p- 192.168.1.1 |
-sS |
TCP SYN 扫描(半开放扫描,默认模式,需 root 权限)。 |
sudo nmap -sS 192.168.1.1 |
-sT |
TCP 全连接扫描(无需 root,但速度较慢)。 |
nmap -sT 192.168.1.1 |
-sU |
UDP 端口扫描(速度慢,需 root)。 |
sudo nmap -sU 192.168.1.1 |
二、服务与版本探测
参数 |
说明 |
示例 |
-sV |
启用服务版本探测。 |
nmap -sV 192.168.1.1 |
-sC |
使用默认 NSE 脚本进行基础漏洞和配置探测。 |
nmap -sC 192.168.1.1 |
-O |
启用操作系统检测(需 root 权限)。 |
sudo nmap -O 192.168.1.1 |
--version-intensity <0-9> |
控制版本探测强度(0:轻量,9:全面)。 |
nmap -sV --version-intensity 5 192.168.1.1 |
三、漏洞扫描(NSE 脚本)
常用脚本类别
脚本类别 |
用途 |
vuln |
检测已知漏洞(如 CVE)。 |
exploit |
尝试利用漏洞(慎用!)。 |
discovery |
网络和服务发现(如 DNS 枚举)。 |
brute |
暴力破解(如 SSH、FTP)。 |
常用命令
参数 |
说明 |
示例 |
--script <脚本名> |
指定单个脚本或类别。 |
nmap --script=http-sql-injection 192.168.1.1 |
--script vuln |
使用所有漏洞检测脚本。 |
nmap -sV --script vuln 192.168.1.1 |
--script-args <参数> |
传递参数给脚本(如用户名/密码)。 |
nmap --script=ftp-brute --script-args userdb=users.txt,passdb=pass.txt 192.168.1.1 |
实战脚本示例
脚本名称 |
用途 |
http-sql-injection |
检测 SQL 注入漏洞。 |
smb-vuln-ms17-010 |
检测 EternalBlue 漏洞(MS17-010)。 |
ssl-heartbleed |
检测 Heartbleed 漏洞。 |
vulners |
匹配服务版本与 CVE 数据库。 |
四、输出与日志
参数 |
说明 |
示例 |
-oN <文件> |
输出为纯文本文件。 |
nmap -oN scan.txt 192.168.1.1 |
-oX <文件> |
输出为 XML 格式(适合工具解析)。 |
nmap -oX scan.xml 192.168.1.1 |
-oG <文件> |
输出为 Grep 友好格式。 |
nmap -oG grepable.txt 192.168.1.1 |
-v / -vv |
增加输出详细程度(-v :详细,-vv :非常详细)。 |
nmap -vv 192.168.1.1 |
五、性能优化
参数 |
说明 |
示例 |
-T<0-5> |
设置时序模板(0:最慢,5:最快)。推荐 -T4 平衡速度与准确性。 |
nmap -T4 192.168.1.1 |
--min-rate <数值> |
控制最小发包速率(如 --min-rate 1000 )。 |
nmap --min-rate 1000 192.168.1.1 |
--max-retries <次数> |
设置端口扫描重试次数(默认 10)。 |
nmap --max-retries 1 192.168.1.1 |
六、绕过防火墙/IDS
参数 |
说明 |
示例 |
-f |
分片数据包(绕过简单防火墙)。 |
nmap -f 192.168.1.1 |
--data-length <长度> |
附加随机数据长度(混淆流量)。 |
nmap --data-length 50 192.168.1.1 |
-D <诱饵IP> |
使用诱饵 IP 隐藏扫描源(如 -D RND:5 随机生成 5 个诱饵)。 |
nmap -D 192.168.1.2,192.168.1.3 192.168.1.1 |
七、实战组合命令
1. 全面扫描(CTF/HTB 常用)
nmap -Pn -sC -sV -p- -T4 -oN full_scan.txt $IP
2. 快速漏洞扫描
nmap -Pn -sV --script vuln -oN vuln_scan.txt $IP
3. 隐蔽扫描(避免触发告警)
sudo nmap -sS -f -T2 --min-rate 500 --max-retries 1 $IP