近日,慢霧安全團隊和 Rabby Wallet 團隊發現一種利用 Google 廣告進行釣魚的攻擊手法。隨後,慢霧安全團隊聯合 Rabby Wallet 團隊對該攻擊手法展開深入分析。
(前情提要:惡劣!《六人行》馬修派瑞 X (推特)遭駭,偷埋加密貨幣釣魚詐騙連結)
(背景補充:最容易上鉤的Web3詐騙》Google加密貨幣釣魚廣告猖獗,如何自保?)
根據 Rabby Wallet 團隊的描述,團隊並未購買任何 Google 廣告,然而這個假廣告卻跳轉到了真正官網,莫非釣魚團伙花錢推廣真錢包?
從 Google 搜尋關鍵字情況來看,排在前兩位的搜尋結果都為釣魚廣告,然而第一條廣告的連結卻很反常,它顯示的明明是 Rabby Wallet 的官方網站地址 https://rabby.io,釣魚團伙為什麼要這麼做呢?
通過追蹤發現,釣魚廣告有時會跳轉到真正官方地址 https://rabby.io,而在多次更換代理到不同地區後,則會跳轉到釣魚地址 http://rebby.io,並且該釣魚地址會更新改變。在編寫本文時,該連結跳轉到釣魚地址 https://robby.page [.] link/Zi7X/?url=https://rabby.io?gad_source=1。
技術分析
我們先說下什麼是 302,302 是一種 HTTP 狀態程式碼,代表臨時重定向 (Found)。當伺服器收到客戶端的請求後,如果需要臨時將請求的資源轉移到另一個位置,就會返回 302 狀態碼,同時在響應頭中包含一個 Location 欄位,指示客戶端應該重定向到的新位置。這種重定向是臨時性的。
經過分析發現,該釣魚廣告的連結會經過多次的 302 跳轉,如下圖所示,使用 curl 命令請求該連結,第一次會 302 跳轉到釣魚地址 https://rabby.iopost.ivsquarestudio.com,然而在第二次 302 跳轉時卻出現了兩種情況:
1. 當我們使用 curl 命令請求上述 Location 地址 https://rabby.iopost.ivsquarestudio.com,會 302 跳轉到真正官方地址 https://rabby.io。
2. 但是,在我們使用 curl 命令模擬正常瀏覽器請求上述 Location 地址 https://rabby.iopost.ivsquarestudio.com 的情況下(攜帶請求頭包括 User-Agent、Accept、Referer、Accept-Encoding 等欄位),則會 302 跳轉到一個新的 Location 地址 https://dnovomedia.com?uid=087aa42d-724b-4a1e-bae7-f1f700ce71e6。
由此可見,釣魚連結在第二次 302 跳轉時會進行一次判斷,當檢測到非正常瀏覽器的請求時,會重定向到官方地址;而檢測到正常瀏覽器的請求行為並且地區合理,則重定向到釣魚地址。
我們追蹤發現最後一次跳轉的釣魚地址為 https://rabbyo.com/index.php?uid=087aa42d-724b-4a1e-bae7-f1f700ce71e6。
開啟該釣魚連結,發現這個釣魚頁面幾乎克隆了真官網網頁的大部分內容:
通過追蹤 302 跳轉,我們發現以下釣魚連結地址:
https://robby.page.link/Zi7X
https://rabby.iopost.ivsquarestudio.com
https://dnovomedia.com?uid=087aa42d-724b-4a1e-bae7-f1f700ce71e6
通過威脅情報平臺查詢 rebby.io 和 rabbyo.com 這兩個釣魚域名,發現它們的註冊時間均在 2024 年 1 月份。
木馬分析
檢視程式碼,發現攻擊者使用的是俄語:
釣魚部署後臺程式使用 Fastpanel(Fastpanel 是俄語地區主機商開發的虛擬主機管理面板):
接著對釣魚網頁的原始碼進行審查發現,點選下載桌面版本會進行一次客戶端校驗:
如果檢查發現當前環境為 Mac 電腦,則會跳轉到下載地址 https://brandsrocket.com/data/rabby-wallet-desktop-installer-x64-latest.dmg。
可以發現該木馬程式佔用的儲存空間非常小,只有 1.1 MB:
將木馬程式上傳到線上威脅分析網站上進行分析,發現該木馬樣本在編寫本文 19 天前已經被分析過,並被多個防毒引擎識別為木馬後門程式。
釣魚背後的技術
可以看到,從廣告投放到釣魚網站製作,再到木馬製作,釣魚團伙一套操作下來行雲流水。讓人看不懂的是,為何Google搜尋的廣告資訊顯示的是官方地址?又為何後續經過了多次的 302 跳轉?分析發現,關鍵操作在於釣魚團伙利用了 Google 自家的 Firebase 短連結服務的 302 跳轉來欺騙Google的展示。
為了使這個過程更清楚,我們還需要先了解 Google 廣告的投放機制(只要擁有Google帳號,就可以登入Google的廣告管理站點 https://ads.google.com 進行推廣設定):
1. 首先,需要在廣告管理站點新建一個目標為網站流量,型別為搜尋的廣告系列。
2. 設定廣告投放的價格和投放次數資訊後,選擇廣告投放的地區和語言。這裡也解釋了為什麼在不同地區或者不同語言環境下搜尋關鍵字不一定會出現廣告。
3. 到了關鍵一步,設定追蹤模版。追蹤模板是 Google Ads 的一項高階功能,允許第三方追蹤廣告連結。
我們注意到釣魚頁面用的第一個跳轉連結域名為 page.link,這個其實是Google的 Firebase 的一個短地址服務,該服務允許繫結任意的重定向地址到 page.link 的一個子域名中。
由於第三方追蹤連結需要是經過Google認證過的地址,而 page.link 剛好是Google自家的域名,於是釣魚團伙繞過了這個限制。
4. 廣告投放出去後,由於Google並不會即時檢查 302 跳轉的連結是否發生了改變,也不會即時修改廣告資訊,因此釣魚團伙會在廣告投放一段時間後,修改重定向到釣魚網址。
類似的釣魚套路還出現在各種聊天軟體上。以 Telegram 這款聊天軟體為例,當聊天時傳送一個 URL 連結,Telegram 後臺會抓取 URL 連結域名、標題和圖示進行預覽展示。
然而,在抓取預覽資訊時,Telegram 並沒有阻止 302 跳轉。因此,如果使用者只根據頁面的資訊判斷,然後點選連結,則可能跳轉到預設的釣魚地址中。
總結
請廣大使用者認準 Rabby 錢包官方地址 https://rabby.io,不可相信任何搜尋結果顯示出來的廣告投放地址;如果不幸中招,請第一時間轉移錢包資金,並對個人電腦進行全面的防毒排查;平常在點選網站連結前要保留一份懷疑。
📍相關報導📍
微策略X(推特)遭駭!發幣$MSTR釣魚連結竊千萬,Michael Saylor如何回應?