使用 Nmap 进行网络侦察和端口扫描。当被要求扫描目标、查找开放端口、检测服务、检查漏洞或执行网络侦察时使用。
nmap(Kali Linux 自带,可通过包管理器安装)nmap -sC -sV -oA scan_$(date +%Y%m%d_%H%M%S) 目标
nmap -p- -sC -sV -oA fullscan_$(date +%Y%m%d_%H%M%S) 目标
nmap -F -T4 目标
sudo nmap -sS -sV -O -oA stealth_$(date +%Y%m%d_%H%M%S) 目标
sudo nmap -sU --top-ports 100 -oA udp_$(date +%Y%m%d_%H%M%S) 目标
nmap --script vuln -oA vulnscan_$(date +%Y%m%d_%H%M%S) 目标
nmap -A -T4 -oA aggressive_$(date +%Y%m%d_%H%M%S) 目标
使用 -oA 参数,Nmap 会生成多种格式的输出文件:
- .nmap - 人类可读格式
- .xml - 机器可解析格式
- .gnmap - 便于 grep 搜索的格式
grep "open" scan.gnmap | awk -F'[/]' '{print $1}' | tr ',' '\n' | sort -u
grep -E "^[0-9]+/" scan.nmap | awk '{print $1, $3, $4}'
xmllint --xpath "//port[@state='open']" scan.xml 2>/dev/null
| 方案 | 命令 | 适用场景 |
|---|---|---|
| 快速扫描 | nmap -F -T4 |
快速初步侦察 |
| 标准扫描 | nmap -sC -sV |
服务检测 + 默认脚本 |
| 全端口扫描 | nmap -p- -sC -sV |
扫描全部 65535 个端口 |
| 隐蔽扫描 | sudo nmap -sS -T2 |
规避检测的扫描 |
| 漏洞扫描 | nmap --script vuln |
漏洞检测 |
| 主动扫描 | nmap -A -T4 |
全面信息枚举 |
# 列出可用脚本
ls /usr/share/nmap/scripts/
# 运行特定类别脚本
nmap --script=default,safe 目标
nmap --script=vuln 目标
nmap --script=exploit 目标
nmap --script=auth 目标
# 运行特定脚本
nmap --script=http-title 目标
nmap --script=smb-vuln* 目标
# 单个主机
nmap 192.168.1.1
# CIDR 范围
nmap 192.168.1.0/24
# 范围
nmap 192.168.1.1-254
# 从文件读取
nmap -iL targets.txt
# 排除主机
nmap 192.168.1.0/24 --exclude 192.168.1.1
-T0 偏执模式(用于规避入侵检测系统)-T1 鬼祟模式(用于规避入侵检测系统)-T2 礼貌模式(慢速)-T3 普通模式(默认)-T4 主动模式(快速)-T5 疯狂模式(极快,但可能漏扫端口)⚠️ 仅扫描您拥有或已获得明确书面授权进行测试的目标。
切勿扫描:
- 未经许可的公共基础设施
- 您不控制的网络
- 未经批准的生产系统
# 1. 快速扫描发现存活主机
nmap -sn 192.168.1.0/24 -oA live_hosts
# 2. 对发现的主机进行快速端口扫描
nmap -F -T4 -iL live_hosts.gnmap -oA quick_ports
# 3. 对感兴趣的主机进行深度扫描
nmap -p- -sC -sV -oA deep_scan 目标
# 4. 漏洞扫描
nmap --script vuln -oA vuln_scan 目标