全面梳理區塊鏈詐騙攻擊案例及防範措施

語言: CN / TW / HK

SeeDAO IR導言:據安全資料顯示,今年以來有記錄的因詐騙和安全漏洞帶來的加密領域損失已近30億美元。每一個區塊鏈行業的參與者都無異於身處“大西部”,無時不刻受到隱私、財產損失的風險。

雖然業內已經有部分對區塊鏈詐騙、安全漏洞進行分析的工作,但大多隻是針對某些案例,或者對背後機制的討論不夠深入。因此,我們很高興為大家帶來這篇由兩位網路安全領域的專家所撰寫的萬字長文,為大家全面且深入的分析當前幾乎所有安全隱患並提供應對策略。

0.前言

自網路誕生以來,攻防領域就一直是研究的熱點;區塊鏈誕生之後由於其巨大的財富效應與使用者對安全的認識不足,吸引了無數的黑客挖空心思進行攻擊。在近幾年Defi與 NFT 高速發展的環境下,利用區塊鏈網路實施的釣魚詐騙攻擊更是越來越多,各類攻擊場景及攻擊方法層出不窮。

本文前半部分闡述了區塊鏈安全 基礎知識 ,重點闡述了使用者在使用區塊鏈相關應用時應重點關注的安全要素。後半部分整理常見的利用區塊鏈欺騙使用者資產的攻擊案例,通過對黑客攻擊手法進行分析,引出針對特定攻擊手段的防護方案。

1.區塊鏈安全基礎

區塊鏈安全基礎思維導圖

根據柯克霍夫原則,即使已掌握了密碼系統的運作步驟,但是在金鑰未被洩露的前提下,密碼系統仍然是安全的。在區塊鏈環境下,保護 錢包 私鑰,是保護鏈上數字資產的重要措施和前提。

1.1 私鑰及助記詞安全

區塊鏈錢包軟體所管理的私鑰通常是256bit長的隨機字串,為便於展示區塊鏈錢包工具會將256bit資料轉換為32位元組長的16進位制編碼。“0x40e667191f4497cc3ab018ceb524a32c2f4875fbfb0103322767f46f5b319244”即為區塊鏈錢包軟體生成的錢包私鑰。通過將私鑰匯入區塊鏈錢包,使用者即可掌握錢包內對應的數字資產。利用橢圓曲線密碼框架, 開發者 可以利用私鑰資料便捷的計算出與之對應的公鑰資訊,通過對公鑰進行keccak256運算[7]並取運算結果的最後20位元組,即獲得區塊鏈錢包地址。使用以太坊ethers工具庫生成公私鑰,並根據公鑰資訊計算錢包地址的程式碼執行結果如下圖所示:

公私鑰生成錢包地址方法

考慮到雜湊運算具有抗強碰撞和弱碰撞特性,因此在不掌握錢包私鑰的前提下攻擊者難以通過隨機碰撞的方式構造出兩個完全一致的區塊鏈錢包地址。為便於使用者記憶及儲存,在BIP39提升改進計劃中引入了使用助記詞表示區塊鏈錢包私鑰的方法。為便於理解,讀者可以認為一組由12、15、18、21或24個單片語成的助記詞列表即對應一組區塊鏈錢包私鑰。 在助記詞處於保密狀態時,使用者的錢包私鑰及數字資產是安全的。

在建立區塊鏈錢包時,助記詞及私鑰資料是異常敏感的,在進行敏感操作前使用者檢查周邊環境是否有可疑人物、高清攝像頭等可能產生窺屏事件的不安全因素。使用者通常需要使用紙筆或助記詞鋼板記錄錢包助記詞並妥善儲存(如鎖入保險箱)。在使用區塊鏈網路時,使用者應當做到不向任何人透露與助記詞及私鑰相關的任何資訊,切實保障使用者數字資產的安全性。

1.2 智慧合約 安全

智慧合約的出現使以太坊網路相較比特幣網路具備了更好的延展性,開發者可通過以太坊提供的SDK開發工具編寫智慧合約程式碼便捷的開發DAPP。在以太坊中,智慧合約是一種部署後則程式碼邏輯無法被篡改的計算機程式。待智慧合約部署後,區塊鏈使用者即可以按照智慧合約對應的程式碼邏輯與合約進行互動。

使用者在與智慧合約互動前,應檢查:1)智慧合約程式碼是否已通過區塊鏈瀏覽器完成了開源操作;2)對智慧合約程式碼關鍵邏輯(例如要呼叫的智慧合約方法)進行審計,待確保程式碼不存在惡意使用或轉移使用者數字資產的敏感行為後,再呼叫智慧合約方法。

呼叫經過合約開源認證或已通過知名智慧合約審計公司安全性審計的智慧合約方法,能夠在一定程度上保障使用者持有數字資產的安全性。

1.3 區塊鏈錢包安全

區塊鏈錢包軟體為其使用者提供了私鑰管理,錢包賬戶管理,遠端過程呼叫(RPC)節點管理、交易簽名、交易管理、與智慧合約互動及硬體錢包連線等功能。區塊鏈錢包軟體存在的重要作用就是為使用者提供了一個介面友好的私鑰容器、金鑰管理系統及交易簽名代理工具,確保使用者能夠在不具備管理私鑰及區塊鏈交易廣播工具能力的基礎上,能夠便捷的與區塊鏈網路進行互動。

從錢包是否與網際網路存在直接連線進行分類,區塊鏈錢包劃分為1)冷錢包;2)熱錢包。

從錢包執行平臺進行分類,錢包可以劃分為1)PC主機錢包;2)瀏覽器外掛錢包;3)移動手機端錢包;4)硬體錢包;5)網頁錢包等。

優先選擇從官方渠道分發的區塊鏈錢包軟體。以瀏覽器外掛錢包為例,使用者可以從官方網站,瀏覽器應用商店,外掛錢包官方Github倉庫等渠道下載並安裝瀏覽器外掛錢包。在日常使用過程中,需要定期更新區塊鏈錢包、底層作業系統、瀏覽器並保持其版本總是處於最新狀態,以此來保護使用者持有的數字資產安全。

在使用區塊鏈錢包軟體時, 使用者應設定強解鎖口令以避免遭受口令爆破攻擊。 在離開電腦前,應主動鎖定螢幕和錢包,以避免遭遇因電腦錢包處於未鎖定狀態導致數字資產被濫用。Metamask錢包提供的自動鎖定定時功能如下所示。

5分鐘後錢包自動鎖定

使用者應當優先選擇官方渠道購買的硬體錢包。待收到錢包後,需要訪問硬體錢包官方網站對錢包完整性及韌體版本進行驗證,以避免遭受供應鏈攻擊。針對硬體錢包實施的攻擊層出不窮:在使用硬體錢包簽名交易時,使用者需檢視待簽名交易的完整內容,並對交易合法性進行認證,避免進行盲簽名,以避免遭受非法交易簽名攻擊進而丟失數字資產。

使用者在收到硬體錢包並建立區塊鏈賬戶時, 應當多次執行建立錢包生成助記詞功能。 通過記錄硬體錢包生成的助記詞與之及對應取得區塊鏈錢包地址,比對不同建立錢包操作所生成的助記詞差異,確保硬體錢包生成私鑰所使用的隨機數種子足夠安全,建立錢包操作所生成的私鑰足夠隨機。

盲簽名 又名 Blind Signing 起源於一個問題: 如果給我們提供了一份內容完全密封的合同,只留下簽名頁可見,你會願意簽署這份合同嗎?我的答案是否認的:不會簽署這份合同,避免簽署對自己不利的合同內容。

在區塊鏈環境中,應用硬體錢包與智慧合約進行互動與 Blind Signing 很像,因為簽署智慧合約互動交易時,使用者無法通過硬體錢包獲取智慧合約的底層行為邏輯。Ledger的螢幕是非常小的,無法向用戶與智慧合約互動交易的全貌。使用者若 enable Blind Signing 時,就代表 其已經接受盡管 Ledger 無法向用戶展示智慧合約全貌的前提下,任然利用 Ledger 批准與智慧合約進行互動的交易:此時,使用者已經同意信任其傳送的交易,而不是選擇對交易合法性及行為進行校驗。

更多關於 Blind Signing 的資料可參考如下連結:

1.4 可信RPC節點

以太坊中知名的RPC節點服務主要包括 Infura 、Alchemy、Moralis等,BSC鏈的RPC節點服務商主要由BSC鏈官方提供。

近年來受到關注的新 公鏈 解決方案如 PolygonOptimismAvalancheFantom 的RPC節點服務主要由Ankr提供,區塊鏈使用者在使用特定公鏈時,需要通過在錢包內新增RPC節點地址連結的方式與對應的區塊鏈RPC節點建立連線,以便通過RPC遠端呼叫的方式實現與區塊鏈的通訊及互動。 RPC節點的作用是重要的,如果沒有RPC節點,使用者個人將難以接入區塊鏈網路。

下圖給出了 Conflux eSpace 區塊鏈網路對外公開的 RPC 節點資訊, 通過錢包連線RPC節點,在使用者發起轉賬和智慧合約互動時,由RPC代理將交易打包傳送至區塊鏈網路,最終使交易以區塊形式進上鍊。

使用者應當選擇安全性經過驗證的RPC節點服務商,以保障其錢包資料來源的可靠性及與區塊鏈網路互動的穩定性。惡意的RPC節點提供商可能會惡意顯示不正確的區塊鏈狀態並記錄使用者的鏈上活動資料,嚴重危害使用者資料安全。

1.5 DM及郵件安全

部分攻擊者會通過使用社交網路私信或傳送電子郵件等方式向目標使用者發起攻擊,通過精心設計釣魚場景的方式使受害者確信:只要按照攻擊者指示進行操作(訪問特定站點、與特定智慧合約進行互動或將助記詞匯入至區塊鏈錢包),即可獲得獎勵: 當受害者選擇相信攻擊者時,其已進入了由攻擊者精心構造的釣魚詐騙陷阱。 由於區塊鏈交易具有不可篡改和不可逆的特性:大量區塊鏈釣魚攻擊受害者在發現資產因為自身疏忽而被轉移至攻擊者持有的區塊鏈賬戶後,丟失的資產早已無法挽回。

下圖給出了一封以盜取區塊鏈數字資產為目標的釣魚郵件:使用者需要在特定截止日期(DDL)前在平臺處登記區塊鏈錢包,不然就凍結(威脅)賬戶。在收到這類電子郵件時,不點選郵件或私信中包含的任何超連結資訊或按鈕,待與官方核實確認郵件內容合法性後,再對郵件進行處理。

釣魚郵件

設定防釣魚碼能夠在一定程度解決釣魚郵件的問題,下圖給出了premint平臺提供的防釣魚碼功能:

1.6 開發環境安全

開發者在開發DAPP應用時所使用的環境即為開發環境,保護開發環境安全,是保護應用開發者及DAPP應用使用者資產安全的重要前提。DAPP應用是基於區塊鏈網路互動框架開發的(如ethers,web3.js等),為了方便使用者使用DAPP,開發者通常需使用基於JavaScript指令碼開發的前端框架react或vue構建DAPP應用前端,便於使用者直接利用前端UI直接與智慧合約進行互動。前端開發框架有助於DAPP開發團隊便捷的開發支撐DAPP應用執行和使用的前端系統。

選取經過市場驗證的SDK能夠在一定程度上確保資產安全。

1.7 搜尋引擎安全

完全相信搜尋引擎結果,是釣魚攻擊成功實施的原因之一。

搜尋引擎,是一種按照特定策略、運用特定計算機程式從網際網路上採集資訊,在對資訊進行整理和歸納後,對外向使用者所提供的一種檢索及結果展示系統,是幫助使用者查詢特定資料及資訊的有力支撐工具。

在區塊鏈環境中,使用者需訪問DAPP官方網站時,通常也會將搜尋引擎的檢索結果作為參考之一,這給了攻擊者可乘之機。攻擊者可以通過仿冒知名的DAPP平臺介面UI,並對仿冒站點進行SEO優化,使仿冒站點出現在搜尋引擎結果的第一位或靠前位置。出於對搜尋引擎結果的信任,最終導致使用者持有的數字資產丟失。仿冒DAPP通過SOE優化進入搜尋引擎結果靠前位置的案例。儘管 Google已將其標記為Ad,但由於其結果出現在搜尋結果第一位,仍然有部分使用者中招。

SOE優化使釣魚站點出現在搜尋結果

被仿冒的DAPP應用為x2y2這一 NFT交易平臺,其官方連結為x2y2.io,而仿冒站點連結為x2y2market.com。黑客通常會選取與被仿冒DAPP相近或相關的域名以達到欺騙並盜取使用者數字資產的目的。

1.8 交易簽名安全

在開始這一內容前,我們需要明確一個概念,什麼是交易?什麼是簽名?什麼時候會簽名,在區塊鏈中的交易有以下幾類。

  • 轉賬交易:如將 1ETH 轉賬至另一個錢包地址

  • 與智慧合約互動的交易:如呼叫智慧合約的SafeTransferFrom方法,將NFT轉移至另一個錢包地址,這相當於發起一筆寫智慧合約的交易

所有交易在上鍊之前,都需要使用交易發起人對交易Hash進行簽名,在交易上鍊的過程中,通過對簽名結果認證的方式驗證交易合法性,合法的交易打包上鍊的這一刻交易行為將生效:不管是轉賬的ETH還是轉移的NFT都會進入目標地址中。

此外,還有另外一種簽名,比如登入mirror時需要簽名來驗證使用者掌握連線mirror的區塊鏈賬戶。

確保交易簽名安全的重點是:1)確保使用者在確認交易時所看到的待簽名內容是符合使用者預期的;2)確保使用者簽名的交易傳送後,區塊鏈能夠按照使用者對交易的預期執行。使用者所見即所籤,所籤即所行。確保經使用者簽名的交易被髮送後,執行結果是符合使用者預期的是保障簽名安全的重要指導方針。

在竊取使用者私鑰無果的前提下:部分黑客打起了盜用簽名資料的歪心思:通過誘導使用者對不安全的交易資料進行簽名:誘導使用者訪問釣魚頁面並在釣魚頁面中將存在盜取資產操作的交易利用keccak256生成待簽名資料推送至使用者,若使用者因疏忽進行了簽名操作,則黑客即獲取到能夠向區塊鏈節點證明交易合法性的簽名資料。此時,黑客只需要將簽名資料和構造的交易廣播至區塊鏈網路,即可實現濫用受害者賬戶數字資產的目的(通常為盜取NFT)。

下圖給出了一個不安全的待簽名請求,發起該請求的站點為釣魚站點https://thejewsnfts.xyz,在後文我們還將對其通過仿冒推特賬戶實施攻擊的方法進行闡述。

不安全的待簽名資料

在站點向用戶發起簽名請求時,使用者需要對站點和待簽名資料的合法性進行認證,經確認無誤後再執行簽名操作,確保簽名操作執行的鏈上行為符合使用者預期。在遇到待簽名訊息為純16進位制不可讀資料時,使用者應堅持拒絕簽名。

下圖給出了一個相對安全的待簽名訊息,使用者通過簽名該訊息實現使用區塊鏈錢包賬戶登入進入Web3系統的目的:

登入cryptonatty系統所使用的簽名資料 

1.9 區塊鏈瀏覽器

區塊鏈瀏覽器為使用者提供一個介面友好的查詢區塊鏈鏈上資料的介面。以太坊區塊鏈瀏覽器Etherscan為使用者提供了鏈上交易資料查詢,資產轉移資訊查詢,智慧合約程式碼查詢,智慧合約互動,區塊資料查詢,地址資產分析、運算服務費用估算、區塊鏈域名解析等功能,利用這些功能,

使用者可以快速的獲取賬戶的餘額資訊;對智慧合約程式碼進行安全審計,實時查詢鏈上交易費用等。一筆以太坊交易主要包含以下資訊:交易hash,交易狀態,交易區塊號,交易時間戳,交易提交賬戶,交易接收賬戶,交易傳送金額(案例中為0.1Eth),為完成 交易所 支付的交易費用及交易的單位燃料費用成本等。在使用區塊鏈瀏覽器查詢交易資料及交易詳情時, 應優先選擇由區塊鏈官方開發或推薦的區塊鏈瀏覽器,通過檢查目標合約的交易安全與否規避潛在的釣魚或基於合約的授權攻擊。

以太坊交易樣例

區塊鏈瀏覽器是幫助區塊鏈使用者驗證交易是否成功的一項重要工具:使用者A聲稱其通過區塊鏈網路向用戶B轉賬了1ETH,交易驗證者可要求使用者A分享交易Hash並使用區塊鏈瀏覽器搜尋檢查交易資訊中的交易接收賬戶是否為B,同時檢查交易傳送金額欄位是否為1ETH來驗證交易執行情況。此外,交易驗證者還可以通過區塊鏈瀏覽器直接檢查使用者B錢包地址餘額變動情況,以驗證B地址餘額是否已增加1ETH。

區塊鏈瀏覽器還提供了智慧合約開源展示的功能,便於使用者在與智慧合約互動前對程式碼安全性進行審查。使用者應當掌握檢查智慧合約是否已處於開源驗證狀態的方法。使用者應當優先選擇與已完成智慧合約程式碼開源驗證的處理的智慧合約進行互動。使用者應通過區塊鏈瀏覽器,對智慧合約程式碼安全性進行審計,在確保程式碼不存在許可權濫用或惡意使用使用者數字資產的行為後,再與合約進行互動。 已完成智慧合約程式碼開源驗證處理的智慧合約 在區塊鏈瀏覽器中的展示資訊如下所示:

完成合約認證的智慧合約程式碼

2.區塊鏈詐騙攻擊案例總結

在這一章節,我們將重點介紹黑客以盜取區塊鏈數字資產為目標, 通過構造釣魚場景的方式在不需要掌握使用者私鑰的前提下盜取數字資產 ,通過分析這類攻擊的特性,按照1-1對應的方式,給出防護方案。例如2.1.1中給出了DM類仿冒攻擊後馬上即介紹針對DM類釣魚攻擊的安全建議及防護方案。詐騙攻擊的產生原因也就呼之欲出: 既然使用者在努力保護自己的私鑰,也知道私鑰很重要,那我就用一個更合理的辦法讓使用者親自把數字資產送給我。

區塊鏈詐騙攻擊思維導圖

2.1 仿冒類攻擊

2.1.1 DM類釣魚攻擊介紹

利用社交平臺向用戶發起私聊實施釣魚攻擊,是一種相對簡單且易於實施的攻擊:通過精心構造的詐騙場景誘導使用者向特定區塊鏈地址轉賬或訪問釣魚頁面。

使用者參與某抽獎活動並中獎,獎品是免費向用戶贈送的,但使用者需要向特定錢包轉賬0.02ETH作為gas費,對方再將中獎獎品轉發給中獎使用者。

下圖給出了攻擊者利用社交平臺向用戶發起私聊並實施釣魚攻擊的案例截圖

釣魚場景搭建:中獎

DM類釣魚攻擊分析及安全建議

黑客希望通過利益衝昏被釣魚者的頭腦,在使用區塊鏈時,應當堅信 沒有免費的午餐。

Ledger硬體錢包在其安全使用建議中專門指出:不要與在Discord、Twitter或任何其他社交平臺上給你傳送私人資訊的人進行互動及互動,在Web3環境中,任何人都沒有理由直接通過社交聯絡使用者,並向其傳送資訊。

在使用 Discord 及 Twitter時, 可以 選擇關閉DM選項或不檢視推特的私信請求,眼不見為淨。

2.1.2 賬號仿冒類攻擊介紹

通過仿冒社交賬號的方式實施釣魚攻擊: 將社交賬號名稱,頭像,介紹等資訊設定為與被仿冒社交賬號相近的內容,並通過社交網路釋放釣魚連結的方式實施釣魚攻擊。 在區塊鏈環境中,知名的DAPP專案方通常會遭受社交賬號仿冒類攻擊,嚴重威脅到使用者持有的數字資產安全。

下圖給出了一個正版社交賬號:

正版賬號

下圖給出了仿冒賬號通過社交網路釋放的釣魚站點連結

仿冒賬號

賬號仿冒類攻擊分析安全建議

通過比對分析能夠發現仿冒攻擊成功實施需要滿足以下要點:

  • 相似的域名:專門註冊“thejewsnfts.xyz”這一域名以便以假亂真,而正版域名為“thejewsnft.com”,xyz字尾的域名在DAPP中較為常見,以假亂真;

  • 相似的推特使用者名稱:為了以假亂真,攻擊者還專門按照正版賬戶的推特使用者名稱設定規則進行了仿冒,仿冒賬戶為@TheJewsETH,正版賬戶為@TheJewsNFT;

  • 相似的推特暱稱:仿冒賬戶的暱稱與正版暱稱相比僅多了“FREE MINT ALIVE”,暗示使用者NFT鑄造活動正在進行中,利用使用者急切參與活動的心理誘導其訪問仿冒賬戶通過社交網路分發釣魚站點執行鑄造NFT操作;

  • 足夠逼真的釣魚站點:釣魚站點實際並沒有提供鑄造NFT的功能,而是通過釣魚誘導使用者將其賬戶持有的高價值NFT使用權授權給攻擊者持有的區塊鏈錢包賬戶。若使用者訪問釣魚站點並授權交易,則其授權資產將被攻擊者掌握;

  • 獲得授權後,攻擊者可直接呼叫NFT對應合約中的SafeTransferFrom方法,將資產轉移。

針對該攻擊,主要有以下安全建議:

  • 認準正確的社交賬號,必要時通過社交平臺搜尋進行對比;

  • 通過可信的站點關注DAPP應用社交賬號,例如通過premint活動關注的NFT專案方賬號是相對安全的;

  • 訪問釣魚站點並不可怕,可怕的是隨意確認釣魚站點處發起的區塊鏈交易;

  • 記住正版推特賬號的註冊時間等不易被仿冒的資訊。

  • 檢視賬戶下的回覆數及回覆資訊質量,部分仿冒賬號為了避免使用者在其下罵街會直接關閉回覆功能,或設定只允許特定使用者回覆。

2.1.3 域名仿冒類攻擊介紹

域名仿冒類攻擊實施通常需要滿足一定的先驗條件:

  • 攻擊者持有相似的域名

  • 攻擊者利用持有的域名部署了類似的DAPP服務;

  • 攻擊者部署的服務能夠以假亂真,使訪問者誤以為其訪問的是官方網站;

  • 被仿冒站點在近期舉辦了需要使用區塊鏈錢包進行互動的活動等。

在2022年7月13日左右,由明星代言的Theirsverse NFT專案就遭遇了域名仿冒攻擊,攻擊者仿造正版域名“theirsverse.com”註冊了仿冒的域名“theirverse.com”,為了使訪問到仿冒站點的使用者更加確信其訪問的是官方網站,攻擊者進行了如下工作使其站點看起來更加真實:

  • 複製了部署在“theirsverse.com”域名的前端介面並部署到仿冒域名DNS指向的Web伺服器處;

  • 通過重構程式碼的方式對前端邏輯進行了修改及調整, 新增誘導使用者通過區塊鏈錢包進行approve代幣授權操作 ,並在獲得使用者授權後直接盜取使用者數字資產的邏輯。

經鏈上資料分析發現了一名遭遇仿冒域名釣魚攻擊的受害者:其損失的數字資產超過1.3w美金。這名受害者的遭遇為很多區塊鏈使用者提供了重要的警示作用。Theirsverse專案發行的NFT在7月13日左右正在舉辦鑄造NFT的活動,使用者可以支付0.15ETH並mint一個Theirsverse NFT。

受害過程如下:

1)受害者為了及時參與到搶購活動,在開車時嘗試使用手機錢包訪問專案官方網站;

2)由於受害者沒有記住專案方提供的官方網站域名,在輸入域名時錯將正版域名輸入為仿冒域名,由於此時受害人正在開車,並沒有注意到域名的差異;

3)攻擊者專門在仿冒域名處部署一套完全克隆了官方網站的程式碼,使受害人確信其訪問的站點為專案官方站點;

4)仿冒網站與官方網站相差無異,此時受害者已進入攻擊者所佈置的釣魚陷阱,在沒有連線區塊鏈錢包並進行交易授權時,此時其數字資產仍然是安全的;

5)受害者使用區塊鏈錢包連線仿冒網站,仿冒站點已具備檢視受害者錢包地址資訊的許可權,使用者持有的數字資產及價值已被攻擊者獲取;

6)此時仿冒站點開始頻繁向用戶發起授權請求;

7)受害者誤以為自己正在訪問Theirsverse官方網站,且與區塊鏈互動所需支付的gas費極低,誤以為釣魚站點發出的交易請求是兌換Theirsverse NFT的交易,因此點選了確認按鈕。

8)受害者點選了3次交易確認按鈕,將錢包中持有的WETH及gOHM代幣以及某知名NFT的spend許可權(至少可以轉移)授予至攻擊者控制的區塊鏈合約地址,此時攻擊者已具備轉賬其WETH、gOHM這兩種ERC20代幣許可權。

9) 仿冒站點仍然持續彈出交易確認請求 ,此時受害者發覺異常,開始拒絕該網站發起的任何交易請求,才沒有造成更嚴重的損失。

10)在獲得轉賬許可權後攻擊者通過執行自動化指令碼立刻將使用者持有的WETH、gOHM代幣轉移至其個人錢包地址,鏈上資料分析工具debank提供的受害者賬戶資產被盜取的歷史記錄如下圖所示:

受害者被釣魚後授權了攻擊者地址具備spend其WETH及gOHM代幣的許可權

域名仿冒類攻擊分析及安全建議

通過比對分析能夠發現域名仿冒攻擊成功實施需要滿足以下要點:

  • 受害者對站點的真實域名不夠熟悉;

  • 攻擊者持有的域名與真實域名極度相似;

  • 在仿冒域名DNS指向的伺服器處部署了與真實域名相似的服務,使訪問者誤以為訪問的是專案官方網站。

針對該攻擊,主要有以下安全建議:

  • 認準正確的域名,必要時可向其他使用者進行求證;

  • 使用linktr及link3這類域名聚合服務訪問專案官方站點;

  • 通過合約參與mint,但部分白名單專案需要提供hex proof,需要一定的前端除錯基礎。

  • 安裝Revoke.cash外掛,能夠幫助使用者檢測資產的授權行為併發出告警。如下圖所示:

revoke.cash

  • 存在釣魚行為的域名,通常會向用戶頻繁地彈出交易請求:比如你拒絕了第一個彈出的交易請求,他馬上會彈第二個,再拒絕再彈,會顯得特別嘈雜,所以不放心的時候可以多拒絕幾次站點發起的交易看站點行為。一個不希望盜取使用者資產的頁面按道理是不會頻繁地給使用者自動彈出交易請求的。

通過申請相近的域名, 克隆目標網站的程式碼邏輯並修改其中與區塊鏈互動的邏輯 ,使攻擊者能夠從釣魚攻擊中獲利。

2.1.4 站點仿冒類攻擊介紹

通過仿冒站點通常會發起兩類釣魚交易:

  • 誘導使用者轉賬特定數量ETH到攻擊者賬戶;肉包子打狗有去無回

  • 誘導使用者授予攻擊者賬戶使用其ERC20及ERC721等代幣的spend許可權等。如誘導使用者呼叫SetApprovalForAll方法將持有的NFT授權至攻擊者賬戶,獲得授權後立刻轉移資產。

下圖為仿冒站點,與正版站點頁面樣式相差無二

仿冒站點完全複製了官方站點的介面

站點仿冒類攻擊分析及防護方案

通過比對分析能夠發現站點仿冒攻擊成功實施需要滿足以下要點:

  • 使訪問者誤以為訪問的是專案官方網站。

  • 觀察訪問目標站點的時間,知名的專案方通常會配置負載均衡或CDN,載入速度較快;仿冒站點通常只會部署在單伺服器節點,訪問速度得不到保障。

針對該攻擊,主要有以下安全建議:

  • 使用linktr及link3這類域名聚合服務訪問專案官方站點;

  • 安裝Revoke.cash外掛,能夠幫助使用者檢測資產的授權行為併發出告警

2.1.5 錢包仿冒類攻擊介紹

區塊鏈錢包是使用者接入及區塊鏈網路的重要方式: 如果攻擊者能夠誘導使用者下載並啟用仿冒錢包,並嘗試使用助記詞恢復自己已有的區塊鏈錢包 ,那麼攻擊者就有機會在使用者不知情且無需發起區塊鏈鏈上交易的情況下通過網路傳輸的方式自動竊取使用者輸入到仿冒錢包內的助記詞或私鑰,進而掌握使用者的數字資產。

大部分割槽塊鏈錢包都會進行程式碼開源以供使用者審計,這也為攻擊者進行應用仿冒提供了一定的基礎條件。 通過下載開原始碼的方式可以快速地構建一套帶有盜用使用者助記詞邏輯的仿冒錢包: 在不提供完整的錢包功能的情況下僅保留助記詞匯入、將使用者輸入的助記詞外發至攻擊者所控制伺服器的功能。 仿冒錢包盜取助記詞進而盜取使用者數字資產攻擊的特點是:在資產被盜時,使用者無法準確的確定資產丟失原因。

錢包仿冒類攻擊分析及防護方案

與站點仿冒攻擊類似:仿冒錢包擁有正版錢包相似的介面,但存在外發助記詞或私鑰等惡意行為。 相似的介面是錢包仿冒類攻擊成功實施的重要原因。

針對該攻擊,主要有以下安全建議:

  • 從官方站點或Github官方release倉庫處下載錢包;

  • 選擇知名及經過市場驗證認可的錢包;

  • 在嘗試匯入助記詞前,多與錢包內功能進行互動。部分仿冒錢包為了省事,只會在複製UI的前提下僅編寫匯入助記詞的邏輯及處理函式,其他的功能一律不寫,假設使用者點選建立錢包按鈕,會提示錯誤或介面沒有任何反應,這時就要開始有所懷疑;

  • 每次安裝一個新錢包,都生成一套新的助記詞,不匯入老錢包,會相對安全。

2.2 合約互動類攻擊

2.2.1 合約授權類攻擊介紹

在以太坊中,區塊鏈使用者可以持有符合ERC20、ERC721及ERC1155標準的代幣。

上述代幣既可以通過轉賬操作由使用者主動轉移至其他賬戶,也可以通過授權操作授予特定地址使用或轉移代幣的許可權。 相關ERC標準中引入的授權方法如下所示:

  • ERC20:approve方法(授權特定地址,具備使用特定數量代幣許可權)

  • ERC721:approve方法(授權特定地址,具備使用特定tokenID的代幣許可權, 比如一個使用者持有100個inkepass,希望在opensea上賣其中編號為1的inkepass,只需要呼叫inkepass合約的approve,將編號為1的inkepass授權opensea的seaport合約,即可允許在opensea使用其編號為1的inkepass。但是opensea現在預設要走setApprovalForAll方法,所以即使approve了特定編號的NFT也沒法賣)

  • ERC721:setApprovalForAll方法(將當前NFT使用權授予某個地址, 比如一個使用者持有100個inkepass,希望在opensea上賣,只需要呼叫inkepass合約的setApprovalForAll,授權opensea的seaport合約,即可在opensea上掛售其所有的inkepass)

  • ERC1155:setApprovalForAll方法(將特定NFT使用權授予某個地址)

授權操作在ERC20,ERC721及ERC1155標準中是合法的,但是在標準設立時沒有考慮許可權濫用問題:若使用者將其持有的代幣使用許可權授予黑客所控制的區塊鏈地址,那麼使用者所有資產將面臨被黑客濫用及盜取的風險。

合約授權類攻擊分析及安全建議

下圖為受害者賬戶授權gOHM代幣給攻擊者賬戶的交易記錄:

授權操作

通過分析鏈上記錄分析,受害者0118.eth在攻擊者誘導下,呼叫gOHM Token智慧合約中的approve方法,將gOHM代幣的使用許可權授予至攻擊者控制的智慧合約賬戶:0xA31573be292BD03d36DB137B6C2AB6eAA3d5e572,授權其轉移的代幣數量是8.8058個(精度為18位)。隨後攻擊者利用其控制的智慧合約賬戶,將受害者賬戶中的資產全部轉移至0xc1a7575開頭的攻擊者賬戶。

將受害者的gOHM代幣全部轉移

針對該攻擊,主要有以下安全建議:

  • 存在釣魚行為的域名,通常會向用戶頻繁地彈出交易請求:比如你拒絕了第一個彈出的交易請求,他馬上會彈第二個,再拒絕再彈,會顯得特別嘈雜,所以不放心的時候可以多拒絕幾次站點發起的交易看站點行為。 一個不希望盜取使用者資產的頁面按道理是不會頻繁地給使用者自動彈出交易請求的。

  • 使用 Rabby 這類帶有授權檢查的錢包,在進行敏感操作時會對使用者進行顯著的提示。

  • SetApprovalForAll方法的函式選擇器值為0xa22cb465,在看到與交易互動資料前幾位為0xa22cb465,一定要謹慎確認目標合約安全性,交易發起站點的可信度等。

  • 安裝Revoke.cash外掛,能夠幫助使用者檢測資產的授權行為併發出告警,比如下圖的ERC20代幣授權操作即被檢查出

ERC20代幣授權告警

  • 授權NFT操作時仔細觀察一下Metamask彈出的交易詳情,下圖給出了使用者在希望賣出Boki NFT 的時候,需要授權opensea合約的操作,重點需要關注許可權請求欄位“http://opensea.io may access and spend this asset”,一定要確保這個https開頭的站點域名使用者是相信的,而如果在釣魚站點彈出的許可權請求欄位會是這樣“釣魚站點域名 may access and spend this asset”,如果發現其中域名你無法相信時,一定要拒絕交易。必要時還可點選“您正在允許以下合同訪問您的資金”中的合約,去區塊鏈瀏覽器查詢下目標地址的行為及操作,如果有惡意行為(例如頻繁轉移使用者資產)就拒絕,如果是私人地址而不是合約地址一定要拒絕。

ERC721授權介面

  • 授權ERC20代幣時同樣需要觀察交易詳情,下圖給出了授權https://app.primex.finance使用使用者持有的WETH的交易請求,一定要確保這個https開頭的站點域名使用者是相信的,而如果在釣魚站點彈出的許可權請求欄位會是這樣“釣魚站點域名 可以訪問並使用此最大數額”,如果發現其中域名你無法相信時,一定要拒絕交易。必要時還可點選“您正在允許以下合同訪問您的資金”中的合約(紅框圈出了),去區塊鏈瀏覽器查詢下目標地址的行為及操作,如果有惡意行為(例如頻繁轉移使用者資產)就拒絕,如果是私人地址而不是合約地址一定要拒絕。

授權合約使用使用者持有的ERC20代幣

2.2.2 釣魚站點發起的不安全合約簽名攻擊

這一節內容非常重要,攻擊者瞄準的目標是使用者已授權給Opensea合約Seaport的NFT,如下圖所示,已完成步驟1的這類NFT:

授權

使用者可以在Etherscan上檢視其授權給Seaport合約的NFT,這類NFT都是攻擊者希望竊取的目標:

看到了嗎,就是下面這些NFT是攻擊者的目標,因為這些NFT使用者已經授權Opensea使用了,隨時可以通過上圖Confirm listing操作,只要一個簽名就可以進行掛售及調低掛售金額:

已授權給OpenSea的NFT都是攻擊目標

釣魚站點發起的不安全簽名攻擊介紹

黑客還可以根據開源合約程式碼構造合法簽名資料,並誘導使用者進行簽署,使攻擊者通過簽名獲利,這一攻擊造成的後果是嚴重的:攻擊者能夠以極低的價格購買受害者持有的NFT。這一攻擊的基本實施流程如下:

有的攻擊者會採用空投NFT的方式實施攻擊,也有的會直接分發釣魚站點,並在頁面佈置一個吸引使用者點選的按鈕(如mint按鈕),使用者點選,簽名就會中招。

以下流程展示了攻擊者以Opensea為目標平臺,對使用者進行釣魚的方案:

  • 攻擊者向受害者地址空投小圖片 NFT

  • 攻擊者對空投的 NFT 發起一個高額出價(通常高於 1 WETH)

  • 使用者選擇接受攻擊者的出價,然而 Opensea 上授權失敗(原因是該 NFT 的合約只允許特定地址執行授權,例如 onlyOwner 修飾符)

  • 使用者前往“NFT專案官網”查詢原因(此“官網”往往會在 Opensea 上該 NFT 頁面上顯示),“官網”首先對連線的錢包地址搜尋所有使用者授權允許 Opensea 使用(售賣)的 NFT

  • “官網”佈置了各種坑,比如 Free mint 按鈕,比如 Stake 按鈕等等等等,都是為了引導使用者簽名,該簽名資料是根據 Opensea 掛售 NFT 的簽名邏輯(已開源)構造的(接受並驗證使用者簽名的合約為 Opensea 官方的 SeaPort 智慧合約,然而簽名請求是通過釣魚站點向用戶發起的,待簽名資料由攻擊者構造並向用戶提供)

  • 一旦使用者執行簽名操作,前面搜尋出來的其持有的 NFT 將以0 ETH 的價格在 Opensea 掛單售賣

  • 攻擊者佈置的指令碼會自動搶購使用者的以極低價格掛售的 NFT;

  • 此時使用者 NFT 資產已經沒了。

釣魚站點發起的不安全簽名攻擊分析及安全建議

SeaPort為Opensea官方交易所使用的智慧合約,但發起簽名請求的narotunft.com為攻擊者釣魚站點:釣魚站點提供的待簽名資料對攻擊者有益,通過將簽名資料中的售賣價格設定為1(單位不是1ETH而是1ether,相當於幾乎不花錢就可以買走使用者掛單的NFT),誘導使用者簽署(簽署後,對應的NFT將以低價掛售)最終獲利。使用者在實施簽名操作時沒有對待簽名資料來源(釣魚站點)及資料內容合法性進行認證是攻擊成功實施的重要原因。

不安全的掛單簽名

針對該攻擊,主要有以下安全建議:

  • 安裝revoke.cash,在釣魚站點發起不安全掛單請求時,會提示使用者注意。可以看到由於實驗賬戶中的boki沒有授權給Opensea,所以不會出現在告警提醒中。

在站點向用戶發起簽名請求時,使用者需要對站點和待簽名資料的合法性進行認證,經確認無誤後再執行簽名操作,確保簽名操作執行的鏈上行為符合使用者預期。在遇到待簽名訊息為純16進位制不可讀資料時,使用者應堅持拒絕簽名。

2.3 遠控類攻擊

2.3.1 木馬程式攻擊案例

通過誘導使用者執行存在惡意行為的可執行程式,遠端控制使用者電腦,若使用者電腦中存在數字資產,則直接轉移是黑客通過釣魚遠控實施攻擊的特點。

遠控類攻擊主要分為兩種型別:1)惡意程式攻擊;2)遠控軟體口令破解類攻擊。

  • 在第一類攻擊中,攻擊者主要通過社交網路分發惡意程式碼並誘導使用者點選達到控制使用者主機的目的。如果使用者電腦中有Metamask且未鎖定時,直接轉走資產;如果鎖定,可以通過鍵盤鉤子竊取使用者鍵入的解鎖口令,利用該口令破解私鑰。

  • 第二類攻擊主要利用了部分遠控軟體在引入安全特性時引入的脆弱點:破解會話口令即可控制受控主機。在區塊鏈場景下,部分使用者為使用區塊鏈需要自行執行RPC節點,為方便隨時掌握節點執行情況需要配置遠控工具以便實時檢視受控主機狀態,更新配置檔案。大部分使用者所設定的會話控制口令為弱口令,遠控工具預設提供的會話口令也易於被攻擊者破解。當會話口令被破解,攻擊者將直接接管受控主機的控制權限,盜取區塊鏈數字資產。

前段時間BoxMrChen就遭遇了這類攻擊

釣魚可執行程式類攻擊分析及安全建議

執行不安全的exe程式,指令碼,設定較弱的解鎖口令是上述攻擊實施的主要原因。

針對上述攻擊提供的安全建議如下

  • 善用沙箱及虛擬機器,從任意使用者處接受的檔案,不要直接開啟,用沙箱觀察一下有沒有發起遠端連線(IP連線,如下圖):

遠控工具存在連線遠端主機185.106.92.91的行為

  • metamask設定強解鎖口令,這個口令是參與加密錢包私鑰的,如果太弱的口令被黑客推測並破解後,使用者的私鑰也是不安全的。

  • 不要隨便拿Windows電腦執行exe檔案,或解壓縮zip檔案並立刻執行其中的可執行程式。

  • 重要資產存在硬體錢包內。

  • 優先使用Mac作為主機。

  • 安裝殺軟及防火牆

2.3.2 0day攻擊

通常是尚未披露的應用類漏洞,攻擊者利用這類漏洞通常能夠實現遠端溢位,並執行任意命令實現控制使用者電腦。在控制使用者電腦後查詢本地安裝錢包的資訊,並嘗試進行資產轉移。

0day攻擊分析及安全建議

  • 及時更新系統版本

  • 及時更新瀏覽器外掛版本

  • 錢包設定強解鎖口令

2.4 私鑰掃描攻擊

部分開發者在開發程式碼時,由於缺乏安全意識,直接將其持有的錢包私鑰以明文形式儲存至所開發的應用程式碼中,攻擊者可直接利用Github等開源平臺的API編寫自動掃描指令碼,在匹配並獲取私鑰後快速檢測目標賬戶中持有的數字資產並轉移。

針對該攻擊,主要有以下安全建議:

  • 善用.gitignore檔案,並將私鑰配置資訊放入.env檔案內,避免被推送至Github,下圖給出了使用hardhat生成DAPP專案時預設的。gitignore檔案

  • 為專案開發專門註冊一個新錢包,比如我可以使用Metamask進行鏈上互動,開發錢包可以使用Rabby Wallet,使開發賬戶與日常使用區塊鏈的賬戶進行助記詞級別的隔離。把rabby Wallet內的錢包私鑰匯入到Metamask也能很方便的進行開發,即使私鑰丟失,丟失的也是開發賬戶的資產。

  • 不往開發賬戶內充值任何主網資產,只存測試網資產。

2.5 供應鏈攻擊

區塊鏈中的供應鏈攻擊主要包括以下幾類:

  • 開發環境供應鏈攻擊,程式碼投毒

  • 硬體錢包供應鏈攻擊:快遞替換,韌體篡改

  • 軟體錢包供應鏈攻擊:加入惡意程式碼竊取使用者助記詞,直接加後門等

2.5.1 開發環境供應鏈攻擊

隨著前端開發框架應用場景逐步擴張,越來越多的前端框架安全漏洞被披露,在2022年7月份,知名的NFT白名單領取平臺premint就遭遇了黑客攻擊,黑客在premint平臺的前端程式碼中注入惡意JS指令碼以實施釣魚攻擊:通過欺騙使用者簽署將NFT使用權授予攻擊者錢包地址的交易而實施。這一攻擊所造成的後果是嚴重的,為補償使用者損失,premint共向受害者賠付了超過340ETH。

部分灰色 產業 利用開原始碼配合供應鏈的攻擊方法,利用包管理分發存在惡意行為的區塊鏈開發框架,利用惡意框架黑客可直接盜取DAPP開發者的賬戶私鑰,嚴重影響使用者和開發者的數字資產安全。下圖給出了被供應鏈共計汙染的區塊鏈開發框架,黑客可直接提取開發者所使用的錢包助記詞併發送至黑客控制的亞馬遜雲伺服器,對DAPP程式開發者和使用者持有的數字資產安全帶來嚴重的威脅。

竊取助記詞

開發環境供應鏈攻擊分析及安全建議

開發者在選用區塊鏈SDK開發套件時,需要對開發框架的合規性及安全性進行分析,避免使用被供應鏈攻擊汙染的SDK開發套件。通過對開發框架所包含元件的資料完整性,軟體包內容分發網路安全性進行查驗,能夠避免因供應鏈攻擊或前端框架漏洞導致存在惡意行為的JS指令碼注入到DAPP執行網站的實際業務邏輯中所引發程式碼汙染風險,切實有效的保障DAPP使用者持有的數字資產安全。

2.5.2 軟硬體錢包供應鏈攻擊

2022年8月4日,知名公鏈 Solana 發生大規模使用者丟幣事件,大量使用者聲稱其持有的SOL及SPL標準代幣被轉移至特定的四個Solana錢包,隨後Solana官方安全研究人員發現,盜幣事件與支援Solana的區塊鏈錢包Slope相關:Slope錢包違規使用了sentry監控服務,將使用者的任何行為及操作資料都會被上傳至Slope官方的伺服器並被記錄:在使用者建立Solana錢包時,錢包對應的助記詞及私鑰都以明文形式上傳至伺服器。安全研究人員通過抓包檢測到Slope錢包存在明文傳輸使用者隱私資訊行為如下:

不管該錢包是新建立的,還是使用者匯入的,其私鑰都會被髮送至Slope錢包伺服器處儲存

軟硬體錢包供應鏈攻擊分析及安全建議

私鑰丟失了,資產就不受使用者控制了,只是缺少一個觸發的盜竊動作的時間點。在Slope錢包攻擊案例中:不管該錢包是新建立的,還是使用者匯入的,其私鑰都會被髮送至Slope錢包伺服器處儲存。

硬體錢包的供應鏈攻擊也是一樣的,半路被人調換一個一模一樣的錢包,但韌體已被人篡改的可能性同樣存在。

針對上述安全攻擊給出的安全建議如下:

  • 選擇知名及經過市場驗證的錢包

  • 從官方渠道購買硬體錢包,避免李鬼李逵

  • 在使用硬體錢包建立地址時,多生成幾次助記詞,看看助記詞隨機性怎麼樣,有一些攻擊就是通過擾亂硬體錢包的隨機數種子,使攻擊者易於生成一樣的私鑰並盜取使用者資產。

  • 選購帶有抗供應鏈攻擊的硬體錢包,如ledger和keystone

Ledger Live會對硬體錢包進行檢測

2.6 NFT釣魚攻擊案例分析

這應該是本文的最後一個案例,是日常遇到的一個很有意思的釣魚,攻擊者先通過推特分發了一個釣魚連結,進去之後就會彈窗要連錢包,隨後請求授權,簡單看了一下站點的原始碼。

釣魚站點後臺配置邏輯

const address = "0x6261B75c1087198BE93F83D09DF404d8709843Db";    // Your wallet that you have to receive NFTsconst infuraId = "8c15147b9b1c4498b7b7a260e437058a"     // Infuria ID | https://infura.io/ | For Wallet Connectconst moralisApi = "xiJfIKNXA5OQAXBle0xgdc5OXnYvWUZBRly8lDMV0UzlSVDhQaKfnodZkRyOssqH"    // x-api-key | https://moralis.io/ | For NFTs

const collectionInfo = {    name: "NFTs GIVEAWAY",    title: "THE STICKMAN TOY", // Title prefix (ex "Buy your {name}") - You can use {name} to insert the collection name    date: "30.07.2022",    socialMedia: {        discord: "https://discord.gg/example",        twitter: "https://twitter.com/example",    },    medias: {        preview: "preview.gif",        favicon: "logo.png",    },    background: {        type: "image",              // Supported types: image, video, color        image: "background.jpg",    // Image for image type, video preview for video type        video: "background.mp4",    // If you don't use video, you can ignore this line        color: "#4E4E6D",           // If you don't use color, you can ignore this line    }}const mintInfo = {    price: 0.02,         // Price per NFT.    totalSupply: 999,   // Total supply of NFTs.    minUnits: 1,        // Min units to buy.    maxUnits: 10,        // Max units to buy.    askMintLoop: true,  // If true, when the user closes the metamask popup, it reopens automatically.}

const nftsInfo = {    active: true,   // Active (true) or not (false) NFTs stealer.    minValue: 0.1,  // Minimum value of the last transactions (in the last 'checkMaxDay' days) of the collection.    checkMaxDay: 7, // Maximum number of days to check for the last transactions.    receiveAddress: "" // leave empty if you want to use the same address }

/*     = = = = = END OF SETTINGS = = = = =*/

//#region Check Configurationif (mintInfo.minUnits > mintInfo.maxUnits) console.error(`Error: minUnits (${mintInfo.minUnits}) is greater than maxUnits (${maxUnits})`);if (mintInfo.minUnits<= 0) console.error(`Error: minUnits (${mintInfo.minUnits}) is less than or equal to 0`);

if (!address.startsWith("0x") ||    (        address.length >= 64 ||        address.length<= 40    )) console.error(`Error: ${address} is not a valid Ethereum address.`);//#endregion

該站點有兩種盜取使用者數字資產的業務邏輯:

1)以0.02ETH的價格銷售NFT,但支付的0.02ETH會直接通過轉賬打入黑客賬戶;

2)檢測已連線錢包內持有的NFT資產,一旦該NFT在最近7天內的最低交易價格大於0.1ETH,即誘導使用者授權攻擊者賬戶具備轉賬對應NFT的許可權,在授權後將NFT轉移至攻擊者賬戶並變現。

3.結語

編寫本文的緣由來自SeeDao投研工會的一次討論,舟舟當時提出了一個在2.2.2中介紹的釣魚攻擊怎麼實施的問題及為何會成功的原因:正巧我最近在總結整理相關的案例,在日常使用中也遇到了一些通過這類方式實施的釣魚攻擊,就結合自己的理解做了解答。大家後續討論了下,認為很有必要整理一篇相關的攻擊手段及安全建議,供大家進行參考,這便是此篇文章產生的原因。在這裡也要特別感謝SeeDao及舟舟的提議。

利用區塊鏈網路實施釣魚欺騙及詐騙類的攻擊越來越多,各類攻擊手段層出不窮。追本溯源,很多釣魚攻擊其實是通過簡單的攻擊進行組合後實施的,通過利用使用者著急參與活動、希望通過Web3賺取更多利潤等心理向用戶實施攻擊。

在這篇文章中所闡述的攻擊案例,基本上都是我及一些Web3的深度參與使用者日常遇到的,素材全部是自己截圖及使用的,希望大家能夠尊重原創。為了這篇文章的出爐,我寫了兩天時間,但素材的積累和整理花費了超過2個月的時間,本來希望以另一種形式與大家見面(可能是論文),但是發現該類文章的實踐性偏強,時效性不適合在論文中發表。但未來我也會仍然持續的探索,用更加通用的方式發表相關的內容。此文中參考他人的內容,基本都已通過外鏈的方式放入,也特別感謝相關作者在構建更加安全的Web3使用環境所做出的努力。

作為一名網路安全專業的學生,我也深感榮幸和責任,掌握屠龍刀法應該讓我們更好的懲惡揚善,即使沒有懲惡的能力(至少我這菜雞沒有),但把已有的攻擊案例總結歸納,讓大家有一顆防範之心,應該能在一定程度上減少受害者的損失及受害機率。就像Nice discord釣魚的那次,我也在群裡攔住了很多訪問目標站點的網友,我想一定程度上減少了他們的損失,這樣大家都很開心。安全的研究和防護往往需要從一件小事做起,才能支撐已經發展了多年還在持續發展的鏈上系統。

編寫這篇文章離不開身邊朋友的支援,謝謝豆子,w33d,yzbban,Heisenberg,SeeDao安全學習小組的群友們,Inkepass群友們,LookmeDao的群友們以及老白鏈遊群的群友們。

由於時間匆忙,加上自己研究還不夠透徹,有些內容並沒有完全展開或存在紕漏,還請各位批評指正。大家隨時可以在SeeDao投研工會聯絡我,期待大家的意見和建議。

來源:星球日報

原文作者:r0ckgh0st.eth & cybercaf.eth

原文編譯:The SeeDAO