nmap详细扫描命令

```html nmap详细扫描命令

nmap详细扫描命令

直接说结论:-sS -sV -O -p- -A 这一串参数丢进去,nmap 就能把一个目标扒得底裤都不剩。扫描但很多人只知道 -sS 和 -sV,命令跑完看到开放端口就收工,详细漏掉了大量指纹信息。扫描下面按实际使用场景拆解,命令每个参数都配上真实命令和输出片段,详细不搞空泛罗列。扫描

基础但容易踩坑的命令扫描组合

先看一条我常用的命令:

nmap -sS -sV -O -p- -T4 192.168.1.100 -oA full_scan

这条命令里 -sS 是 TCP SYN 半开扫描,速度快、详细隐蔽性比全连接好,扫描但需要 root 权限。命令没 root 的详细话换成 -sT,但速度会慢一截。扫描-p- 代表扫描全部 65535 个端口,命令别偷懒只扫默认的 1000 个——很多服务跑在 8080、8443、9000 这类高位端口上,只扫默认端口等于白干。

-sV 做版本探测,它会往开放端口发特定的探针,根据返回的 banner 和响应特征匹配指纹库。比如扫到 22 端口,输出可能是 OpenSSH 8.9p1 Ubuntu 3ubuntu0.4,精确到发行版补丁级别。-O 是操作系统识别,靠 TCP/IP 栈的细微差异来判断,准确率大概七八成,别全信,但作为参考足够。

-T4 是时序模板,默认的 -T3 太保守,内网扫可以上 -T4,公网目标建议别超过 -T4,否则容易触发 IDS 或者丢包。-oA 同时输出三种格式:.nmap 正常文本、.xml 给工具解析、.gnmap 给 grep 用。这个习惯能省掉后面重新扫的麻烦。

UDP 扫描别忽略,但要有策略

很多人只扫 TCP,UDP 直接跳过,结果漏掉 DNS、SNMP、NTP 这些关键服务。UDP 扫描用 -sU,但速度极慢,因为 UDP 无连接,没响应不代表端口关闭。实用做法是只扫常见 UDP 端口:

nmap -sU --top-ports 50 -sV 192.168.1.100

--top-ports 50 只扫频率最高的 50 个 UDP 端口,兼顾效率和覆盖。如果想更彻底,加上 --max-retries 1 减少重传等待,不然一个 /24 网段能跑一整天。

NSE 脚本才是精髓

nmap 自带的 NSE 脚本引擎被严重低估。默认 -sC 会跑一批安全脚本,但真正好用的是按类别调用。比如想查目标有没有已知漏洞:

nmap -sV --script vuln 192.168.1.100

这个 vuln 类别会跑几十个检测脚本,覆盖 SMB、HTTP、SSL 等常见漏洞。输出里如果出现 VULNERABLE 字样,那就得认真看。再比如做 HTTP 枚举:

nmap -p 80,443 --script http-enum,http-headers,http-methods 192.168.1.100

http-enum 会尝试猜目录,http-headers 抓完整响应头,http-methods 列出支持的 HTTP 方法。有一次我扫一个 IIS 服务器,http-methods 直接返回 PUT 和 DELETE 都开着,这配置基本等于裸奔。

个人经验: NSE 脚本别一次性全跑,--script all 又慢又吵,按需选类别或者指定脚本名。常用类别:discovery、safe、auth、broadcast。

防火墙绕过与隐蔽扫描

目标有防火墙时,直接 -sS 可能全被过滤。这时候分片扫描 -f 把 TCP 头拆成多个小包,或者用诱饵 -D RND:10 混入十个随机源地址。但说实话,现代防火墙对这些手法基本免疫,更多是碰运气。

更实际的是调整扫描速度。-T2 慢速扫描能降低被 ban 的概率,配合 --scan-delay 1s 每个探测间隔一秒。我扫过一台公网服务器,-T4 跑三分钟就被封 IP,换 -T2 --scan-delay 2s 跑了四十分钟,虽然慢但数据完整。

输出与后处理

扫完不是终点,-oX 生成的 XML 可以直接丢给 xsltproc 转成 HTML 报告:

xsltproc full_scan.xml -o report.html

或者用 grep 快速提取开放端口:

grep "open" full_scan.gnmap | awk '{ print $2, $5}'

这些组合拳打下来,一次扫描拿到的信息量比默认跑十次都多。工具是死的,参数组合和场景判断才是活的。


最后提一句,扫描前确认你有授权。没授权扫别人,-sS 和 -sU 的区别只在于你进局子时警察问你用的哪个参数。

```