专栏首页FreeBuf让子弹多飞一会 | 论如何优化DDoS

让子弹多飞一会 | 论如何优化DDoS

假设1枚炮弹击中目标的伤害为10,而4枚炮弹同时击中目标的伤害为200。现在我方只有一门火炮,4枚炮弹。此火炮每次只能发射一枚炮弹。问如何操作可以使其伤害达到200?

答案是”让子弹多飞一会儿”,不过这个回答不是来自姜文的电影,而是源于美军在二战中提出的 MRSI (Multiple Rounds Simultaneous Impact)技术,粗糙的翻译一下就是“发射多次却同时命中”。

我们知道炮弹飞行的时间取决于开炮时的发射仰角,比如仰角大于45度时,炮弹的飞行的长度和时间比仰角小于45度要长。那么我们就可以采用MRSI 技术,以从大到小的发射仰角,连续发射4次。

这样第一次发射的炮弹飞行时间最长,最后一次发射的飞行时间最短。只要我们精确的计算好角度和发射的时间间隔,就有可能让4枚炮弹同时击中目标,从而造成200的伤害。

简而言之,就是利用炮弹的飞行时间差来弥补发射的间隔时间。

Ryan Rasti在Temporal Lensing and its Application in Pulsing Denial-of-Service Attacks一文中提出了一种利用网络延迟来增强DDoS攻击效果的方法。以DNS放大攻击为例。

假设攻击者选择了两个DNS 服务器(A和B)来攻击目标, 已知A到目标的网络延迟为110毫秒,B到目标的网络延迟为40毫秒。而攻击者到A和B的延迟忽略不计。那么攻击者可以先给A发一个假冒的DNS请求,让A反射目标。

略等70毫秒以后(110-40=70毫秒),攻击者再发给B请求,让B反射目标。这样,虽然攻击者的两个DNS请求不是同时发出的,但是反射出来的攻击消息却可以同时击中目标。如下图所示:

这么做的好处是什么呢?当然是提高了DDoS的效率,攻击者的发报率是1包/70毫秒,而在某个时间点却有2个反射包击中目标。

这相当于巧妙的利用了网络延迟而把所有的攻击包汇聚在某一个特定的时间点上。例子中只用到了2个DNS服务器,但是在实际攻击中,可以扩展到n个。

攻击方式也不仅限于DNS放大攻击,用http 代理的CC攻击也可以。

优化过的DDoS步骤是

1.假设有n条线路(取决于具体的攻击方法,可能有n个DNS服务器,n个http代理等等),攻击者先测量出每条攻击路线的延迟, 对应记为 (L1,L2,…,Ln)。 2.从(L1,L2,…,Ln)中找出最大延迟,记为Lmax 3. 对于路线i(1≤ i ≤n),攻击者在发送前须等待 Lmax-Li

普通的DDoS是拼命打,有多少打多少。这样的结果是数据包击中最终目标的时间是平均分布的,如下图所示:

而优化过的DDoS应该是这样的:

然而为了成功的优化DDoS,我们还必须得解决一个首要问题,如何测量网络延迟。 对于HTTP CC类攻击来说比较简单,攻击者配制好代理,对攻击目标发一个http请求,接收http响应,就可以得到请求往返时间,然后用这个请求往返时间来估算网络延迟。

当然,在实际情况中,网络延迟取决于很多因素,还需要用不同的方法降低噪音带来的影响,比如多次测量取平均值等等。

对于DNS放大攻击,一般用King测量法。

比如攻击者(A)打算用DNS服务器D来攻击目标T。然而,直接测量 A经过D到T的网络延迟 (LADT)是很难的。但是,我们可以利用DNS递归查询的特性,测量出 A经过D到T的DNS服务器 的网络延迟(LADT(DNS))。

方法是让A对D发一个关于T域的DNS查询,在这种情况下D会向T的DNS服务器递归查询。从而该攻击者可以用此DNS请求往返时间来估算LAT(DNS)。一般来说, DNS服务器都在离其他服务器很近的地方,延迟差别可以忽略不计,因此LAT ≈ LAT(DNS) 。

比如攻击者打算利用google DNS (8.8.8.8)来攻击test.com的web 服务器。为了优化,攻击者需要先知道他到8.8.8.8再到test.com web服务器的延迟。

怎么计算延迟呢? 攻击者可以给8.8.8.8发送一个DNS查询:[随机子域].test.com 。由于8.8.8.8 并不负责test.com子域名,它只能递归询问test.com的DNS服务器。test.com的DNS服务器收到该询问以后,会进行本地记录查询。

因为该子域是随机产生的,所以肯定会返回找不到啦,8.8.8.8收到回答以后,会再把这一回答继续转发给攻击者。

这样攻击者就可以计算出他到8.8.8.8再到test.com DNS服务器的延迟。由于一般DNS服务器都在离WEB服务器很近的地方,因此可以推算出到8.8.8.8再到test.com web服务器的延迟。

为什么查询的时候要使用随机子域呢?是为了防止查询结果被cache缓存。如果查询结果被缓存了,那么DNS服务器就不递归查询了,从而导致测量结果不准确。

参考资料

1.Ryan Rasti et al., Temporal Lensing and its Application in Pulsing Denial-of-Service Attacks, IEEE S&P 2015

2.GUMMADI, K. P., SAROIU, S., AND GRIBBLE, S. D. King: Estimating Latency Between Arbitrary Internet End Hosts. In Proc. ACM Internet Measurment Workshop (2002)

* 作者:nickchang,本文属FreeBuf原创奖励计划文章,未经许可禁止转载

本文分享自微信公众号 - FreeBuf(freebuf),作者:nickchang

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2016-06-20

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Windows DNS服务器曝“蠕虫级”漏洞,已存在长达17年

    SigRed漏洞的高危害性在于其是可蠕虫的,也就是可以自传播的,无需用户交互就能传播到易受攻击的设备上,允许未经身份验证的远程攻击者获得针对目标服务器的域管理员...

    FB客服
  • DNS隧道流量分析

    DNS协议又称域名系统是互联网的基础设施,只要上网就会用到,因而DNS协议是提供网络服务的重要协议,在黑客进入内网后会使用DNS、ICMP、HTTP等协议隧道隐...

    FB客服
  • 利用DNS隧道构建隐蔽C&C信道

    无论是高级持续性威胁(APT)、僵尸网络(Botnet),还是勒索软件、后门等,命令与控制信道(C&C)都是其重要组成部分,尤其是APT和僵尸网络中的C&C信道...

    FB客服
  • 网站被劫持攻击以及流量攻击如何解决

    目前越来越多的服务器被DDOS流量攻击,尤其近几年的DNS流量攻击呈现快速增长的趋势,DNS受众较广,存在漏洞,容易遭受到攻击者的利用,关于DNS流量攻击的详情...

    网站安全专家
  • 网站被劫持攻击以及流量攻击如何解决

    目前越来越多的服务器被DDOS流量攻击,尤其近几年的DNS流量攻击呈现快速增长的趋势,DNS受众较广,存在漏洞,容易遭受到攻击者的利用,关于DNS流量攻击的详情...

    技术分享达人
  • Windows DNS服务器曝“蠕虫级”漏洞,已存在长达17年

    SigRed漏洞的高危害性在于其是可蠕虫的,也就是可以自传播的,无需用户交互就能传播到易受攻击的设备上,允许未经身份验证的远程攻击者获得针对目标服务器的域管理员...

    FB客服
  • DNS隧道流量分析

    DNS协议又称域名系统是互联网的基础设施,只要上网就会用到,因而DNS协议是提供网络服务的重要协议,在黑客进入内网后会使用DNS、ICMP、HTTP等协议隧道隐...

    FB客服
  • # 如何在Ubuntu 16.04上配置绑定为缓存或转发DNS服务器 ###

    在学习如何配置网站和服务器时,DNS或域名系统通常是一个难以实现的组件。虽然大多数人可能会选择使用其托管公司或其域名注册商提供的DNS服务器,但创建自己的DNS...

    尘埃
  • 链式操作的用法reject的用法catch的用法all的用法race的用法

    Promise是一个构造函数,自己身上有all、reject、resolve这几个眼熟的方法,原型上有then、catch等同样很眼熟的方法。

    用户1174620
  • 【JS】236-JS 异步编程六种方案(原创)

    我们知道Javascript语言的执行环境是"单线程"。也就是指一次只能完成一件任务。如果有多个任务,就必须排队,前面一个任务完成,再执行后面一个任务。

    pingan8787

扫码关注云+社区

领取腾讯云代金券