解析利用BitTorrent发起DDoS放大攻击的原理
BitTorrent DDoS放大攻击
据国外媒体称,利用BitTorrent发动的新型分布式反射拒绝服务攻击(DRDoS)可将流量平均放大50倍。如果使用BTSync(BitTorrent Sync),流量可放大至120倍。
BitTorrent(BT)反射式放大DDoS攻击
分布式拒绝服务(DDoS)攻击是网络犯罪的最常见手段,因其攻击成本低、攻击工具容易获取,成为互联网最为常见的攻击形式。
而大流量攻击中较为常见的是反射式放大攻击,在前端时间,绿盟科技的技术专家介绍了 端口映射的放大攻击形式,今天将介绍攻击者是如何利用BitTorrent协议族中的协议反射和放大对端设备的流量。这里的协议主要是指微传输协议(uTP)、分布式哈希表(DHT)、消息流加密(MSE)和BitTorrent Sync(BTSync)。据称在实验室测试环境中,研究人员可将流量平均放大50倍,如果利用BTSync,可放大至120倍。
- 用户先到web服务器下载torrent种子文件(HTTP或HTTPS协议)。
- Bt客户端(peer)打开下载的torrent文件,解析出tracker等信息。
- Bt客户端(peer)到tracker服务器请求种子信息(可以从谁那里下载所需要的文件,给出一份下载地址列表);同时把自己的IP、端口等信息上传到tracker服务器中(方便其它的peer找到你,从你这里下载他需要的文件片段,此时你这个peer充当的是服务器的角色);
- Bt客户端(peer)获取到种子信息之后,开始向其它的peer请求对应的文件信息,如下图所示:
结合上面的图(该图片引自网络),举个例子说明这个过程:
- 我的bt客户端,向tracker服务器发送请求,想要获取piece 1的内容;
- Tracker服务器告诉我的bt客户端:peer1和peer4有你想要的文件片段,你去他那里下载吧;
- 你的bt客户端就会主动连接这两个peer去获取你想要的文件。
- 完成之后,你就保存了0-4所有的片段。
再举个例子:
- 假设在你获取完0-4所有片段之后,此时peer3想要请求片段3,他会首先向tracker服务器请求:谁有piece 3,告诉我;
- Tracker服务器收到请求之后,告诉peer3:peer1、peer2、peer_nsfocus(假设你的peer就叫peer_nsfocus)有piece3;
- Peer3收到之后,会向这三个peer请求piece3;
注: 如果你再下载完成之后,立刻关闭了你的bt客户端,那么peer3就只能去peer1和peer2去请求piece3了。如果大家都在下载完成之后就立刻关闭自己的客户端,那么种子数量就会非常少,整个下载速度就会很慢。所以BT社区建议的使用方式是,在自己下载完成之后,开着自己的bt客户端,方便其它peer从你这里获取文件,加快下载速度。
P2P文件传输过程
两个peer之间传输文件的过程中有两种方式:基于TCP和基于UTP的。
基于TCP传输
- 两个peer之间先建立三次握手连接;
- 发送bittorrent的handshake消息;
- 之后传输数据。
基于UTP传输
UTP协议:Micro Transport Protocol 或者µTP协议是一个基于UDP协议的开放式BT点对点文件共享协议。它的目的是减轻延迟,并且解决传统的基于TCP的BT协议所遇到的拥塞控制问题,提供可靠的有序的传送。
正常情况下,整个交互过程是这样的:
- 客户端(此处也就是YOU)发送一个ST_SYN请求给服务器(此处也就是PEER1);
- 服务端收到之后回复一个ST_STATE,表示连接已经建立好了;
- 之后就是两端的握手消息(88 Byte);
- 之后就是交互数据。
但由于从peer1返回的包(上面的虚线过程)并没有被校验,就成为被攻击者利用的环节。
反射放大攻击分析
反射原理如下图:
- 由于UTP只需要两次握手就可以建立连接,使得攻击者可以很容易伪造源IP完成连接的建立。
- **由于**** peer1 ****并没有检查第**** 2 ****个包(**** ST_STATE ****)是否被**** attacke ****收到,而是直接相信该源**** IP */*是真实的,** 所以当attacker再次伪造源IP发送handshake包的时候,peer1会立刻回应handshake包,而且超时之后还会重传,增大了放大倍数。
由于重现攻击过程,需要更新时间戳等信息,比较复杂,同时也考虑到安全性问题,这里就不做展开讨论了。
业界评价BT放大式攻击
BitTorrent的发言人表示,公司已经”采取措施增强了这些协议以减轻该研究论文中列出的漏洞所带来的影响。”然而,TorrentFreak网站表示,”uTorrent仍然不安全。”Adamsky表明,包括uTorrent在内的最流行的BitTorrent客户端最易受到攻击。
BitTorrent承认,鉴于基于UDP的协议的运行方式,这些攻击将可能一直存在,并表明将很快完全防护这些漏洞,但具体方法尚未确定。Tenable Network Security的战略分析师表示,利用BitTorrent反射DDoS攻击的做法并非第一次了,但Adamsky研究的独特之处在于揭示了研究人员在攻击测试过程中所实现的流量放大倍数。
我们向Cris Thomas了解此类攻击在现实世界到底会造成多大的影响。他表示,”目前并未大规模发现此类攻击,因此不必太过担忧。然而,如果攻击者也看到了这篇论文,可能很快就会执行攻击。”Malwarebytes的高级情报分析师也表示了担忧,预言那些脚本小子必将利用论文中描述的技术在某一时刻攻击网络,并指出当该论文的研究付诸实践时,DDoS攻击将大量出现。”有效防御这些攻击极具挑战性,”他们告诉SCMagazineUK。反射技术不仅放大了拒绝服务,同时也有效屏蔽了攻击者的IP地址,使得攻击源难以定位。虽然BitTorrent流量检测和丢弃方案有助于缓解DRDoS攻击,但会产生很大负载,因此并非理想方案。
在接受SCMagazineUK采访时,OPSWAT软件工程经理煞费苦心地指出,我们不应该认为分布式机制的本质是坏的或在安全性方面就一定比非分布式机制差。他说,”我讨厌制造’反P2P’的恐慌情绪。虽然分布式架构可能会存在特定的安全问题,但非分布式架构也同样如此。”Arbor Networks技术专家也表示,BitTorrent只是这类攻击可利用的协议之一,DNS、NTP、SSDP、CHARGEN、SNMP以及Portmap都可用于发动此类攻击。但利用BitTorrent的优势在于,放大的反射型攻击流量的源端口是动态的。
有人建议,BitTorrent可考虑改用三次握手协议如TCP,代替当前使用的二次握手协议。这可能会导致性能降低,但三次握手协议可检测到伪造的源IP地址,因为这些地址无法回复第一条握手消息。他说,”这会降低攻击过程中的流量放大倍数。”众所周知,这正是BitTorrent目前在漏洞防护过程中通过增强协议要实现的目标。
BT放大式攻击防护
如同上面所说,攻击者基于BT的放射式放大攻击不同于传统的反射攻击,因为它的端口是不固定的,所以封端口的策略不可行,只能靠识别应用层的特征来过滤攻击。防护方式建议从两个方面进行:
- 对于bittorrent客户端,可以考虑改用原来的tcp方式,杜绝虚假源导致的放大攻击。
- 防护设备对utp报文的payload做识别,utp前两个字节是有特征的,第1个字节代表版本号和类型,对于放大的报文,该字段为0x01;第2个字节 代表utp的扩展字段,有3种取值:0x00、0x01、0x02,一般情况下该字段为0x00. 可以根据这些特征做限速等策略。
附录:文中术语
- Torrent文件:保存了相应的种子信息、tracker服务器信息等;
- Web服务器:用来存放 .torrent文件,共用户去下载的。
- Peer:代表每个bt客户端(实际上每个peer既是服务器又是客户端)。
- Tracker服务器:记录每个peer的信息(IP、端口、已经下载的对应的段等信息),用于帮助每个peer发现彼此;
- Piece: 一个文件通常会被分割成很多片段,这样下载的时候可以同时向多个服务端请求数据,加快下载速度。