学习使用 Nmap 扫描网络
Nmap(Network Mapper)是一款功能强大的开源网络扫描工具,广泛用于网络安全评估、端口扫描、服务识别、操作系统探测以及漏洞发现。它不仅功能全面,还具备极强的灵活性和可扩展性,支持多种扫描技术,适用于各种复杂的网络环境。更重要的是——它是免费的,并持续由一个活跃的社区维护。
Nmap 简介
Nmap 支持多种操作系统(Linux、Windows、macOS),能够执行:
- 主机存活探测
- 端口扫描
- 服务与版本识别
- 操作系统指纹识别
得益于其强大的脚本引擎 NSE,Nmap 还能执行漏洞检测、横幅抓取、自动化攻击模拟等高级任务。
安装 Nmap
Nmap 跨平台兼容,可在 Linux、Windows 和 macOS 上运行。大多数现代操作系统都已将其纳入默认软件源,使用简单的命令即可安装:
Linux (Debian/Ubuntu)
sudo apt update && sudo apt install nmapmacOS
brew install nmapWindows
建议从官网下载安装包: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.254 的 12345 端口执行服务探测识别:
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 是网络安全领域的「瑞士军刀」,掌握其用法不仅能提升网络管理效率,还能有效发现安全隐患。通过合理使用私有地址段进行练习,可以在安全环境中积累实战经验。