Nmap 中的各种端口扫描技术
1. SYN 扫描
SYN扫描是较为流行的一种扫描方式,同时它也是Nmap所采用的默认扫描方式。这种扫描方式速度极快,可以在一秒内扫描上千个端口,并且不容易被网络中的安全设备发现。
你也可以在扫描的时候,输入参数-sS。其实你只要以root或者administrator用户的权限工作,扫描方式都是SYN。Nmap会向目标设备的一个端口发送请求连接的SYN数据包,而且目标设备在接收到这个SYN数据包之后,扫描器在收到SYN+ACK数据包后,不是发送ACK数据包而是发送RST数据包请求断开连接。这样,3次握手就没有完成,无发建立正常的TCP连接,因此,这次扫描就不会被记录到系统日志里。这种扫描方式不会在目标设备上留下扫描痕迹。
我们在对一个端口进行SYN扫描时,端口的状态全是open \ close及filtered中的一个。下表中列出了目标设备的回应与目标设备的端口的状态。
目标设备的回应与目标设备的端口的状态(TCP部分)
使用SYN扫描端口的语法为“nmap -sS [目标设备IP地址]”。如我们对IP地址为192.168.68.191的设备端口进行扫描,命令如下所示:
┌──(rootkali)-[~]
└─# nmap -sS 192.168.68.191
2. Connect 扫描
使用Connect扫描端口语法为“nmap -sT [目标设备IP地址]”。Connect扫描其实和SYN扫描很像,只是这种扫描方式完成了TCP的3次握手。如我们对IP地址为192.168.68.191的设备的端口进行扫描,命令如下所示:
┌──(rootkali)-[~]
└─# nmap -sT 192.168.68.191
3. UDP 扫描
我们如果对一个端口进行UDP扫描时,端口的状态将会是open\close及filtered中的一个。下表列出了目标设备的回应与目标设备的端口状态。
目标设备的回应与目标设备的端口状态(UDP部分)
要注意UDP扫描的速度是相当慢的。IP地址为192.168.68.191的设备的端口进行UDP扫描,命令如下所示:
┌──(rootkali)-[~]
└─# nmap -sU 1500 192.168.68.191
在扫描过程中,可能会产生一些状态为filtered的端口,这些端口的真实状态有可能是open,也可能是closed。要从这些状态为filtered的端口中找到那些其实是open的端口,需要进一步进行测试。
4. 端口扫描范围的确定
对端口的扫描一般使用TCP,但是一台设备上有65536个端口,如果对全部端口都进行扫描,那么花费的时间会相当长,所以Nmap默认扫描的只是65536个端口中最为常用的1000个端口。如果我们不加任何参数的话,Nmap扫描的端口是1000个,而不是65536个。
1.扫描全部端口
如果对65536个端口扫描,可以使用参数-p “*”。
语法:nmap -p “*” [目标设备IP地址]
如我们要对IP地址为192.168.68.191的目标设备的65536个端口进行扫描,可以使用如下命令:
┌──(rootkali)-[~]
└─# nmap -p "*" 192.168.68.191
2.扫描使用频率最高的n个端口
如果只想扫描使用频率最高的n个端口,可以使用参数–top-ports n。
语法:nmap --top-ports n [目标设备IP地址]
如我们要对IP地址为192.168.68.191的目标主机开放的使用频率最高的10个端口进行扫描,可以使用如下命令:
┌──(rootkali)-[~]
└─# nmap --top-ports 10 192.168.68.191
3.扫描指定端口
如果我们只对指定的端口进行扫描,可以使用参数-p
语法:nmap -p [端口号] [目标设备IP地址]
如我们要对IP地址为192.168.68.191的目标设备的80端口进行扫描,可以使用如下命令:
┌──(rootkali)-[~]
└─# nmap -p 80 192.168.68.191