而本次會引用資安團隊慢霧的概念,和讀者說明 Discord Token 的漏洞,並且揭露駭客如何利用瀏覽器的惡意書籤中盜取用戶的 Discord Token。
使用瀏覽器的惡意書籤釣魚,盜取Discord Token
時間倒轉到 2022 年,一則在 X 關於 NFT 專案 Wizard Pass 的 Discord 群組被駭客入侵,造成 BAYC、Doodles、Clone X 等 NFT 被盗取。
(Original Source https://twitter.com/SerpentAU/status/1503232270219431941)
而貼文出來後,底下有人回覆
回覆裡說到:「Bookmark 是瀏覽器(如 Google Chrome)中的書籤,書籤內容可以包含 JavaScript 程式碼。當 Discord 用戶點擊後,惡意程式會在 Discord 上執行,盜取 Token。駭客取得 Token 後,便能輕易控制專案的 Discord 帳戶及權限。」
慢霧實際拆解案例
下圖為例,受害人打開了 Discord 官網,並在這個頁面點擊了之前收藏的惡意書籤「Hello,World!」,同時彈出一個小視窗,可以發現執行來源是 discord.com。
而點進去後發現,有危機意識的讀者應該會發現這個網址是有問題的。
另外一個手法是,直接誘導使用者將頁面收藏拖曳到書籤欄當中(紅色方框 Drag this to your bookmarked)。
把某個連結拖到書籤欄,就能新增書籤。如果釣魚的文案寫得夠吸引人,很容易讓危機意識不足的使用者上當。
實現這個功能只需要建立一個 a 標籤。以下是範例程式碼:
點擊書籤時可以像在網頁後台程式碼一樣執行,還會繞過內容安全策略(Content Security Policy)。
利用 Google 和 FireFox 瀏覽器進行對比
那 FireFox 呢?
左邊是拖曳正常的 URL 網址和 Google 瀏覽器相同,也不會跳出任何編輯提醒。
反倒右邊,是拖曳惡意網址時,FireFox竟會跳出提醒,讓用戶確認。
代表 FireFox 針對添加書籤這方面安全性較高。
慢霧使用 Google 瀏覽器示範,假設使用者已登入網頁版 Discord,並在釣魚網站引導下加入惡意書籤。
當他點擊書籤後,就會觸發惡意程式碼,使用者的 Token 等個資會透過駭客設定的 Discord webhook ,再傳送到駭客的頻道。
補充可能讓人產生疑問的攻擊細節
為什麼受害者點一下就中招?綜合上述可得知,書籤可以插入一段 JavaScript 程式碼,這幾乎可以做任何事情,包括透過 Discord 的 webpackChunkdiscord_app 前端程式碼模組來獲取資訊。不過,為了避免惡意行為,詳細的攻擊程式碼團隊不會提供。
為什麼攻擊者會選擇用 Discord webhook 接收資料?因為 Discord webhook 的格式為https://discord.com/api/webhooks/xxxxxx,直接使用 Discord 的主域名,這樣可以繞過同源政策等問題。讀者可以自行建立一個 Discord webhook 測試看看。
拿到 Token 之後能做什麼?拿到 Token 就等於登入了 Discord 帳號,也就是能以登入狀態做任何事,像是建立 Discord webhook 機器人,在頻道裡發布公告或假消息進行釣魚攻擊。
建議受害者應立刻採取以下行動補救
立刻重設 Discord 帳號密碼。
重設密碼後,重新登入 Discord 並刷新 Token,這樣駭客手上的 Token 才會失效。
刪除並更換原有的 webhook 連結,因為舊的 webhook 已經外洩。
提高安全意識,檢查可疑書籤並刪除已加入的惡意書籤。
而如果對慢霧針對區塊鏈釣魚詐騙等資安問題感到有興趣,並且想從技術出發的讀者,可以參考慢霧的「區塊鏈黑暗森林自救手冊。」
我們也必須保持警覺,謹慎使用或添加任何的程式碼,以及來路不明的連結。網路上有許多看起來很方便且實用的擴充功能,但書籤無法攔截惡意行為,因此每次手動執行時,都應該保持謹慎,以免遭到駭客入侵。