一、 Nmap 简介
Nmap(Network Mapper)是一款开源的网络探测和安全审计工具,用于:
- 发现网络中的主机(主机发现)
- 扫描开放的端口(端口扫描)
- 检测服务及版本(服务/版本探测)
- 识别操作系统(OS 指纹识别)
- 执行漏洞扫描(通过 NSE 脚本)
二、如何安装 Nmap
Windows
- 访问 Nmap 官网 下载安装包。
- 安装时勾选所有组件(包括 Zenmap 图形界面)。
Linux (Debian/Ubuntu)
sudo apt update && sudo apt install nmap
Linux (RHEL/CentOS)
sudo yum install nmap # CentOS 7 或以下
sudo dnf install nmap # CentOS 8 或以上
macOS
brew install nmap
Kali Linux
预装 Nmap,无需额外安装。
三、基本用法
命令格式
nmap [扫描类型] [选项] [目标]
扫描目标
- 扫描单个 IP:
nmap 192.168.1.1
- 扫描域名:
nmap example.com
- 扫描多个目标:
nmap 192.168.1.1 192.168.1.2
- 扫描范围:
nmap 192.168.1.1-100
- 扫描子网:
nmap 192.168.1.0/24
四、常用扫描类型
1. TCP SYN 扫描(默认)
快速且隐蔽,无需完成 TCP 握手(需 root 权限):
sudo nmap -sS 192.168.1.1
2. TCP Connect 扫描
模拟完整 TCP 连接(无需 root):
nmap -sT 192.168.1.1
3. UDP 扫描
检测开放的 UDP 端口(速度较慢):
sudo nmap -sU 192.168.1.1
4. 隐蔽扫描
- FIN 扫描:发送 FIN 包检测端口状态。
sudo nmap -sF 192.168.1.1
- NULL 扫描:发送无标志位的包。
sudo nmap -sN 192.168.1.1
- Xmas 扫描:发送 FIN、PSH、URG 标志位。
sudo nmap -sX 192.168.1.1
五、高级功能
1. 服务和版本探测
检测端口对应的服务及其版本:
nmap -sV 192.168.1.1
2. 操作系统检测
识别目标主机的操作系统(需 root 权限):
sudo nmap -O 192.168.1.1
3. 输出结果
- 普通格式:
-oN result.txt
- XML 格式:
-oX result.xml
- 所有格式:
-oA result
(生成 .nmap, .xml, .gnmap 文件)
示例:
nmap -sS -sV -O 192.168.1.1 -oN scan_result.txt
六、使用 Nmap 脚本引擎(NSE)
Nmap 内置了强大的脚本库(--script
),用于漏洞检测、信息收集等。
常用脚本类别
vuln
:检测已知漏洞。safe
:非侵入式脚本。discovery
:网络发现。brute
:暴力破解。
示例
- 检测 SMB 漏洞:
nmap --script smb-vuln* 192.168.1.1
- 枚举 HTTP 目录:
nmap --script http-enum 192.168.1.1
- 扫描常见漏洞:
nmap --script vuln 192.168.1.1
七、绕过防火墙/IDS
1. 分片扫描
将数据包分片以绕过检测:
nmap -f 192.168.1.1
2. 诱饵扫描
隐藏真实 IP(混杂诱饵 IP):
nmap -D RND:10 192.168.1.1 # 随机生成 10 个诱饵
nmap -D decoy1,decoy2,real_IP 192.168.1.1 # 指定诱饵
3. 空闲扫描
利用僵尸主机进行隐蔽扫描:
nmap -sI zombie_IP 192.168.1.1
4. 随机化扫描顺序
nmap --randomize-hosts 192.168.1.1-100
八、时间优化
- 加快扫描速度:
-T<0-5>
(0: 最慢,5: 最快)nmap -T4 192.168.1.1
- 跳过主机发现:假设目标在线。
nmap -Pn 192.168.1.1
九、实际案例
案例 1:快速扫描本地网络
nmap -sn 192.168.1.0/24 # 仅发现在线主机
案例 2:全面扫描
sudo nmap -sS -sV -O -p- -T4 192.168.1.1 -oA full_scan
-p-
:扫描所有端口(1-65535)。
案例 3:漏洞检测
nmap --script vuln --script-args=unsafe=1 192.168.1.1
十、注意事项
- 合法使用:未经授权扫描他人网络可能违法。
- 谨慎使用 NSE 脚本:部分脚本具有侵入性。
- 避免误判:扫描可能触发安全设备的警报。