nmap
本文最后更新于 2025年5月15日 凌晨
官网:https://nmap.org
示例
示例1:大量主机全端口快速扫描
1 | |
命令解释:
- -iL ip.txt 从文件读取所有目标 IP 段
- -p- 确保扫描所有端口(1–65535)
- -sS 快速且隐蔽的 SYN 扫描
- -sV 获取服务版本信息,较 -A 更高效
- -T4 选用快速模板,兼顾速度和可靠性
- -Pn 跳过主机发现,直接扫目标列表
- -n 关闭 DNS 解析,减少延时
- –min-rate 500 高并发发包(低:100–300,中:300-500,高:750–1000)
- –min-parallelism 512 高并发探测端口(低:64–128,中:256–512,高:750–1024)
- –min-hostgroup 4 批量轮询多个主机,减少空闲等待
- –max-retries 2 最多重试 2 次,避免过度等待(默认重试10次)
- –host-timeout 30m 单主机最长 30 分钟,防止拖慢整体扫描
- –scan-delay 100ms 每包至少等待 100ms,避免触发目标限速
- –max-scan-delay 500ms 若 Nmap 检测到丢包,可自动增长延迟,但不超过 500ms
- –open 过滤闭合端口,只列出开放端口条目
- -v 输出更详细进度,便于监控
- -oA out 同时输出三种格式,便于整理与留存
该命令兼顾扫描速度与覆盖率,并保留丰富的输出格式和可调参数,适合对千级 IP 进行全端口互联网暴露面扫描。
帮助手册(中文版):
以下是对应的 Nmap 帮助文档中文翻译,保持原有结构和简洁风格。
目标说明
可以传入主机名、IP 地址、网络等
示例:scanme.nmap.org、microsoft.com/24、192.168.0.1; 10.0.0-255.1-254
-iL <输入文件>:从主机/网络列表文件读取-iR <主机数>:随机选择目标--exclude <主机1[,主机2][,主机3],…>:排除指定主机/网络--excludefile <排除文件>:从文件中读取排除列表
主机发现
-sL:列出扫描目标(不实际发送探测)-sn:Ping 扫描,仅检测存活主机,不扫描端口-Pn:跳过主机发现,将所有主机视为在线-PS/PA/PU/PY[端口列表]:对给定端口发送 TCP SYN、ACK、UDP 或 SCTP 探测-PE/PP/PM:发送 ICMP 回显、时间戳或子网掩码请求-PO[协议列表]:IP 协议探测-n/-R:分别表示“从不做 DNS 解析”/“始终解析”(默认:有时解析)--dns-servers <服务器1[,服务器2],…>:指定自定义 DNS 服务器--system-dns:使用操作系统 DNS 解析器--traceroute:对每台主机执行跳点跟踪
扫描技术
-sS/-sT/-sA/-sW/-sM:TCP SYN、Connect()、ACK、Window、Maimon 扫描-sU:UDP 扫描-sN/-sF/-sX:TCP Null、FIN、Xmas 扫描--scanflags <标志>:自定义 TCP 标志位-sI <僵尸主机[:探测端口]>:Idle(空闲)扫描-sY/-sZ:SCTP INIT、COOKIE-ECHO 扫描-sO:IP 协议扫描-b <FTP 中继主机>:FTP 弹跳扫描
端口指定及扫描顺序
-p <端口范围>:只扫描指定端口
示例:-p22;-p1-65535;-p U:53,111,137,T:21-25,80,139,8080,S:9--exclude-ports <端口范围>:排除指定端口-F:快速模式,只扫描常见端口-r:顺序扫描端口(不随机)--top-ports <数量>:扫描最常见的 N 个端口--port-ratio <比例>:扫描出现频率高于指定比例的端口
服务/版本探测
-sV:探测开放端口上的服务及版本信息--version-intensity <级别>:设置探测强度,0(最轻)到 9(最全)--version-light:仅用最可能的探针(强度 2)--version-all:尝试所有探针(强度 9)--version-trace:显示详细探测过程(调试用)
脚本扫描
-sC:等同于--script=default--script=<Lua 脚本>:逗号分隔的脚本目录、脚本文件或脚本类别列表--script-args=<参数列表>:为脚本提供参数,如n1=v1,n2=v2--script-args-file=<文件名>:从文件中读取脚本参数--script-trace:显示脚本发送和接收的所有数据--script-updatedb:更新脚本数据库--script-help=<Lua 脚本>:显示脚本帮助信息
操作系统识别
-O:启用操作系统检测--osscan-limit:仅对有希望识别的目标进行 OS 检测--osscan-guess:更激进地猜测操作系统
时间与性能
(带 <时间> 的选项可用秒为单位,或附加 ms、s、m、h)
-T<0-5>:设置时间模板(值越大速度越快)--min-hostgroup/--max-hostgroup <大小>:并行扫描时的主机分组大小--min-parallelism/--max-parallelism <探针数>:并行探针数--initial-rtt-timeout/--min-rtt-timeout/--max-rtt-timeout <时间>:往返超时设置--max-retries <次数>:探针重试上限--host-timeout <时间>:目标超时放弃时间--scan-delay/--max-scan-delay <时间>:探针间延迟调整--min-rate/--max-rate <每秒探针数>:速率下限/上限
防火墙/IDS 绕过与欺骗
-f;--mtu <值>:分片数据包(可指定 MTU)-D <诱饵1,诱饵2[,ME],…>:使用诱饵主机混淆扫描来源-S <源地址>:伪造源 IP-e <网络接口>:指定网络接口-g/--source-port <端口号>:指定源端口--proxies <URL1[,URL2],…>:通过 HTTP/SOCKS4 代理中继--data <十六进制数据>:附加自定义负载--data-string <ASCII 字符串>:附加 ASCII 字符串--data-length <长度>:附加随机数据--ip-options <选项>:指定 IP 选项--ttl <值>:设置 IP 生存时间--spoof-mac <MAC 地址/前缀/厂商>:伪造 MAC 地址--badsum:发送错误校验和的数据包
输出
-oN/-oX/-oS/-oG <文件>:以普通、XML、脚本输出或可 grep 格式保存-oA <基名>:同时以三种主要格式保存-v(-vv、-vvv…):增加详细级别-d(-dd、-ddd…):增加调试级别--reason:显示端口状态的原因--open:仅显示“开放”或“可能开放”端口--packet-trace:显示所有收发数据包--iflist:打印本地接口及路由(调试用)--append-output:追加而非覆盖输出文件--resume <文件>:恢复中断的扫描--noninteractive:禁用交互式键盘操作--stylesheet <路径/URL>:为 XML 指定 XSL 样式表--webxml:在 XML 中引用 Nmap.Org 的样式表--no-stylesheet:不在 XML 中关联样式表
杂项
-6:启用 IPv6 扫描-A:同时启用 OS 探测、版本探测、脚本扫描和 traceroute--datadir <目录>:指定 Nmap 数据文件位置--send-eth/--send-ip:使用以太网帧或 IP 数据包发送--privileged/--unprivileged:假定有/无原始套接字权限-V:打印版本号-h:打印帮助摘要
示例
nmap -v -A scanme.nmap.orgnmap -v -sn 192.168.0.0/16 10.0.0.0/8nmap -v -iR 10000 -Pn -p 80
更多选项及示例详见手册页:https://nmap.org/book/man.html