header-langage
简体中文
繁體中文
English
Tiếng Việt
한국어
日本語
ภาษาไทย
Türkçe
掃碼下載APP

Solana釣魚詐騙研究報告

閱讀本文需 18 分鐘
Solana生態目前主要流行四種釣魚詐騙場景:空投詐騙、釣魚簽名、權限轉移、地址投毒,本文將分別展開介紹這四種形態的釣魚案例及其原理。
原文標題:《Solana 釣魚詐騙研究報告》
原文來源:Goplus


簡介


近期,Solana 生態的釣魚以及詐騙事件依舊頻發不斷,隨著該生態的迅速增長,大量的黑灰產也開始轉移陣地,他們通過更高級的技術手段和更隱藏的釣魚手法持續的攻擊Solana 的普通用戶。各種類型的釣魚詐騙層出不窮,近半年來,GoPlus 安全團隊透過大量的案例研究,發現了目前主要流行的四種釣魚詐騙場景:空投詐騙、釣魚簽名、權限轉移、地址投毒,本文將分別展開介紹這四種形態的釣魚案例及其原理。同時,我們也收到了大量用戶反映的情況,在 Solana 的一些主流錢包裡,某些釣魚詐騙的交易的模擬失效導致造成用戶資損,本文同時會對這項技術進行深度解析。


詐騙場景解析


空投詐騙


首先,空投詐騙是指釣魚者在Twitter、Discord 等社群中投放偽裝成空投活動的釣魚網站連結。


惡意連結投放


其中,針對NFT 的鏈上空投釣魚,是釣魚者向用戶空投關聯了釣魚連結的NFT,並誘使用戶點擊連結並簽署惡意交易。下圖給出了一個案例,該用戶收到了一個聲稱可以兌換1,000 個ZERO 代幣的NFT,然後這個用戶點擊了NFT 中的鏈接並簽署交易,後面用戶就發現他錢包中的BONK、ZERO、USDT等代幣都被偷了。


鏈上空投釣魚NFT


空投詐騙的原則相對簡單,也就是釣魚者透過虛假的空投活動,誘使用戶進入網站並簽署將錢包連結到該網站的交易。此時,網站將發起包含一個或多個 SOL/SPL Token 轉帳指令的釣魚交易,以取得使用者的數位資產。一個指令和多個指令進行轉帳也有差別。比較簡單的釣魚,如左圖展示的這樣,就是一筆交易,只轉一種類型的代幣。而更複雜的釣魚如右圖所示,它可以做到在一筆交易裡包含很多轉帳指令。


一個指令/多個指令轉帳


釣魚簽名


第二類詐騙是釣魚簽章。一些有經驗的用戶會透過觀察錢包的模擬交易結果,來避免空投釣魚,然而,釣魚者便利用了這一點,採用反模擬和偽造模擬技術來迷惑用戶,從而增加惡意交易被簽名的可能性。具體的,透過合併交易、惡意瀏覽器插件等反模擬的手段(下文將會重點介紹),使得錢包軟體顯示虛假的收益結果,甚至是不顯示模擬結果,從而誘導用戶簽署釣魚交易。


權限轉移


第三類詐騙是權限轉移。首先,Solana 上 SPL Token 的 approve 操作並不會直接導致代幣轉移,但會導致代幣資產的權限轉移。因此,釣魚者透過誘導用戶簽署包含 approve 的釣魚交易,使得用戶錢包中的某個代幣帳戶所有權,轉移到釣魚者的錢包。當代幣帳戶所有權發生轉移時,如下圖所示,此時主流錢包軟體會發出所有權轉移的警告提示。


代幣帳戶所有權轉移的警告


權限轉移的原理是,由於Solana 中的每一種代幣,都會有一個單獨的帳戶Token Account。駭客他透過發起包含 createSetAuthorityInstruction 操作的交易,就能改變代幣帳戶的擁有者。該操作一旦成功,就算代幣還在錢包中,用戶也無法將代幣轉出。


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」的前綴,那麼就將該前綴寫入此指令中,便可取得。


虛假系統Program 位址投毒案例


虛假系統Program 位址產生案例


錢包模擬交易及反模擬


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 生態的長期穩定和健康發展。


本文來自投稿,不代表 BlockBeats 觀點。


歡迎加入律動 BlockBeats 官方社群:

Telegram 訂閱群:https://t.me/theblockbeats

Telegram 交流群:https://t.me/BlockBeats_App

Twitter 官方帳號:https://twitter.com/BlockBeatsAsia

举报 糾錯/舉報
選擇文庫
新增文庫
取消
完成
新增文庫
僅自己可見
公開
保存
糾錯/舉報
提交