Nmap 使用手册
简介
Nmap (Network Mapper) 是一个开源的网络探测和安全审计工具。它被设计用于快速扫描大型网络,也可以用于单个主机。Nmap使用原始IP数据包来确定网络上可用的主机、这些主机提供的服务、运行的操作系统、使用的防火墙类型等信息。
主要功能
- 🔍 主机发现 (Host Discovery)
- 🚪 端口扫描 (Port Scanning)
- 🔬 服务版本检测 (Version Detection)
- 💻 操作系统检测 (OS Detection)
- 🔥 防火墙/IDS规避 (Firewall Evasion)
- 📝 脚本引擎 (NSE - Nmap Scripting Engine)
安装
macOS
# Homebrew安装
brew install nmap
# 验证安装
nmap --version
Linux (Debian/Ubuntu)
sudo apt update
sudo apt install nmap
# 验证安装
nmap --version
Linux (RHEL/CentOS/Fedora)
sudo yum install nmap
# 或
sudo dnf install nmap
Windows
从官网下载安装包: https://nmap.org/download.html
基本用法
基本语法
目标指定方式
# 单个IP
nmap 192.168.1.1
# 主机名
nmap scanme.nmap.org
# 多个目标
nmap 192.168.1.1 192.168.1.2 192.168.1.3
# IP范围
nmap 192.168.1.1-254
nmap 192.168.1.0/24
# CIDR表示法
nmap 192.168.1.0/24
# 从文件读取目标
nmap -iL targets.txt
# 随机选择目标
nmap -iR 100 # 随机扫描100个主机
# 排除目标
nmap 192.168.1.0/24 --exclude 192.168.1.1
nmap 192.168.1.0/24 --excludefile exclude.txt
主机发现
主机发现用于确定网络中哪些主机是活动的。
主机发现选项
| 选项 | 说明 |
-sL | 列表扫描,仅列出目标 |
-sn | Ping扫描,禁用端口扫描 |
-Pn | 跳过主机发现,假定所有主机在线 |
-PS [端口列表] | TCP SYN Ping |
-PA [端口列表] | TCP ACK Ping |
-PU [端口列表] | UDP Ping |
-PE/PP/PM | ICMP Ping (Echo/Timestamp/Netmask) |
-PR | ARP Ping (局域网) |
-n | 不进行DNS解析 |
-R | 始终进行DNS解析 |
--dns-servers | 指定DNS服务器 |
--system-dns | 使用系统DNS解析器 |
主机发现示例
# 列表扫描(仅列出目标,不扫描)
nmap -sL 192.168.1.0/24
# Ping扫描(仅发现主机,不扫描端口)
nmap -sn 192.168.1.0/24
# 跳过主机发现(假定所有主机在线)
nmap -Pn 192.168.1.1
# TCP SYN Ping(向80端口发送SYN包)
nmap -PS80 192.168.1.1
# TCP ACK Ping(向443端口发送ACK包)
nmap -PA443 192.168.1.1
# UDP Ping
nmap -PU53 192.168.1.1
# ICMP Echo Ping
nmap -PE 192.168.1.1
# ARP Ping(局域网最有效)
nmap -PR 192.168.1.0/24
# 不进行DNS解析(加快扫描速度)
nmap -n 192.168.1.1
# 组合使用
nmap -sn -PS22,80,443 -PA80,443 192.168.1.0/24
端口扫描技术
端口扫描类型
| 选项 | 扫描类型 | 说明 |
-sS | TCP SYN扫描 | 半开放扫描,默认扫描方式,需要root权限 |
-sT | TCP Connect扫描 | 完整TCP连接,不需要特权 |
-sU | UDP扫描 | UDP端口扫描,速度较慢 |
-sA | TCP ACK扫描 | 用于检测防火墙规则 |
-sW | TCP窗口扫描 | 类似ACK扫描,可区分开放/关闭端口 |
-sM | TCP Maimon扫描 | 发送FIN/ACK包 |
-sN/-sF/-sX | TCP NULL/FIN/Xmas扫描 | 隐蔽扫描技术 |
-sI | 空闲扫描 | 极其隐蔽的扫描 |
-sY | SCTP INIT扫描 | SCTP协议扫描 |
-sZ | SCTP COOKIE-ECHO扫描 | SCTP协议扫描 |
-sO | IP协议扫描 | 确定支持的IP协议 |
-b | FTP反弹扫描 | 通过FTP服务器扫描 |
端口扫描示例
# TCP SYN扫描(默认,隐蔽且快速)
sudo nmap -sS 192.168.1.1
# TCP Connect扫描(无需root)
nmap -sT 192.168.1.1
# UDP扫描(查找DNS、SNMP等服务)
sudo nmap -sU 192.168.1.1
# 同时扫描TCP和UDP
sudo nmap -sS -sU 192.168.1.1
# TCP ACK扫描(探测防火墙规则)
sudo nmap -sA 192.168.1.1
# TCP NULL扫描(隐蔽扫描)
sudo nmap -sN 192.168.1.1
# TCP FIN扫描
sudo nmap -sF 192.168.1.1
# TCP Xmas扫描
sudo nmap -sX 192.168.1.1
# 空闲扫描(使用僵尸主机)
sudo nmap -sI zombie_host target_host
# IP协议扫描
sudo nmap -sO 192.168.1.1
端口指定
# 扫描特定端口
nmap -p 22 192.168.1.1
nmap -p 22,80,443 192.168.1.1
# 端口范围
nmap -p 1-100 192.168.1.1
nmap -p 1-65535 192.168.1.1
# 常用端口(默认扫描1000个常用端口)
nmap 192.168.1.1
# 快速扫描(100个最常用端口)
nmap -F 192.168.1.1
# 扫描所有65535个端口
nmap -p- 192.168.1.1
nmap -p 1-65535 192.168.1.1
# 按服务名指定端口
nmap -p http,https,ssh 192.168.1.1
# 按协议指定端口
nmap -p U:53,T:80,443 192.168.1.1 # U=UDP, T=TCP
# 扫描前N个常用端口
nmap --top-ports 10 192.168.1.1
nmap --top-ports 100 192.168.1.1
# 按端口使用频率扫描
nmap --port-ratio 0.1 192.168.1.1 # 扫描出现频率>10%的端口
服务和版本检测
版本检测选项
| 选项 | 说明 |
-sV | 探测开放端口的服务版本 |
--version-intensity <0-9> | 设置版本检测强度(默认7) |
--version-light | 轻量级版本检测(强度2) |
--version-all | 尝试所有探测(强度9) |
--version-trace | 显示版本检测详细信息 |
服务检测示例
# 基本版本检测
nmap -sV 192.168.1.1
# 轻量级版本检测(更快但可能不准确)
nmap -sV --version-light 192.168.1.1
# 高强度版本检测(更准确但更慢)
nmap -sV --version-all 192.168.1.1
# 指定检测强度(0-9)
nmap -sV --version-intensity 5 192.168.1.1
# 显示版本检测详细过程
nmap -sV --version-trace 192.168.1.1
# 组合使用
nmap -sS -sV -p- 192.168.1.1
操作系统检测
OS检测选项
| 选项 | 说明 |
-O | 启用OS检测 |
--osscan-limit | 限制OS检测只针对有希望的主机 |
--osscan-guess | 猜测OS检测结果 |
--fuzzy | 模糊OS检测 |
OS检测示例
# 基本OS检测
sudo nmap -O 192.168.1.1
# OS检测+版本检测
sudo nmap -O -sV 192.168.1.1
# 激进的OS检测和猜测
sudo nmap -O --osscan-guess 192.168.1.1
# 限制OS检测范围(提高准确性)
sudo nmap -O --osscan-limit 192.168.1.1
# 完整的信息收集扫描
sudo nmap -A 192.168.1.1 # 包含OS、版本、脚本、路由追踪
NSE脚本引擎
Nmap脚本引擎(NSE)允许用户编写和共享简单的脚本来自动化各种网络任务。
脚本类别
| 类别 | 说明 |
auth | 认证相关脚本 |
broadcast | 网络广播发现 |
brute | 暴力破解 |
default | 默认脚本(-sC使用) |
discovery | 网络发现 |
dos | 拒绝服务测试 |
exploit | 漏洞利用 |
external | 使用外部资源 |
fuzzer | 模糊测试 |
intrusive | 可能影响目标的脚本 |
malware | 恶意软件检测 |
safe | 安全的脚本 |
version | 版本检测增强 |
vuln | 漏洞检测 |
NSE脚本选项
| 选项 | 说明 |
-sC | 使用默认脚本集 |
--script=<脚本> | 运行指定脚本 |
--script-args=<参数> | 传递脚本参数 |
--script-args-file=<文件> | 从文件读取脚本参数 |
--script-trace | 显示脚本执行详情 |
--script-updatedb | 更新脚本数据库 |
--script-help=<脚本> | 显示脚本帮助 |
NSE脚本示例
# 使用默认脚本
nmap -sC 192.168.1.1
# 使用特定脚本
nmap --script=http-title 192.168.1.1
# 使用多个脚本
nmap --script=http-title,http-headers 192.168.1.1
# 使用脚本类别
nmap --script=vuln 192.168.1.1
nmap --script=default,safe 192.168.1.1
# 使用通配符
nmap --script="http-*" 192.168.1.1
nmap --script="ssh-*" 192.168.1.1
# 排除特定脚本
nmap --script="default and not http-slowloris" 192.168.1.1
# 传递脚本参数
nmap --script=http-put --script-args http-put.url='/uploads/test.txt',http-put.file='test.txt' 192.168.1.1
# 显示脚本帮助
nmap --script-help=http-title
# 更新脚本数据库
nmap --script-updatedb
# 脚本调试
nmap --script=http-title --script-trace 192.168.1.1
常用NSE脚本
漏洞扫描
# 通用漏洞扫描
nmap --script=vuln 192.168.1.1
# SMB漏洞(如永恒之蓝)
nmap --script=smb-vuln-* 192.168.1.1
# HTTP漏洞
nmap --script=http-vuln-* 192.168.1.1
# SSL/TLS漏洞
nmap --script=ssl-heartbleed,ssl-poodle 192.168.1.1
暴力破解
# HTTP基本认证暴力破解
nmap --script=http-brute --script-args userdb=users.txt,passdb=pass.txt 192.168.1.1
# SSH暴力破解
nmap -p 22 --script=ssh-brute --script-args userdb=users.txt 192.168.1.1
# FTP暴力破解
nmap -p 21 --script=ftp-brute 192.168.1.1
# MySQL暴力破解
nmap -p 3306 --script=mysql-brute 192.168.1.1
信息收集
# HTTP信息收集
nmap --script=http-title,http-headers,http-methods 192.168.1.1
# SMB信息收集
nmap --script=smb-os-discovery,smb-enum-shares 192.168.1.1
# DNS信息收集
nmap --script=dns-brute domain.com
# WHOIS查询
nmap --script=whois-domain,whois-ip 192.168.1.1
# 地理位置
nmap --script=ip-geolocation-* 192.168.1.1
Web应用扫描
# 检测WAF
nmap --script=http-waf-detect 192.168.1.1
# 目录枚举
nmap --script=http-enum 192.168.1.1
# 备份文件检测
nmap --script=http-backup-finder 192.168.1.1
# SQL注入检测
nmap --script=http-sql-injection 192.168.1.1
# XSS检测
nmap --script=http-unsafe-output-escaping 192.168.1.1
# 检测HTTP方法
nmap --script=http-methods 192.168.1.1
数据库扫描
# MySQL枚举
nmap -p 3306 --script=mysql-enum 192.168.1.1
# MySQL数据库列表
nmap -p 3306 --script=mysql-databases --script-args mysqluser=root,mysqlpass=pass 192.168.1.1
# MongoDB信息
nmap -p 27017 --script=mongodb-info 192.168.1.1
# PostgreSQL信息
nmap -p 5432 --script=pgsql-brute 192.168.1.1
邮件服务
# SMTP枚举用户
nmap -p 25 --script=smtp-enum-users 192.168.1.1
# SMTP命令
nmap -p 25 --script=smtp-commands 192.168.1.1
# 开放中继检测
nmap -p 25 --script=smtp-open-relay 192.168.1.1
时序和性能
时序模板
| 选项 | 模板 | 说明 |
-T0 | Paranoid | 极慢,用于IDS规避 |
-T1 | Sneaky | 慢,用于IDS规避 |
-T2 | Polite | 降低扫描速度,减少带宽和目标资源占用 |
-T3 | Normal | 默认速度 |
-T4 | Aggressive | 快速扫描,假定处于快速可靠的网络 |
-T5 | Insane | 非常快,可能丢失信息 |
性能选项
| 选项 | 说明 |
--min-hostgroup <数量> | 并行扫描主机组的最小大小 |
--max-hostgroup <数量> | 并行扫描主机组的最大大小 |
--min-parallelism <数量> | 最小并行探测数 |
--max-parallelism <数量> | 最大并行探测数 |
--min-rtt-timeout <时间> | 最小RTT超时 |
--max-rtt-timeout <时间> | 最大RTT超时 |
--initial-rtt-timeout <时间> | 初始RTT超时 |
--max-retries <次数> | 最大重试次数 |
--host-timeout <时间> | 主机超时 |
--scan-delay <时间> | 探测间延迟 |
--max-scan-delay <时间> | 最大探测间延迟 |
--min-rate <数量> | 最小发包速率 |
--max-rate <数量> | 最大发包速率 |
性能示例
# 快速扫描
nmap -T4 192.168.1.1
# 慢速隐蔽扫描
nmap -T0 192.168.1.1
# 自定义性能参数
nmap --min-rate=1000 --max-rate=5000 192.168.1.1
# 设置超时
nmap --host-timeout 30m 192.168.1.0/24
# 控制并行度
nmap --max-parallelism 100 192.168.1.0/24
# 添加延迟(避免触发IDS)
nmap --scan-delay 1s 192.168.1.1
防火墙/IDS规避
规避技术
| 选项 | 说明 |
-f | 分片数据包 |
--mtu <值> | 使用指定MTU |
-D <诱饵1,诱饵2> | 使用诱饵扫描 |
-S <IP> | 源地址欺骗 |
-e <接口> | 使用指定网络接口 |
-g/--source-port <端口> | 使用指定源端口 |
--data <hex> | 添加自定义有效载荷 |
--data-string <字符串> | 添加自定义ASCII字符串 |
--data-length <数量> | 添加随机数据 |
--ip-options <选项> | 使用IP选项 |
--ttl <值> | 设置IP TTL |
--spoof-mac <MAC> | MAC地址欺骗 |
--badsum | 使用错误的TCP/UDP校验和 |
规避示例
# 分片数据包
sudo nmap -f 192.168.1.1
# 指定MTU
sudo nmap --mtu 24 192.168.1.1
# 诱饵扫描(隐藏真实IP)
sudo nmap -D RND:10 192.168.1.1
sudo nmap -D decoy1,decoy2,ME,decoy3 192.168.1.1
# 源地址欺骗
sudo nmap -S 192.168.1.100 -e eth0 -Pn 192.168.1.1
# 指定源端口(如53 DNS端口可能不被过滤)
sudo nmap --source-port 53 192.168.1.1
sudo nmap -g 53 192.168.1.1
# 添加随机数据
nmap --data-length 25 192.168.1.1
# MAC地址欺骗
sudo nmap --spoof-mac 0 192.168.1.1 # 随机MAC
sudo nmap --spoof-mac Apple 192.168.1.1 # Apple厂商
sudo nmap --spoof-mac 00:11:22:33:44:55 192.168.1.1 # 指定MAC
# 组合规避技术
sudo nmap -f -T2 -D RND:10 --source-port 53 --data-length 20 192.168.1.1
输出选项
输出格式
| 选项 | 格式 | 说明 |
-oN <文件> | Normal | 标准输出 |
-oX <文件> | XML | XML格式 |
-oS <文件> | Script Kiddie | 脚本小子格式 |
-oG <文件> | Grepable | 易于grep的格式 |
-oA <基础名> | All | 同时输出以上所有格式 |
输出选项
| 选项 | 说明 |
-v | 增加详细级别 |
-vv | 更详细 |
-d | 调试输出 |
-dd | 更详细的调试 |
--reason | 显示端口状态原因 |
--open | 只显示开放端口 |
--packet-trace | 显示所有发送和接收的数据包 |
--iflist | 显示接口和路由 |
--append-output | 追加到输出文件 |
--resume <文件> | 恢复中断的扫描 |
--stylesheet <路径> | 设置XSL样式表 |
--webxml | 使用Nmap.org的样式表 |
--no-stylesheet | 不使用XSL样式表 |
输出示例
# 标准输出到文件
nmap -oN scan_result.txt 192.168.1.1
# XML输出
nmap -oX scan_result.xml 192.168.1.1
# Grepable输出
nmap -oG scan_result.gnmap 192.168.1.1
# 所有格式输出
nmap -oA scan_result 192.168.1.1
# 详细输出
nmap -v 192.168.1.1
nmap -vv 192.168.1.1
# 只显示开放端口
nmap --open 192.168.1.1
# 显示端口状态原因
nmap --reason 192.168.1.1
# 数据包追踪
nmap --packet-trace 192.168.1.1
# 调试输出
nmap -d 192.168.1.1
# 恢复中断的扫描
nmap --resume scan_result.xml
# 追加输出
nmap --append-output -oN scan.txt 192.168.1.1
实战案例
1. 快速网络扫描
# 发现局域网活动主机
nmap -sn 192.168.1.0/24
# 快速扫描常用端口
nmap -F 192.168.1.1-254
# 扫描前100个常用端口
nmap --top-ports 100 192.168.1.0/24
2. 全面扫描单个主机
# 综合扫描(OS、版本、脚本、路由)
sudo nmap -A -T4 192.168.1.1
# 详细扫描所有端口
sudo nmap -sS -sV -O -p- -T4 -v 192.168.1.1
# 保存结果到文件
sudo nmap -A -T4 -oA full_scan 192.168.1.1
3. Web服务器扫描
# 扫描Web服务
nmap -p 80,443 --script=http-enum,http-headers,http-methods,http-title 192.168.1.1
# 检测Web漏洞
nmap -p 80,443 --script=http-vuln-* 192.168.1.1
# 检测WAF
nmap -p 80,443 --script=http-waf-detect,http-waf-fingerprint 192.168.1.1
4. 数据库服务扫描
# MySQL扫描
nmap -p 3306 --script=mysql-info,mysql-databases,mysql-variables 192.168.1.1
# MongoDB扫描
nmap -p 27017 --script=mongodb-info,mongodb-databases 192.168.1.1
# Redis扫描
nmap -p 6379 --script=redis-info 192.168.1.1
5. 漏洞扫描
# 通用漏洞扫描
nmap --script=vuln 192.168.1.1
# SMB漏洞扫描(永恒之蓝等)
nmap --script=smb-vuln-ms17-010,smb-vuln-ms08-067 192.168.1.1
# SSL/TLS漏洞
nmap --script=ssl-heartbleed,ssl-poodle,ssl-ccs-injection 192.168.1.1
6. 隐蔽扫描
# 慢速SYN扫描,使用诱饵
sudo nmap -sS -T2 -f -D RND:10 --source-port 53 192.168.1.1
# 分片+随机诱饵+源端口欺骗
sudo nmap -sS -f --mtu 24 -D RND:5 -g 53 --data-length 20 192.168.1.1
7. 内网渗透
# 发现内网活动主机
nmap -sn -T4 192.168.1.0/24 -oG alive_hosts.txt
# 扫描常见服务端口
nmap -p 21,22,23,25,80,110,139,443,445,1433,3306,3389,8080 192.168.1.0/24
# 识别操作系统
sudo nmap -O -sV --osscan-guess 192.168.1.1-254
8. IPv6扫描
# IPv6主机发现
nmap -6 fe80::1
# IPv6端口扫描
nmap -6 -p- 2001:db8::1
# IPv6服务检测
nmap -6 -sV 2001:db8::1
9. 大规模扫描
# 扫描整个C类网段
nmap -sS -T4 --min-rate=1000 192.168.1.0/24
# 扫描多个网段
nmap -iL network_list.txt -oA large_scan
# 使用并行化加速
nmap --min-hostgroup 256 --max-parallelism 100 192.168.0.0/16
10. CTF/渗透测试场景
# 快速信息收集
nmap -sS -sV -T4 --script=default,vuln -oA ctf_recon target.com
# 查找特定服务
nmap -p- --open -sV | grep -i "ssh\|ftp\|smtp"
# 检测防火墙规则
sudo nmap -sA -p 1-1000 192.168.1.1
# 综合扫描并保存结果
sudo nmap -A -T4 -p- --script=default,vuln -oA comprehensive_scan target.com
常用组合命令
基础扫描
# 快速扫描Top 100端口
nmap --top-ports 100 192.168.1.1
# 扫描所有TCP端口
nmap -p- 192.168.1.1
# 扫描特定端口范围
nmap -p 1-1000 192.168.1.1
服务识别
# 基本服务版本检测
nmap -sV 192.168.1.1
# 服务版本+OS检测
sudo nmap -sV -O 192.168.1.1
# 使用脚本增强检测
nmap -sV -sC 192.168.1.1
全面扫描
# 激进扫描(OS、版本、脚本、路由)
sudo nmap -A 192.168.1.1
# 完整扫描所有端口+详细输出
sudo nmap -sS -sV -O -p- -v -oA full_scan 192.168.1.1
# 最全面扫描
sudo nmap -sS -sU -T4 -A -v -p- -oA ultimate_scan 192.168.1.1
隐蔽扫描
# 基本隐蔽扫描
nmap -sS -T2 192.168.1.1
# 高级隐蔽扫描
sudo nmap -sS -T1 -f -D RND:10 -g 53 192.168.1.1
端口状态说明
Nmap扫描后会显示端口的状态:
| 状态 | 说明 |
open | 应用程序正在监听该端口 |
closed | 端口可访问,但没有应用程序监听 |
filtered | 无法确定端口状态(被防火墙过滤) |
unfiltered | 端口可访问,但无法确定开放或关闭 |
open|filtered | 无法确定端口是开放还是被过滤 |
closed|filtered | 无法确定端口是关闭还是被过滤 |
脚本位置和管理
脚本位置
# macOS (Homebrew)
/opt/homebrew/share/nmap/scripts/
# Linux
/usr/share/nmap/scripts/
# 查看所有可用脚本
ls /usr/share/nmap/scripts/ | grep -i http
# 搜索特定功能脚本
nmap --script-help "*vuln*"
更新和管理
# 更新脚本数据库
nmap --script-updatedb
# 查看脚本帮助
nmap --script-help=http-title
# 查看脚本源代码
cat /usr/share/nmap/scripts/http-title.nse
常见问题和技巧
1. 提高扫描速度
# 使用快速时序模板
nmap -T4 target
# 限制端口扫描范围
nmap --top-ports 1000 target
# 跳过主机发现(如果确定主机在线)
nmap -Pn target
# 不进行DNS解析
nmap -n target
# 增加并行度
nmap --min-parallelism 100 target
2. 避免检测
# 慢速扫描
nmap -T1 target
# 添加延迟
nmap --scan-delay 1s target
# 随机目标顺序
nmap --randomize-hosts target1 target2 target3
# 使用诱饵
nmap -D RND:10 target
3. 解决权限问题
# SYN扫描需要root权限
sudo nmap -sS target
# 无需root的Connect扫描
nmap -sT target
# macOS可能需要禁用防火墙
sudo pfctl -d
4. 处理大规模扫描
# 使用目标文件
nmap -iL targets.txt
# 分段扫描
nmap 192.168.1.1-100
nmap 192.168.1.101-200
# 使用Grepable输出便于后续处理
nmap -oG results.gnmap target
# 提取开放端口
grep "open" results.gnmap
5. 调试扫描问题
# 显示详细输出
nmap -v target
nmap -vv target
# 显示调试信息
nmap -d target
nmap -dd target
# 数据包追踪
nmap --packet-trace target
# 显示端口状态原因
nmap --reason target
Nmap输出解析
XML输出处理
# 扫描并输出XML
nmap -oX scan.xml target
# 使用xsltproc转换为HTML
xsltproc scan.xml -o scan.html
# 使用Python解析XML
python3 -c "import xml.etree.ElementTree as ET; tree = ET.parse('scan.xml'); root = tree.getroot(); [print(host.find('address').get('addr')) for host in root.findall('.//host')]"
Grepable输出处理
# 提取所有开放端口
grep "open" scan.gnmap | cut -d " " -f 2
# 提取特定端口
grep "80/open" scan.gnmap
# 统计开放端口数量
grep -o "open" scan.gnmap | wc -l
安全和法律注意事项
⚠️ 重要提示: 1. 授权: 只扫描你有明确授权的系统 2. 合法性: 未经授权的端口扫描在某些司法管辖区可能是非法的 3. 网络影响: 大规模扫描可能影响网络性能 4. IDS/IPS: 扫描活动可能触发入侵检测系统警报 5. 服务中断: 某些扫描技术可能导致服务中断
合法使用场景
- ✅ 自己的系统和网络
- ✅ 有书面授权的渗透测试
- ✅ 漏洞赏金计划(遵循规则)
- ✅ 安全研究(在隔离环境)
- ✅ CTF比赛和练习环境
禁止行为
- ❌ 扫描未经授权的系统
- ❌ 使用扫描结果进行攻击
- ❌ 干扰正常业务运营
- ❌ 未经许可的漏洞测试
参考资源
官方资源
- 官方网站: https://nmap.org/
- 官方文档: https://nmap.org/book/
- NSE脚本库: https://nmap.org/nsedoc/
- 邮件列表: https://nmap.org/mailman/listinfo/
学习资源
- Nmap Network Scanning: Gordon Lyon的官方书籍
- Nmap Cookbook: 实用技巧和方案
- SecWiki Nmap: 中文Nmap资源
- HackTricks Nmap: 渗透测试技巧
在线工具
- Nmap Online: 在线Nmap扫描器(谨慎使用)
- Shodan: 互联网设备搜索引擎
- Censys: 互联网扫描数据库
快速参考卡
常用命令速查
# 基础扫描
nmap 192.168.1.1 # 基本扫描
nmap -v 192.168.1.1 # 详细扫描
nmap -A 192.168.1.1 # 激进扫描
nmap -p- 192.168.1.1 # 全端口扫描
# 主机发现
nmap -sn 192.168.1.0/24 # Ping扫描
nmap -Pn 192.168.1.1 # 跳过Ping
# 端口扫描
nmap -sS 192.168.1.1 # SYN扫描
nmap -sT 192.168.1.1 # Connect扫描
nmap -sU 192.168.1.1 # UDP扫描
# 服务检测
nmap -sV 192.168.1.1 # 版本检测
nmap -O 192.168.1.1 # OS检测
nmap -sC 192.168.1.1 # 默认脚本
# 输出
nmap -oN file.txt 192.168.1.1 # 标准输出
nmap -oX file.xml 192.168.1.1 # XML输出
nmap -oA basename 192.168.1.1 # 所有格式
# 性能
nmap -T4 192.168.1.1 # 快速扫描
nmap -T0 192.168.1.1 # 慢速扫描
# 规避
nmap -f 192.168.1.1 # 分片
nmap -D RND:10 192.168.1.1 # 诱饵扫描
版本: Nmap 7.98 文档更新: 2025-10 适用平台: Linux, macOS, Windows 许可证: GPL-2.0