记录一下 nmap 技巧
nmap 常用参数无非就那几个,但是在不同场景下,综合扫描速度和探测目标,用不同的参数组合应对。
0x01 参数和结果
1、一些参数的结果比较
在扫描参数中 -A == -sC -sV -O -traceroute,代表 脚本扫描、服务探测、系统探测、路由追踪。
- 左边:
-sC -sV -O - 右边:
-A

预期 -A 只会多出 1~2 个路由追踪的结果,有时候不一定,比如上面右边多出了 5 个结果:
- Device type: 设备类型枚举
- Running (JUST GUESSING): 目标操作系统枚举
- OS CPE: 通用平台枚举项(Common Platform Enumeration),对识别出的软件、硬件和操作系统的一种命名方式
- Network Distance: 与目标间的网络距离,单位是
跳 - TRACEROUTE: 到达目标的路由跟踪
- 其中
Device type、Running、OS CPE属于-O参数的输出,即操作系统探测,有时候这三个结果不会出现,出现的原因我理解是由于扫描不精确导致输出一些枚举项。 Network Distance、TRACEROUTE属于-traceroute参数的输出。
0x02 扫描速度
做了一下样本不多的扫描速度比较。
1、不带参数 vs -A
同样的环境下执行,扫描靶机全端口,已知只有 5 个开放端口。
nmap -p- 10.10.10.3
nmap -A -p- 10.10.10.3
执行时间:306.66 vs 399.79 初步判断,后者多出来的时间是花在服务检测上面,对经过探测未开放的端口不会做服务检测。 所以 先扫开放再扫服务 并不会比 直接扫服务 要快。
扫 UDP 的时候非常慢,还没对比过,可能这个靶机的 vpn 不行。
结论就是对于单台服务器的端口扫描,直接 nmap -A -p- IP 就好。
0x03 最大重试次数 --max-retries
默认扫描中,每个端口的扫描会发出不止一次请求,具体多少不知道。 当要 加速扫描、或者 执行某些特定的对端口的序列请求 的时候(比如 knock knock 按顺序请求端口开启防火墙),就要修改这个参数。
# 比如为了加速,设置为1
nmap -A -p- -oA xx.nmap 10.10.10.3 --man-retries 1
0x04 报告模板 --stylesheet
可以加载酷炫的输出模板。 https://github.com/honze-net/nmap-bootstrap-xsl
nmap -A -p- -oA xx.nmap --stylesheet tools/nmap-bootstrap.xsl 10.10.10.3