官网:https://nmap.org

示例

示例1:大量主机全端口快速扫描

nmap -iL ip.txt -p- -sS -sV --version-intensity 2 -Pn -n --min-rate 1000 --max-rate 2000 --max-retries 2 -T4 --open -oA 20260911

命令解释:

  • -iL ip.txt : 从文件读取目标列表
  • -p- : 扫描所有 65535 个端口
  • -sS : TCP SYN 扫描(半开扫描,隐蔽且快速)
  • -sV : 探测服务版本信息
  • –version-intensity 2 : 定义服务版本探测强度,取值0-9,默认强度7
  • -Pn : 跳过主机发现,视所有目标为在线
  • -n : 不进行 DNS 反向解析
  • –min-rate 1000 : 最小发包速率每秒 1000 包
  • –max-rate 2000 : 最大发包速率每秒 2000 包
  • –max-retries 2 : 最大重传次数为 2 次
  • -T4 : 时间模板等级(范围 T0-T5;T0最慢/隐蔽,T3默认,T4激进/常用,T5最快/易丢包)
  • –open : 仅显示状态为 “Open” 的端口
  • -oA out : 以三种格式(nmap, xml, gnmap)输出结果,前缀为 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.org
  • nmap -v -sn 192.168.0.0/16 10.0.0.0/8
  • nmap -v -iR 10000 -Pn -p 80

更多选项及示例详见手册页:https://nmap.org/book/man.html