外国服务器,香港服务器,美国服务器,高防服务器,服务器租用,服务器托管
首页 > 新闻资讯 > 极客学院
常见服务器端口扫描类型与原理
2019-02-25 11:32:49 | 来源:极客网络 | 作者:liuchuang

网站服务器常见的端口扫描类型有以下几种。
       1.TCP Connect()扫描。
       2.SYN扫描。
       3.NULL扫描。
       4.FIN扫描。
       5.ACK扫描。
       6.Xmas-Tree扫描。
       7.Dumb扫描。
       下面我们分别介绍这几种扫描类型及其实现原理(如未做特殊说明,以下内容中主机A均指发起连接的主机,主机B均指接受连接的主机)。
1、TCP Connect()扫描
       TCP Connect()扫描试图与每一个TCP端口进行“三次握手”通信,完成三次握手过程。如果能够成功建立连接,则证明端口开放,否则为关闭,如图1所示。
说明
       这种类型的扫描因为要完成一次完整的TCP连接,所以它的准确性非常高,但也最容易被防火墙或入侵检测系统检测到,而且,在目标主机的日志中会记录大批的连接请求以及错误信息。
TCP Connect0扫描.png

2、SYN扫描
       SYN扫描要比 TCP Connect()扫描隐蔽一些,前面曾经说过,TCP三次握手依次包含了SYNSYN-ACK和ACK3个数据包。SYN扫描仅仅发送初始的SYN数据包给目标主机,如果端口处于开放状态,那么目标主机将响应SYN-ACK数据包;如果端口处于关闭状态,那么目标主机将响应RST数据包,如图2所示。
SYN扫描.png

       这是前两次“握手”的过程,SYN扫描与TCP Connect()扫描完全相同。两者不同的地方是接下来SYN扫描要做的工作:当主机B返回 SNY/ACK数据包后,计算机A并不使用ACK数据包(三次握手所期待的响应数据包类型)作为响应,取而代之的是,计算机A响应一个RST数据包,从而断开连接。通过在建立会话之前断开连接,SYN扫描能够避开某些防火墙的检测。但是,许多入侵检测系统(IDS)能够监测到SYN扫描。
3、NULL扫描
       在NULL扫描中,将一个没有设置标志位的数据包发送给TCP端口。在正常的TCP通信中,至少要设置标志位。然而,在NULL扫描中,所有标志位都不设置。根据RFC793的要求,在端口关闭的状态下,如果收到了一个没有设置标志位的数据字段,那么接收主机应该丢弃这个分段,并发送一个RST数据包。否则不会响应包到达发起扫描的客户端计算机。
       当向每一个TCP端口发送没有设置标志位的数据包时,如果目标主机上该端口处于关闭状态,那么它将响应一个RST数据包;如果该端口处于开放状态,那么主机忽略该数据包,不会响应包到达发起扫描的客户端计算机,如图3所示。

NULL扫描.png

小知识
       RFC是Request For Comment的缩写,由IETF管理,实际上就是互联网有关服务的一些标准所有关于互联网的正式标准都以文档出版,但并不是所有的RFC都是正式的标准,很多RFC的目的只是为了提供信息。RFC每一篇都用一个数字来标识,如RFC793,数字越大说明RFC的内容越新。RFC是免费公开的,任何人都可以写RFC并提交IETF,一旦正式通过就可以正式发布,一旦发布RFC内容将不能再做任何修改,以后的修改只能通过新的RFC来处理,因此可以看到有很多新的RFPC文档 obsolete(废除)或 update(更新)旧的RFC文档。
      RFC793是TCP协议的正式标准,其中规定了任何TCP实现所要求的行为的规范。
      使用NULL扫描,要求所有主机都必须符合RFC793的要求。但现实中, Windows系统主机并不遵从RFC793标准。因此,不能使用NULL扫描来确定 Windows系统主机上的活动端口。当使用Windows系统的主机接收到没有设置标志位的数据包时,无论这个端口是否处于开放状态,它都将回应一个RST数据包。
      基于UNIX的系统(*nix,如 Linux、UNX系统)遵从RFC793标准,因此,当端口关闭时,系统的主机会回应一个RST数据包;而当端口开放时,不回应任何数据包。
      综上所述,使用NULL扫描可以辨别某台主机运行的是哪种操作系统,如果扫描的结果是主机全部端口均是关闭的(正常情况下任何主机一定有端口开放),则目标主机一定为 Windows操作系统,如果有端口开放,则为*mix操作系统。
4、FIN扫描
      另一种类型的反向扫描为FN扫描,它与NULL扫描相似,同样比SYN和 TCP Connect()扫描更隐蔽一些,但精确度也相对低一些。
      FIN位指示TCP会话的结束,在FIN扫描中,一个设置了FN位的数据包被发送给目标主机的每一个端口,与所有类型的反向扫描一样,响应RST数据包表示端口关闭,没有响应表示端口开放。图4展示了对FN扫描的响应。同样需要注意的是, Windows操作系统并不遵从RFC793,因此,这类系统不能够对这种类型的扫描提供精确的结果。

FIN扫描.png

5、ACK扫描
       ACK扫描通常用来穿过防火墙的规则集。在ACK扫描中,使用响应包来发现防火墙的配置信息。如果某个端口被防火墙过滤,那么就不会返回数据包。如果某个端口没有被防火墙过滤(传输到指定端口的流量可以穿越防火墙),那么返回RST数据包。通过侦听RST数据包,可以了解哪些端口被防火墙过滤掉,哪些端口没有被过滤掉。

6、Xmas-Tree扫描
       Xmas-Tree扫描(也被称为圣诞树扫描)发送带有下述标志的TCP数据包。
       URG:指示数据是紧急数据,应该马上被处理。
       PSH:强制将数据压入缓冲区。
       FIN:在结東TCP会话时使用。
       这个扫描中使用的技巧并不是这些标志原来的用途,但它们可以在一起同时使用。正常的TCP连接不应该同时设置这3个标志。
       Xmas-Tree扫描返回与其他反向扫描相同的结果,并且依然不能确定 Windows平台上端口的关闭与开放。端口开放与关闭情况的判断如图5所示。
Xmas-Tree扫描.png

7、Dump扫描
       Dumb扫描(画扫描)也称为Idle扫描或反向扫描,Dumb扫描是另一种扫描方法,在扫描目标主机的过程中,它使用第三方的僵尸计算机作为“哑”主机进行扫描。僵尸主机是一台被入侵的空闲主机。典型情况下,这台主机并不存储敏感数据,对这样的主机的访问通常并不会引起人们的注意。
       在IDLE扫描中,僵尸主机向目标主机发SYN包。目标主机根据端口的不同状态,发送不同的回应;端口开放时回应 SYNACK;关闭时回应RST。僵尸主机对 SYNACK回应RST:;对RST不做回应。因此,只要监控僵尸主机的发包数量就可以知道目标主机端口的状态。为了获得伪装主机在扫描过程中的发包数量,我们可以利用某些操作系统存在的PID值来预测漏洞。
       Dumb扫描的不同之处在于该扫描不是发自自己的计算机,而是发自某个僵尸主机。当从僵尸主机上发起这种扫描时,进行的是一个从计算机到僵尸主机的、连续的ping操作。查看僵尸主机返回的Echo响应的D字段,能够确定目标主机上哪一些端口是开放端口,哪一些端口是关闭端口。
小知识
       Echo是一个回显响应,在TCP/IP协议中通过发送一个ICMP类型的请求回显( ICMP EchoRequest)数据包,根据返回的ICMP回显应答( ICMP Echo Reply)数据包来判断目标主机是否存活(前提是对方没开启数据包过滤功能)。

本文链接:http://www.gkidc.com/news/jkxy/699.html

所属栏目:极客学院

【本文由极客网络发布;内容来源于互联网或原创,转载联系作者并注明出处:投稿请发至邮箱 layton@zhi-yue.net 】

最新新闻

查看更多

相关新闻

查看更多

推荐优选服务器

国内外服务器租用、服务器托管,365天24小时极致服务体验~认准极客网络!
在线咨询
24H在线售后
11082052
24H服务热线
0769-88836624
IDC/ISP/IRCS/增值电信业务经营许可证号:粤B1-20190887
COPYRIGHT © 2010-2018 广东极客网络科技有限公司 版权所有.粤ICP备18157343号
极客网络提供:服务器租用,服务器托管,高防服务器,香港服务器,美国服务器,韩国服务器,日本服务器,台湾服务器,免备案服务器,bgp高防服务器,站群服务器,等外国服务器IDC服务;敬请放心选购!

在线
客服

客服
热线

0769-88836624
7*24小时服务热线

关注
微信

马上推出关注官方微信
顶部