一、 目标指定 (Targeting)
这是扫描的第一步,你需要明确告诉 Nmap 要扫描的对象是谁。Nmap 支持非常灵活的目标指定方式。
| 参数形式 | 说明 | 使用场景 |
|---|
| 单个IP或域名 | 直接输入目标,如 nmap 192.168.1.1 或 nmap example.com | 针对单一服务器的精准测试。 | | 网段 (CIDR) | 使用斜杠表示法,如 nmap 192.168.1.0/24 | 用于摸底整个局域网(扫描该网段下所有 256 个 IP)。 | | 连续范围 | 使用连字符,如 nmap 192.168.1.100-200 | 扫描特定的一批连续 IP 地址。 | | -iL <文件路径> | 从文本文件中逐行读取目标 IP 或域名 ,如 nmap -iL 文件路径 | 当目标多达成百上千个时,避免手动输入的繁琐。 | | –exclude <目标> | 在扫描大范围网段时,排除特定的 IP | 避开网关、打印机或极其脆弱的核心业务服务器。 |
二、 主机发现 (Host Discovery)
在探测端口之前,先确认目标是否“在线”。这可以大幅节省对离线主机进行端口扫描所浪费的时间。
| 核心参数 | 探测方式名称 | 详细作用与工作原理 |
|---|
| -sn | Ping扫描(不扫描端口) | 仅通过发送 ICMP 请求和轻量级的 TCP 包来判断主机是否存活。速度极快,用于快速清点局域网资产。 | | -Pn | 强制扫描 (跳过存活探测) | 极其重要。 很多服务器开启了禁 Ping 防火墙。使用此参数,Nmap 会假设所有目标都在线,直接进行深度的端口扫描。 | | -PR | ARP Ping 扫描 | ** **专用于同一局域网内。利用底层的 ARP 协议进行探测,防火墙通常无法拦截,且速度远快于普通 Ping。 |
三、 端口扫描核心技术 (Port Scanning)
这是 Nmap 的灵魂所在。理解不同扫描技术的原理,是应对各种网络环境和防火墙的关键。
| 核心参数 | 扫描技术名称 | 详细作用与工作原理 |
|---|
| -sS | TCP SYN 扫描 (半开扫描) | 默认且最常用(需管理员权限)。 只发送 SYN 握手包,收到回应即判断端口开放,随后立即切断连接。速度快、隐蔽性高,不易在目标日志中留下完整连接记录。 | | -sT | TCP Connect 扫描 (全连接) | 完整执行 TCP 三次握手。无需管理员权限,但速度较慢,且极其容易被目标的系统日志记录,隐蔽性极差。 | | -sU | UDP 扫描 | 专门探测 UDP 协议端口(如 DNS、DHCP)。UDP 无连接响应慢,扫描耗时极长,但常被忽略的 UDP 端口往往隐藏着漏洞。 | | -sA | TCP ACK 扫描 | 不用于判断端口开关。 主要用于探测防火墙规则,分析防火墙是基于状态检测还是简单的包过滤。 |
四、 端口范围指定 (Port Specification)
默认情况下,Nmap 会扫描最常见的 1000 个端口。你可以根据需求精准控制扫描范围。
| 核心参数 | 功能名称 | 详细作用与适用场景 |
|---|
| -p <端口号> | 指定特定端口 | 扫描单个(如 -p 80 )或多个离散端口(如 -p 80,443,3389 )。 | | -p <范围> | 指定端口区间 | 扫描特定范围,例如 -p 1-1024 扫描所有知名系统端口。 | | -p- | 全端口扫描 | 扫描从 1 到 65535 的所有端口。最全面,但极其耗时,通常配合快速扫描策略使用。 | | -F | 快速模式 | 仅扫描最最常用的 100 个端口,适合时间紧迫时的粗略摸底。 |
五、 深度信息探测 (Version & OS Detection)
仅知道端口开放意义有限,我们需要知道端口背后运行的是什么系统和软件。
| 核心参数 | 功能名称 | 详细作用与工作原理 |
|---|
| -sV | 服务与版本探测 | 向开放的端口发送探针包,对比 Nmap 庞大的指纹特征库,精准识别出运行的软件名称及其版本号(如 Apache 2.4.41)。 | | -O | 操作系统探测 | 分析目标机器回应网络数据包的底层特征(如 TTL 值、TCP 窗口大小),推断目标的操作系统类型及版本(如 Windows Server 2019 或 Linux Kernel 5.4)。 | | -A | 强力综合扫描 | 这是一个组合拳,一键开启:操作系统探测、版本探测、脚本扫描和路由追踪。获取信息最全,但动作极大,极易触发安全警报。 |
六、 Nmap 脚本引擎 (NSE - Nmap Scripting Engine)
这是 Nmap 从“端口扫描器”进阶为“漏洞扫描器”的杀手锏。它内置了大量 Lua 脚本。
| 核心参数 | 功能名称 | 详细作用与适用场景 |
|---|
| -sC | 默认脚本扫描 | 自动运行一组经过挑选的、安全的、用于基础信息收集的默认脚本。 | | –script=vuln | 漏洞扫描类脚本 | 自动调用漏洞库脚本,检查目标已发现的服务版本中是否存在已知的高危漏洞(如永恒之蓝等)。实战极具价值。 | | –script=brute | 暴力破解类脚本 | 针对 FTP、SSH、数据库等服务,自动尝试弱口令暴力破解。 | | –script=<具体名称> | 指定单一脚本 | 针对性极强的扫描,例如只运行 smb-os-discovery 脚本来探测 SMB 服务信息。 |
七、 性能与时序控制 (Timing & Performance)
在扫描速度与不触发网络警报之间找到平衡。Nmap 提供了 6 个内置的速率模板。
| 模板参数 | 模板名称 | 详细说明 |
|---|
| -T0 / -T1 | 偏执 / 狡猾 | 速度极慢(发包间隔长达数分钟或数十秒),专门用于躲避 IDS(入侵检测系统)的流量监控。 | | -T2 | 礼貌 | 降低扫描速度,旨在减少对目标网络带宽和资源消耗,防止把目标服务扫崩溃。 | | -T3 | 正常 | Nmap 默认配置,综合考虑了速度与准确性。 | | -T4 | 激进 | 实战中最常用的配置。在现代宽带网络环境下,大幅加快扫描速度,前提是网络足够稳定。 | | -T5 | 疯狂 | 追求极限速度,但如果网络稍有波动或目标处理能力跟不上,极易导致严重漏报。 |
八、 防火墙规避与伪装 (Evasion & Spoofing)
当面对拥有高级防护体系的网络时,需要使用伪装技术。
| 核心参数 | 功能名称 | 详细作用与工作原理 |
|---|
| -f | 报文分段 | 将探测包切分为极小的 IP 碎片,增加防火墙完整拼接和识别恶意特征的难度。 | | -D <诱饵IP> | 诱饵扫描 | 伪造多个其他人的 IP 地址与你自己的真实 IP 一起发送探测包。防守方的日志中会出现大量不同的源 IP,极大地增加了溯源真实攻击者的难度。 | | -S <伪造IP> | 源 IP 欺骗 | 彻底将自己的源 IP 伪装成另一个 IP(高级操作,通常需要特殊的路由设置才能接收到目标的回应)。 |
九、 结果输出与保存 (Output)
规范地保存扫描结果,是后续安全分析和撰写报告的基石。
| 核心参数 | 输出格式 | 详细说明 |
|---|
| -oN <文件名> | 标准文本格式 | 直接将屏幕上显示的直观人类可读内容保存到文本文件中。 | | -oX <文件名> | XML 格式 | 极其重要。 生成结构化的 XML 数据,非常方便被 Python 脚本、Metasploit 或其他可视化安全管理平台读取和二次处理。 | | -oG <文件名> | Grepable 格式 | 将单一主机的所有信息压缩在同一行,专供 Linux 下的 grep 、awk 等命令行文本处理工具进行快速检索过滤。 | | -oA <名称> | 全格式输出 | 强烈推荐的习惯。 一次性自动生成上述三种格式的文件,应对所有的后续分析需求。 |
|