网络知识 娱乐 Nmap 中的各种端口扫描技术

Nmap 中的各种端口扫描技术

Nmap 中的各种端口扫描技术


1. SYN 扫描

SYN扫描是较为流行的一种扫描方式,同时它也是Nmap所采用的默认扫描方式。这种扫描方式速度极快,可以在一秒内扫描上千个端口,并且不容易被网络中的安全设备发现。

你也可以在扫描的时候,输入参数-sS。其实你只要以root或者administrator用户的权限工作,扫描方式都是SYN。Nmap会向目标设备的一个端口发送请求连接的SYN数据包,而且目标设备在接收到这个SYN数据包之后,扫描器在收到SYN+ACK数据包后,不是发送ACK数据包而是发送RST数据包请求断开连接。这样,3次握手就没有完成,无发建立正常的TCP连接,因此,这次扫描就不会被记录到系统日志里。这种扫描方式不会在目标设备上留下扫描痕迹。

我们在对一个端口进行SYN扫描时,端口的状态全是open close及filtered中的一个。下表中列出了目标设备的回应与目标设备的端口的状态。

​ 目标设备的回应与目标设备的端口的状态(TCP部分)

目标设备的回应目标设备的端口的状态
如果目标设备给出了一个SYN+ACK回应open
如果目标设备给出了一个RST回应closed
如果目标设备没有给出回应filtered
ICMP端口无法抵达错误(类型3,代码1,2,3,4,10,13)filtered

使用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扫描时,端口的状态将会是openclose及filtered中的一个。下表列出了目标设备的回应与目标设备的端口状态。

​ 目标设备的回应与目标设备的端口状态(UDP部分)

目标设备的回应目标设备的端口状态
从目标设备得到任意的UDP回应open
如果目标设备没有给出回应open|filtered

要注意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