浅谈几种区块链网络攻击以及防御方案之拒绝服务攻击
舊博文,搬到 csdn
原文:http://rebootcat.com/2020/04/14/network_attack_of_blockchain_ddos_attack/
寫在前面的話
自比特幣誕生到現在,比特幣(網絡)經歷過大大小小非常多次的攻擊,尤其在比特幣誕生之初的幾年,并且隨著比特幣價格的一路飆漲,黑客針對比特幣網絡的攻擊就一直沒有停止過。據估算,目前大約有 350 ~ 400 萬比特幣永久丟失,價值大約 240 ~ 280 億美元。當然其中不只有由于黑客的攻擊導致的丟失,畢竟比特幣最初的幾年很多人都沒有意識到比特幣的價值,很多的私鑰都遺失了。
本文就談一下目前幾種區塊鏈網絡攻擊,以及其防御方案。
本文盡量用簡單易懂的白話來描述,也僅代表我個人的看法,歡迎探討。
同系列:
- 淺談幾種區塊鏈網絡攻擊以及防御方案之51%攻擊
- 淺談幾種區塊鏈網絡攻擊以及防御方案之日蝕攻擊
- 淺談幾種區塊鏈網絡攻擊以及防御方案之女巫攻擊
- 淺談幾種區塊鏈網絡攻擊以及防御方案之拒絕服務攻擊
- 淺談幾種區塊鏈網絡攻擊以及防御方案之其它網絡攻擊
拒絕服務攻擊(Denial of Service Attack)
分布式拒絕服務攻擊(Distributed Denial of Service Attack)
概念
信息安全的三要素——“保密性”、“完整性”和“可用性”中,拒絕服務攻擊,針對的目標正是“可用性”。該攻擊方式利用目標系統網絡服務功能缺陷或者直接消耗其系統資源,使得該目標系統無法提供正常的服務。
拒絕服務攻擊(DoS) 問題一直得不到合理的解決,目前還是世界性難題,究其原因是因為這是由于網絡協議本身的安全缺陷造成的,從而拒絕服務攻擊也成為了攻擊者的終極手法。攻擊者進行拒絕服務攻擊,實際上讓服務器實現兩種效果:一是迫使服務器的緩沖區滿,不接收新的請求;二是使用IP欺騙,迫使服務器把合法用戶的連接復位,影響合法用戶的連接。
而分布式拒絕服務攻擊 (DDoS) 是指攻擊者采用分布式攻擊手法施行 DoS 攻擊,通常是控制了多臺機器向目標主機或者路由器發起 DoS 攻擊。
針對區塊鏈來說,攻擊者通過 DDoS 攻擊試圖減慢網絡速度,或者迫使網絡停止運作。也可用于針對礦池,使礦池脫機,或者針對特定的目標主機,使其從網絡離線。
危害
DDoS 攻擊造成的危害自不必說,中心化場景下,通常針對網站或者主機施行攻擊,造成網站無法訪問,影響業務運作,造成巨大經濟損失;
在區塊鏈場景下,攻擊者目標通常是為了一定的利益才執行這樣的攻擊,導致網絡速度變慢,或者影響礦工挖礦,從而方便攻擊者對目標下手。
DDoS 并非是區塊鏈特有的攻擊,在中心化場景下的攻擊其實相對會更多。
攻擊形式
帶寬攻擊
帶寬攻擊很好理解,通過攻擊使受害者節點的網絡帶寬耗盡,從而造成拒絕服務的效果。
區塊鏈系統的底層構建于 P2P 網絡,其中通信上廣播占據了大部分通信,一次廣播通常就是大于 N 倍的收包,隨著網絡規模的擴大,節點數量的增多,通信的壓力也會很大。
攻擊者通過瘋狂向節點通信端口發包,或者攻擊者利用軟件邏輯觸發系統自動的大規模通信(比如觸發同步),耗盡節點的帶寬,最終從網絡中離線。
而一旦離線重啟之后,往往又會伴隨著其他的攻擊,比如 日蝕攻擊,詳情可以參考之前的博文: 淺談幾種區塊鏈網絡攻擊以及防御方案之日蝕攻擊
CC 攻擊
DDoS 攻擊是針對 IP 的攻擊,而 CC 攻擊的是服務器資源。
CC攻擊全稱Challenge Collapsar,中文意思是挑戰黑洞,因為以前的抵抗DDoS攻擊的安全設備叫黑洞,顧名思義挑戰黑洞就是說黑洞拿這種攻擊沒辦法,新一代的抗DDoS設備已經改名為ADS(Anti-DDoS System),基本上已經可以完美的抵御CC攻擊了。CC攻擊的原理是通過代理服務器或者大量肉雞模擬多個用戶訪問目標網站的動態頁面,制造大量的后臺數據庫查詢動作,消耗目標CPU資源,造成拒絕服務。CC不像DDoS可以用硬件防火墻來過濾攻擊,CC攻擊本身的請求就是正常的請求。我們都知道網站的頁面有靜態和動態之分,動態網頁是需要與后臺數據庫進行交互的,比如一些論壇用戶登錄的時候需要去數據庫查詢你的等級、權限等等,當你留言的時候又需要查詢權限、同步數據等等,這就消耗很多CPU資源,造成靜態網頁能打開,但是需要和數據庫交互的動態網頁打開慢或者無法打開的現象。這種攻擊方式相對于前兩種實現要相對復雜一些,但是防御起來要簡單的多,提供服務的企業只要盡量少用動態網頁并且讓一些操作提供驗證碼就能抵御一般的CC攻擊。
CC攻擊的種類有三種,直接攻擊,代理攻擊,僵尸網絡攻擊,直接攻擊主要針對有重要缺陷的 WEB 應用程序,一般說來是程序寫的有問題的時候才會出現這種情況,比較少見。僵尸網絡攻擊有點類似于 DDOS 攻擊了,從 WEB 應用程序層面上已經無法防御,所以代理攻擊是CC 攻擊者一般會操作一批代理服務器,比方說 100 個代理,然后每個代理同時發出 10 個請求,這樣 WEB 服務器同時收到 1000 個并發請求的,并且在發出請求后,立刻斷掉與代理的連接,避免代理返回的數據將本身的帶寬堵死,而不能發動再次請求,這時 WEB 服務器會將響應這些請求的進程進行隊列,數據庫服務器也同樣如此,這樣一來,正常請求將會被排在很后被處理,就象本來你去食堂吃飯時,一般只有不到十個人在排隊,今天前面卻插了一千個人,那么輪到你的機會就很小很小了,這時就出現頁面打開極其緩慢或者白屏。
SYN 洪泛攻擊
SYN Flooding 攻擊是指攻擊者發送了大量的 TCP/SYN 包,并且以一個假的 IP 作為發送地址到達目標主機,由于 TCP 在建立連接的時候有 3 次握手,也就是建立連接需要發送 3 個包,當目標主機收到這個 SYN 建連包之后,會回復一個 SYN-ACK 包。
但是由于攻擊者惡意偽造了來源 IP,那么攻擊者是收不到這個 ACK 包的,但是會導致目標主機打開了一個半開放的連接,如果攻擊者發動了頻繁的 SYN 洪泛攻擊,那么會造成目標主機 TCP 資源消耗枯竭,導致無法與正常客戶端建立連接,以達到拒絕服務的效果。
Land 攻擊
Land 攻擊是 SYN 攻擊的變種,攻擊者此時偽造的來源 IP 就是目標主機的 IP,也就是說這個 TCP SYN 包的來源 IP 和 目的 IP 相同,都是目標主機,那么就會導致目標主機向自己發送大量的 SYN-ACK 包,從而消耗 TCP 資源,阻止正常客戶端的連接建立。
攻擊案例
GitHub 遭受史上最大規模 DDoS 攻擊
GitHub 想必大家都不陌生,全球最大的同性交友網站。在美國東部時間 2 月 28 日下午 17:28 分,幾乎一瞬間收到了 1.35 Tbps 的流量訪問。這是互聯網有史以來規模最大、威力最大的分布式拒絕服務攻擊 (DDos)。
不到十分鐘,GitHub 就不得不向 CDN 服務商 Akamai 請求協助。最終 Akamai 接管了GitHub 的所有信息流,并通過其清理中心發送數據以清除和阻止惡意數據包。8 分鐘后,攻擊者發現沒什么效果,選擇了撤退,停止了攻擊。
詳情可以查看 GitHub 的官方聲明: February 28th DDoS Incident Report
此次的 DDoS 攻擊是屬于中心化世界里面的一次較為著名的攻擊,而且類似于這樣的攻擊每天都在發生。
大家可以看一下這個網站,來自卡巴斯基實驗室的數據(多觀看幾分鐘能看到 3D 攻擊畫面,還是挺震撼的): 網絡威脅實時地圖
2016 年以太坊 DDoS 攻擊
2016 年以太坊發生過一次嚴重的 DDoS 攻擊,此次攻擊也被稱為 “EXTCODESIZE” 攻擊。
攻擊者讓礦工和節點需要花費很長的時間 (20 ~ 60 秒) 來處理一些區塊。造成這次攻擊的原因是一個 EXTCODESIZE 的操作碼,它具有相當低的 gas 價格,需要節點從磁盤讀取狀態信息。攻擊交易調用此操作碼的頻率大約是 50000 次每區塊。這樣的后果就是,網絡大大放緩了,但沒有共識故障或是內存超載發生。
因為此次攻擊事件,很多媒體都宣告了以太坊的末日。可見在區塊鏈世界里,DDoS 攻擊的后果是比較嚴重的。
以太坊 Fomo3D,黑客拿走 2200 萬
Fomo3D 是以太坊上一個比較火爆的 Dapp,是一個類似于資金盤的游戲。此次攻擊過程還是挺有趣的,各位可以往下看。
首先,介紹一下 Fomo3D 這個游戲的規則:
規則1: 每個人參與游戲需要購買一個 Key
規則2: 在一輪游戲中,誰是最后一個購買 Key 的人,則可以拿走獎池中的大獎
規則3: 只要有人購買一個 Key, 游戲倒計時就會增加 30 秒
規則4: 游戲啟動從 24 小時倒計時
規則里面最吸引人的一條是,只要你是最后一個購買的人,你就是最終的大獎得主,是不是很有 Du博 的感覺?
所以看到規則后,你會怎么做?
正常人一般都是在倒數的最后幾分鐘或者幾秒鐘去購買 Key,這樣的話自己也許是倒計時結束后最后一個購買的人。但是這個想法是大多數人的想法,我們畢竟只是普通玩家。
那么稍微高級一點的玩家呢,比如程序員,可能會寫個腳本,自動化的方式來購買 Key,速度是不是比手工快多了。
那么來看看黑客玩家是怎么做的?
我們都知道,購買 Key 之后,只要后面沒有人再購買,你就是大獎得主,基于本文的探討,如果你以前沒有聽說個這個事件的話,那么此刻你是不是已經有了一些想法?對的,沒錯,就是利用 DDoS 攻擊,在你購買成功后,馬上施行攻擊,拖慢整個網絡,造成礦工無法打包或者打包很慢,那么勢必會影響到其他交易的正常進行。如果你比較幸運,正好導致其他正在購買 Key 的人的交易失敗了,那么你就是大獎得主。
但是說起來容易,實際做起來還是不太容易操作的。因為你要能確保你購買成功后的 DDos 攻擊能讓后續的交易都失敗,不然弄巧成拙,幫助了某個漏網之魚,別人恰好因為你的攻擊成為了最后一個購買的人。
了解以太坊的人應該聽說過 gas 機制,可以理解為一個交易的手續費,而礦工通常會優先打包 gas 費用較高的交易,那么這位黑客利用自己的智能合約創建了大量的交易,并且具有高額的 gas 費用,幾乎壟斷了以太坊網絡的所有算力,這樣就造成了以太坊擁堵了接近 3 分鐘,進而使其他的玩家無法打包購買 Key 的交易,從而成為大獎得主。
該黑客此前還嘗試過多次這樣的攻擊,直至最后一次才成功。
是不是還是很有趣的?區塊鏈公鏈本身具有比較致命的缺陷就是 tps 很低,單位時間處理的交易有限。后續的交易只能在排隊,尤其是在網絡被攻擊拖慢的情況下,交易成功的時間會大大拉長。
DDoS 防御方案
高防服務器
高防服務器就是指能獨立硬防御 50Gbps 以上的服務器,本身就能抑制一定的 DDoS 攻擊。這個沒什么好說的,買就是了,只是比較貴。
CDN 加速
CDN 本身就就有大帶寬,多節點的優勢,并且隱藏了真實的網站 IP。通過把流量分配到多地多節點降低攻擊負載,防止源站崩潰。
配置防火墻
防火墻能防御 DDoS 和其他的一些攻擊。防火墻有軟件防火墻和硬件防火墻之分。必要可以兩者結合。
攻擊檢測和溯源
通過分析攻擊的方法和手段,追蹤攻擊的路由,檢測出惡意的 IP 和路由,做好相應的屏蔽,保護主機。
黑名單機制
通過建立黑名單機制,限制黑名單的訪問。
寫在最后
DDoS 攻擊每天都在發生,對于區塊鏈系統來說,由于接入的節點性能參差不齊以及無許可的特征,想要利用中心化的防御機制去做好 DDoS 防御可能還是有難度。況且由于區塊鏈本身的弊端,性能瓶頸,更容易被攻擊者利用。
附
BlockChain中DDos攻擊的深入剖析
DDOS攻擊瘋狂危害大 談談如何防御攻擊
Blog:
-
rebootcat.com
-
email: linuxcode2niki@gmail.com
2020-04-14 于杭州
By 史矛革
總結
以上是生活随笔為你收集整理的浅谈几种区块链网络攻击以及防御方案之拒绝服务攻击的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 浅谈几种区块链网络攻击以及防御方案之女巫
- 下一篇: 浅谈几种区块链网络攻击以及防御方案之其它