Nmap 漏洞扫描
Nmap(Network Mapper)是网络安全领域最常用的端口扫描和漏洞探测工具,支持数千款 NSE 脚本,可快速识别存活主机、开放端口、服务版本及潜在漏洞。
1. 基础扫描
1.1 存活主机发现
# Ping 扫描(快速发现)
nmap -sn 192.168.1.0/24 -oG ping_scan.txt
# SYN 半连接扫描(快,隐蔽)
nmap -sS 10.0.0.1 -oN syn_scan.txt
# 全端口扫描(1-65535)
nmap -sT -p- 10.0.0.1 -oN full_port.txt
1.2 服务版本识别
nmap -sV --version-intensity 5 10.0.0.1 -oN version_scan.txt
# -sV 探测服务版本
# --version-intensity 0-9,强度越高越慢越准确
2. NSE 脚本引擎
NSE(Nmap Scripting Engine)是 Nmap 最强大的扩展,支持 Lua 语言编写的脚本,覆盖漏洞检测、暴力破解、信息搜集等场景。
2.1 常用脚本分类
| 类别 | 脚本 | 用途 |
|---|---|---|
| vuln | smb-vuln-*, http-vuln-* |
漏洞检测 |
| exploit | smb-vuln-ms17-010 |
漏洞利用 |
| auth | ssh-brute, ftp-anon |
弱口令检测 |
| discovery | ssh-hostkey, smb-os-discovery |
信息搜集 |
| brute | mysql-brute, redis-brute |
暴力破解 |
2.2 漏洞扫描示例
# 全漏洞扫描(vuln 类别)
nmap --script=vuln -sV 10.0.0.1 -p- -oN nmap_vuln.txt
# 针对 SMB 漏洞(永恒之蓝 MS17-010)
nmap --script=smb-vuln-ms17-010.nse -p445 10.0.0.1
# 针对 SSL/TLS 漏洞(心脏出血、POODLE 等)
nmap --script=ssl-*,tls-* -sV -p443 10.0.0.1
# HTTP 漏洞检测
nmap --script=http-vuln* -sV 10.0.0.1 -p80,443,8080
# MySQL 弱口令检测
nmap --script=mysql-brute -p3306 10.0.0.1
2.3 自定义脚本执行
# 使用默认脚本库
nmap --script=default,safe 10.0.0.1
# 指定脚本文件
nmap --script=/path/to/custom-script.nse 10.0.0.1
# 脚本参数传递
nmap --script=mysql-brute --script-args=mysql-brute.userdb=users.txt,mysql-brute.passdb=pass.txt 10.0.0.1 -p3306
3. 输出格式
# 标准输出(-oN)、XML(-oX)、Grepable(-oG)、JSON(-oJ)
nmap -sV 10.0.0.1 -oA nmap_result
# 生成:nmap_result.nmap / nmap_result.xml / nmap_result.gnmap
# 实时显示
nmap -sV --reason 10.0.0.1
# --reason 显示判断依据(open|filtered|closed)
4. 常见扫描场景
# 场景一:快速资产盘点
nmap -sn -T4 -oG quick_scan.gnmap 10.0.0.0/24
# 场景二:Web 服务深度检测
nmap -sV -p80,443,8080,8443 --script=http-enum,http-title,http-headers 10.0.0.1
# 场景三:数据库端口扫描
nmap -sV -p3306,5432,6379,mongodb://27017 --script=mongo-brute,redis-brute,mysql-brute 10.0.0.1
# 场景四:内网横向 — 批量扫常见漏洞端口
nmap -sV --script=vuln -p22,445,3389,5900 -iL hosts.txt -oN lateral.txt
5. 隐蔽扫描(规避检测)
# 随机源 IP(-S 指定源 IP,需要 -e 网卡)
nmap -sS -D 10.0.0.5,10.0.0.6,10.0.0.7 10.0.0.100
# 限速(--min-rate 降低发包速率)
nmap -sS --min-rate 100 -max-retries 1 10.0.0.1
# 分片(绕过 IDS)
nmap -sS -f 10.0.0.1
# 僵尸扫描(源 IP 欺骗,需要可控僵尸主机)
nmap -sI zombie_host 10.0.0.100
6. 下一步
- Burp Suite 实战 — Web 渗透测试
- DVWA 靶场部署 — 动手练习 Web 漏洞