一种防止TCP连接被旁路设备嗅探的方法及系统与流程

文档序号:17923641发布日期:2019-06-15 00:16阅读:332来源:国知局
一种防止TCP连接被旁路设备嗅探的方法及系统与流程
本发明涉及互联网
技术领域
,特别是涉及一种防止tcp连接被旁路设备嗅探的方法及防嗅探系统。
背景技术
:网络中的旁路设备可以监听或嗅探到经过该设备的所有数据包,如果对收到的tcp(transmissioncontrolprotocol,传输控制协议)连接的数据进行重组,则可以还原整条连接中所有的数据,并根据需要注入广告或恶意代码等,从而威胁用户的网络安全。如一些电信运营商经常会根据用户访问的网页在其中注入广告,其使用的方法就是通过分析建立连接后的第一个包判断是否是http协议(hypertexttransferprotocol,超文本传输协议),并通过请求中的资源段与主机名的host段的数据重组出url(uniformresourcelocator,统一资源定位符)并向用户发送一个整合了广告与包含一个真实url嵌入页面伪造数据包,从而让用户以为是原网页内的广告,而这个广告指向的页面为第三方广告提供商,如广告提供商在页面内放入恶意脚本则可获取或篡改全页面内容。除了广告外网络提供者本身也会记录用户的所有上网记录其中包括访问网站的url,另外同网络中的黑客也可能嗅探并注入恶意内容,因此需要一种方法来让旁路设备无法自动重组出正确数据的方法来防止其分析用户tcp连接中的数据并注入恶意数据。技术实现要素:为了解决现有技术存在的不足,本发明的目的在于提供一种一种防止tcp连接被旁路设备嗅探的方法及系统,可以使网络中的旁路设备不能正确重组出用户tcp连接中的数据,从而避免被注入恶意数据。为实现上述目的,本发明提供的防止tcp连接被旁路设备嗅探的方法,包括以下步骤:捕获用户发出的数据包;分析判断数据包的数据,根据协议类型确定保护对象,解析需要防嗅探的数据;修改需要防嗅探的数据或关键字;发送用户原始真数据包。进一步地,所述分析判断数据包的数据,根据协议类型确定保护对象,解析需要防嗅探的数据的步骤,进一步包括:如果数据包的协议是https,则确定为对握手包进行保护,且解析为需要防嗅探的数据是sni;或者如果数据包的协议是http,则确定为对每个报文进行保护,且解析为需要防嗅探的数据是资源路径和主机域名。进一步地,所述修改需要防嗅探的数据或关键字的步骤,进一步包括:将需要防嗅探的数据或关键字进行替换,而对tcp包中的校验码不进行修改。进一步地,所述修改需要防嗅探的数据或关键字的步骤,进一步包括:将需要防嗅探的数据或关键字进行替换;重新计算伪造的tcp包正确的校验码,其中,将与伪造的校验码对应的确认号码修改成与上一次发出的数据包的确认号码相同。进一步地,所述修改需要防嗅探的数据或关键字的步骤,进一步包括:将需要防嗅探的数据或关键字进行替换;重新计算伪造的tcp包正确的校验码,其中,将数据包的ip头中的ttl修改成小于主机实际需要ttl。进一步地,其特征在于,所述发送用户原始真数据包的步骤,进一步包括:将用户原始真数据包从需要防嗅探的关键字处截断;将关键字的一半放到上一个数据包的末尾,另一半放到下一个数据包的开头。更进一步地,所述发送用户原始真数据包的步骤,进一步包括:将用户原始真数据包从需要防嗅探的关键字处截断;将关键字的一半放到上一个数据包的末尾,另一半放到下一个数据包的开头;在放有相连接的关键字的两个数据包之间发送伪包。为实现上述目的,本发明还提供一种防止tcp连接被旁路设备嗅探的系统,上述的方法防止旁路设备嗅探tcp连接,所述系统,包括:捕获模块,其捕获用户发出的数据包;分析模块,其分析判断数据包的数据,根据协议类型确定保护对象,解析需要防嗅探的数据;修改模块,其修改需要防嗅探的数据或关键字;发送模块,其发送用户原始真数据包。进一步地,所述修改模块,将需要防嗅探的数据或关键字继续替换,而对tcp包中的校验码不进行修改、或者将需要防嗅探的数据或关键字进行替换,并重新计算伪造的tcp包正确的校验码,其中,将与伪造的校验码对应的确认号码修改成与上一次发出的数据包的确认号码相同、或者将需要防嗅探的数据或关键字进行替换,并重新计算伪造的tcp包正确的校验码,其中,将数据包的ip头中的ttl修改成小于主机实际需要ttl。更进一步地,所述发送模块,将用户原始真数据包从需要防嗅探的关键字处截断,并且将关键字的一半放到上一个数据包的末尾,另一半放到下一个数据包的开头、或者将用户原始真数据包从需要防嗅探的关键字处截断,并且将关键字的一半放到上一个数据包的末尾,另一半放到下一个数据包的开头,并在放有相连接的关键字的两个数据包之间发送伪包。本发明的防止tcp连接被旁路设备嗅探的方法及系统,通过将需要防嗅探的数据或关键字替换为其他内容,真主机忽略该数据包,而旁路设备将伪包添加到自己的tcp数据队列中,因此发送真数据包时旁路设备则忽略该真数据包。因此,能够使网络中的旁路设备不能正确重组出用户tcp连接中的数据,从而避免被注入恶意数据。本发明的防止tcp连接被旁路设备嗅探的方法及系统,通过重新计算伪造的tcp包正确的校验码,由于真主机已经收到过该确认号码,而认为该数据包是一个错误的包从而忽略掉该数据包因此发送真数据包时旁路设备则忽略该真数据包。因此,能够使网络中的旁路设备不能正确重组出用户tcp连接中的数据,从而避免被注入恶意数据。本发明的防止tcp连接被旁路设备嗅探的方法及系统,通过将数据包的ip头中的ttl修改成小于主机实际需要ttl,真主机无法收到该数据包,而将该数据包添加到自己的tcp数据队列中。因此,能够使网络中的旁路设备不能正确重组出用户tcp连接中的数据,从而避免被注入恶意数据。本发明的防止tcp连接被旁路设备嗅探的方法及系统,通过将需要防嗅探的关键字处截断并放到多个不同的前后包,而旁落设备因已经收到数据而视为是丢包重传,从而忽略该数据包。因此,能够使网络中的旁路设备不能正确重组出用户tcp连接中的数据,从而避免被注入恶意数据。本发明的防止tcp连接被旁路设备嗅探的方法及系统的优点是在linux平台上不需要额外的依赖可直接使用,且不需要捕获大量发送的包,只被动接收即可知道自己发出的包中的序号且无关包的过滤工作都交给操作系统本身完成,应用程序方便直接使用且性能和稳定性更高。本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。附图说明附图用来提供对本发明的进一步理解,并且构成说明书的一部分,并与本发明的实施例一起,用于解释本发明,并不构成对本发明的限制。在附图中:图1为根据本发明的防止tcp连接被旁路设备嗅探的方法流程图;图2为根据本发明的防止tcp连接被旁路设备嗅探的系统架构图。具体实施方式以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。图1为根据本发明的防止tcp连接被旁路设备嗅探的方法流程图,下面将参考图1,对本发明的防止tcp连接被旁路设备嗅探的方法进行详细描述。实施例1首先,在步骤101,捕获用户发出的数据包。在步骤102,分析判断数据包的协议,根据协议类型确定保护对象,解析需要防嗅探的数据。具体地,如果数据包的协议是https(hypertexttransferprotocoloversecuresocketlayer),则需要对握手包进行保护;如果数据包的协议是http,则需要对每个报文进行保护。之后,解析需要防嗅探的数据,在数据包的协议是https的情况下,需要防嗅探的数据为sni(servernameindication,服务器名称指示),在数据包的协议是http的情况下,需要防嗅探的数据为资源路径和主机域名。在步骤103,将需要防嗅探的关键字替换为伪造的随机数据,同时对tcp包中的校验码不进行修改。此时,由于校验码错误,因此真主机忽略该数据包,而为了高性能而没有校验的旁路设备会将其添加到自己的tcp数据队列中。在步骤104,发送用户原始真数据包。此时,发送用户原始真数据包,则真主机通过校验并将其放入tcp数据队列中,而旁落设备因为已经添加到自己的tcp数据列表中,进而将其视为丢包重传并忽略该数据包。之后,返回步骤101。实施例2实施例2的方法步骤与实施例1的方法步骤大致相同,区别在于步骤103,对于与实施例1相同的步骤省略说明。在步骤103a,将需要防嗅探的关键字替换为伪造的随机数据,同时重新计算伪造的tcp包正确的校验码,其中,将与伪造的校验码对应的确认号码修改成与上一次发出的数据包的确认号码相同。此时,由于真主机已经收到过该确认号码,而认为该数据包是一个错误的包从而忽略掉该数据包。然而,单路检测的旁路设备因没有记录下服务器回复的下行数据,从而无法判断该数据包是否是因为服务器的上一个确认包丢包而发送的重复确认,只能视为“真”,而将该数据包添加到自己的tcp数据队列中。实施例3实施例3的方法步骤与实施例1的方法步骤大致相同,区别在于步骤103,对于与实施例1相同的步骤省略说明。在步骤103b,将需要防嗅探的关键字替换为伪造的随机数据,同时重新计算伪造的tcp包正确的校验码,其中,将数据包的ip头中的ttl(timetolive,存活时间)修改成小于主机实际需要ttl。此时,由于ttl不足,在ttl在每个网络节点转发后减少至0时被丢弃。因此,真主机无法收到该数据包,而旁路设备没有预先分析到达服务器所需的ttl,由此无法判断真伪,而将该数据包添加到自己的tcp数据队列中。实施例4实施例4的方法步骤与实施例1至实施例3的方法步骤大致相同,区别在于步骤104,对于与实施例1至实施例4相同的步骤省略说明。在步骤104a,将用户原始真数据包从需要防嗅探的关键字处截断,将关键字的一半放到上一个数据包的末尾,另一半放到下一个数据包的开头。真主机收到这些数据包后重组成tcp数据流,而旁落设备因已经收到数据而视为是丢包重传,从而忽略该数据包。此改动是为了防止旁落设备不重组数据包,而对单个包进行检测,比如http协议通常一个数据包就可以包含常规请求头的所有内容,因此广告注入设备可以只需要一个包就能获取伪造数据所需的内容。为应对此类型的设备需要将数据包分在多个包中发送,从而使每个包中都不包含旁路设备所需的数据。实施例5实施例5的方法步骤与实施例1至实施例3的方法步骤大致相同,区别在于步骤104,对于与实施例1至实施例3相同的步骤省略说明。在步骤104b,将用户原始真数据包从需要防嗅探的关键字处截断,将关键字的一般放到上一个数据包的末尾,另一半放到下一个数据包的开头,并在放有相连接的关键字的两个包之间重发一次在步骤103、步骤103a以及步骤103b中的任一步骤生成的伪包。真主机收到这些数据包后重组成tcp数据流,而旁落设备因已经收到数据而视为是丢包重传,从而忽略该数据包,如果不是为丢包重传,则又覆盖掉真包。此改动是为了防止旁路设备不仅有单个包检测,同时不将数据包视为丢包重发而直接进行组合并检查。为对应此类型的设备需要将才分开的数据包之间再发送一次伪包,从而当受到真包的后半截时前半截已被第二次发送的伪包覆盖,进而使重组出的数据流中不含有旁路设备所需的数据。现以实际的示例对上述的实施例进行说明。首先,创建正常的tcpsocket,且创建tcprawsocket并使用connect绑定目标地址。之后,使用tcpsocket连接目标,且用rawsocket接受服务器返回的syn|ack应答包。其中,通过包中的ack值即可知道自己发出的数据包的应答号,以用于构造需要的伪包,伪包可用此处的rawsocket发送。在以下的步骤中,分别按照各实施例的步骤进行,并得到如下结果。用户发送的数据:ttl:64seq:1ack:1checksumget/index.htmhttp/1.1\r\nhost:www.test.com\r\n\r\n实施例1实际发送的数据:ttl:64seq:1ack:1wrongput/error.htmhttp/1.1\r\nhost:www.fake.com\r\n\r\nttl:64seq:1ack:1checksumget/index.htmhttp/1.1\r\nhost:www.test.com\r\n\r\n实施例2实际发送的数据:ttl:64seq:1ack:0checksumput/error.htmhttp/1.1\r\nhost:www.fake.com\r\n\r\nttl:64seq:1ack:1checksumget/index.htmhttp/1.1\r\nhost:www.test.com\r\n\r\n实施例3实际发送的数据:ttl:8seq:1ack:1checksumput/error.htmhttp/1.1\r\nhost:www.fake.com\r\n\r\nttl:64seq:1ack:1checksumget/index.htmhttp/1.1\r\nhost:www.test.com\r\n\r\n实施例4实际发送的数据:ttl:8seq:1ack:1checksumput/error.htmhttp/1.1\r\nhost:www.fake.com\r\n\r\nttl:64seq:1ack:1checksumget/indttl:64seq:9ack:1checksumex.htmhttp/1.1\r\nhost:www.tettl:64seq:38ack:1checksumst.com\r\n\r\n在实施例1至实施例4中,旁路设备重组出的数据:put/error.htmhttp/1.1\r\nhost:www.fake.com\r\n\r\n在实施例1至实施例4中,服务收到的数据:get/index.htmhttp/1.1\r\nhost:www.test.com\r\n\r\n实施例5实际发送的数据:ttl:64seq:1ack:0checksumput/error.htmhttp/1.1\r\nhost:www.fake.com\r\n\r\nttl:64seq:1ack:1checksumget/indttl:64seq:1ack:1wrongput/error.htmhttp/1.1\r\nhost:www.fake.com\r\n\r\nttl:64seq:9ack:1checksumex.htmhttp/1.1\r\nhost:www.tettl:8seq:1ack:1checksumput/error.htmhttp/1.1\r\nhost:www.fake.com\r\n\r\nttl:64seq:38ack:1checksumst.com\r\n\r\n在实施例5中,旁路设备重组出的数据(每次收到新包重组出的数据均会不同):1、put/error.htmhttp/1.1\r\nhost:www.fake.com\r\n\r\n2、get/indor.htmhttp/1.1\r\nhost:www.fake.com\r\n\r\n3、put/error.htmhttp/1.1\r\nhost:www.fake.com\r\n\r\n4、put/errex.htmhttp/1.1\r\nhost:www.teke.com\r\n\r\n5、put/error.htmhttp/1.1\r\nhost:www.fake.com\r\n\r\n6、put/error.htmhttp/1.1\r\nhost:www.fast.com\r\n\r\n在实施例5中,服务收到的数据:get/index.htmhttp/1.1\r\nhost:www.test.com\r\n\r\n。图2为根据本发明的防止tcp连接被旁路设备嗅探的系统架构图,如图2所示,本发明的防止tcp连接被旁路设备嗅探的系统200,包括,捕获模块201、分析模块202、修改模块203、发送模块204。捕获模块201捕获用户发出的数据包。分析模块202分析判断数据包的协议,并根据协议类型确定保护对象,并且解析需要防嗅探的数据。具体地,分析模块202判断为数据包的协议是https(hypertexttransferprotocoloversecuresocketlayer),则需要对握手包进行保护;分析模块202判断为数据包的协议是http,则需要对每个报文进行保护。之后,分析模块202解析需要防嗅探的数据,在数据包的协议是https的情况下,解析为需要防嗅探的数据为sni(servernameindication,服务器名称指示),在数据包的协议是http的情况下,解析为需要防嗅探的数据为资源路径和主机域名。修改模块203修改需要防嗅探的关键字。具体地,修改模块203将所有数据或关键字替换为其它内容,同时对tcp包中的校验码不进行修改、或者将所有数据或关键字替换为其它内容,同时重新计算伪造的tcp包正确的校验码,其中,将与伪造的校验码对应的确认号码修改成与上一次发出的数据包的确认号码相同、或者将所有数据或关键字替换为其它内容,同时重新计算伪造的tcp包正确的校验码,其中,将数据包的ip头中的ttl(timetolive,存活时间)修改成小于主机实际需要ttl。发送模块204发送用户原始真数据包。具体地,将用户原始真数据包从需要防嗅探的关键字处截断,将关键字的一半放到上一个数据包的末尾,另一半放到下一个数据包的开头、或者将用户原始真数据包从需要防嗅探的关键字处截断,将关键字的一般放到上一个数据包的末尾,另一半放到下一个数据包的开头,并在放有相连接的关键字的两个包之间重发一次伪包。根据本实施例,由于将所有数据或关键字替换为其它内容,真主机忽略该数据包,而旁路设备将伪包添加到自己的tcp数据队列中,因此发送真数据包时旁路设备则忽略该真数据包。因此,能够使网络中的旁路设备不能正确重组出用户tcp连接中的数据,从而避免被注入恶意数据。根据本实施例,由于重新计算伪造的tcp包正确的校验码,由于真主机已经收到过该确认号码,而认为该数据包是一个错误的包从而忽略掉该数据包因此发送真数据包时旁路设备则忽略该真数据包。因此,能够使网络中的旁路设备不能正确重组出用户tcp连接中的数据,从而避免被注入恶意数据。根据本实施例,将数据包的ip头中的ttl修改成小于主机实际需要ttl,真主机无法收到该数据包,而将该数据包添加到自己的tcp数据队列中。因此,能够使网络中的旁路设备不能正确重组出用户tcp连接中的数据,从而避免被注入恶意数据。根据本实施例,将需要防嗅探的关键字处截断并放到多个不同的前后包,而旁落设备因已经收到数据而视为是丢包重传,从而忽略该数据包。因此,能够使网络中的旁路设备不能正确重组出用户tcp连接中的数据,从而避免被注入恶意数据。本领域普通技术人员可以理解:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1