(如何在win7中扫描端口号码)


端口扫描

端口扫描的目的是打出目标系统上提供的服务列表。端口扫描程序挨个尝试

与TCP/UDP 端口连接,然后根据端口与服务的对应关系,结合服务器端的反应

推断目标系统上是否运行了某项服务。

端口扫描知识储备:TCP分段中6个编码位的含义

当值设为1时,表示分段中包含相应的控制信息

编码位(从左到右)的标识

该位置“为1”的含义

URG

表示启用了紧急指针字段

ACK

表示确认字段是有效的

PSH

请求急迫操作,即分段一到马上送应用程序而不等到接收缓冲区满时才送应用程序

RST

连接复位。复位因主机崩溃或其他原因而出现错误的连接,也可用于拒绝非法的分段或拒绝连接请求

SYN

与ACK合用以建立TCP连接。如SYN=1, ACK=0表示连接请求;而SYN=1,ACK=1表示同意建立连接

FIN

表示发送方已无数据要发送从而释放连接,但接收方仍可继续接收发送方此前发送的数据

端口扫描知识储备:TCP连接的建立

TCP连接通过三次握手方法建立; 第一次握手可以由任何一方发起,通常由客户进程发起;只有在完成三次相应的分段交互之后,主机A和主机B的传输层才会分别通知各自的应用层传输连接成功建立


端口扫描知识储备:TCP连接的拒绝建立

若主机B拒绝建立连接,则在收到主机A的连接请求后,发送一个置RST= "1" 的应答分段在第三次握手阶段,发送第一次握手的主机A还有机会拒绝建立连接:发送一个置RST= "1" 的应答分段



1.全连接扫描

完全连接扫描利用TCP/IP协议的三次握手机制,使源主机和目标主机的某个端口建立一次完整的连接。如果建立成功,则表明该端口开放。否则,表明该端口关闭。

TCP的全连接扫描 (会在被扫描机器留下记录)


全连接扫描实例

全连接扫描实例

如上图绿框中,有TCP连接的完全过程

扫描器发送SYN=1 请求连接目标主机回复 SYN=1,ACK=1应答同意连接扫描器发送ACK =1 确认连接扫描器发送ACK=1 RST=1 断开连接


如上图:如果扫描器连续发送SYN=1信号,未收到目标主机回复,则说明扫描的端口未开启。


2.半连接扫描

半连接扫描是指在源主机和目的主机的三次握手连接过程中,只完成前两次握手,不建立一次完整的连接。

半连接扫描 (不会留下记录)

半连接扫描实例

半连接扫描实例

端口存在:

扫描器发送SYN=1 请求连接目标主机回复 SYN=1,ACK=1应答同意连接扫描器发送ACK=1 RST=1 断开(拒绝)连接


端口不存在:

扫描器发送SYN=1 请求连接目标主机回复 RST=1 断开(重置)连接

3.SYN扫描

首先向目标主机发送连接请求,当目标主机返回响应后,立即切断连接过程,并查看响应情况。如果目标主机返回ACK 信息,表示目标主机的该端口开放。如果目标主机返回RESET信息,表示该端口没有开放。

电脑

4.ID头信息扫描

这种扫描方法需要用一台第三方机器配合扫描,并且这台机器的网络通信量要非常少,即dumb主机。

首先由源主机A向dumb主机B发出连续的PING数据包,并且查看主机B返回的数据包的ID头信息。一般而言,每个顺序数据包的ID头的值会增加1。然后由源主机A假冒主机B的地址向目的主机C的任意端口(1~65535 )发送SYN数据包。这时,主机C向主机B发送的数据包有两种可能的结果:

●SYN|ACK表示该端口处于监听状态。

●RST|ACK表示该端口处于非监听状态。

那么,由后续PING数据包的响应信息的ID头信息可以看出,如果主机C的某个端口是开放的,则主机B返回A的数据包中,ID 头的值不是递增1,而是大于1。如果主机C的某个端口是非开放的,则主机B返回A的数据包中,ID头的值递增1,非常规律。

5.隐蔽扫描

隐蔽扫描是指能够成功地绕过IDS、防火墙和监视系统等安全机制,取得目标主机端口信息的一种扫描方式。

6.SYNIACK扫描

由源主机向目标主机的某个端口直接发送SYN|ACK数据包,而不是先发送SYN数据包。由于这种方法不发送SYN数据包,目标主机会认为这是一次错误的链接,从而会报错。

如果目标主机的该端口没有开放,则会返回RST信息。如果目标主机的该端口处于开放状态(LISTENIN), 则不会返回任何信息,而是直接将这个数据包抛弃掉。

7.FIN扫描

源主机A向目标主机B发送FIN数据包,然后查看反馈信息。如果端口返回RESET信息,则说明该端口开放。

FIN扫描(可以判断对方操作系统的类型)

电脑




发送FIN到Linux,如果端口存在,Linux会丢弃这个包。FIN连接Windows一个存在的端口,与Linux不同的是,Windows会返回RST包,从而可以探测目的主机的操作系统FIN连接Linux不存在的端口,Linux会返回一个RST包FIN连接Windows关闭的端口,与Linux相同,会返回一个RST包电脑

FIN扫描

操作系统

端口存在

端口关闭

直接向目标主机发送FIN=1信号

Linux

丢弃数据包

返回RST=1 数据包

Windows

返回RST=1 数据包

返回RST=1 数据包

8.ACK扫描

首先由主机A向主机B发送FIN数据包,然后查看反馈数据包的TTL值和WIN值。开放端口所返回的数据包的TTL值一般小于64,而关闭端口的返回值,一般大于64。开放端口所返回的数据包的WIN值一般大于0,而关闭端口的返回一般等于0。

9.NULL扫描

将源主机发送的数据包中的ACK,FIN、RST、SYN、URG、PSH等标志位全部置空。如果目标主机没有返回任何信息,则表明该端口是开放的。如果返回RST信息,则表明该端关闭的。

TCP NULL扫描和TCP SYN扫描原理差不多,是利用协议(详见RFC 793)规定,当申请方主机向目标主机一个端口发送的TCP数据包所有标志位都为空,如果目标主机该端口是"关”状态,则返回一个TCP RST数据包;否则不回复。根据这0无识别结果一原理可以判断对方端口是处于 “开”还是"关”状态。

10.XMAS扫描

XMAS扫描的原理和NULL扫描相同,只是将要发送的数据包中的ACK、FIN、RST、SYN、 URG、PSH等头标志位全部置成1。如果目标主机没有返回任何信息,则表明该端口是开放的。如果返回RST信息,则表明该端口是关闭的。

学习参考资料:信息安全工程师教程(第二版)

建群网培信息安全工程师系列视频教程


电脑