分布式拒絕服務攻擊了解一下?區塊鏈
就曲速未來安全區的文章“KotET事件之拒絕服務漏洞”分析,何為分布式拒絕服務攻擊。
隨著經濟技術的不斷發展,計算機安全技術越來越受到沖擊,拒絕服務攻擊已成為網絡機安全最大的威脅之一,由于它的破壞性極大,因此成為網絡黑客經常采用的攻擊手段。該文主要分析了拒絕服務攻擊的基本原理以及怎樣能夠更好的加以防范。
就曲速未來安全區的“KotET事件之拒絕服務漏洞”分析,可能就有人不太理解什么是分布式拒絕服務攻擊。
想要知道分布式拒絕服務攻擊的原理,先要了解一下兩個關鍵的基礎原理
1.TCP餓死:
UDP這種傳輸方式不會控制自己在通信通道里的流量,可理解為不講道理的人。他們來到了一個熱鬧地區的KFC中,但是他們不買東西只排隊將所有食物的價格都問一遍,占滿所有的座位和過道。而常規的TCP服務通過自己的彈窗機制來控制流量,好比講道理的人,座位被占滿了,TCP自然會離開KFC導致正常的服務不能進行。最終的結果就是UDP將整個通道打滿堵死。
2.TCP三次握手和四次斷開連接,如圖所示:
Tcp頭格式
seq:序列號;ack:確認序列號
雙方均需要確認才可斷開連接
關于雙方在整個過程中每個時間段的狀態名稱:
針對智能合約的DoS攻擊屬于利用協議漏洞進行的手段,具體的攻擊方法有三種。關于第一種的“異常障礙”攻擊曲速未來安全區用KotET事件做了很詳細的事例說明,現在我們直接講第二種的攻擊:調用棧攻擊。
調用棧攻擊:
在EIP150使用之前,以太坊虛擬機的調用棧深度為1024。這也就是說,有人可以在自動使用第1024個調用之前,調用某個合約1023次。攻擊者最終會達到第1023次合約,導致接下來的調用失敗,并且讓他們自身來盜竊合約的資金,并且掌控合約。
攻擊示例
和KotET這類旁氏游戲類似,用戶會發出以太幣給合約,來加入游戲。每輪游戲的贏家可以獲得獎池的金額。游戲的規則如下:
你必須要發送至少1ETH到合約,然后你會被支付10%的利息。
如果“政府”(合約)在12小時內沒有收到新的資金,最后的人獲得所有的獎池,所有人都會失去資金。
發送到合約的以太幣分配如下:5%給獎池,5%給合約擁有者,90%根據支付順序,用來支付給發送資金的人。
當獎池滿了(1萬以太幣),95%的資金會發送給支付者。
紅利:支付者可以使用推薦鏈接來邀請別人。如果有朋友對這個合約進行支付,那么邀請人可以獲得5%,5%會給到合約擁有者,5%會進入獎池,剩下的85%會用來支付利息。
合約的寫入,需要保證用戶和他們的資金被記錄在2個數組,ddress[] public credAddr 和int[] public credAmt。這兩個數組會在游戲最后重置。GovernMental已經非常成功了,因為數組變得非常大,需要清除他們的燃料費已經超過每個轉賬能夠做到的極限。最終的結局是獎池的永久性凍結,總共有大約1100個以太坊。最后,在2個月后,資金最后還是解凍了,并且發給了調用者。
GovernMental雖然不是被惡意的用戶攻擊,但是它也是很好的例子,這類災難會由調用棧攻擊產生。這也表面,在進行大型數據庫工作的時候,需要格外的小心。
代碼分析
下面是GovernMental智能合約的完整代碼,其中還包含簡短的變量。我已經在它的整體中包含了真正的合約,因為通過一行行地檢查合約可以學到很多,包含這個合約是如何構建的。有人可以看到function lendGovernmentMoney(),代表了發出資金者的地址,并且需要以太幣的數量被重置或者添加到現有數據。需要注意,在同個函數中,資金是如何在合約擁有者以及12個小時結束時的最后發出資金者之間分配的,credAddr[credAddr.length1].send(profitFromCrash); 以及corruptElite.send(this.balance)。
我們假設攻擊者寫了如下的合約,進行惡意攻擊contract Government {}。
攻擊者調用了contract attackGov{} 函數,來進行調用直到棧的大小為1023。當棧達到1022,lendGovernmentMoney()函數就會在第1023個棧上執行。因為第1024個調用已經失敗了,并且 send() 函數不會檢查返回的代碼,合約的credAddr[credAddr.length?—?1].send(profitFromCrash)代碼也會失效。合約之后就會重置,而且下一輪已經可以開始。因為支付失敗了,合約現在就會從最后一輪中獲得獎池,在下輪結束后,合約擁有者就會獲得全部的資金,corruptElite.send(this.balance)。
1.TMT觀察網遵循行業規范,任何轉載的稿件都會明確標注作者和來源;
2.TMT觀察網的原創文章,請轉載時務必注明文章作者和"來源:TMT觀察網",不尊重原創的行為TMT觀察網或將追究責任;
3.作者投稿可能會經TMT觀察網編輯修改或補充。