Nmap 7.95(官网:https://nmap.org)
用法: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、TCP ACK、UDP 或 SCTP 包进行主机发现
-PE/PP/PM:发送 ICMP 回显、时间戳、子网掩码请求包作为发现探测包
-PO [协议列表]:IP 协议 Ping 探测
-n/-R:永不进行 DNS 解析 / 始终进行 DNS 解析【默认:视情况解析】
--dns-servers < 服务器 1 [, 服务器 2],...>:指定自定义的 DNS 服务器
--system-dns:使用操作系统自带的 DNS 解析器
--traceroute:追踪到每个目标主机的路由跳数路径
扫描技术
-sS/sT/sA/sW/sM:TCP SYN / 连接 / ACK / 窗口 / 迈蒙扫描
-sU:UDP 扫描
-sN/sF/sX:TCP 空扫描、FIN 扫描、圣诞扫描
--scanflags <标志位>:自定义 TCP 扫描的标志位
-sI < 僵尸主机 [: 探测端口]>:空闲扫描
-sY/sZ:SCTP 初始化 / 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 < 数字 >:扫描指定数量的最常用端口
--port-ratio < 比例 >:扫描使用频率高于指定比例的端口
服务 / 版本探测
-sV:对开放端口进行探测,确定服务类型和版本信息
--version-intensity <级别>:设置探测强度,0(轻量)至 9(尝试所有探测包)
--version-light:仅使用最可能的探测包(强度为 2)
--version-all:尝试所有探测包(强度为 9)
--version-trace:显示详细的版本扫描过程(用于调试)
脚本扫描
-sC:等效于 --script=default(加载默认脚本集)
--script=<Lua 脚本>:指定 Lua 脚本,支持目录、脚本文件、脚本分类的逗号分隔列表
--script-args=< 参数 1 = 值 1,[参数 2 = 值 2,...]>:为脚本传入参数
--script-args-file = 文件名:从文件中读取 NSE 脚本的参数
--script-trace:显示所有发送和接收的数据包数据
--script-updatedb:更新脚本数据库
--script-help=<Lua 脚本 >:显示脚本的帮助信息
其中 < Lua 脚本 > 为脚本文件或脚本分类的逗号分隔列表
操作系统探测
-O:启用操作系统探测功能
--osscan-limit:仅对高概率的目标进行操作系统探测
--osscan-guess:更激进地猜测目标操作系统
计时与性能
带 <时间> 的选项单位为秒,也可在值后追加单位:ms(毫秒)、s(秒)、m(分钟)、h(小时)(例:30m)
-T<0-5>:设置计时模板,数值越高扫描速度越快
--min-hostgroup/max-hostgroup < 数量 >:并行扫描的主机组大小范围
--min-parallelism/max-parallelism < 探测数 >:探测包的并行数量范围
--min-rtt-timeout/max-rtt-timeout/initial-rtt-timeout < 时间 >:指定探测包的往返超时时间
--max-retries < 次数 >:限制端口扫描探测包的重传次数上限
--host-timeout < 时间 >:超过该时间则放弃对目标主机的扫描
--scan-delay/--max-scan-delay < 时间 >:调整探测包之间的发送延迟
--min-rate < 数字 >:发送数据包的速率不低于指定数值(个 / 秒)
--max-rate < 数字 >:发送数据包的速率不高于指定数值(个 / 秒)
防火墙 / 入侵检测系统规避与地址欺骗
-f;--mtu <值>:对数据包进行分片(可指定 MTU 值)
-D < 诱饵 1, 诱饵 2 [, 本机],...>:使用诱饵主机隐藏真实扫描源
-S <IP 地址 >:伪造扫描的源 IP 地址
-e < 网卡 >:使用指定的网络接口
-g/--source-port < 端口号 >:使用指定的源端口
--proxies < 网址 1,[网址 2],...>:通过 HTTP/SOCKS4 代理转发连接
--data < 十六进制字符串 >:向发送的数据包追加自定义载荷
--data-string < 字符串 >:向发送的数据包追加自定义 ASCII 字符串
--data-length < 数字 >:向发送的数据包追加随机长度的数据
--ip-options < 选项 >:发送带有指定 IP 选项的数据包
--ttl < 值 >:设置 IP 数据包的生存时间字段
--spoof-mac <MAC 地址 / 前缀 / 厂商名 >:伪造本机的 MAC 地址
--badsum:发送带有无效 TCP/UDP/SCTP 校验和的数据包
输出
-oN/-oX/-oS/-oG <文件>:分别以普通、XML、脚本小子、可 grep 解析格式将扫描结果输出至指定文件
-oA < 基础名 >:同时以三种主要格式输出扫描结果(自动生成对应后缀)
-v:提高输出的详细程度(使用 - vv 或更多 v 可获得更详细信息)
-d:提高调试级别(使用 - dd 或更多 d 可获得更详细调试信息)
--reason:显示端口处于当前状态的原因
--open:仅显示开放(或可能开放)的端口
--packet-trace:显示所有发送和接收的数据包
--iflist:打印主机的网络接口和路由信息(用于调试)
--append-output:将结果追加至输出文件,而非覆盖
--resume < 文件名 >:恢复中断的扫描任务
--noninteractive:禁用通过键盘进行的运行时交互
--stylesheet < 路径 / 网址 >:用于将 XML 输出转换为 HTML 的 XSL 样式表
--webxml:从 Nmap 官网引用样式表,生成更具可移植性的 XML
--no-stylesheet:禁止为 XML 输出关联 XSL 样式表
其他
-6:启用 IPv6 扫描
-A:同时启用操作系统探测、版本探测、脚本扫描和路由追踪
--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)