极速赛车APP下载

您当前的网络存在链路层劫持_网络环境存在劫持_您当前的网络存在链路层劫持

电脑杂谈  发布时间:2019-08-31 13:06:58  来源:网络整理

网络环境存在劫持_您当前的网络存在链路层劫持_您当前的网络存在链路层劫持

随着应用安全的演进,大家都非常关注应用安全漏洞,其实在应用层之下的传输层还有好多安全风险,而且这种安全风险正在被广泛运用。比如现在要给你们介绍的TCP链路劫持攻击。

TCP链路劫持也许就是指网络信令上侦听、伪造TCP包,达到控制目标网络链路的行为。最常用的就是某些设施实现的对违法站点的访问拦截,以及一些地区运营商的网站植入广告行为。

因为广域网的时延劫持影响面大您当前的网络存在链路层劫持,一般会影响一个地区乃至是全国,所以本文重点探讨广域网的TCP链路劫持,局域网的劫持如ARP攻击不在讨论范围。

目前发现的TCP链路劫持攻击通常有两种方式:中断访问型(分为单向发包和双向发包)和替换页面型。

中断访问型常见于阻碍用户访问这些网页,如那些设施禁止用户访问这些站点、某地运营商的允许ADSL多终端上网功能。其原理就是伪造服务端给客户发RST包阻止TCP连接的构建(单向发包)。某些设备做得非常狠,在冒充服务端给客户发RST包的同时也冒充客户给服务端发RST包(双向发包)。

您当前的网络存在链路层劫持_网络环境存在劫持_您当前的网络存在链路层劫持

替换页面型常见于运营商植入广告,也有篡改正常网站进行SEO、骗流量的。笔者见到最恶劣的莫过于钓鱼,如2011年出现过的Gmail钓鱼事件或者一些不能告诉你的钓鱼事件。原理也简单,就是在一个HTTP请求后伪造服务端的HTTP响应给客户端。

如下图右图就是一次典型的TCP链路劫持替换页面,我们可以看见,TCP三次握手完成后,HTTP请求包发送后,客户端收到两个HTTP响应包,因为伪造的第一个包(10号)先到您当前的网络存在链路层劫持,所以第二个正常的HTTP响应包(13号)被客户端忽略了。很明显,在网络上有一个设备,侦听整个会话,当匹配某个特征就抢先发包劫持会话。

这些借助链路劫持进行的弹窗广告、“技术难题”产生的误拦截、植入代码不慎将页面弄乱、甚至是钓鱼等必将损害客户利益。笔者跟链路劫持的“不解之缘”就为此而起。

要解决链路劫持先要搞清楚是否是链路劫持,如是则出问题的大约位置在那里。链路劫持是区域性的,一般来讲某地区客户集中投诉,就可以联系客户调查了。用户通常不懂Wireshark抓包,还要远程协助,如果网速慢就是悲剧……各种痛苦且按下不表。

您当前的网络存在链路层劫持_您当前的网络存在链路层劫持_网络环境存在劫持

抓到可疑包以后关注两个关键点:TTL值和IP Id(Identification)。根据实际观测,伪造的TCP包的TTL值和Id是不符合逻辑的。

比如下图,真实包的TTL是53,Id是按次序自增的,而伪造的包的TTL是64,Id始终是0。还有,笔者也见到某地运营商禁止ADSL多终端上网功能会伪造Id值恒为8888的RST包。

通过伪造的TTL值就可以大概定位侦听设备的位置。利用伪造的数据包的TTL值加上当时客户的路由就能定位:数据包每经过一个路由TTL值就会减一,我们找到假的包,看他的TTL(一般初始发出的TTL是256或128或64)减了多少,反推回来就找到出问题的位置了。

您当前的网络存在链路层劫持_网络环境存在劫持_您当前的网络存在链路层劫持

刚刚那些照片,伪造的的TCP包TTL值是64,也就是可以推断出链路劫持就出现在局域网内。的确如此,这个case是一个路由器软件进行轮询劫持的实例。

有个弊端,如果攻击者聪明一些,伪造包定制一个TTL值,就会造成我们无法准确定位。比如那些设备会发三次RST包,每次的TTL都不一样。注意,我说的“难以定位”并非“不能定位”,还是有方法的,需要动动脑子。

坏人是这些的,不能每次都主动等待客户投诉,如何主动发现链路劫持呢?

客户端访问目标站点的之后,同一个TCP会话的TTL值发生较大变动,就可以判断为疑似劫持。以下python代码就是一个利用Scapy检测TCP链路劫持的示例:

#!/bin/python
#  
# 
import sys
from scapy.all import * 
conf.verb=0
print "TCP Hijacking Delector by lake2"
print "[+] Sniffing ...."
ip_arr = {}
while 1:
	a=sniff( filter="tcp and src host not 10.26.234.44", count=50)
	for b in a:
		ip_src = b.sprintf(r"%IP.src%")
		ip_ttl = b.sprintf(r"%IP.ttl%")
		if ip_arr.has_key(ip_src):
			c = int(ip_ttl) - int(ip_arr[ip_src])
			if abs(c) > 4:
				print ip_src + " has been hijacking !!!   debug info : " + str(ip_ttl) + "  <-> " + str(ip_arr[ip_src])
		else:
			ip_arr[ip_src] = ip_ttl
	print "=>"

网络环境存在劫持_您当前的网络存在链路层劫持_您当前的网络存在链路层劫持

检测到这些设施拦截笔者在Google搜索敏感关键字的链路劫持:

双向RST的状况,部署在机房的IDS也可以看到端倪。

如果是替换页面型攻击,页面hash或者HTML元素个数会有异常,这里也可以成为一个检测点。

防范链路劫持就非常困难,毕竟攻击者控制着网络链路。不过只是不也许。

一是网站全程使用SSL。

再一个就是在客户端或(和)服务器丢弃伪造的TCP包。比如上面说到的单向中断访问型攻击,就可以抛弃包含伪造特征的TCP包(如Id为0或8888)。某些项目就是利用客户端、服务端同时丢弃的方法来翻墙的。

最后,我们可以看见广域网一点都不安全,所以敏感信息存储一定要加密,还要高强度加密;高端网站最好有个校验机制;自动更新的程序也一定要校验文件签名。


本文来自电脑杂谈,转载请注明本文网址:
http://www.0531mai.com/a/tongxinshuyu/article-121211-1.html

    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 严嘉悦
      严嘉悦

      换言之你10万存银行一年就是购买力变成99900

    • 胥艳霞
      胥艳霞

      badgirl

    • 姬宫湦
      姬宫湦

      也解决了男人太多的问题

    极速赛车手机官网 极速赛车双面盘 极速赛车双面盘 极速赛车APP下载 极速赛车APP 极速赛车APP下载 极速赛车APP下载 极速赛车APP下载 极速赛车APP 极速赛车手机版下载