前面其实断断续续介绍过很多nmap的用法,但不是很完整。这里单独来介绍一下这个非常强大的扫描工具nmap。
完整地帮助文档就不放上来了,想看完整文档的直接输入命令nmap -h:
nmap -h
后面我们针对说明文档中的各个参数进行一些说明,其实如果英文比较好,就直接看说明文档就行了,我后面的介绍很多就是翻译一下而已。
目标规范
第一类就是指定扫描目标规范相关的参数:
TARGET SPECIFICATION
说明文档中介绍了不使用这部分的参数时,目标主机该怎么传,就是Ex后面的那些参数类型。
-iL:传递一个ip地址的文档,文档里的ip地址可以是不连续的,不同网段的。
-iR:后面跟一个数字,会随机扫描指定数量的主机,可以加-p指定端口扫描。
--exclude:后面跟ip地址或者网段,表示这些主机不用进行扫描。
--excludefile:后面传一个ip地址的文档,表示文档中的主机不进行扫描。
主机发现
接下来一块就是主机发现相关的参数:
-sL: List Scan 列表扫描,仅将指定的目标的IP列举出来,不进行主机发现。
-sn: Ping Scan 只进行主机发现,不进行端口扫描。
-Pn: 将所有指定的主机视作开启的,跳过主机发现的过程。
-PS/PA/PU/PY[portlist]: 使用TCPSYN/ACK或SCTP INIT/ECHO方式进行发现。
-PE/PP/PM: 使用ICMP echo, timestamp, and.NETmask 请求包发现主机。-PO[protocollist]: 使用IP协议包探测对方主机是否开启。
-n/-R: -n表示不进行DNS解析;-R表示总是进行DNS解析。
--dns-servers <serv1[,serv2],...>: 指定DNS服务器。
--system-dns: 指定使用系统的DNS服务器
--traceroute: 追踪每个路由节点
扫描技术
接下来是扫描技术相关的参数:
-sS/sT/sA/sW/sM:指定使用 TCP SYN/Connect()/ACK/Window/Maimon scans的方式来对目标主机进行扫描。
-sU: 指定使用UDP扫描方式确定目标主机的UDP端口状况。
-sN/sF/sX: 指定使用TCP Null, FIN, and Xmas scans秘密扫描方式来协助探测对方的TCP端口状态。
--scanflags <flags>: 定制TCP包的flags。
-sI <zombiehost[:probeport]>: 指定使用idle scan方式来扫描目标主机(前提需要找到合适的zombie host)
-sY/sZ: 使用SCTP INIT/COOKIE-ECHO来扫描SCTP协议端口的开放的情况。
-sO: 使用IP protocol 扫描确定目标机支持的协议类型。
-b <FTP relay host>: 使用FTP bounce scan扫描方式
端口规范和扫描顺序
接下来是指定扫描端口相关的参数:
-p <port ranges>:扫描指定的端口
实例: -p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080,S:9(其中T代表TCP协议、U代表UDP协议、S代表SCTP协议)
--exclude-ports <port ranges>:指定不扫描的端口
-F:Fast mode – 快速模式,仅扫描TOP 100的端口
-r:不进行端口随机打乱的操作(如无该参数,nmap会将要扫描的端口以随机顺序方式扫描,以让nmap的扫描不易被对方防火墙检测到)。
--top-ports <number>:扫描开放概率最高的number个端口(nmap的作者曾经做过大规模地互联网扫描,以此统计出网络上各种端口可能开放的概率。以此排列出最有可能开放端口的列表,具体可以参见文件:nmap-services。默认情况下,nmap会扫描最有可能的1000个TCP端口)
--port-ratio <ratio>:扫描指定频率以上的端口。与上述--top-ports类似,这里以概率作为参数,让概率大于--port-ratio的端口才被扫描。显然参数必须在在0到1之间,具体范围概率情况可以查看nmap-services文件。
服务版本扫描
接下来是端口上服务版本扫描相关的参数:
-sV:指定让Nmap进行版本侦测
--version-intensity <level>:指定版本侦测强度(0-9),默认为7。数值越高,探测出的服务越准确,但是运行时间会比较长。
--version-light:指定使用轻量侦测方式 (intensity 2)
--version-all:尝试使用所有的probes进行侦测 (intensity 9)
--version-trace:显示出详细的版本侦测过程信息。
脚本扫描
接下来是脚本扫描相关的参数:
-sC: 相当于使用了 --script=default
--script=<Lua scripts>: 传递指定脚本
--script-args=<n1=v1,[n2=v2,...]>: 为脚本提供参数。
--script-args-file=filename: 在文件中提供NSE脚本参数。
--script-trace: 显示发送和接收的所有数据。
--script-updatedb: 更新脚本数据库。
--script-help=<Lua scripts>: 会显示一些脚本的说明,以便理解目标脚本可以起什么作用。
系统扫描
系统扫描主要是识别目标系统是linux还是window或者是Unix:
-O: 进行系统扫描
--osscan-limit: 限制检测指定类型的系统
--osscan-guess: 猜测的时候更激进一些
时间和性能
接下来是时间和性能相关的参数:
-T<0-5>: 设置时间标准 (值越大越快)
--min-hostgroup/max-hostgroup <size>: 最少一次扫描多少主机/最多一次扫描多少主机
--min-parallelism/max-parallelism <numprobes>: 最小并行数量/最大并行数量
--min-rtt-timeout/max-rtt-timeout/initial-rtt-timeout <time>: 最小来回访问时间/最大来回访问时间
--max-retries <tries>: 限制端口扫描探针重新传输的次数。
--host-timeout <time>: 超时时间
--scan-delay/--max-scan-delay <time>:扫描延迟/最大扫描延迟
--min-rate <number>: 最低发送数据包的速度
--max-rate <number>: 最高发送数据包的速度
防火墙、id欺骗、躲避
接下来是防火墙、id欺骗和躲避相关的参数:
-f; --mtu <val>: fragment packets (optionally w/given MTU) 最大传输单元
-D <decoy1,decoy2[,ME],...>: 用诱饵掩盖扫描,传一些虚假的地址,避免目标发现扫描
-S <IP_Address>: 欺骗源地址
-e <iface>: 使用指定的接口
-g/--source-port <portnum>: 使用给定的端口号
--proxies <url1,[url2],...>: 通过HTTP/SOCKS4代理中继连接
--data <hex string>: 向发送的数据包附加自定义负载
--data-string <string>: 向发送的数据包附加自定义ASCII字符串
--data-length <num>: 向发送的数据包附加随机数据
--ip-options <options>: 使用指定的ip选项发送数据包
--ttl <val>: 设置IP生存时间字段
--spoof-mac <mac address/prefix/vendor name>: 伪装你的MAC地址
--badsum: 使用伪TCP/UDP/SCTP校验和发送数据包
这块前面接触得不多。
输出内容
接下来就是输出内容相关的参数:
-oN/-oX/-oS/-oG <file>: 分别指定级格式输出扫描到给定文件名。
-oA <basename>: 同时以三种主要格式输出
-v:增加详细程度(使用-vv或更高级别以获得更大效果)
-d:提高调试级别(使用-dd或更多以获得更大的效果)
--reason: 显示端口处于特定状态的原因
--open: 仅显示打开(或可能打开)的端口
--packet-trace: 显示发送和接收的所有数据包
--iflist: 打印主机接口和路由(用于调试)
--Append-output: 附加到指定的输出文件,而不是删除指定的输出文件
--resume <filename>: 继续中止扫描
--noninteractive: 通过键盘禁用运行时交互
--stylesheet <path/URL>: 将XML输出转换为html的XSL样式表
--webxml: 来自Nmap.Org的参考样式表具可移植性的XML
--no-stylesheet: 防止XSL样式表与XML输出关联
杂项
还有几个不知道该归类到哪里的参数:
-6: 启用IPv6扫描
-A: 启用操作系统检测、版本检测、脚本扫描和跟踪路由
--datadir <dirname>: 指定自定义Nmap数据文件位置
--send-eth/--send-ip: 使用原始以太网帧或IP数据包发送
--privileged: 假设用户拥有完全特权
--unprivileged: 假设用户缺少原始socket权限
-V: 打印版本号
-h: 打印帮助说明