Nmap(Network Mapper)是一款功能强大的开源网络扫描工具,广泛用于网络安全评估、端口扫描、服务识别、操作系统探测以及漏洞发现。它不仅功能全面,还具备极强的灵活性和可扩展性,支持多种扫描技术,适用于各种复杂的网络环境。更重要的是——它是免费的,并持续由一个活跃的社区维护。

Nmap 简介

Nmap 支持多种操作系统(Linux、Windows、macOS),能够执行:

  1. 主机存活探测
  2. 端口扫描
  3. 服务与版本识别
  4. 操作系统指纹识别

得益于其强大的脚本引擎 NSE,Nmap 还能执行漏洞检测、横幅抓取、自动化攻击模拟等高级任务。

安装 Nmap

Nmap 跨平台兼容,可在 Linux、Windows 和 macOS 上运行。大多数现代操作系统都已将其纳入默认软件源,使用简单的命令即可安装:

Linux (Debian/Ubuntu)

sudo apt update && sudo apt install nmap

macOS

brew install nmap

Windows

建议从官网下载安装包:https://nmap.org

基本语法结构

nmap [Scan Type] [Options] [Target]

常用扫描类型

扫描类型参数描述
TCP Connect 扫描-sT完整三次握手,适用于普通用户权限
半开 SYN 扫描-sS推荐,快速且隐蔽
UDP 扫描-sU探测 UDP 端口(如 DNS、SNMP)
Ping 扫描-sn仅探测主机是否在线
ACK 扫描-sA用于分析防火墙状态,判断端口是否被过滤
FIN 扫描-sF隐蔽扫描,绕过简单防火墙
SYN 扫描是最常用的扫描方式,在拥有管理员权限时会优先选择

主机发现(又称 Ping 扫描)

扫描 169.254.255.0/24 中活跃主机

nmap -sn 169.254.255.0/24
输出所有响应 ICMP 或 TCP 探测的主机,不进行端口扫描。

禁用主机发现,强制扫描所有 IP

nmap -Pn 169.254.255.0/24
即使主机不响应 ping,也尝试扫描端口(适合防火墙屏蔽 ICMP 的环境)
此选项常与其他扫描参数组合使用,确保不遗漏任何潜在目标

端口扫描

使用 SYN 扫描整个网段,快速发现开放端口

nmap -sS 169.254.255.0/24
快速扫描常见端口并列出开放端口。

TCP Connect 扫描某台主机

nmap -sT 169.254.255.254
使用完整连接,适合无 root 权限时使用。

UDP 扫描特定主机

nmap -sU 169.254.255.254
检查 UDP 端口,不过默认只扫少量知名 UDP 服务

服务与版本检测

识别服务版本

nmap -sV 169.254.255.254
扫描开放端口并尝试确定服务名称和版本

指定端口范围并识别版本

nmap -sV -p 20-1000 169.254.255.254
扫描 20 到 1000 端口,并获取服务版本信息。

操作系统识别

操作系统指纹识别

nmap -O 169.254.255.254
尝试识别目标的操作系统(基于 TCP/IP 栈特征)

同时进行 OS 和服务识别

nmap -O -sV 169.254.255.254
综合输出:开放端口、服务版本、操作系统推测

输出格式控制

Nmap 支持多种输出格式,便于分析或集成。

保存结果为三种格式

nmap -sV -O -oA scan_results 169.254.255.0/24

这个命令会生成三个文件:

  • scan_results.nmap:标准文本
  • scan_results.xml:XML 格式(兼容 Nessus、Metasploit)
  • scan_results.gnmap:grepable 格式

仅输出开放端口

nmap -sT --open -oG - 169.254.255.0/24 | grep "Open"
-oG - 表示输出到终端,grep "Open" 过滤出开放端口行。

防火墙与规避技巧

伪装源端口,绕过简单过滤

nmap -sS --source-port 53 169.254.255.254
使用 DNS 端口作为源端口,可能绕过某些 ACL。

分片发送数据包

nmap -f -sS 169.254.255.254
将数据包分片,增加 IDS 解析难度

随机化扫描顺序

nmap -sS --randomize-hosts 169.254.255.0/24
打乱扫描顺序,避免被日志关联

附录:常用快捷命令总结

目的命令
发现活跃主机nmap -sn 169.254.255.0/24
快速端口扫描nmap -sS 169.254.255.254
服务版本识别nmap -sV 169.254.255.254
操作系统识别nmap -O 169.254.255.254
全端口深度扫描nmap -p- -sV -O 169.254.255.254
检查 Web 漏洞nmap --script http-vuln* -p 80,443 169.254.255.254
输出 XML 报告nmap -oX report.xml 169.254.255.254

对某个网段的全端口扫描:

nmap -sS -Pn --open --min-hostgroup 1024 --min-parallelism 10 --host-timeout 30 -p 1-65535 -v 169.254.255.0/24 -T5

169.254.255.25412345 端口执行服务探测识别:

nmap -sV -sT --open --reason -vv -p 12345 169.254.255.254
-vv 是指超级详细输出,可以更好的了解运行状态

全面扫描 169.254.255.0/24,识别活跃主机、开放服务、潜在风险:

nmap -sS -sV -O --script=banner,vuln \
     -p 1-1000 --open --min-hostgroup 16 \
     -oA internal_scan 169.254.255.0/24
  • -sS: SYN 扫描
  • -sV: 版本检测
  • -O: 操作系统识别
  • --script=banner,vuln: 加载横幅抓取和漏洞检测脚本
  • -p 1-1000: 扫描前 1000 个端口
  • --open: 只显示开放端口
  • --min-hostgroup 16: 每组至少 16 台主机并行扫描,提高速度
  • -oA internal_scan: 输出三种格式文件

HTTP 服务深度枚举:

nmap -p 80,443,8080,8443 --script http-enum,http-headers,http-security-headers -sV 169.254.255.254

结语

Nmap 是网络安全领域的「瑞士军刀」,掌握其用法不仅能提升网络管理效率,还能有效发现安全隐患。通过合理使用私有地址段进行练习,可以在安全环境中积累实战经验。