天天看點

讓子彈多飛一會:論如何優化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

對于路線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伺服器就不遞歸查詢了,進而導緻測量結果不準确。

本文轉自d1net(轉載)

繼續閱讀