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