记录一下 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: 到达目标的路由跟踪
  1. 其中 Device typeRunningOS CPE 属于 -O 参数的输出,即 操作系统探测,有时候这三个结果不会出现,出现的原因我理解是由于扫描不精确导致输出一些枚举项。
  2. Network DistanceTRACEROUTE 属于 -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