基本用法
对单台设备进行扫描
nmap [IP地址]
对IP地址不连续的多台设备进行扫描
nmap [IP地址1] [IP地址2] [IP地址3] //以空格隔开
对连续范围内的多台设备进行扫描
nmap [IP地址的范围]
对子网设备进行扫描
nmap [IP地址/掩码位数]
-sn参数
只进行活跃状态扫描
进行设备发现
使用ARP进行设备发现
参数:-PR(nmap7.8版本已经弃用)
这种方式仅能用于与Nmap所在设备同一网段的目标。
nmap -sn [IP地址]
使用sn其实也是通过ARP进行设备发现。
使用ICMP进行设备发现
参数:-Pn
nmap -Pn [IP地址]
通过nmap再进行其他扫描之前,都会对目标进行一个ping扫描,如果对目标没有ping,那么就会结束整个扫描过程。有些主机就利用了这种特性,其实目标在线,但是采取了某种手段屏蔽了ping扫描,那么我们的nmap就扫描不到这个主机了。屏蔽ping扫描的功能就是:在nmap扫描的过程中,不论目标主机能不能ping通,都要将整个扫描过程完成。
使用TCP进行设备发现
TCP主要由三次握手构成:
主动端发送SYN数据包,被动端回应SYN+ACK数据包,主动端再回应ACK包。nmap向目标设备发送SYN包,如果对方回应SYN+ACK包,说明目标在线。
TCP SYN扫描
参数:-PS
说明:向目标设备发送一个不完整的SYN数据包,目标在收到数据包后,会认为主机想要与自己的端口建立连接;如果端口开放,则返回SYN+ACK包,否则返回RST包,所以,只要主机收到数据包,就能判断目标存活。
TCP ACK扫描
参数:-PA
说明:TCP三次握手规定,只有设备A向设备B发送SYN数据包后,设备B才会返回SYN+ACK包。
如果主机直接发送TCP+ACK包,目标设备不清楚怎么回事,返回RST包,怎判断设备存活。
但是,有些设备会过滤掉SYN+ACK包,有可能目标没有收到该数据包,也有可能目标不存活,Nmap会当第二种情况处理,所以存在错误。
进行端口扫描
端口的6种状态:
open:应用程序在该端口接受TCP或UDP连接。
closed:关闭状态。
filtered:包过滤阻止探测报文到达端口,nmap无法确定端口是否开放。
unfiltered:表示未被过滤状态,可访问,但是无法确定开放还是关闭。
open|filtered:无法确定端口开放还是被过滤。
SYN扫描
参数:-sS
root用户默认使用该扫描方式,并且该扫描方式不会被记录到系统日志,不会再目标设备上留下痕迹。
主机发送SYN数据包,目标返回SYN+ACK,主机发送RST包断开连接;因此,三次握手没有完成。
TCP(connect)扫描
参数:-sT
完成三次握手。
对端口范围的确定
-p * :对65535个端口扫描。
--top-ports n :扫描使用频率最高的n个端口。
-p [端口号] :扫描指定端口。
其他参数
-sV 端口版本扫描
-iL 指定文件内容进行扫描
-O 检测OS
-oX [文件名] 叫扫描结果保存为xml文件
--script 指定脚本进行漏洞扫描(脚本路径:/usr/share/nmap/scripts)