本章目录(6)On this page (6)
  1. 不要一上来就 -p-
  2. 结果怎么读
  3. 脚本
  4. 输出
  5. 一个容易忽略的点
  6. 参考
文章Articles

nmap

从存活判断到脚本扫描,以及为什么全端口扫描不该是第一步。

更新Updated 2026.10.25securitytoolsnmap

不要一上来就 -p-

全端口扫一次是 65535 个包,对小型站点的出口设备不算轻。更麻烦的是,扫的过程中如果被限速设备丢包,你会得到一份「端口开放情况未知」的结果,还得多跑一遍。

正常的顺序:

# 1. 存活 + 常见端口 + 版本
nmap -Pn -sV -T3 --top-ports 100 target

# 2. 值得深入再全端口
nmap -Pn -sS -p- --min-rate 2000 target

# 3. 对确认开放的端口跑默认脚本
nmap -Pn -sV -sC -p 80,443,8080 target

-Pn 跳过主机发现,直接扫端口。目标可能禁 ping,跳过能省时间。

-T3 是默认节奏。-T4 快但容易被掐,-T5 基本只适合内网。

结果怎么读

扫描结果里,真正要看的是三样:

版本号。Apache httpd 2.4.49 和 2.4.51 的差别,决定了有没有 CVE-2021-42013。没有版本号的开放端口,价值低一半。

非预期端口。一个对外只该开 80/443 的站,开着 8080、8888、9000,这些就是重点。开发调试残留、内部管理后台、监控面板,都在这类端口上。

端口组合。3306 + 80 说明数据库和 Web 同机;6379 + 80 说明可能有 Redis 未授权;2375 + 80 说明 Docker API 可能暴露。

脚本

--script 的用法比想象中宽。常用的几组:

# 默认脚本(安全,不破坏)
nmap -sC -p 80,443 target

# 漏洞检测
nmap --script vuln -p 80,443 target

# 特定服务
nmap --script http-title,http-headers -p 80,443 target
nmap --script smb-vuln-ms17-010 -p 445 target
nmap --script redis-info -p 6379 target

--script vuln 会跑一批检测脚本,噪音大、误报多,但作为第一轮筛选够用。它报出来的结果必须手工验证,不能直接写报告。

输出

nmap -oA scan_result -sV -p- target

-oA 同时输出三种格式(普通、XML、grepable)。XML 后面可以喂给别的工具做解析,做资产表的时候省事。

一个容易忽略的点

nmap 的扫描流量特征非常明显,WAF 和态势感知都会报。授权测试里这没问题,但要提前跟客户的安全团队打招呼——不然你会收到「你们是不是在扫描」的电话,还得停下来解释。

节奏放慢一点(-T2),加上 --max-rate,能让告警好看一些,也能避免被直接封 IP。

参考

  • 《从实践中学习 Kali Linux 渗透测试》,CSDN 存档