追蹤幣安API遭攻擊事件始末區塊鏈
黑客攻擊幣安API完全調查
事件回顧:
7月4日凌晨五點鐘左右,幣安交易所出現超大規模轉賬提現。在兩小時內,交易的比特幣數量超過7000枚,總價值接近5000萬美元。與此同時,在7月4日上午8點48分,幣安發布臨時維護公告,暫時停止撤單、充值、提現等交易操作。
幣安對此回復是將會刪除所有已存在的API,請所有用戶重新創建API
隨后不久,幣安在官方微博宣布關于SYS交易異常的處理方案。方案稱此次事件為部分API用戶的釣魚事件,用戶的資產完全安全。聲稱該事件是由不正常的 API 交易活動造成的
幣安所謂的不正常的 API 交易活動是什么?
要理解為什么 API 攻擊常常會帶來加密貨幣的價格被拉升到匪夷所思的高度,我們首先需要了解幣安的 API 是如何工作的。
對于門外漢來說,幣安的 API 允許計算機以編程方式與交易所進行交互,就好像是用戶自己在操作一樣。想要啟用 API 訪問,用戶首先要生成一組 API 密鑰,這些秘鑰是為用戶賬戶提供交互權限的憑證。
在幣安的系統中,有三個不同級別的 API 權限:
只讀權限:獲取用戶有關持倉、交易歷史和市場活動的數據。
交易權限:可替用戶執行交易
提款權限:可從交易所中提款
在默認情況下,只讀權限與交易權限是默認啟用的,然而提款權限卻不是默認啟用的。因為提款權限涉及的風險更高,幣安強制用戶為其預先設置 IP 白名單和雙重認證。
因此,即便攻擊者竊取了用戶名、密碼或 API 密鑰,他們往往不能獲得提款權限。在這種限制條件下,黑客必須想法設法將盜取的資金轉移到有提取權限的賬戶中。
黑客拿到 API 后通常的做法
在攻擊之前,攻擊者會囤積大量的某一種加密貨幣,這種被選為目標的加密貨幣通常交易量很小,訂單也很少。
在這之后,攻擊者使用被盜賬號通過 API 提交大量的購買訂單,交易價格通常高得離譜 (一般來說是正常價格的 1 萬倍)。
攻擊者通過出售他們之前低價囤積的此種加密貨幣賺取了巨額利潤。
最后一步,攻擊者把他們的戰利品巨額資產從幣安中提走。一旦這些資金從交易所轉移到了區塊鏈中,幾乎任何人都不可能逆轉交易。
API 數據告訴我們的那些事
與其在黑暗中抓瞎,不如讓我們用幣安的 API 來提取 SYS/BTC 交易的歷史數據,一探究竟。
價格波動與交易量
在7月3日之前SYS的價格并沒有什么特別之處,然而7月3日當天價格卻十分可疑地飆升至96比特幣。
與此同時,SYS的單筆交易量和總交易量都出現了大幅上升。
歷史訂單數據
當我們開始從/api/v1/aggTrades中提取數據時,事情變得有趣起來。
從此端點獲取的完成交易的歷史記錄顯示,同一時間,相同的訂單以相同的價格發起交易,使得交易數量迅速攀升。
請注意,當時每個人都在談論的焦點都是11個SYS居然以每個價值96個比特幣的價格成交(約700萬美元),但是他們更應關注的是另一個大單,有13152個SYS以每個價值1.1比特幣的價格成交(價值約為9700萬美元)。
通過在一個氣泡圖上繪制所有的交易訂單,我們對于這種交易規模可以有更直觀的認識。圖中每一個圓圈都代表一個訂單,每個圓的大小表示以美元計算的總交易量。
總量為13,152個SYS的交易訂單非常可疑
因為我們掌握了所有參與交易的ID,因此可以用它來獲取所有單個交易訂單。
/api/v1/historicalTrades
我把所有交易訂單的歷史數據都放在了google數據表中我們發現這13152個SYS交易總量是由132個獨立發起的交易訂單組成的,每一個訂單都以1.1比特幣的單價購買了99個SYS,最后一次的購買訂單為84個SYS,最終總訂單交易量達到了13512個SYS,整個過程十分整齊劃一。
我們已經聯系了幣安,并確認了上述每一個單筆交易都來自同一個人。這就意味著用于執行這些交易訂單的帳戶數量必須在1到133之間。
與VIA幣價格暴漲進行數據對比
讓我們將此與VIA價格暴漲事件進行比較,我們都知道這是一起由黑客釣魚API密鑰發起的攻擊。
3月6日之前,VIA的數據還展現出正常的交易波動。就在3月7日,價格突然暴漲。
與SYS一樣,VIA的訂單數量和交易量也大幅上升。
歷史訂單數據
雖然VIA的交易活動圖和燭臺圖看上去與SYS十分相似,但他們的歷史成交數據卻大相徑庭。
我們看到了在SYS/BTC出現異常波動當天有不少大額訂單,而VIA/BTC出現價格波動的時候則是存在大量賬戶提交了小額訂單。在我看來,VIA這一次的價格波動是更為典型的API釣魚攻擊。
這么來看SYS的價格波動就相當古怪了。
再來看看這些在圖中排成一條直線的諸多訂單。
如果我們把所有的SYS交易拆分成單筆交易,并比較它和VIA的交易量分布,就會發現很明顯SYS的交易量要大得多。
看到這兩組截然不同的數據后,我們真的能說這兩起事件都是API秘鑰釣魚攻擊嗎?
清除謠言
有大約7000比特幣正在從幣安的熱錢包中被提走
許多人都以這個為證據到處張揚,認為這些資金是非自愿從幣安的熱錢包中撤走的。
到目前為止,幣安還沒有對這些指控做出回應,這種沉默讓謠言的野火越燒越旺。
糾正一個常見的誤區
我以為幣安的最大提款額度是 50 比特幣,那么 2000 比特幣怎么能從熱錢包里轉出呢?
因為有時作為輸出的金額超過了用戶想要支付的金額。在這種情況下,比特幣客戶端會創建一個新的比特幣地址,并把差額發送回這個地址,這就是比特幣的找零機制。
比如你想從商店買一塊錢的棒棒糖,你打開你的錢包,發現里面只有一張 20 元面值的人民幣。你能支付的最小金額是多少呢?當然不是 1 塊錢,你不能把這張 20 元錢的紙幣撕下 20 分之 1 再交給營業員。你必須把這張 20 元面值的人民幣全部交給收銀員,然后因為你只需要支付 1 元錢,收銀員會找給你 19 元。
幣安很聰明地對一組提款進行了批量處理,并在一次交易中將它們全部發送出去。因此,將大量的找零發送回幣安的找零地址這種事情并不少見。
我使用 Blockexplorer API 提取了從 4 月 30 日到 7 月 6 日交易輸出列表,并以輸出量進行降序排序。
針對 SYS 的 51% 攻擊
我不想詳細討論這個話題,因為 SYS 開發團隊已經發布了一份完整的情況報告。長話短說,他們聲稱這一起事件是一個奇怪的巧合,SYS 并沒有被黑。
在 SYS 3.0.6 的更新中,許多礦工將自己需要的交易費用設定在高于違約率的水平之上。因此,許多收費低于這一費率的交易并不會被人知曉。
由于活躍的礦工較少,通常需要一分鐘就能結清的交易往往會在內存池中等待數小時。當這種情況發生時,許多交易就會被集中到一個單獨的區塊中。這導致了巨大的批量輸出,有些輸出甚至超過 10 億 SYS,同時還存在相當數量的未確認交易累積在一起。
在這些未經確認的交易中,SYS 團隊監測到了一些企圖從 SYS 價值最高的賬戶中提款的交易,這些價值最高的賬戶被懷疑是幣安交易所的熱錢包。
一開始,SYS 團隊認為這是一種可疑的行為并通知了交易所。在那以后,他們從交易所得到確認這種交易并不是黑客攻擊的產物。
1.TMT觀察網遵循行業規范,任何轉載的稿件都會明確標注作者和來源;
2.TMT觀察網的原創文章,請轉載時務必注明文章作者和"來源:TMT觀察網",不尊重原創的行為TMT觀察網或將追究責任;
3.作者投稿可能會經TMT觀察網編輯修改或補充。