Solana釣魚詐騙研究報告
BlockBeats 律動財經 2024-08-01 17:30
介紹
近期,Solana 生態的釣魚以及詐騙事件依舊頻發不斷,隨著該生態的迅速增長,大量的黑灰產也開始轉移陣地,他們通過更高級的技術手段和更隱蔽的釣魚手法持續的攻擊 Solana 的普通用戶。各種類型的釣魚詐騙層出不窮,近半年來,GoPlus 安全團隊通過大量的案例研究,發現了目前主要流行的四種釣魚詐騙場景:空投詐騙、釣魚簽名、權限轉移、地址投毒,本文將分別展開介紹這四種形態的釣魚案例及其原理。同時,我們也收到了大量用戶反映的情況,在 Solana 的一些主流錢包里,某些釣魚詐騙的交易的模擬失效導致造成用戶資損,本文同時會對這一技術進行深度解析。
詐騙場景解析
空投詐騙
首先,空投詐騙是指釣魚者在 Twitter、Discord 等社區中投放偽裝成空投活動的釣魚網站鏈接。
其中,針對 NFT 的鏈上空投釣魚,是釣魚者向用戶空投關聯了釣魚鏈接的 NFT,並誘使用戶點擊鏈接並簽署惡意交易。下圖給出了一個案例,該用戶收到了一個聲稱可以兌換 1,000 個 ZERO 代幣的 NFT,然後這個用戶點擊了 NFT 中的鏈接並簽署交易,後面用戶就發現他錢包中的 BONK、ZERO、USDT 等代幣都被盜了。
空投詐騙的原理相對簡單,也就是釣魚者通過虛假的空投活動,誘使用戶進入網站並簽署將錢包鏈接到該網站的交易。此時,網站將發起包含一個或多個 SOL/SPL Token 轉賬指令的釣魚交易,從而獲取用戶的數字資產。一個指令和多個指令進行轉賬也有區別。比較簡單的釣魚,如左圖展示的這樣,就是一筆交易,只轉一種類型的代幣。而更複雜的釣魚如右圖所示,它可以做到在一筆交易里包含很多個轉賬指令。
釣魚簽名
第二類詐騙是釣魚簽名。一些有經驗的用戶會通過觀察錢包的模擬交易結果,來避免空投釣魚,然而,釣魚者便利用了這一點,採用反模擬和偽造模擬技術來迷惑用戶,從而增加惡意交易被簽名的可能性。具體的,通過合併交易、惡意瀏覽器插件等反模擬的手段(下文將會重點介紹),使得錢包軟體顯示虛假的收益結果,甚至是不顯示模擬結果,從而誘導用戶簽署釣魚交易。
權限轉移
第三類詐騙是權限轉移。首先,Solana 上 SPL Token 的 approve 操作並不會直接導致代幣轉移,但是會導致代幣資產的權限轉移。因此,釣魚者通過誘導用戶簽署包含 approve 的釣魚交易,使得用戶錢包中的某個代幣帳戶所有權,轉移到釣魚者的錢包。在代幣帳戶所有權發生轉移時,如下圖所示,此時主流錢包軟體會發出所有權轉移的警告提示。
權限轉移的原理是,由於 Solana 中的每一種代幣,都會有一個單獨的帳戶 Token Account。駭客他通過發起包含 createSetAuthorityInstruction 操作的交易,就能改變代幣帳戶的所有者。該操作一旦成功,哪怕代幣還在錢包中,用戶也無法將代幣轉出。
地址投毒
第四類詐騙是地址投毒。它的目標是誘導用戶向釣魚地址轉賬,並且該釣魚地址與用戶日常交互或者是用戶認可安全的地址相似,比如有相同的前綴或後綴,而這些前綴和後綴也是精心設計的。如下圖所示,可以看到這兩個地址,除了紅圈框出來的不同之外,兩者的前綴和後綴都相同,從而迷惑用戶複製偽造的釣魚地址,並向該地址進行轉賬。地址投毒這類詐騙常見於以太坊、波場鏈,近期也逐漸擴散到 Solana 生態中。
EVM 地址投毒示例
地址投毒也可以細分為以下幾個類別:
1)0U/小額轉賬,指釣魚者轉移 0 額度或者少量的加密貨幣,來誘導用戶錯誤地複製歷史交易記錄中的釣魚地址。
2)轉賬+空投混合投毒,指釣魚者通過少量代幣轉賬,並在交易附言 Memo 中添加空投釣魚連接,來誘導用戶點擊。
第三種是虛假系統 Program 地址投毒,虛假系統 Program 地址是指攻擊者生成和虛假系統 Program 地址類似的地址作為釣魚地址,使得用戶錯誤地認為該釣魚地址是一個受信任的地址。該類詐騙在 2024 年 2 月 3 號,Scam Sniffer 在 Twitter 上報導了一起 Solana 地址投毒事件,攻擊者生成和系統程序相同尾號的地址,從而讓用戶誤認為該偽裝地址是一個正常的系統程序。其中,虛假系統 Program 地址可通過命令「solana-keygen grind --starts-with :1 --ignore-case」生成,例如我想要一個「8888」的前綴,那麼就將該前綴寫入此命令中,便可獲得。
錢包模擬交易及反模擬
Solana 上的模擬交易為用戶提供了在交易上鏈前觀察交易執行結果的途徑。模擬交易操作的具體過程如下圖所示,在構建出一個交易對象並將其序列化後,請求 simulateTransaction 方法即可返回模擬交易的結果,如哪些帳戶的餘額、權限發生了變化等。該功能常見於錢包軟體,用於在交易確認前輔助用戶檢查交易安全性。
但在某些情況下,模擬交易也可能失效,主要分為兩類情況:
1)反模擬:交易模擬因網路波動等某些原因失敗,導致無法推斷交易執行結果。
2)虛假模擬:交易模擬成功,但是模擬得到的執行結果和上鏈後的效果不同。
反模擬
反模擬在兩種情況下可能會發生:
1)錢包實現機制缺陷。例如,早期 Phantom 錢包發起多筆交易時,合併不同交易內的指令,導致被模擬交易大小超出最大限制。
2)網路出錯。模擬交易請求錢包 RPC 服務,拒絕服務攻擊、惡意插件代理請求、請求長時間未響應等原因,導致網路錯誤進而使得模擬失敗。
以 Phantom 錢包為例,在其實施模擬交易時,我們有意製造網路錯誤,具體代碼如下圖所示:首先,通過 Solana 的 web3 連接一個 rpc 服務。然後,創建數十個交易,每個交易都包含大量指令。最後,將上述交易發送到錢包,由於可能的網路超時,無法查看模擬結果。
虛假模擬
虛假模擬的發生也有兩種可能的原因:
1)Durable Nonce。該機制允許先簽名,在未來某個時間發起交易。但注意到,若交易觸發了一個可升級的合約(合約邏輯被惡意修改),這就會導致簽名時模擬的交易執行結果和發起交易時的執行結果可能不同。
2)錢包實現缺陷。例如,錢包同時模擬多筆交易,結果可能不準確。
同樣以 Phantom 錢包為例,我們同時發起完全一致的多個交易,模擬執行僅展示其中一筆交易的結果。如下圖所示,代碼指示的邏輯發送了 0.00002 SOL,但模擬結果僅為 0.00001 SOL。
主流錢包反模擬與虛假模擬問題
進一步,我們也探索了其他錢包是否存在與上述情況類似的反模擬和虛假模擬問題。這裡我們嘗試對另外兩款常見的 Solana 錢包,即 Solflare 和 Backpack 進行分析。
Solflare
· 在網路超時的情況下不會顯示確認按鈕,降低了因網路延遲導致的反模擬風險
· 同時模擬多筆轉出交易,不顯示餘額變動情況,直接提示風險;
Backpack
· 與 Solflare 類似,在網路超時的情況下不會顯示確認按鈕,降低了因網路延遲導致的反模擬風險
· 可能有潛在的虛假模擬風險。參考上述 Phantom 虛假模擬代碼,發送 0.00002 SOL,但模擬結果為 0.00003 SOL。
總結
目前,Solana 生態中用戶安全依然存在諸多隱患。儘管主流錢包已經具備一定的安全功能,但這些功能尚未能夠覆蓋所有的安全問題。例如,交易模擬結果並非總是可信,這為用戶帶來了潛在的風險。即便用戶採取了預防措施,如檢查模擬交易結果,但依舊可能會被反模擬和虛假模擬技術所迷惑,從而簽署惡意交易。為了應對這些挑戰,GoPlus 安全團隊將於本月推出 wallet drainer detection 功能。這項能力將賦能 Solana 生態的主流應用,通過實時檢測和攔截潛在的詐騙和釣魚交易,全面保護用戶的每一筆交易。這不僅能顯著提升用戶的安全體驗,也有助於 Solana 生態的穩定和繁榮發展。GoPlus 安全團隊呼籲 Solana 公鏈及其生態合作夥伴,共同加快用戶安全基礎設施的建設,為用戶提供更加安全、可靠的交易環境。通過持續的技術創新和安全防護升級,我們相信能夠有效減少釣魚詐騙事件的發生,保護用戶的數字資產安全,實現 Solana 生態的長期穩定和健康發展。
暢行幣圈交易全攻略,專家駐群實戰交流
▌立即加入鉅亨買幣實戰交流 LINE 社群(點此入群)
不管是新手發問,還是老手交流,只要你想參與虛擬貨幣現貨交易、合約跟單、合約網格、量化交易、理財產品的投資,都歡迎入群討論學習!
- 從零開始學合約系列講座熱烈報名中
- 掌握全球財經資訊點我下載APP
文章標籤
上一篇
下一篇