Nmap 命令详解:扫描类型、参数与实战用法
⚠️ 本教程仅用于授权渗透测试、漏洞扫描和自身资产的安全自查。对未授权系统进行端口扫描可能违反法律法规或服务条款。nmap 是攻击者也会使用的侦察工具——理解它的意义,是为了作为防御者去发现暴露面、及时收敛风险。
Nmap 是什么
Nmap(Network Mapper)是最常用的网络探测与安全审计工具。它的核心能力就一件事:搞清楚”目标网络上有哪些主机、开放了哪些端口、跑着什么服务、是什么操作系统、有什么已知漏洞”。
这串信息在攻防两端都至关重要:
- 攻击者用它做侦察,先摸清目标暴露面再挑软柿子打;
- 防御者/运维用它做资产自查,发现自己无意中开放的危险端口(比如 Redis 没设密码、数据库对公网开放)。
所以 nmap 既是攻击的”第一步”,也是防御的”体检仪”。下面按”从简到繁”的顺序拆解它的核心参数。
核心结构:一条 nmap 命令长什么样
nmap [扫描类型] [选项] [目标]
三部分:
- 扫描类型:决定”怎么扫”,比如
-sS(SYN 扫描)、-sT(全连接扫描)、-sU(UDP 扫描)。不写扫描类型时,nmap 默认对特权用户用 SYN 扫描、普通用户用全连接扫描。 - 选项:
-p(端口)、-sV(版本探测)、-O(OS 识别)、-T4(速率)等。 - 目标:单个 IP、域名、CIDR(如
192.168.1.0/24)、范围(192.168.1.1-100)或多个目标空格隔开。
我们的 Nmap 命令生成器 就是把这三块可视化拼出来,不用背参数。
扫描类型:四种最常用的”怎么扫”
1. SYN 扫描(-sS,最常用)
也叫”半开扫描”(half-open)。它只发 SYN,收到 SYN-ACK 就回 RST 断开,不完成 TCP 三次握手。
优点:
- 快:不用建完整连接,扫描成千上万个端口也快;
- 隐蔽:目标应用层(服务)察觉不到连接,只留下一条没完成的握手记录,很多简单日志看不到;
- 需要 root:因为要自己构造原始 SYN 包(raw socket)。普通用户跑
-sS会被降级成-sT。
这是渗透测试和常规侦察的默认选择。
2. 全连接扫描(-sT)
完整走完 TCP 三次握手(SYN → SYN-ACK → ACK),再发 RST 关闭。
- 不需要特权,普通用户就能跑;
- 更吵:目标的服务和日志会完整记录这条连接,隐蔽性差;
- 适用于没有 root 权限或 SYN 扫描被防火墙/IDS 干扰的环境。
3. UDP 扫描(-sU)
扫 UDP 端口(DNS、SNMP、DHCP、NTP 等)。UDP 无连接,nmap 发 UDP 包后:
- 收到 UDP 回应 → 端口开放;
- 收到 ICMP 端口不可达 → 端口关闭;
- 没回应 → 被过滤(open|filtered),需要进一步确认。
UDP 扫描慢且不可靠(丢包、无响应很常见),通常针对特定重要 UDP 端口单独扫,而不是全端口扫。
4. 主机发现(-sn,只探活不扫端口)
只回答”这台机器在线吗”,不发端口探测包:
nmap -sn 192.168.1.0/24
适合先圈定存活主机,再对存活列表做深入扫描。也叫 ping 扫描(虽然不止用 ICMP ping)。
提升信息量:版本、OS 与脚本
光知道”端口开放”还不够,真正有用的是”开放端口上跑的是什么”。
服务与版本探测(-sV)
探测端口上运行的服务及其版本号:
nmap -sV 192.168.1.10
输出会从 80/tcp open http 变成 80/tcp open http Apache httpd 2.4.41——版本号直接决定有没有已知漏洞可打。
OS 识别(-O)
根据 TCP/IP 协议栈指纹猜操作系统:
nmap -O 192.168.1.10
注意 OS 识别需要 root(要发原始包),且是”猜”的,准确度有限,仅供参考。
默认脚本(-sC)
启用 Nmap 自带的一组安全向默认 NSE 脚本(约等于 --script=default),会做:
- 抓取 banner、服务额外信息;
- 检查常见弱配置(如匿名 FTP 登录);
- 一些基础漏洞探测。
实战里 -sC -sV 几乎总是一起用,能一次性拿到服务详情和脚本补充信息,性价比最高。
激进扫描(-A)
-A 是组合糖:= -sV + -O + -sC + 路由追踪(-traceroute),一口气把所有”信息增强”都打开。
nmap -A 192.168.1.10
信息最全,但也最吵、最慢、最容易被发现。适合在已授权的目标上做彻底体检。
NSE 漏洞脚本(--script=vuln)
NSE(Nmap Scripting Engine)脚本库里有专门的漏洞检测类脚本。用 vuln 类别可扫常见漏洞:
nmap -sV --script=vuln 192.168.1.10
⚠️ 注意:vuln 类脚本里有些会真正向目标发送攻击性 payload(如尝试触发漏洞),在不确定授权范围时慎用,避免把目标打挂。
端口范围与速率调优
指定端口(-p)
-p 80,443:指定端口-p 1-1000:范围-p-:全端口(1–65535)-p- -pU:53,161:TCP 全端口 + 指定 UDP 端口
全端口扫描能发现藏在高位的奇葩服务(很多管理员把危险服务放在非常规端口),但耗时显著增加。
跳过主机发现(-Pn)
有时目标禁止 ping(ICMP 被封),nmap 默认会先 ping、不通就跳过。加 -Pn 强制”把每个目标都当存活来扫”:
nmap -Pn -sS -sV 203.0.113.5
代价是慢(要对所有目标发包),但能扫到”禁 ping”的主机。
速率档位(-T0 ~ -T5)
-T 控制扫描速度和激进程度(本质是调整发包时序、并行度):
| 档位 | 含义 | 场景 |
|---|---|---|
-T0 | 极慢、每次只发一个包 | 躲 IDS,极隐蔽 |
-T1 | 慢 | 隐蔽 |
-T2 | 较温和 | 折中 |
-T3 | 默认 | 正常 |
-T4 | 快 | 局域网/授权快速扫描 |
-T5 | 极快 | 极快但易丢包、最易被检测 |
一般实战用 -T4 提速;需要躲检测时降到 -T1/-T0。
路由追踪(--traceroute / -A 内含)
显示到目标的网络路径,辅助判断目标所在网段和位置。
输出格式(-oN / -oX / -oG / -oA)
-oN <文件>:普通可读文本-oX <文件>:XML,方便被其他工具(如漏洞管理平台)解析-oG <文件>:grepable 格式,方便grep/awk二次处理-oA <文件>:一次性输出上述三种(文件名前缀相同)
nmap -sS -sV -oA scan-result 192.168.1.0/24
会生成 scan-result.nmap、.xml、.gnmap 三个文件。
常见组合命令速查
| 目的 | 命令 |
|---|---|
| 快速探活网段 | nmap -sn 192.168.1.0/24 |
| SYN 扫常用端口 + 版本 | nmap -sS -sV 192.168.1.10 |
| 服务 + 默认脚本 + OS(激进) | nmap -A 192.168.1.10 |
| 全端口 + 快扫 | nmap -sS -p- -T4 192.168.1.10 |
| 禁 ping 目标体检 | nmap -Pn -sS -sV -A 203.0.113.5 |
| UDP 重点端口 | nmap -sU -p 53,161,123 192.168.1.10 |
| 漏洞扫描(谨慎) | nmap -sV --script=vuln 192.168.1.10 |
作为防御者:用 nmap 做资产自查
理解 nmap 的最好方式,是拿它扫自己。定期对自己负责的网段跑一遍:
- 发现意外开放的端口(比如测试环境误开了 6379 Redis、9200 ES 对公网);
- 发现版本过旧的服务(nmap 报出
OpenSSH 7.4,明显该升级); - 发现被禁 ping 却仍存活的暴露面。
把自查常态化,就能在攻击者之前把暴露面收敛掉。这也是我们做 Nmap 命令生成器 这类工具的初衷——降低安全自查的门槛,让运维和开发者也能轻松”体检”自己的资产。
常见问题
Q1:nmap 需要 root/管理员权限吗?
A:SYN 扫描(-sS)、OS 识别(-O)、-sV 的某些探测需要原始套接字权限,在 Linux 上通常要 sudo,Windows 上要用管理员命令行。没有特权时,nmap 会自动降级为全连接扫描(-sT),功能受限但也能用。
Q2:为什么有些端口显示 open|filtered?
A:这是 nmap 的”二义性”结论——它无法区分这个端口究竟是开放、还是被防火墙过滤(无响应)。常见于 UDP 扫描和 SYN 扫描遇到严格防火墙时。可换 -sV、调整 -T 速率、或用 -Pn 重扫来进一步确认。
Q3:-sS 和 -sT 到底选哪个?
A:有 root 权限、追求速度和隐蔽 → 用 -sS;没有权限、或 SYN 扫描总被拦 → 用 -sT。绝大多数渗透场景默认 -sS。
Q4:全端口 -p- 扫一次要多久?
A:取决于速率档位、网络延迟和目标响应。局域网内 -T4 -p- 几分钟到十几分钟;跨公网或 -T3 可能要几十分钟到更久。只对重要目标全端口扫,普通目标用默认 1000 个常用端口即可。
Q5:--script=vuln 会把目标打坏吗?
A:有一定风险。vuln 类脚本含部分”主动触发漏洞”的 payload,对脆弱目标可能造成崩溃或服务异常。仅在明确授权、且可接受风险的目标上使用;不确定时先只用 -sC -sV 做被动信息收集。
Q6:扫描别人家网站/服务器犯法吗? A:对未授权的系统进行端口扫描,在很多司法管辖区可能违反《计算机信息系统安全保护条例》或类似法律,也可能触发对方的安全告警导致你被封 IP 甚至追责。只扫你自己拥有或已书面授权的资产。
Q7:-T5 是不是最快最好?
A:不一定。-T5 极快但丢包率高,可能漏掉实际开放的端口,同时也最容易被 IDS 检测。要速度用 -T4 通常是最优平衡;要准确就别拉太高。
小结
nmap 的核心就是”用什么方式扫(扫描类型)+ 收集多少信息(版本/OS/脚本)+ 扫多快多广(端口/速率)“的组合。SYN 扫描 -sS 是默认主力,-sV -sC 补齐服务细节,-A 一次性全开做彻底体检,-p- 和 -T 控制覆盖与速度。把它用在授权自查上,就能在攻击者之前发现并收敛自己的暴露面——这才是这类安全工具正确的打开方式。