《浅析各类DDoS攻击放大技术》

原文链接:http://www.freebuf.com/articles/network/76021.html

FreeBuf曾报道过,BT种子协议家族漏洞可用作反射分布式拒绝服务攻击(DRDoS attacks)。此种攻击方式并非主流,以公开的论文看来效果堪比DNS,而NTP攻击则更胜一筹。

0×00 背景

攻击者可以利用BT种子协议(微传输协议[uTP],分布hash平台[DHT],消息流加密[MSE],BT种子同步[BTSync])来反射放大结点间传输量。

实验显示,攻击者可以利用BT结点将一个包放大50倍,如果是BTsync将达到120倍。另外,我们发现最流行的BT流客户端正是最脆弱的,比如uTorrent、Mainline、Vuze等。

公开DNS解析和NTP协议MONLIST命令攻击,两种攻击方法依靠其协议的广泛应用,影响范围不言而喻。

混合放大,利用通用协议的攻击方式很稳定,通过标准的结点发现机制很快找到放大点。由于其利用的动态端口范围和握手加密,攻击不会被常规防火墙发现,只有进行深度的包检查才能发现。

0×01 什么是DRDoS攻击

攻击者不把通信包直接发给受害者,而是发给放大器(amplifiers)然后反射给受害者。攻击者利用了网络协议漏洞进行IP欺骗。可以由一个或多个攻击结点开始,下图简单勾画出了DRDoS的攻击模型:

《浅析各类DDoS攻击放大技术》

1、P点在攻击前确认放大器的位置,这取决于攻击者利用的协议,强大的扫描工具比如 ZMap可以帮助确认可用放大器。这步是以后步骤的基础,保证以后的攻击效率;
2、接着发送小的Ba 给放大器PA,攻击者伪造包源地址是PV的IP地址,然后PA反馈一个大的包Bv给PV。

BT流是今天世界最常用的P2P协议,协议的新颖之处在于解决了free riding problem 和 last piece problem 。为了克服第一个困难,BT流应用了一个奖赏机制称为窒息算法导致了tit-for-tat-ish 分享方法。BT流通过稀有片优先算法解决了第二个问题。

0×02 UTP协议攻击

最初,TCP是握手和节点通信的默认协议。TCP在P2P环境有很多优点,它分布了可用带宽给每个连接点,通常得到比其他应用更多的带宽。因此,BT流在后台运行,会被前段的通信结束(例如web 和邮件),所以BT流发明了新的传输协议UTP。

UTP采用了TCP的一些想法,以滑动窗口控制流,按顺序校验信息的完整性,握手建立连接。不同于TCP三次握手,UTP只有两次握手,下图表示结点建立连接的过程。可以看出创建方发出一个ST_SYN包给接受方创建连接,类似于TCP的SYN包。接受方反馈ST_STATE包表示成功接收到,建立方接收到反馈表示双向建立成功。现今大多数的BT客户端把UTP作为默认协议。

UTP建立连接的两次握手,这允许攻击者用伪造的IP地址和放大器建立连接,因为接受方不检查创建方是否接收到了应答。

示意图如下:

《浅析各类DDoS攻击放大技术》

一个伪造的带着受害者IP地址的ST_DATA给接收方,接收方相信包中的源IP地址有效,反馈了第一个ST_DATA给受害者,而受害者的IP没有意料到这个包,所以也不会回应它。接收方到时间重传丢失的ST_DATA包,如果连续四次传输未响应则断开连接。

连接建立后BT流需要一次握手作为第一条信息,包括了为扩展保留的字节、hash信息和节点ID。如果客户端接受了握手发现使用了未认证的hash,客户端立刻终结连接。攻击者利用握手包基于UTP两次握手创建放大攻击。

ab两步不赘述了,c步骤 攻击者发送了一个装载了BT流握手信息的ST_DATA包。 这个握手需要活跃的放大器种子hash信息(20字节),握手包最少88字节,如果放大器参与这个种子中,就会反馈步骤d ,d的握手包大于攻击者发送的,因为客户端在UTP包里放入了更多信息。

BT流提供Libtorrent 的扩展协议(LTEP)添加新的扩展而不妨碍默认协议。如果一个攻击者标记支持LTEP 尤其在BEP10中 ,攻击效果会进一步放大而不用增加步骤c握手包的量。对等节点以此扩展信息交换。

0×03 利用数据流加密握手包(MSE)攻击

MSE的目的是混淆BT传输过程,防止受ISP的影响,而不是为了传输安全。尽管它有很多严重的弱点,但它还是被大多数BT客户端使用。

这个协议开始于Diffie-Hellman 密钥的交换 每个节点都产生了768位的公钥 公钥包括0-512位的随机数r 。交换密钥后,包会被RC4算法加密,UTP传输。

这种方法使攻击者不必明确hash信息,发送一个伪造的MSE包(包括768位的公钥没有随机数),客户端随即会反馈随机数和公钥。

结果证明MSE攻击会显著提升效率。进一步说,加密装载Ba和MSE生成的包Bv,熵高的属性,使其难以被ISP或者DPI防火墙发现并*。

0×04 深入DNS放大DDoS攻击

DNS反射攻击也能轻易达到千兆的级别。

最初的放大攻击是著名的SMURF攻击,发送ICMP请求给路由网络广播地址,配置发送ICMP给路由下的设备。攻击者欺骗ICMP请求源是受害者的IP,因为ICMP不包括握手,所以目标无从确认源IP是否合法。攻击者放大攻击的效果取决于路由下有多少设备。 不过SMURF攻击是过去的事了,网络管理员已经配置它们的路由器不将ICMP请求发给网络广播地址。

好的放大攻击方法有两个条件:

1、协议没有握手,允许IP源地址伪造(例如ICMP,UDP)
2、对查询的回复要大于查询本身

DNS是核心,无处不在的网络平台就是放大攻击的资源。

DNS基于UDP传输,因此它们的源地址可以伪造并且接收者回应前无从确定真实性。DNS也可以生成更大的反馈,输入  dig ANY www.baidu.com @x.x.x.x(x.x.x.x是公开DNS解析器),这是一个64字节的查询会返回3223字节,攻击效果放大了50倍。讽刺的是,huge DNSSEC 密钥 ——这个被用来增加DNS系统安全性的协议反而成了放大攻击的帮凶。

公开DNS解析器是互联网的悲剧。

如果你用一个DNS解析器确保只返回可信用户的查询,例如你公司的IP空间是10.10.10.0/24 DNS解析器就只返回这个范围IP的查询,而不会回应6.6.6.6的查询信息。

问题就在于许多人运行DNS解析器而不在乎哪个IP地址的人查询。这样的问题已经存在10年之久,发生的事件表明很多不同的僵尸网络为了发现DNS解析器开始枚举互联网IP空间,一旦发现就可利用于DNS放大攻击。中国*拥有世界第二多的公开DNS解析器资源。

有这样一个网址可以查询你的DNS  http://openresolverproject.org/

世界上有2170万个公开DNS解析器,网站正致力于关闭它们。

解决办法

把recurison设置为no 
允许在特定的地址查询,options {  allow-query{192.168.1.0/24;};};

0×05 NTP 放大DDoS攻击 400Gbps的技术细节

2014年2月出现一次400Gbps规模的NTP攻击,这类攻击越来越走俏,这次事件可以作为一个好的例子来说明一下这种攻击方法。

首先了解一下基础的结构,NTP放大攻击开始于一个被黑客控制的服务器允许IP欺骗,攻击者生成了很多UDP包欺骗源IP地址使来自特定目标的包出现,这些UDP包发送到支持MONLIST命令的网络时间协议服务器port123。

顺便聊一聊MONLIST命令

它的用处在于返回一个NTP服务器上600个IP地址的列表,所以它可以拿来干坏事。如果一个NTP服务器完全迁移它的表,反馈的信息将被放大206倍。此类攻击中IP地址伪造,UDP不需要握手,理论上有200倍的放大效果。

然而这不仅仅是理论,此次攻击事件中,为了400Gbps的攻击效果攻击者应用了运行在1298个不同网络上的4529台NTP服务器。平均每台NTP服务器产生87Mbps的通信量。值得注意的是攻击者很可能只用了一个能IP欺骗的网络服务器就做成了此次攻击。

NTP服务器支持MONLIST和公开DNS解析器不一样,虽然它们都趋向于多网络连接的服务器。对比而言,NTP 攻击更加的效率,2013年曾有一次几乎玩坏互联网的DDoS攻击被纽约时报报道,利用30956公开DNS解析器,目标Spamhaus产生300Gbps的通信量。NTP攻击只用了1/7的服务器,实现的攻击效果还比Spamhaus事件多1/3。

解决办法:禁止MONLIST命令

黑客攻击的前提是IP地址欺骗,如果你在管理网络,确保遵守BCP38。可以用这个来自MIT的工具检测一下http://spoofer.cmand.org/summary.php

最后如果你觉得NTP不好,那就等待下一个SNMP,但是SNMP理论上有650倍的放大效果,已经看到有黑客跃跃欲试了,Buckle up。

参考资料

https://blog.cloudflare.com/the-ddos-that-almost-broke-the-internet/

https://blog.cloudflare.com/deep-inside-a-dns-amplification-ddos-attack/

https://www.usenix.org/system/files/conference/woot15/woot15-paper-adamsky.pdf

上一篇:NET中的规范标准注释(一) -- XML注释标签讲解


下一篇:java安全管理器SecurityManager入门