基於Memcached分散式系統DRDoS拒絕服務攻擊技術研究
基礎概念
友情提醒:以下僅做技術研究,如有惡意利用,發起攻擊,將自負法律後果
本次反射式拒絕服務攻擊技術基於全球網際網路分散式的Memcached伺服器,需要儲備一定得安全攻防知識,網路協議知識和python程式碼程式設計技術。希望在學習本篇文章知識前自行學習相關的基礎知識,文章後面同時附有參考連結。關於Memcached系統
Memcached是一個自由開源的,高效能,分散式記憶體物件快取系統。Memcached是以LiveJournal旗下Danga Interactive公司的Brad Fitzpatric為首開發的一款軟體。現在已成為mixi、hatena、Facebook、Vox、LiveJournal等眾多服務中提高Web應用擴充套件性的重要因素。Memcached是一種基於記憶體的key-value儲存,用來儲存小塊的任意資料(字串、物件)。這些資料可以是資料庫呼叫、API呼叫或者是頁面渲染的結果。Memcached簡潔而強大。它的簡潔設計便於快速開發,減輕開發難度,解決了大資料量快取的很多問題。它的API相容大部分流行的開發語言。本質上,它是一個簡潔的key-value儲存系統。一般的使用目的是,通過快取資料庫查詢結果,減少資料庫訪問次數,以提高動態Web應用的速度、提高可擴充套件性。
關於分散式DDoS原理
分散式拒絕服務(DDoS:Distributed Denial of Service)攻擊指藉助於客戶/伺服器技術,將多個計算機聯合起來作為攻擊平臺,對一個或多個目標發動DDoS攻擊,從而成倍地提高拒絕服務攻擊的威力。通常,攻擊者使用一個偷竊帳號將DDoS主控程式安裝在一個計算機上,在一個設定的時間主控程式將與大量代理程式通訊,代理程式已經被安裝在網路上的許多計算機上。代理程式收到指令時就發動攻擊。利用客戶/伺服器技術,主控程式能在幾秒鐘內啟用成百上千次代理程式的執行。
關於反射式DRDoS原理
DRDoS是英文“Distributed Reflection Denial of Service ”的縮寫,中文意思是“分散式反射拒絕服務”。與DoS、DDoS不同,該方式靠的是傳送大量帶有被害者IP地址的資料包給攻擊主機,然後攻擊主機對IP地址源做出大量回應,形成拒絕服務攻擊。
攻擊流程
DDoS攻擊流程
要完成這個攻擊流程,得至少需要三個步驟。
1 攻擊者手裡必須控制大量肉雞機器,並且分散式在互聯互通分佈在互聯上。
2 攻擊者隨時可以通過代理或者控制程式同時向所有肉雞傳送大量攻擊指令。
3 所有肉雞在接受指令後,同時大量併發,同時向受害者網路或者主機發起攻擊行為。
DRDoS攻擊流程
DRDoS要完成一次反射放大攻擊:
1 攻擊者,必須提前需要把攻擊資料存放在所有的線上肉雞或者反射伺服器之上。
2 攻擊者,必須偽造IP源頭。傳送海量偽造IP來源的請求。當然這裡的IP就是受害者的IP地址。
3 反射伺服器,必須可以反射資料,執行良好穩定。最好是請求資料少,返回資料成萬倍增加。
如此不斷迴圈,就可以大規模攻擊其頻寬網路,增加佔用率和耗損目標機的硬體資源。
利用Memcached實現的DRDos攻擊反射流程
存活機器
首先我們要找到大量反射伺服器,利用搜索引擎去發掘全球可利用線上伺服器。這裡我暫時用zoomeye進行蒐集,你也可以用別的搜尋引擎,比如shodan等。預設開啟埠號是11211,利用知道創宇得鍾馗之眼空間引擎搜尋到全球538317臺機器開啟11211埠,執行著Memcached快取服務系統。但是利用條件還有一個,就是我們還得進一步帥選確認是否開啟預設可以登入的機器,這樣就可以被我們所利用了。有些已經設定了安全認證,那麼就無法使用了。(不做公佈)
通訊協議
從協議看,memcache同時監聽tcp和udp。也就是說它本身支援兩種協議同時可以發起互動和通訊。這個就很關鍵了。大家可以看看tcp和udp協議區別。由於TCP是位元組流,沒有包的邊界,無所謂大小,一次傳送接受的資料取決於實現以及你的傳送接收快取大小。
TCP沒有限定,TCP包頭中就沒有“包長度”欄位,而完全依靠IP層去處理分幀。
但是UDP協議就不一樣了,他不基於連線,直接傳送資料報到目標機器。
注意這個Length欄位,只佔有兩個位元組。所以說UDP協議傳送資料就有了限制,單次最大發送2^16=65535=64KB。
如果想要傳送更大資料包,那麼只能使用TCP協議或者UDP多次傳送來實現,這裡我已經測試過,兩種協議均可以實現。
小結:
1、TCP面向連線(如打電話要先撥號建立連線);UDP是無連線的,即傳送資料之前不需要建立連線。
2、TCP提供可靠的服務。也就是說,通過TCP連線傳送的資料,無差錯,不丟失,不重複,且按序到達;UDP盡最大努力交付,即不保證可靠交付。
3、TCP面向位元組流,實際上是TCP把資料看成一連串無結構的位元組流;UDP是面向報文的。UDP沒有擁塞控制,因此網路出現擁塞不會使源主機的傳送速率降低(對實時應用很有用,如IP電話,實時視訊會議等)。
4、每一條TCP連線只能是點到點的;UDP支援一對一,一對多,多對一和多對多的互動通訊。
5、TCP首部開銷20位元組;UDP的首部開銷小,只有8個位元組。
6、TCP的邏輯通訊通道是全雙工的可靠通道,UDP則是不可靠通道。
好了,明白了這個,我們就看看怎麼利用基於TCP和UDP協議通訊的Memcached快取系統。由於Memcached系統支援最大鍵值單資料對1M儲存。所以我們最大隻能儲存1M,當然你可以作多個欄位,這樣也會放大。那首先按照流程圖我們向遠端伺服器提前儲存有效載荷,這裡就是資料了。利用TCP協議可以一次性發1M,但是我們要是利用UDP就得迴圈傳送多次才能完成1M資料傳輸。由於UDP具有不穩定性,資料包不保證可靠交付。這裡我建議使用TCP進行傳送。
資料格式
Memcached簡潔而強大。它的簡潔設計便於快速開發,減輕開發難度,解決了大資料量快取的很多問題。它的API相容大部分流行的開發語言。本質上,它是一個簡潔的key-value儲存系統。
一般的使用目的是,通過快取資料庫查詢結果,減少資料庫訪問次數,以提高動態Web應用的速度、提高可擴充套件性。
支援有如下所有命令和操作。
Memcached set 命令
Memcached add 命令
Memcached replace 命令
Memcached append 命令
Memcached prepend 命令
Memcached CAS 命令
Memcached 查詢命令
Memcached get 命令
Memcached gets 命令
Memcached delete 命令
Memcached incr/decr 命令
Memcached 統計命令
Memcached stats 命令
Memcached stats items 命令
Memcached stats slabs 命令
Memcached stats sizes 命令
Memcached flush_all 命令
這裡我們重點介紹三種命令,因為我們的攻擊流程中將會涉及了這三種方式。
第一個是上傳有效載荷Memcached set 命令
Memcached set 命令用於將value(資料值)儲存在指定的key(鍵)中。
如果set的key已經存在,該命令可以更新該key所對應的原來的資料,也就是實現更新的作用。
set 命令的基本語法格式如下:
set key flags exptime bytes [noreply] value
引數說明如下:
- key:鍵值 key-value 結構中的 key,用於查詢快取值。
- flags:可以包括鍵值對的整型引數,客戶機使用它儲存關於鍵值對的額外資訊 。
- exptime:在快取中儲存鍵值對的時間長度(以秒為單位,0 表示永遠)
- bytes:在快取中儲存的位元組數
- noreply(可選): 該引數告知伺服器不需要返回資料
- value:儲存的值(始終位於第二行)(可直接理解為key-value結構中的value)
第二個反射有效載荷Memcached get 命令
Memcached get 命令獲取儲存在key(鍵)中的value(資料值),如果 key 不存在,則返回空。
get 命令的基本語法格式如下:
get key
多個 key 使用空格隔開,如下:
get key1 key2 key3
引數說明如下:
- key:鍵值 key-value 結構中的 key,用於查詢快取值。
第三個是退出遠端伺服器。quit\r\n命令即可,沒有任何引數,注意要有回車換行。
攻擊步驟
自動化上傳有效載荷
到了這裡,我們接下來就是如何利用這個過程實現DRDoS反射拒絕服務攻擊。
思路是這樣的:我們先批量上傳指定資料到遠端開放伺服器Memcached上面,然後我們再去Memcached伺服器請求查詢資料上一步儲存的資料,(這一步很關鍵,我們只能利用UDP協議進行反射,後面說明一下為什麼。)這樣就可以將資料通過Memcached伺服器反射到目標受害機器上了。這裡我們可以自己手動編寫程式實現批量自動化上傳有效載荷到遠端伺服器,等待上傳完了我們就可以進行UDP反射攻擊了。
這裡我用python指令碼完成payload資料上傳。
程式碼就不公佈了,防止非法利用。直接輸出測試結果輸出結果自動化反射有效載荷
這裡得注意一下,上面的自動化上傳我使用了TCP協議傳送資料包,反射我必須使用UDP協議。因為只有UDP協議是基於無連線的,這樣我們直接傳送資料到目標伺服器,不需要進行三次握手。同時伺服器接收方也無法驗證客戶源IP,因此這個過程我們才可以利用UDP偽造源地址,實現反射DRDoS攻擊過程。
利用socket和scapy庫開發,採用多執行緒進行迴圈請求。(特別注意UDP協議使用的時候,每個操作命令必須都要新增資料包結構要加頭部8位元組標誌位, "\x00\x00\x00\x00\x00\x01\x00\x00")
這裡使用python指令碼完成反射測試。
程式碼就不公佈了,防止非法利用。直接輸出測試結果
輸出,可以實現
測試wireshark抓包
這裡不妨可以進行一個大概理論計算
比如單臺伺服器我們雖然只發送的測試指令只有二十個位元組資料,但卻可以返回1M資料。1M/20=5W(5萬倍放大率),這可謂四兩撥千斤。假設理想狀況下我們現在手裡有50W可用機器,那麼我們的DRDoS理論值數值將會達到約50W*1M=500GB。大家想想這個是多麼恐怖的頻寬和資料。現在目前國內能夠抵禦短時間發起這麼大的DDoS攻擊的,幾乎沒有。比如去年攻擊阿里雲超過14小時,峰值流量達到453.8G。而DRDos可以只需要一分鐘就能實現高達500G流量,這將是多麼可怕的事情,多大的災難。防護的話請參考(意雲網站安全防護系統)
總結體會
關於這項DRDoS技術經過幾天摸索研究也算已經瞭解清楚了,但是測試中發現有的網路環境裡面會被一些路由器糾正源地址,使得反射攻擊失敗。究其原因是因為其增加的uRPF機制,(Unicast Reverse Path Forwarding是一種單播反向路由查詢技術,用於防止基於源地址欺騙的網路攻擊行為。)重新修復了UDP源地址偽造。不過有些環境中沒有這種機制的,那麼我們就可以利用此方法實現攻擊。在這裡分享給大家,希望可以有人繼續深入分析和鑽研,其中涉及利用的思路和技巧也可學習學習。比如說利用其免費的網際網路儲存資源,將你的資料來源進行分散式儲存,當做你的分散式私密雲盤。
友情提醒:以上僅做技術研究,如有惡意利用,發起攻擊,將自負法律後果
參考學習
相關推薦
基於Memcached分散式系統DRDoS拒絕服務攻擊技術研究
基礎概念 友情提醒:以下僅做技術研究,如有惡意利用,發起攻擊,將自負法律後果本次反射式拒絕服務攻擊技術基於全球網際網路分散式的Memcached伺服器,需要儲備一定得安全攻防知識,網路協議知識和python程式碼程式設計技術。希望在學習本篇文章知識前自行學習相關
分散式拒絕服務攻擊DDoS
分散式拒絕服務(DDoS:Distributed Denial of Service)攻擊指藉助於客戶/伺服器技術,將多個計算機聯合起來作為攻擊平臺,對一個或多個目標發動DDoS攻擊,從而成倍地提高拒絕服務攻擊的威力。通常,攻擊者使用一個偷竊帳號將DDoS主控程式安裝在一個計算機上,在一個設
應用層拒絕服務攻擊
數據庫 coo bsp 源地址 http post 方法 fields 實現 exp DOS:Denial Of Service DDOS:Distributed Denial Of Service(利用僵屍網絡——由“肉雞”組成,發起 DoS 攻擊) 常見的 DDOS 攻
【安全牛學習筆記】SSL、TLS拒絕服務攻擊和補充概念
security+ 信息安全 SSL/TLS拒絕服務攻擊 thc-ssl-doc SSL協商加密對性能開銷增加,大量握手請求
HTTP緩慢拒絕服務攻擊
ont 設計 ret dir ups accept direct server 拒絕 tomcat慢速HTTP拒絕服務攻擊安全問題解決辦法 問題說明:HTTP協議的設計要求服務器在處理之前完全接收到請求。如果HTTP請求未完成,或者傳輸速率非常低,則服務器將保持其資源占用等
基於linux的系統程序及服務控制
圖形方式檢視程序 gnome-system-monitor 程序檢視命令 ps -A ---------所有程序 ps -a ---------在當前環境中執行的程序 不包含環境資訊 ps -u ----------顯示程序使用者資訊 ps a -----------在當前
針對SSL/TLS的拒絕服務攻擊以及使用ettercap進行DNS欺騙
ccf ping 4.2 com 導致 圖片 10.10 ip地址 c-s 一. thc-ssl-dos 1.簡介 (1).SSL 協商加密對性能開銷增加,大量握手請求會導致 DOS (2).利用 SSL secure Renegotiation 特性,在單一
web 滲透 --- SSL/TLS拒絕服務攻擊
SSL/TLS拒絕服務攻擊 物件:提供SSL安全連線的網站或服務 【佔本機流量不大】 thc-ssl-dos 原理:SSL協商加密對效能開銷增加,大量握手請求會導致拒絕服務。 利用SSL secure Renegotiation特性,在單一TCP連線中生成數千個SS
apache緩慢的http拒絕服務攻擊修改辦法
在httpd.conf中新增LoadModule reqtimeout_module modules/mod_reqtimeout.so 檢視是否存在mod_reqtimeout.so模組 [[email protected] ~]# rpm -ql httpd
教程篇(6.0) 10. 入侵防禦和拒絕服務攻擊 ❀ 飛塔 (Fortinet) 網路安全專家 NSE4
在這節課中,你將學習如何使用FortiGate來保護你的網路免受入侵和拒絕服務攻擊。 在本次課程中,你將探討以下主題: 入侵防禦系統 拒絕服務攻擊 Web應用防火牆 最佳實踐 故障排查 在完成本節之後,你應該能夠: 區分
拒絕服務攻擊(DoS, Denial of Service)
當一個伺服器處理多個客戶時,它決不能阻塞於只與單個客戶相關相關的某個函式呼叫,否則可能導致伺服器唄掛起,拒絕為其他客戶服務。這就是“拒絕服務(denial of service)型攻擊”。可能解決辦法:(1)使用非阻塞式I/O;(2)讓每個客戶由單獨的執行緒提供服務;(3)
分散式系統的訊息&服務模式簡單總結
在一個分散式系統中,有各種訊息的處理,有各種服務模式,有同步非同步,有高併發問題甚至應對高併發問
WEB安全性測試之 -認證與授權、Session與Cookie、DDOS拒絕服務攻擊
WEB安全性測試之 ---認證與授權、Session與Cookie、DDOS拒絕服務攻擊 來自視訊的筆記整理 1、認證與授權 1)認證:是否可以直接登入 2)授權:是否有許可權刪除等 3)避免未經授權的頁面可以直接訪問 2、Session與Coo
超大 Cookie 拒絕服務攻擊
有沒有想過,如果網站的 Cookie 特別多特別大,會發生什麼情況? 不多說,馬上來試驗一下: for (i = 0; i < 20; i++) document.cookie = i + '=' + 'X'.repeat(2000) 什麼,網站居然報錯了? 眾所周知,Cookie 是塞在請求
分散式系統架構---SOA服務體系架構
一、 概述: 把系統按照模組拆分成多個子系統---面向服務的體系結構(SOA,即將整個功能模組拆分成不同的服務單元)。 優點: 1、把模組拆分,使用介面通訊,降低模組之間的耦合度。 2、把專案拆分成若干個子專案,不同的團隊負責不同的子專案。 3、增加功能時只需要再增加一個
拒絕服務攻擊科普
在物理世界,對付犯罪行為的解決辦法主要有兩類,一類是防範,即增加犯罪行為的實施難度、減輕受害者的受損程度;一類是責任追究,這一方面可以在事發後追回損失,另一方面由於對犯罪行為的懲罰而對潛在的可能發生的犯罪行為構成威懾,從而減少犯罪的發生。 漏洞產生的原因
分散式系統監視zabbix講解一技術流ken
zabbix概述 Zabbix是什麼 Zabbix 是由Alexei Vladishev建立,目前由Zabbix SIA在持續開發和支援。 Zabbix 是一個企業級的分散式開源監控方案。 Zabbix是一款能夠監控各種網路引數以及伺服器健康性和完整性的軟體。Zabbix使用靈活的通知機制,允許使用者為幾
簡介二:操作系統和集群開源技術研究
pla 設計 成本 期貨 jit cin 虛擬化技術 特性 基礎 作者:王步宙、陳晨 2008年似乎是個有魔力的一年,在這一年裏大西洋兩岸的德國和紐約兩大證券交易所集團幾乎不約而同的啟動了交易系統開源化項目。對於開源項目的動因,有人提出成本論,有人提出是低延遲論,我們認為可
基於大資料分析的安全管理平臺技術研究及應用
http://www.venustech.com.cn/NewsInfo/531/25566.Html 【內容摘要】本文首先通過介紹大資料的起因,給出了大資料的定義和特徵描述,並簡要說明了當前大資料的研究概況。接下來,本文闡釋了大資料分析技術,對大資料在資訊保安領域尤其是安全管理平臺領域的應用做了深入分
基於Memcached的DRDos的研究與攻擊復現
【宣告】本文僅作學習研究之用,歡迎一起探討,請勿發動惡意攻擊,否則後果自負!核彈級DDoS攻擊肆掠全球進入3月,春天到了,萬物復甦,又到了動物交配的季節!咦!不對不對,我要說什麼來著。。O(∩_∩)O哈哈~皮這麼一下確實很好玩哦 (^▽^)) 下面咱們說說正事,自從進入三月份