Nmap 学习笔记之参数详解
Nmap(Network Mapper,网络映射器)是一款开源的网络探测和安全审核工具,它可以用来快速进行主机探测与发现、端口开放情况、操作系统与指纹识别、WAF(防火墙)识别及常见漏洞扫描。
Nmap官方中文链接:https://nmap.org/man/zh/index.html
Nmap特点:
- 主机探测:探测网络上的主机;
- 端口检测:探测目标主机所开发的端口;
- 版本检测:探测目标主机的网络服务,判断其服务名称及版本号;
- 系统检测:探测目标主机的操作系统及网络设备的硬件特性;
- 支持探测脚本的编写:NSE(脚本引擎)和Lua编程;
Nmap用法:
nmap [扫描类型] [选项] {目标规范}
--help
:显示帮助文档;
扫描目标规格参数:
-iL
:从文件中导入目标主机或者目标网段;-iR
:随机选择目标主机;--exclude
:使主机/网段不在扫描范围内;--excludefile
:使导入文件中的主机或者网段不在扫描范围内;
主机发现参数:
-sL
:List Scan(列表扫描),简单的列表扫描,仅列举指定目标的IP,不进行主机发现;-sn
:Ping Scan,只进行主机发现,不进行端口扫描;-Pn
:将所有指定的主机视作已开启,跳过主机发现的过程;-PS/PA/PU/PY[portlist]
:使用TCP SYN/ACK,UDP/SCTP发现给定端口;-PE/PP/PM
:使用ICMP echo、timestamp、netmask请求包发现主机;-PO[protocol list]
:使用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扫描;-sN/sF/sX
:指定使用TCP Null/FIN/Xmax scans秘密扫描的方式协助探测对方的TCP端口状态;--scanflage<flags>
:自定义TCP包的flags;-sI<zombie host[: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>
:扫描指定的端口;--exclude-ports <port ranges>
:从扫描中排除指定端口;-F
:Fast mode(快速模式),仅扫描TOP 100的端口;-r
:连续扫描端口,不进行端口随机打乱(如无该参数,Nmap会将要扫描的端口以随机顺序的方式进行扫描,让Nmap的扫描不易被对方防火墙检测到);--top-ports<number>
:扫描开放概率最高的number个端口(默认情况下,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>
:<Lua scripts>
是一个逗号分隔的目录列表、脚本文件或脚本类别,使用某个脚本扫描;--script-args=<n1=v1,[n2=v2,...]>
:该参数用于传递脚本里的参数,n1是参数名,v1是n1对应的参数,如果有多参数用逗号隔开;--script-args-file=filename
:使用文件为脚本提供参数;--script-trace
:显示脚本执行过程中的所有发送和接收的数据;--script-updatedb
:更新脚本数据库;--script-help=<Lua scripts>
:查看脚本详细介绍及其使用方式;
操作系统检测参数:
O
:操作系统检测,也可以使用-A
来同时启用操作系统检测和版本检测;--osscan-limit
:针对指定的目标进行操作系统检测;--osscan-guess
:推测操作系统检测结果;
时间和性能参数:
采用<time>的选项以秒为单位,或将’ms’(毫秒)、‘s’(秒)、‘m’(分钟)或’h’(小时)附加到值(例如30m)。
-T<0-5>
:设置时间模板(越高越快),(paranoid|sneaky|polite|normal|aggressive|insane);--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>
:每秒发送数据包的速度不低于<number>;--max-rate <number>
:每秒发送数据包的速度不高于<number>;
防火墙/IDS躲避和哄骗:
-f; --mtu <val>
:-f
为报文分段,--mtu
为指定的MTU,将TCP头分段到几个包中,使得包过滤器、 IDS以及其它工具的检测更加困难;-D <decoy1,decoy2[,ME],...>
:使用诱饵隐蔽扫描,常用的隐藏自身IP地址的有效技术;-S <IP_Address>
:源地址哄骗;-e <interface>
: 使用指定的接口;---source-port <portnumber>; -g <portnumber>
:源端口哄骗;--data-length <number>
:发送报文时附加随机数据;--ttl <value>
:设置IP time-to-live域;--randomize-hosts
:对目标主机的顺序随机排列;--spoof-mac <mac address,prefix,or vendor name>
:MAC地址哄骗;
输出参数:
-oN/-oX/-oS/-oG <file>:
:标准输出/XML输出/脚本小子输出(ScRipT KIdd|3 oUTpuT)/Grep输出;-oA <basename>
:输出至所有格式;-v
:提高输出信息的详细度;-d [level]
:提高或设置调试级别;--packet-trace
:跟踪发送和接收的报文;--iflist
:列举接口和路由;--append-output
:在输出文件中添加;--resume
:继续中断的扫描;--stylesheet <path or URL>
:设置XSL样式表,转换XML输出;--no-stylesheet
:忽略XML声明的XSL样式表;
其它参数:
-6
:启用IPv6扫描;-A
:启用系统检测、版本检测、脚本扫描和跟踪路由;--datadir <directoryname>
:说明用户Nmap数据文件位置;--send-eth/--send-ip
:使用以太网帧或IP数据包发送;--privileged
:假定用户具有全部权限;--unprivileged
:假设用户缺少原始套接字特权;-V
:显示版本信息;-h/-help
:显示帮助文档;