一、Nmap入门
一、Nmap入门
1、扫描参数
设置扫描目标时用到的相关参数如下:
-iL:从文件中导入目标主机或目标网段。
-iR:随机选择目标主机。
--exclude:后面跟的主机或网段将不在扫描范围内。
--excludefile:导入文件中的主机或网段不在扫描范围内。
与主机发现方法相关的参数如下;
-sL:List Scan(列表扫描),仅例举指定目标的IP,不进行主机发现。
-sn:Ping Scan,只进行主机发现,不进行端口扫描。
-Pn:将所有指定的主机视作已开启,跳过主机发现的过程。
-PS/PA/PY[porlist]:使用TCP SYN/ACK或SCTP INIT/ECHO方式来发现。
-PE/PP/PM:使用ICMP echo、timestamp、netmask请求包发现主机。
-PO[protocolist]:使用IP协议包探测对方主机是否开启。
-n/-R:-n表示不进行DNS解析;-R表示总是1进行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/Xmas scans秘密扫描的方式协助探测对方的TCP端口状态。
--scanflags<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>:扫描指定的端口。
-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:指定使用所有的probes进行侦测(intensity2)。
--version-all:尝试使用所有的probes进行侦测(intensity9)。
--version-trace:显示出详细的版本检测过程信息。
在了解以上参数及其含义后,再来看用法会更好理解,扫描命令格式:Nmap+扫描参数+目标地址或网段。比如一次完整的Nmap扫描命令如下。
nmap -T4 -A -v ip
其中-A表示使用进攻性(Aggressive)方式扫描;-T4表示指定扫描过程使用的时序(Timing),共有6个级别(0-5),级别越高,扫描速度越快,但也容易被防火墙或IDS检测并屏蔽掉,在网络通信状况良好的情况下推荐使用T4。-v表示显示冗余(verbosity)信息,在扫描过程中显示扫描的细节,有助于让用户了解当前的扫描状态。
2、常用方法
扫描单个目标地址,在nmap后面直接添加目标地址即可扫描
nmap ip
扫描多个目标地址,如果目标地址不在同一网段,或在同一网段但不连续且数量不多,可以使用该方法进行扫描。
nmap ip ip
扫描一个范围内的目标地址,可以指定扫描一个连续的网段,中间使用“-”连接
nmap 192.168.0.100-110
扫描目标地址所在的某个网段,以c段为例,如果目标是一个网段,则可以通过添加子网掩码的方式扫描,下列命令表示扫描范围为192.168.0.1-192.168.0.225
nmap 192.168.0.100/24
扫描主机列表targets.txt中的所有目标地址,扫描targets.txt中的地址或者网段,此处导入的是绝对路径,如果targets.txt文件与nmap.exe在同一个目录下,则直接引用文件名即可
nmap -iL 绝对路径
扫描除某一个目标地址之外的所有目标地址,下列命令表示扫描除192.168.0.105之外的其它地址192.168.0.x地址
nmap 192.168.0.105 -exclude 192.168.0.105
扫描除某一文件中的目标地址之外的目标地址,下列命令表示扫描除了target.txt文件夹中涉及的地址或网段之外的目标地址,以扫描192.168.0.x网段为例,在target.txt中添加192.168.0.100和192.168.0.105
nmap 192.168.0.100/24 -excludefile 绝对路径
扫描某一目标地址的21、22、23、80端口,如果不需要对目标主机进行全端口扫描,只想探测它是否开放了某一端口,那么使用-p参数指定端口号,将大大提升扫描速度
nmap 192.168.0.100 -p 21,22,23,80
对目标地址进行路由跟踪
nmap --traceroute 192.168.0.105
扫描目标地址所在c段的在线状况
nmap -sP 192.168.0.100/24
目标地址的操作系统指纹识别,通过指纹识别技术识别目标地址和操作系统的版本
nmap -O 192.168.0.105
目标地址提供的服务版本检测,下列命令表示检测目标地址开放的端口对应的服务版本信息
nmap -sV 192.168.0.105
探测防火墙状态,在实战中,可以利用FIN扫描的方式探测防火墙的状态。FIN扫描用于识别端口是否关闭,收到RST回复说明该端口关闭,否则就是open或filtered状态
nmap -sF -T4 192.168.0.105
3、状态识别
Nmap输出的是扫描列表,包括端口号、端口状态、服务名称、服务版本及协议。
open 开放的,表示应用程序正在监听该端口的连接,外部可以访问。
filtered 被过滤的,表示端口被防火墙或其它网络设备阻止,不能访问。
closed 关闭的,表示目标主机未开启该端口。
unfiltered 未过滤的,表示Nmap无法确定端口所处状态,需进一步探测。
open/filtered 开放的或被过滤的,Nmap不能识别。
closed/filtered 关闭的或被过滤的,Nmap不能识别。