[内容摘要]: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具有完善的错误检测与恢复、顺序控制和流量控制等功能。

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

图2
我们来看一个完整的TCP连接过程数据包。这是笔者用SuperScan 4.0的“直接连接”(TCP Connect) 方法扫描后捕获的数据包。
图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
图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端口扫描”选项。

图5
2、定制Sniffer Pro 过滤器;

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

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

图10

图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扫描分析探密相关推荐

  1. python实现syn半扫描_python 使用raw socket进行TCP SYN扫描实例

    1. TCP SYN扫描 端口扫描常用于用于探测服务器或主机开放端口情况,被计算机管理员用于确认安全策略,同时被攻击者用于识别目标主机上的可运作的网络服务.端口扫描是向一定范围的服务器端口发送对应请求 ...

  2. TCP SYN扫描技术探测原理

    TCP SYN扫描 TCP SYN扫描又称"半开扫描".回顾TCP连接的三次握手,申请方首先发送的是一个SYN数据包,服务方在接到这个SYN数据包后,如果该端口处于侦听状态,则会回 ...

  3. nmap tcp syn扫描命令

    1.原理:扫描器向目标主机发送TCP SYN包,如果应答是RST包,则说明端口是关闭的,如果应答含有ACK和SYN包,则说明目标端口处于监听状态,扫描器在发送一个RST包给目标主机从而终止连接.这种技 ...

  4. 网络扫描技术揭秘读书笔记3--TCP SYN扫描

    TCP SYN扫描(使用Winpcap库实现) 0.核心原理 半开扫描(TCP SYN)不同于CSocket和Socket2扫描,后两者扫描都是完成了一个完整的三次握手(即connect函数),而半开 ...

  5. TCP FIN扫描探测原理

    TCP FIN扫描 TCP FIN扫描也和TCP SYN扫描原理差不多,当申请方主机向目标主机一个端口发送的TCP标志位FIN置位的数据包,如果目标主机该端口是"关"状态,则返回一 ...

  6. xp破解syn扫描tcp连接数和多用户终端服务限制

    http://download.csdn.net/source/3173126 xp破解syn扫描tcp连接数和终端服务限制 可以syn扫描了 tcp连接数提到10240 可以多用户终端服务(远程桌面 ...

  7. tcptracerte参数_scapy学习笔记(3)发送包,SYN及TCP traceroute 扫描

    转载请注明:@小五义:http://www.cnblogs/xiaowuyi 在安装完scapy(前两篇笔记有介绍)后,linux环境下,执行sudo scapy运行scapy. 一.简单的发送包 1 ...

  8. 4-wireshark网络安全分析——TCP SYN Flooding攻击

    目录 1. 拒绝服务攻击 2. TCP SYN Flooding攻击 3. TCP SYN Flooding安全测试 关于tcp协议的参考链接: 16-tcp首部分析一 17-tcp首部分析二 18- ...

  9. DIOCP 运作核心探密

    来自网友天地弦的DIOCP早已经广为人知了,有很多的同学都用上了它,甚至各种变异.修改版本也出了不少.我最近也在学习DIOCP,打算将它用于自己的服务端,今天让我们来一起探密它(DIOCP)的运作核心 ...

最新文章

  1. java 基础知识三 java变量
  2. ios时间相差多少天_IOS计算某个日期和当前时间的天数差
  3. linux 脏牛提权 cve-2016-5159
  4. asp.net core 中使用 signalR(二)
  5. java处理unicode_C# JavaScript Java 与 中文 unicode 处理
  6. seaborn画图设置横纵坐标标签
  7. 【Python】Python3.7.3 - Collections (Arrays) - List数据类型
  8. 搭建Hadoop集群(二)
  9. jQuery常用操作部分总结
  10. Asp.Net服务器控件添加OnClientClick属性绑定
  11. Google编程规范中文文档,非常详细
  12. IP-Guard申请外发流程说明
  13. Hibernate Criteria的 Criterion,Projection,Restrictions等条件设置
  14. Faceted project metadata file “/game/.settings/org.eclipse.wst.common.projec
  15. OpenFlow简单介绍
  16. 【reverse】2021 极客大挑战(部分)
  17. 概率笔记5——概率分布
  18. 服务器进入安全系统,云服务器怎么进安全模式
  19. mysql事务隔离级别之锁实现原理,脏读、不可重复读、幻读出现原因及解决方案
  20. MATLAB绘制正弦函数与余弦函数的线性组合曲线

热门文章

  1. 【调优工具】MAT内存分析工具
  2. MySQL之PXC集群搭建
  3. 使用FLEX 和 Actionscript开发FLASH 游戏(一)
  4. 基于SPRINGBOOT-创意产品众筹平台
  5. javaweb基于SSM开发金院二手书流通拍卖平台
  6. Laravel扩展包下载excel
  7. 小米广告接入unity MimoSdk
  8. dsoframerex正式发布,欢迎大家下载
  9. 考研英语语法-初步接触红花(宁致远老师)-2020-02-23
  10. paillier同态加密原理及证明