linux nmap命令
重要提醒: 仅对您拥有合法授权的主机和网络进行扫描。未经授权的网络扫描可能违反法律或服务条款。
一、Nmap 简介
Nmap(Network Mapper)是一个开源的网络发现和安全审计工具。它用于:
- 网络发现和主机探测
- 端口扫描和服务检测
- 操作系统和版本检测
- 漏洞扫描和安全评估
- 网络映射和库存管理
二、基本语法
nmap [扫描类型] [选项] {目标规范}
目标可以是:
- 单个 IP:
192.168.1.1
- IP 范围:
192.168.1.1-100
- CIDR 表示:
192.168.1.0/24
- 主机名:
example.com
- 文件中的目标列表:
-iL targets.txt
三、扫描类型
| 扫描类型 |
命令选项 |
说明 |
| TCP SYN 扫描 |
-sS |
默认扫描方式,半开放扫描 |
| TCP Connect 扫描 |
-sT |
完全连接扫描 |
| UDP 扫描 |
-sU |
UDP 端口扫描 |
| TCP ACK 扫描 |
-sA |
ACK 标志扫描,用于防火墙规则探测 |
| Window 扫描 |
-sW |
TCP 窗口扫描 |
| Maimon 扫描 |
-sM |
FIN/ACK 扫描 |
| FIN 扫描 |
-sF |
TCP FIN 扫描 |
| Xmas 扫描 |
-sX |
TCP Xmas Tree 扫描(FIN, PSH, URG) |
| Null 扫描 |
-sN |
无标志位扫描 |
| Idle 扫描 |
-sI zombie_host |
僵尸主机扫描,隐蔽扫描 |
| IP 协议扫描 |
-sO |
IP 协议扫描 |
四、常用选项
| 选项 |
说明 |
-p |
指定端口范围,如 -p 80, -p 1-1000, -p 22,80,443 |
-F |
快速扫描(100个常用端口) |
-p- |
扫描所有 65535 个端口 |
-O |
操作系统检测 |
-sV |
服务/版本检测 |
-A |
全面扫描(OS检测+版本检测+脚本扫描+traceroute) |
-T0 到 -T5 |
时序模板(0=最慢,5=最快) |
-n |
不进行 DNS 解析 |
-R |
总是进行 DNS 解析 |
--dns-servers |
指定 DNS 服务器 |
-6 |
启用 IPv6 扫描 |
-v / -vv |
详细输出 / 更详细输出 |
-oN |
普通格式输出到文件 |
-oX |
XML 格式输出到文件 |
-oG |
Grepable 格式输出到文件 |
-oS |
脚本小子格式输出 |
-oA |
所有格式输出到文件 |
--script |
使用 NSE 脚本 |
-Pn |
跳过主机发现,将所有主机视为在线 |
-PS |
TCP SYN ping |
-PA |
TCP ACK ping |
-PE |
ICMP echo ping |
五、常用扫描实例
1. 基本扫描
# 扫描单个主机
nmap 192.168.1.1
# 扫描多个主机
nmap 192.168.1.1 192.168.1.2 192.168.1.3
# 扫描子网
nmap 192.168.1.0/24
# 扫描IP范围
nmap 192.168.1.1-100
# 从文件读取目标
nmap -iL targets.txt
2. 端口扫描
# 扫描特定端口
nmap -p 80 192.168.1.1
# 扫描端口范围
nmap -p 1-1000 192.168.1.1
# 扫描多个特定端口
nmap -p 22,80,443,8080 192.168.1.1
# 扫描所有端口(慢)
nmap -p- 192.168.1.1
# 快速扫描(100个常用端口)
nmap -F 192.168.1.1
3. 服务版本检测
# 服务版本检测
nmap -sV 192.168.1.1
# 增强版本检测
nmap -sV --version-intensity 9 192.168.1.1
# 轻量级版本检测
nmap -sV --version-light 192.168.1.1
# 全面检测(包括RPC)
nmap -sV -sR 192.168.1.1
4. 操作系统检测
# 操作系统检测
nmap -O 192.168.1.1
# 操作系统检测(更积极)
nmap -O --osscan-guess 192.168.1.1
# 操作系统和服务版本检测
nmap -A 192.168.1.1
5. UDP 扫描
# UDP端口扫描(较慢)
nmap -sU 192.168.1.1
# UDP常用端口扫描
nmap -sU -p 53,67,68,69,123,161 192.168.1.1
# UDP扫描特定端口
nmap -sU -p 1-100 192.168.1.1
6. 隐蔽扫描
# TCP SYN 扫描(默认,半开放)
nmap -sS 192.168.1.1
# TCP FIN 扫描
nmap -sF 192.168.1.1
# TCP Xmas 扫描
nmap -sX 192.168.1.1
# TCP Null 扫描
nmap -sN 192.168.1.1
# TCP ACK 扫描(防火墙规则探测)
nmap -sA 192.168.1.1
# Idle 扫描(僵尸扫描)
nmap -sI zombie_host 192.168.1.1
7. 输出格式
# 普通文本输出
nmap -oN scan.txt 192.168.1.1
# XML 格式输出
nmap -oX scan.xml 192.168.1.1
# Grepable 格式输出
nmap -oG scan.gnmap 192.168.1.1
# 所有格式输出
nmap -oA scan_results 192.168.1.1
# 同时输出到屏幕和文件
nmap -v -oN scan.txt -oX scan.xml 192.168.1.1
六、Nmap 脚本引擎(NSE)
Nmap 脚本引擎允许用户编写和运行脚本来完成更高级的网络发现任务。
1. 脚本分类
| 脚本类别 |
说明 |
auth |
身份认证相关 |
broadcast |
网络广播 |
brute |
暴力破解 |
default |
默认脚本(-sC) |
discovery |
服务发现 |
dos |
拒绝服务测试 |
exploit |
漏洞利用 |
external |
外部数据源 |
fuzzer |
协议模糊测试 |
intrusive |
侵入性脚本 |
malware |
恶意软件检测 |
safe |
安全脚本 |
version |
版本检测增强 |
vuln |
漏洞检测 |
2. 脚本使用示例
# 使用默认脚本(等价于 -sC)
nmap -sC 192.168.1.1
# 使用特定脚本
nmap --script http-title 192.168.1.1
# 使用脚本类别
nmap --script "default or safe" 192.168.1.1
# 使用多个脚本
nmap --script "http-headers,http-title" 192.168.1.1
# 排除脚本类别
nmap --script "not intrusive" 192.168.1.1
# 脚本参数
nmap --script "smb-enum-users" --script-args smbuser=admin,smbpass=password 192.168.1.1
# 常见脚本示例
nmap --script ssh-brute 192.168.1.1
nmap --script http-sql-injection 192.168.1.1
nmap --script smb-vuln-ms17-010 192.168.1.1
nmap --script ssl-heartbleed 192.168.1.1
nmap --script dns-brute 192.168.1.1
七、主机发现技术
# 跳过主机发现(假设所有主机都在线)
nmap -Pn 192.168.1.1
# TCP SYN Ping
nmap -PS22,80,443 192.168.1.1
# TCP ACK Ping
nmap -PA22,80,443 192.168.1.1
# UDP Ping
nmap -PU53,161 192.168.1.1
# ICMP Echo Ping
nmap -PE 192.168.1.1
# ICMP Timestamp Ping
nmap -PP 192.168.1.1
# ICMP Address Mask Ping
nmap -PM 192.168.1.1
# IP 协议 Ping
nmap -PO2,4,6 192.168.1.1
# ARP Ping(局域网)
nmap -PR 192.168.1.1
# 多种Ping组合
nmap -PE -PS22,443 -PA80 -PU161 192.168.1.1
八、扫描时序和性能
# 时序模板(0=最慢,5=最快)
nmap -T0 192.168.1.1 # 偏执狂模式
nmap -T1 192.168.1.1 # 鬼祟模式
nmap -T2 192.168.1.1 # 文雅模式
nmap -T3 192.168.1.1 # 普通模式(默认)
nmap -T4 192.168.1.1 # 积极模式
nmap -T5 192.168.1.1 # 疯狂模式
# 自定义时序参数
nmap --max-retries 2 192.168.1.1
nmap --min-rate 100 192.168.1.1
nmap --max-rate 1000 192.168.1.1
nmap --scan-delay 100ms 192.168.1.1
nmap --max-scan-delay 2s 192.168.1.1
九、防火墙/IDS 规避技术
# 数据包分段
nmap -f 192.168.1.1
# 指定MTU
nmap --mtu 16 192.168.1.1
# 欺骗源地址
nmap -S 192.168.1.99 -e eth0 192.168.1.1
# 源端口欺骗
nmap --source-port 53 192.168.1.1
# MAC地址欺骗
nmap --spoof-mac 00:11:22:33:44:55 192.168.1.1
# 使用诱饵主机
nmap -D RND:10 192.168.1.1
nmap -D decoy1,decoy2,decoy3,ME 192.168.1.1
# 随机化主机顺序
nmap --randomize-hosts 192.168.1.0/24
# 随机化端口顺序
nmap --randomize-ports 192.168.1.1
# 发送坏校验和
nmap --badsum 192.168.1.1
十、实用扫描示例
1. 完整网络审计扫描
nmap -A -T4 -p- 192.168.1.0/24 -oA network_audit
2. Web 服务器扫描
nmap -sV -p 80,443,8080,8443 --script "http-*" 192.168.1.1
3. 数据库服务器扫描
nmap -sV -p 1433,1521,3306,5432 --script "mysql-*,mssql-*" 192.168.1.1
4. 邮件服务器扫描
nmap -sV -p 25,110,143,465,587,993,995 --script "smtp-*,pop3-*,imap-*" 192.168.1.1
5. SMB/文件共享扫描
nmap -sV -p 139,445 --script "smb-*" 192.168.1.1
6. SSL/TLS 扫描
nmap -sV -p 443,465,993,995 --script "ssl-*" 192.168.1.1
7. 路由器/网络设备扫描
nmap -sV -p 22,23,80,443,161,162 --script "snmp-*,router-*" 192.168.1.1
十一、Nmap 结果分析
1. 端口状态说明
| 状态 |
说明 |
| open |
端口开放,有应用程序在此端口上接受连接 |
| closed |
端口关闭,但主机可访问 |
| filtered |
端口被防火墙或过滤器阻止,无法确定状态 |
| unfiltered |
端口可访问,但无法确定开放还是关闭 |
| open|filtered |
无法确定端口是开放还是被过滤 |
| closed|filtered |
无法确定端口是关闭还是被过滤 |
2. 常用输出分析命令
# 从Grepable输出中提取开放端口
grep "open" scan.gnmap
# 提取特定服务的开放端口
grep "80/open" scan.gnmap
# 统计开放端口数量
grep -c "open" scan.gnmap
# 从XML输出中提取信息
xmlstarlet sel -t -m "//port" -v "@portid" -n scan.xml
# 使用nmap-parse-output工具
nmap-parse-output scan.xml open-ports
十二、安全与法律注意事项
法律与道德提醒
- 仅在您拥有合法授权的情况下扫描目标网络
- 不要扫描互联网上的随机主机
- 了解并遵守当地法律和法规
- 使用Nmap进行渗透测试前必须获得书面授权
- 尊重隐私和网络安全
- 负责任地披露发现的漏洞
1. 合法使用场景
- 扫描自己的网络和设备
- 获得书面授权的渗透测试
- 网络安全教学和研究
- 系统管理和网络监控
- 漏洞评估和合规检查
2. 扫描优化建议
性能优化技巧
- 使用
-T4 时序模板提高扫描速度
- 使用
--min-rate 和 --max-rate 控制数据包速率
- 优先扫描常用端口(
-F)
- 使用并行扫描(Zenmap GUI支持)
- 避免不必要的脚本扫描
- 合理设置超时和重试次数
十三、Nmap 相关工具
| 工具 |
说明 |
| Zenmap |
Nmap 的官方图形界面 |
| ndiff |
比较两次扫描结果的差异 |
| ncat |
增强版的 netcat,包含在 Nmap 中 |
| nping |
网络数据包生成工具 |
| nmap-parse-output |
Nmap 输出解析工具 |
| Masscan |
高速端口扫描器 |
| RustScan |
现代化的快速端口扫描器 |