一、常用参数选项
1.1 Nmap常用参数
选项 | 解释 | 示例 |
---|---|---|
-A | 综合扫描 | nmap -A 192.168.126.131 |
-T[0~5] | 时序选项(0-5) | nmap -A -T[0~5] 192.168.126.131 |
-sT | TCP扫描 | nmap -sT 192.168.126.131 |
-sU | UDP扫描 | nmap -sU 192.168.126.131 |
-v | 显示详细信息 | nmap -A -T4 -v 192.168.126.131 |
-n | 禁止DNS反向解析 | nmap -A -T4 -v -n 192.168.126.131 |
-Pn | 禁止Ping扫描 | nmap -A -T4 -v -n -Pn 192.168.126.131 |
-sV | 启用应用版本详细探测 | nmap -A -T4 -v -n -sV 192.168.126.131 |
-O | 启用操作系统类型探测 | nmap -v -O 192.168.126.131 |
-iL | 加载文本扫描 | nmap -A -n -iL IP.txt |
-oN | 标准文本扫描结果输出 | nmap -A -T4 -n -oN result.txt 192.168.126.131 |
-sL | 列表扫描 | nmap -n -v -Pn -sL 192.168.126.131 |
注:Nmap的指令是区分大小写的,大小写字母代表含义不同。
1.2 快速存活扫描
推荐存活扫描命令
nmap -T4 -n -v -sn -iL ip.txt -oN live_host.txt
选项 | 解释 | 示例 |
---|---|---|
-sP | Ping扫描 | nmap -sP -v 192.168.126.131/24 |
-sn | Ping扫描 | nmap -sn -v 192.168.126.131/24 |
-P0 | 无ping扫描 | nmap -P0 192.168.126.131 |
-PS | TCP SYN Ping扫描 | nmap -PS -v 192.168.121.1 |
-PA | TCP ACK Ping扫描 | nmap -PA -v 192.168.121.1 |
-PU | UDP Ping 扫描 | nmap -PU -v 192.168.121.1 |
注:-sn参数也是ping扫描,不进行端口扫描。-sn扫描与sP扫描的区别是:sP扫描无法扫描出防火墙禁Ping的存货主机;sn扫描防火墙在禁Ping的状态下,防火墙把ICMP包都丢弃掉,依然能检测到主机存活状态。
-P0,-PS,-PA,-PU扫描会进行端口开放扫描,而-sP,-sn扫描则不会进行端口开放扫描。
1.3 遇见扫描过慢如何提高效率?
快速扫描优化——Top 1000端口
nmap -T4 -n -v --top-ports “1000” --max-retries 3 --min-hostgroup 100 --host-timeout 18000ms --max-rtt-timeout 500ms --open -iL ip.txt -oA openport_result
选项 | 解释 | 示例 |
---|---|---|
–min-hostgroup | 调整并行扫描组的大小 | nmap --min-hostgroup 50 -v 192.168.126.131/24 |
–max-retries | 设置丢包最大重传次数 | nmap --max-retries 3 -v 192.168.126.131/24 |
–minrtt-timeout|–max-rtt-timeout|intiial-rtt-timeout | 调整探测报文超时 | nmap --max-rtt-timeout 100ms -v 192.168.126.131/24 |
–host-timeout | 放弃低速目标主机 | nmap --host-timeout 1800 -v 192.168.126.131/24 |
注:–max-rtt-timeout,–host-timeout在旧版本的nmap中,默认单位是毫秒,在新的nmap 7.8.0版本中,默认的单位是秒,如果设置单位为ms需要在后面添加单位ms,例如:nmap --max-rtt-timeout 100ms --host-time out 18000ms -v 192.168.126.131/24
1.4 指定服务类型扫描
仅扫描开放HTTP服务的端口(-p 除了可以加端口,还可以加服务)
nmap -T4 -n -v -p http* --max-retries 3 --min-hostgroup 30 --host-timeout 18000ms --open -iL ip.txt -oA httpPort_result
二、Nmap脚本的妙用
2.1 Nmap漏洞扫描
2.1.1 漏洞综合扫描命令
nmap -v -n -Pn --script=vuln -T4 --open -M 50 -iL ip.txt -oN vulnScanResutl.txt
选项 | 解释 | 示例 |
---|---|---|
–script | 加载指定脚本扫描 | nmap -v -p 3389 -n -Pn --script-vuln-ms12-020.nse 192.168.126.131 |
-M | 多线程扫描 | nmap -v -n -Pn -M 30 192.168.126.131 |
–open | 端口转状态过滤器 | nmap -v -n -Pn --open 192.168.126.131 |
2.1.2 指定漏洞类型扫描
nmap -T4 -n -v --script=smb* --max-retries 3 --open -iL ip.txt -oA smbvuln_result.txt
注:如需指定某某种类型的漏洞,只需要在Nmap目录的scripts脚本目录里面,查看各类漏洞的脚本名称开头字母,然后使用“*”作为通配符即可。例如:扫描Mysql的通用性漏洞,只需要加载脚本:–script=mysql * 即可。
2.1.3 漏洞POC验证
可以使用批处理脚本编写调用Nmap的漏洞PoC一键验证脚本工具,方便渗透测试中的漏洞验证。
2.2 Nmap弱口令扫描
弱口令扫描命令
nmap -sT -p 目标应用端口 -v -n -Pn --script=弱口令扫描脚本 --script-args userdb=用户名字典,passdb=弱口令字典 -iL ip.txt -oN result.txt
选项 | 解释 | 示例 |
---|---|---|
–script-args | 脚本参数设置 | nmap -sT -p 1433 -v -n --script ms-sql-brute.nes --script-args userdb=xx\xx\mssql_user.dic.txt,passdb=xx\xx\weakpassword.txt -iL ip.txt -oN result.txt |
userdb | 用户名字典 | / |
passdb | 密码字典 | / |
三、Nmap扫描结果整理
(1)nmap-converter
(2)nmaptoCSV
自行从github中获取