TCP SYN扫描分析探密

[内容摘要]:TCP SYN扫描之所以叫半开放扫描,或半打开式扫描,是相对完整的TCP连接而言的。它是一次未完成的,由一方有意中止的TCP连接。因此它的本质还是一个TCP协议的具体应用。
[关键词]:端口;数据包;解析
端口扫描是入侵技术的基础,而TCP SYN扫描又是其中常用的扫描方法,但遗憾的是相当一部份网络技术爱好者,对这种扫描方法的认识仅仅停留在使用上,而对TCP协议在TCP SYN扫描中的具体应用却不是很清楚,从而影响了对这种扫描方法的完整认识。当然对于初学者而言,要搞懂比较抽象的网络协议,是有些难以入手。今天我们不妨尝试另外一种思路,通过对具体的数据包解码分析来认识TCP SYN扫描中蕴涵的协议应用。
一、什么是端口扫描
通常我们说网络中的计算机如同一座座城堡,而端口就好比是一个又一个的城门和各式各样的窗口,我们要想进入这些城堡,就必须先弄清哪道门或者哪扇窗是开着的。在网络技术中,“端口”是一个非常重要的概念。它是专为计算机通信而设计的,它区别于计算机中的“插槽”,可以说是个软端口。我们是如何知道网络中某台计算机究竟开放哪些端口呢?其实道理很简单,生活中要知道门窗是不是开着, 我们通常会用肉眼去观察、用肢体直接去接触,这实际就是目光、肢体与门窗的一种连接方式。在计算机网络世界中我们对需要探测的端口,也是按照一定的连接方法去探测,然后根据回应信息来判断该端口是否开放。在网络技术中我们把这种探测叫端口扫描,这种连接叫TCP连接。其中根据TCP连接的不同状态,又把端口扫描方法分成了全TCP连接(TCP CONNECT)、半开放式扫描(TCP SYN)等不同的种类。
二、TCP协议和TCP报文格式
TCP协议(Transmission Control Protocol)是TCP/IP协议簇中传输层的协议。它提供可靠的、面向连接的传输服务,用于高可靠数据的传输。TCP具有完善的错误检测与恢复、顺序控制和流量控制等功能。

图1TCP SYN扫描分析探密_第1张图片
TCP报文的结构如图2。对于初学者而言,首要的是掌握六个标志位的具体含义。它们分别是:FIN、SYN、PSH、RST、ACK和URG 。
 ACK 置1,表示确认号有效;清0,表示数据包中不包含确认;
 PSH 表示数据包的接受者不对收到的数据进行缓存,而是直接传给应用程序;
 RST 用来重置一个连接。它也被用来拒绝接受一个无效的TCP数据包,或者用来拒绝一个建立连接的企图。
 SYN 用来建立一个连接。
 FIN 用来释放一个连接。它指出发送者已无数据要发送。

图2TCP SYN扫描分析探密_第2张图片
我们来看一个完整的TCP连接过程数据包。这是笔者用SuperScan 4.0的“直接连接”(TCP Connect) 方法扫描后捕获的数据包。
图3TCP SYN扫描分析探密_第3张图片
一个完整TCP连接过程,是通过客户端(Client)与服务器端(Server)的三次握手来完成的。图1中的三行数据说明了这一点。Client端(10.4.152.16)向Server端(10.4.152.3)发送带SYN标志的TCP数据包,Client此时处于SYN_SENT状态。Server端接收到该SYN包,处于SYN_RCVD状态,并向Client发送带ACK和SYN标志的TCP包。Client端收到Server端发来的ACK+SYN包后,转为ESTABLISHED,并向Server端发送ACK标志的确认包,Server端收到后,也转为ESTABLISHED,至此TCP连接建立。整个过程如图4
图4TCP SYN扫描分析探密_第4张图片

有了对上面知识的大概了解,下面我们着手对TCP SYN扫描过程的数据包进行捕获分析。
三、捕获TCP SYN 扫描数据包
A机10.4.152.16利用SuperScan 4.0 进行对B机10.4.152.3的21、23端口进行TCP SYN扫描,用Sniffer pro 4.60进行捕获。
1、SuperScan 4.0设置如图1。为简化扫描过程便于理解,取消“查找主机”、“UDP端口扫描”选项。

图5TCP SYN扫描分析探密_第5张图片
2、定制Sniffer Pro 过滤器;

图6TCP SYN扫描分析探密_第6张图片
3、停止捕获并显示解码结果
点击Sniffer Pro解码卷标(Decode)后,窗体将显示捕获数据包解包后的结果(图3),这个栏工具被分成了三格:总结部分窗体显示的是对数据包的概述,每个数据包一行;详细这部份窗体显示了在总结窗体选中的数据包的详细内容; Hex部份窗体以十六进制和ASCII格式显示选中的数据包。下面我们的分析主要利用“总结”和“详细”两部份内容来说明。

图7TCP SYN扫描分析探密_第7张图片
四、TCP SYN扫描数据包解码分析。
TCP SYN扫描又叫做“半开放扫描”,顾名思义,就是扫描过程中并没有建立完整的TCP连接。Client端向Server端发送SYN包,如果收到Server端返回的SYN/ACK包,则说明目标端口开放,这时候Client端不会返回ACK以建立连接,而是发送一个RST/ACK包,重置发起的这次TCP连接;如果Client端收到的是RST/ACK包,则说明目标端口并未开放。
下面我们来对将捕获的TCP SYN数据包按顺序逐条显示分析。

图8TCP SYN扫描分析探密_第8张图片
图中对第一行、第二行是10.4.152.16对10.4.152.3的23端口探测的描述,10.4.152.16(A机)向10.4.152.3(B机)的23端口发出连接请求,10.4.152.3返回RST+ACK包,说明其23端口并未开放。这个连接中断。
第3、第4、第5行数据包是A机对B机开放的21端口进行探测的情况,我们将其“总结”与“TCP header”部份截图进行逐行分析。

图9
TCP SYN扫描分析探密_第9张图片
图10
TCP SYN扫描分析探密_第10张图片
图11TCP SYN扫描分析探密_第11张图片
很显然,第三行数据包是A机从自己的随机端口27665向B机的23端发出的连接请求,初始序号(SEQ)3641835520,TCP报文的SYN标志位置1。
图6中的第四行数据包,是B机在23端口收到此序号后,将序号加1值为3641835521后作为ACK应答信号,同时随机产生一个初始序号(SEQ)3378848847,并将ACK+SYN发回A机。这两行数据包与正常的TCP连接并没有质的不同。
请注意第五行数据,我们发现图7中A机在收到B机的ACK+SYN包后,并未继续返回ACK包,建立连接。却意外地发送一个RST包(Reset值为1),重置本次连接。这正是TCP SYN扫描的最大特点。
其实这个过程很简单,分成了三步。通俗地讲就是,第一步:一个叫A的人站在自己家的27665号门口,喊道:“你好,你的21号门开着吗,我要过来”;第二步,B听到了回答道:“你好, 21号门开着呢!要来你就来好了”;第三步,A机听到答复后,确认21号门开着,这时他却狡猾对B喊道:“我突然有点急事,不来了”。所以B实际最终没能见到A,A却探测到了他要的消息。第三步体现了TCP SYN 扫描的隐蔽性。正是由于这个特点,所以通常TCP SYN扫描要比TCP Connet扫描更为隐蔽,SERVER端可能不会留下日志记录。
当然,目前很多防火墙都在监视TCP SYN扫描,还有很多工具也能够监测到它。哈哈,所以想干坏事的“小伙伴”们,可要小心哦。

你可能感兴趣的:(TCP SYN扫描分析探密)