nmap常用命令全端口扫描
直接敲下 全端口扫描最怕的常用是目标主机有端口过滤。你扫 65535 个端口,命令描可能只有 22、全端80、443 开着,剩下全是 filtered 或 closed。Nmap 默认只显示 open、closed、filtered 三种状态,但 filtered 往往意味着有防火墙在丢包。我遇到过一台服务器,扫全端口只返回 80 和 443,结果用 想快就加 全端口扫描的结果往往很长,用 有些主机只允许特定源端口访问,比如只放行源端口 53 的流量。这时候用 UDP 全端口扫描是另一个坑。 最后提醒一句:全端口扫描不要对着生产环境的核心设备做,尤其是 nmap -p- 192.168.1.1,常用Nmap 就会从 1 号端口扫到 65535 号。命令描这个命令看起来简单,全端跑起来却可能让你等上十几分钟甚至更久。口扫默认情况下,常用Nmap 对每个端口只发一次探测包,命令描遇到防火墙丢包或者网络抖动,全端结果就不太靠谱。口扫我一般会加上 -Pn 跳过主机发现,常用再配合 --min-rate 控制发包速度,命令描比如 nmap -p- -Pn --min-rate 1000 192.168.1.1,全端这样扫一个 C 段能快不少。口扫-sS 半开扫描加上 --reason 一看,大量端口显示 no-response,说明中间设备直接把包吃了。这时候换 -sA ACK 扫描反而能判断出防火墙规则。速度与准确性的取舍
-T4 或 -T5,但别在公网随便用。T5 模式发包极猛,有些 IDS 会直接封你 IP。我习惯用 -T3 默认档,配合 --max-retries 2 减少重传。如果目标在内网,延迟低,--min-rate 2000 也能跑得很稳。有个细节:-p- 等价于 -p 1-65535,但写 -p- 更省事。扫描前先 nmap -sn 192.168.1.0/24 看看哪些主机活着,别对着空 IP 狂扫,浪费时间和带宽。-oN 存普通文本,-oX 存 XML 方便后续解析。我常用 nmap -p- -sV -oA scan_result 192.168.1.1,-sV 做版本探测,-oA 同时输出三种格式。注意 -sV 会明显拖慢速度,因为要对每个开放端口发额外探针。折中办法是先 -p- 快速扫出开放端口,再用 -sV -p 22,80,443 针对性地查版本。绕过防火墙的几种尝试
--source-port 53 能骗过一些老旧的 ACL。还有 -f 分片,把 TCP 头拆到多个包里,不过现代防火墙基本都能重组。更实用的是 --scan-delay,比如 --scan-delay 1s,降低发包频率,避免触发阈值告警。我试过对一台 Cisco ASA 后面的主机扫全端口,直接扫全 filtered,加上 --scan-delay 500ms 后,偶尔能收到几个 RST,说明设备有速率限制。nmap -sU -p- 192.168.1.1 能跑几个小时,而且结果极不可靠。UDP 无连接,Nmap 只能靠 ICMP 端口不可达来判断 closed,但很多系统根本不回 ICMP。我一般只扫常见 UDP 端口,比如 53、123、161,全端口 UDP 扫描在实际渗透中性价比太低。-T4 以上。我见过有人扫交换机管理口,直接把 CPU 打满,业务断了十分钟。内网测试前最好先问清楚窗口期,或者用 --max-rate 硬限制发包数。扫描完记得 --reason 看一眼每个端口的状态原因,比单纯看 open/closed 有用得多。