當前位置:
首頁 > 新聞 > 淺談拒絕服務攻擊的原理與防禦(4):新型DDOS攻擊 – Websocket和臨時透鏡

淺談拒絕服務攻擊的原理與防禦(4):新型DDOS攻擊 – Websocket和臨時透鏡

*本文原創作者:黑戈爾,本文屬FreeBuf原創獎勵計劃,未經許可禁止轉


0×01 前言

前幾天我已經分別發了三篇關於DDOS攻擊相關的文章,我也是第一次在freebuf上發表這種文章,沒想到有那麼多人點擊我真的很開心,前幾天我為大家介紹的DDOS攻擊的方法和原理都是已經出現過大規模攻擊行為的,或者說是已經實踐過的。

今天我要講的是還沒有發生過大規模攻擊行為的新方法–websocket和臨時透鏡,這兩種方法其實以前早就有人介紹過了,但是我做的研究比以前發表過的那些可能更具體些,我也想把我的試驗過程和一些心得分享給大家,大家一起交流一下將新技術實現的新方法。


0×02 websocket實現DDOS攻擊

websocket是HTML5一種新的協議。它實現了瀏覽器與伺服器全雙工通信(full-duple)。目前主流的瀏覽器都能很好地支持websocket,而且用它實現DOS攻擊也並不是很難。

只要是在js代碼中寫入相應的代碼,當人們打開這個網頁是瀏覽器會自動執行js代碼去請求連接要攻擊的IP地址,說的有點繞口不過看看代碼就能很清楚明白了


這個功能確實挺好的(雖然我不知道具體哪好,但是就是覺得好- -!),但是我們用它來早DOS完全用不到它的全部功能,只用一個創建實例就行了,比如下面這段代碼


意思就是讓瀏覽器不停循環請求192.168.1.1:80,瀏覽器也很聽話,一直不停的請求。

這個方法可以配合xss一起使用,比如這樣

當然我這用利用方法只是演示,並不適合直接應用於真正的攻擊當中,因為這樣不停的循環會是瀏覽器吃內存吃的很嚴重,也就是幾分鐘內存就會全被佔滿了,真正要利用的話還需要各位大神們想一個隱蔽性強的方法。

0×03 臨時透鏡攻擊

我第一聽說這種攻擊方式是在綠盟的一篇DDOS威脅報告中看到的,這一技術出於一篇名叫《Temporallensing and its Application in Pulsing Denial-of-service Attacks》(時間透鏡及其應用在脈衝拒絕服務攻擊)的論文,論文中展示了一種通 過時間延時進行流量放大攻擊的方法。

使得在一定時刻到達受害者的攻擊流量達到一個明顯的高峰值 ,中文名一般稱之為臨時透鏡攻擊,攻擊原理如下:

這種攻擊是一種典型的延時攻擊形式,「 以時間換數量」,如果攻擊者可以控制多個時間段的多個數據包,讓他們同時到達目標,這樣 就能使流量 瞬間到達一個峰值,對目標造成很大危害。

這個攻擊方式道理不難理解,但是實現起來可是不容易,要讓相同源和目的IP的IP報文走不同的路徑到達目的地,這一點就是要實現臨時透鏡攻擊的關鍵所在。

我國的互聯網基本上是由四張網(電信、聯通、移動、教育網)通過互聯互通組成的,任意兩點之間的路徑都能有千千萬萬條,但是怎麼才能有我們自己控制報文的路線呢?

我想到的第一個辦法就是用IP協議的寬鬆源路由選項,學過或者平時比較了解TCP/IP的童鞋們可能聽說過這個寬鬆源路由,但我估計很少有人用。

簡單點說這個東西是IP協議的選項部分,平時基本用不到,一般IP數據在傳輸時,通常由路由器自動為其選擇路由,但是網路工程師為了使數據繞開出錯網路或者為了測試特定線路的吞吐率,需要在信源出控制IP數據報的傳輸路徑,源路由就是為了滿足這個要求設計的。

源路由有兩種,一種叫嚴格源路由另一種就是我們要說的寬鬆源路由。

ip選項部分可以最多帶上9個IP地址,作為這個數據報要走的路徑,嚴格源路由是每一跳都必須按照指定的路由器去走,但是寬鬆源路由的不用這個嚴格(如果我沒說清楚請自行去查找源路由的相關知識),這不正好滿足了進行臨時透鏡攻擊的要求嗎!

於是乎我興奮的都睡不著覺了,趕緊寫了個源路由測試的demo,想看代碼不?點擊閱讀原文就可以啦。

寫完了這個測試代碼我趕緊去測試了一下,結果,根本就不行,對端收不到發出去的報文,我經過多次測試依然是如此,後來我通過抓包發現在報文調到第三跳的時候被路由器攔下了,並給我回復了一個源路由失敗的ICMP,我後來又在電信網測試了一下,這些可好根本一條都出不去,直接攔截了。

後來我網上查了一下才知道原來大部分運營商都禁止了源路由,不過有人說在國外不禁止源路由,國外有伺服器的朋友可以去測試一下是不是真的,不過在國內想用這個方法實現臨時透鏡攻擊是泡湯了,白興奮了好幾天,我只能再想想其他方法了……..

於是我想了第二種方法(我艹,這個編輯界面很不友好,文章長了就會出點莫名的問題,剛才本來寫完這段了,結果莫名的刪除了沒有要重寫一次),就是通過反射的方法實現自己控制到達目的的路徑,圖略丑- -!

圖中A段的時間好控制,但是B段的時間就不好控制了,這樣總的時間也就沒法控制,那怎麼辦?

以前freebuf上有位朋友提出過一個方法,就是通過DNS解析目的主機的域名來測算B段的時間。

可是方法雖巧妙,但是很有局限性,對那些沒有自建DNS域名解析的目標就不好測算了。

但是更好的辦法我也沒有想到,但是我有個非常笨的方法,那些手中「肉雞」資源豐富的人們可以試試,就是讓肉雞平時隨機的traceroute一些IP地址,然後把結果都返回給控制主機。

控制主機通過合并相同路線粗略的算出全網的拓撲和相鄰兩台路由器的延遲,這樣就能粗略的知道任意IP到任意IP的大概所需時間,這樣我們就就能知道A段+B段的總時間了。

雖然不精確,但是可以用多個肉雞進行冗餘攻擊來彌補,這樣通過反射放大的倍數×臨時透鏡放大倍數能獲得超大的瞬時流量,攻擊效果肯定非常震撼,但以上我說的這些都是我胡思亂想的結果,並不確定可不可行,但希望有能力又喜歡試驗的朋友去嘗試一下,看看否可行。最後在附上一張圖。。chou!


0×04 結語

我通過四篇文章把我知道的所有DOS攻擊的知識講完了,對於大牛來說我說的可能比較淺顯,但對於新手應該能有所幫助,下一篇我將介紹一下對於目前主流的DOS攻擊都有哪些防禦策略,還請大家繼續能來看看,還有ping -j 和tracert -j是實現源路由的簡單方式,大家可以試試你們所接入的網路能不能支持。

PS:打個廣告啊,最近在找工作啊,有沒有地方缺人啊,可以私信我啊(京津冀地區)



*本文原創作者:黑戈爾,本文屬FreeBuf原創獎勵計劃,未經許可禁止轉載


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 FreeBuf 的精彩文章:

如何對iOS App進行打補丁和重新簽名
對登錄中賬號密碼進行加密之後再傳輸的爆破的思路和方式
有趣又有用の安全人才簡歷投遞功能上線了(?。?)

TAG:FreeBuf |

您可能感興趣

SimBad:Google Play中的廣告惡意攻擊活動分析
PeckShield 安全播報:EOS競猜遊戲LuckBet遭隨機數攻擊
攻擊者是如何從Play-with-Docker容器逃逸到Docker主機的(下)
Emissary Panda攻擊:針對中東政府的Sharepoint伺服器
PeckShield 安全播報:ECAF仲裁凍結的refundwallet賬號再現異常攻擊行為
Mirai和Gafgyt新變種利用Struts和SonicWall漏洞攻擊企業
Memcached DRDoS攻擊趨勢
惡意軟體利用Windows組件WMI和CertUtil攻擊巴西
谷歌Chrome OS將推新功能:防物理USB攻擊
SKS Keyserver Network 遭到「中毒」攻擊
Intel CPU再曝底層漏洞 攻擊範圍可超越Spectre和Meltdown
Intel CPU 再現新漏洞:預測執行攻擊 L1 Terminal Fault
Positive Technologies最新報告:73%的ICS工控系統易受黑客攻擊
通過Microsoft Office和YouTube視頻傳遞惡意軟體的PoC攻擊
針對中東的APT攻擊:Big Bang
Tor 將修復一個用於 DDoS 攻擊的 Bug
Nike SB Dunk Low Pro「Panda Pigeon」預購因遭到惡意機器人攻擊而被迫取消
Kubernetes嚴重漏洞致伺服器DoS攻擊
Branch.io漏洞將Tinder,Shopify,Yelp用戶暴露於XSS攻擊下
Persian Stalker攻擊Instagram和Telegram的伊朗用戶