NFT資安 | 慢霧:揭露瀏覽器惡意書籤,如何盜取你的 Discord Token?

區塊鏈的世界遵循黑暗森林法則,在這個世界我們隨時可能遭受到來自不明的外部攻擊,作為普通用戶不進行作惡,但是了解駭客的作惡的方式是十分必要的。
(前情提要:無聊猿、Doodles等 Discord 群遭駭客入侵、發假公告釣魚;Ticket Tool 驗證 bug 遭利用
(背景補充:BAYC、Doodle…等 Discord 群遭駭,用戶該如何自保?必知的防詐騙守則、取消機器人授權

 


霧安全團隊(SlowMist)此前發布了區塊鏈黑暗森林自救手冊,其中提到了不少關於針對 NFT 項目方的 Discord 進行攻擊的手法,為了幫助讀者對相關釣魚方式有更清晰的認知。

本文將揭露其中一種釣魚方法,即通過惡意的書籤來盜取項目方 Discord 帳號的Token,用來發布虛假訊息等誘導用戶訪問釣魚網站,從而盜取用戶的數位資產。

釣魚事件

先來回顧一起 Discord 釣魚事件:2022 年 3 月 14 日,一則推特稱 NFT 項目 Wizard Pass 的 Discord 社群被詐騙者入侵,目前已造成 BAYC、Doodles、Clone X 等 NFT 被盜,詳情如下:

(來源:https://twitter.com/SerpentAU/status/1503232270219431941 )

牽出其中一個解讀:

(來源:https://twitter.com/sentinelwtf/status/1496293768542429187)

該解讀裡說的 bookmark 就是瀏覽器書籤,這個書籤裡的內容可以是一段 JavaScript 惡意原始碼。

當 Discord 用戶點擊時,惡意 JavaScript 原始碼就會在用戶所在的 Discord 域內執行,盜取 Discord Token,攻擊者獲得項目方的 Discord Token 後就可以直接自動化接管項目方的 Discord 帳戶相關權限。

背景知識

要理解該事件需要讀者有一定的背景知識,現在的瀏覽器都有自帶的書籤管理器,在提供便利的同時卻也容易被攻擊者利用。通過精心建造惡意的釣魚頁面可以讓你收藏的書籤中插入一段 JavaScript 原始碼,當受害者點擊書籤時會以當前瀏覽器標籤頁的域進行執行。

以上圖為例,受害者打開了 discord.com 官網,並在這個頁面點擊了之前收藏的惡意的書籤「Hello,World!」從而執行了一個彈窗語句,可以發現執行的源顯示的是 discord.com。

這裡有一個域的概念,瀏覽器是有同源策略等防護策略的,按理不屬於 discord.com 做出的操作不應該在 discord.com 域的頁面有響應,但書籤卻繞過了這個限制。

可以預見書籤這麼個小功能隱含的安全問題,正常添加書籤的方式會明顯看到書籤網址:

稍微有安全意識的讀者應該會直接看到網址訊息明顯存在問題。

當然如果是一個構造好誘導你拖拽收藏到書籤欄到頁面呢?可以看到 twitter 鏈接中的演示影片就是構造了這麼個誘導頁面:「Drag this to your bookmarked」。

也就是拖著某個鏈接即可添加到書籤欄,只要釣魚劇本寫得足夠真實,就很容易讓安全意識不足的用戶中招。

要實現拖曳即可添加到書籤欄只需要構造一個 a 標籤,下面是示例原始碼:

a href="javascript: (() => {   alert('Hello, World!'); })();">
 Hello, World!
a>

書籤在點擊時可以像在開發者工具控制台中的原始碼一樣執行,並且會繞過 CSP(Content Security Policy)策略。

讀者可能會有疑問,類似「javascript:()」 這樣的鏈接,在添加進入到瀏覽器書籤欄,瀏覽器竟然會沒有任何的提醒?

筆者這裡以谷歌和 Firefox 兩款瀏覽器來進行對比。

使用谷歌瀏覽器,拖曳添加正常的 URL 鏈接不會有任何的編輯提醒。

使用谷歌瀏覽器,拖曳添加惡意鏈接同樣不會有任何的編輯提醒。

使用火狐瀏覽器如果添加正常鏈接不會有提醒。

使用火狐瀏覽器,如果添加惡意鏈接則會出現一個窗口提醒編輯確認保存。

由此可見在書籤添加這方面火狐瀏覽器的處理安全性更高。

場景演示

演示採用的谷歌瀏覽器,在用戶登錄 Web 端 Discord 的前提下,假設受害者在釣魚頁面的指引下添加了惡意書籤,在 Discord Web 端登錄時,點擊了該書籤,觸發惡意原始碼,受害者的 Token 等個人訊息便會通過攻擊者設置好的 Discord webhook 發送到攻擊者的頻道上。

下面是演示受害者點擊了釣魚的書籤:

下面是演示攻擊者編寫的 JavaScript 原始碼獲取 Token 等個人訊息後,通過 Discord Server 的 webhook 接收到。

筆者補充幾點可能會產生疑問的攻擊細節:

1. 為什麼受害者點了一下就獲取了?

通過背景知識我們知道,書籤可以插入一段 JavaScript 腳本,有了這個幾乎可以做任何事情,包括通過 Discord 封裝好的 webpackChunkdiscord_app 前端包進行訊息獲取,但是為了防止作惡的發生,詳細的攻擊原始碼筆者不會給出。

2. 為什麼攻擊者會選擇 Discord webhook 進行接收?

因為 Discord webhook 的格式為

「https://discord.com/api/webhooks/xxxxxx」,直接是 Discord 的主域名,繞過了同源策略等問題,讀者可以自行新建一個 Discord webhook 進行測試。

3. 拿到了 Token 又能怎麼樣?

拿到了 Token 等同於登錄了 Discord 帳號,可以做登錄 Discord 的任何同等操作,比如建立一個 Discord webhook 機器人,在頻道裡發佈公告等虛假消息進行釣魚。

總結

攻擊時刻在發生,針對已經遭受到惡意攻擊的用戶,建議立刻採取如下行動進行補救:

1. 立刻重置 Discord 帳號密碼。

2. 重置密碼後重新登錄該 Discord 帳號來刷新 Token,才能讓攻擊者拿到的 Token 失效。

3. 刪除並更換原有的 webhook 鏈接,因為原有的 webhook 已經洩露。

4. 提高安全意識,檢查並刪除已添加的惡意書籤。

作為用戶,重要的是要注意任何添加操作和原始碼都可能是惡意的,Web 上會有很多的擴展看起來非常友好和靈活。書籤不能阻止網路請求,在用戶手動觸發執行的那一刻,還是需要保持一顆懷疑的心。

本文到這邊就結束了,慢霧安全團隊將會揭露更多關於黑暗森林的攻擊事件,希望能夠幫助到更多加密世界的人。

Azuki 投資者中招!詐騙仔駭入Twitter藍勾勾帳號,假冒官方空投 BEANZ NFT 釣魚


文章来源于互联网:NFT資安 | 慢霧:揭露瀏覽器惡意書籤,如何盜取你的 Discord Token?

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。

Previous post SBF大談系列》評 BNB 自動銷毀:很酷的機制;銷毀不影響價格,但價格影響銷毀
Next post 貨幣觀點 | 通貨膨脹,同時也在竊取你的時間資源