Skip to main content

從假視訊會議到瀏覽器間諜:一起 macOS 長期潛伏入侵的鑑識個案研究

一起潛伏 193 天、針對 macOS 加密貨幣使用者的入侵鑑識個案研究,從假會議到結合 Native Messaging 的間諜擴充功能。

作者: 匿名(去識別化個案研究) 版本: 2026 年 11 月,公開版 分類: 數位鑑識;惡意程式分析;社交工程;瀏覽器安全


摘要

近年以加密貨幣持有者為目標的進階持續性威脅(APT),愈來愈常以「視訊會議邀約」作為初始入侵手段。本文以一台實際遭入侵的 macOS 主機為對象,透過現場鑑識(live-response forensics)重建一起從 Telegram 會議邀約開始、潛伏長達 193 天的入侵事件。研究發現,攻擊者先以偽造的 Microsoft Teams 會議頁面及偽造的系統密碼對話框取得使用者密碼,在約四分鐘內植入具 root 權限的後門與 LaunchDaemon 持久化機制;31 天後,再透過該後門於全部四個 Chrome 使用者設定檔植入一個偽裝成「Google 文件離線版」的 Manifest V3 擴充功能,並搭配未簽章的原生訊息主機(Native Messaging Host)。該擴充功能每 30 秒外傳全部網站 Cookie,並具備鍵盤與剪貼簿側錄、螢幕擷取、任意腳本注入及遠端 Shell 執行能力,足以解釋受害者 Telegram 帳號在未洩漏兩步驟驗證的情況下仍遭接管。本文進一步以 DNS 解析日誌的名稱雜湊進行關聯分析,證實系統層後門與瀏覽器擴充功能共用同一個 C2 網域,並記錄攻擊者偽造擴充功能時間戳記的反鑑識手法。研究最後提出可行的偵測啟發式規則,並討論以 Session 竊取為核心的攻擊為何使傳統的密碼加 2FA 防禦失效。所有受害者識別資訊均已移除,時間一律以 UTC 表示。

關鍵字: macOS 惡意程式、社交工程、瀏覽器擴充功能、Native Messaging、Session 劫持、BlueNoroff、數位鑑識、加密貨幣


1. 緒論

1.1 研究動機

針對 Web3 從業者與加密貨幣持有者的攻擊,已從傳統的釣魚郵件演變為高度客製化的即時社交工程。公開報告指出,北韓背景的 BlueNoroff 組織至少自 2023 年起便以假視訊會議為誘餌,鎖定 macOS 使用者 [1][2];2025 年亦有事件顯示攻擊者在會議中使用深偽(deepfake)影像,並誘使受害者下載偽裝成「Zoom 擴充功能」的 AppleScript [3][4]。

現有公開資料多著重於初始入侵鏈與第一階段酬載,對於入侵後長期潛伏期間攻擊者如何擴張控制面、以及系統層後門如何與瀏覽器層元件協同運作的完整紀錄相對較少。本文以一起真實個案補足此缺口。

1.2 研究問題

  • RQ1:攻擊者如何從一次會議邀約,取得 macOS 主機的 root 權限與持久化能力?
  • RQ2:在長期潛伏期間,攻擊者部署了哪些額外元件?這些元件之間如何協作?
  • RQ3:在啟用兩步驟驗證的情況下,受害者的即時通訊帳號為何仍遭接管?
  • RQ4:有哪些可觀測的主機層特徵,可供防禦者用於偵測同類攻擊?

1.3 貢獻

  1. 完整重建一起潛伏 193 天之 macOS 入侵事件的時間軸與攻擊鏈(第 4.1–4.2 節)。
  2. 以原始碼層級分析一個結合 Native Messaging 遠端 Shell 的瀏覽器間諜擴充功能(第 4.4 節)。
  3. 提出以 DNS 日誌名稱雜湊進行跨程序 C2 關聯的方法(第 4.5 節)。
  4. 記錄擴充功能時間戳記偽造之反鑑識手法,並提出判別依據(第 4.6 節),以及僅由全機特徵掃描發現的 root 鏡像目錄(第 4.7 節)。
  5. 歸納六項可落地的偵測啟發式規則(第 6.3 節)。

2. 背景與相關研究

2.1 BlueNoroff 與假會議行動

BlueNoroff(亦稱 TA444、APT38 相關群體)一般被視為 Lazarus 集團中以金融與加密資產竊取為主要目標的子團體。Kaspersky 於 2025 年 10 月公開的 GhostCall/GhostHire 研究指出,GhostCall 行動主要鎖定 macOS,透過 Telegram 與 LinkedIn 接觸目標,以假 Zoom/Microsoft Teams 用戶端及多條感染鏈部署竊密套件 [1][2]。Huntress 於 2025 年 6 月處理的事件中,攻擊者先以偽造的 Zoom 網域主持會議,再以「麥克風故障需安裝擴充功能」為由,誘使受害者執行名為 zoom_sdk_support.scpt 的 AppleScript,後續部署包含鍵盤側錄與後門在內的多個酬載 [3][4]。

2.2 瀏覽器擴充功能與 Native Messaging

Chrome 擴充功能可透過 Native Messaging 機制,與本機上註冊的原生程式以 stdin/stdout 交換 JSON 訊息。在 macOS 上,主機的註冊檔(manifest)放在使用者層或系統層的特定目錄,並以 allowed_origins 限定可呼叫的擴充功能 ID [5]。這個機制本來是讓密碼管理器等合法軟體使用,但一旦攻擊者同時控制擴充功能與原生主機,瀏覽器沙箱就形同被打穿:擴充功能能夠在本機執行任意指令。

2.3 Session 劫持與 2FA 的侷限

兩步驟驗證保護的是「登入」這個動作;登入後,網站通常以 Cookie 或 localStorage 中的權杖維持登入狀態。攻擊者若直接竊取這些權杖,即可在不知道密碼、也不需要 2FA 的情況下沿用受害者的登入狀態。MITRE ATT&CK 將此類行為歸類為 T1539(竊取網頁 Session Cookie)與 T1550.004(使用網頁 Session Cookie)[6]。


3. 研究方法

3.1 研究對象與情境

研究對象為一台搭載 macOS 26.x 的 Apple 筆記型電腦,使用者為具管理員權限的單一帳號。受害者自述曾於 2026 年 4 月經 Telegram 受邀參加視訊會議並安裝軟體,之後 Telegram 帳號遭盜用。調查於 2026 年 11 月進行,當時主機仍在日常使用中。

3.2 鑑識方法

本研究採用現場鑑識,分為四個階段:

  1. 唯讀蒐證:先讀取資料,任何修改之前都以 SHA-256 記錄雜湊值,並將樣本加密封存。
  2. 假設驅動分析:以受害者提供的時間範圍為起點,比對檔案系統的建立時間(birthtime),建立候選事件。
  3. 全面掃描:不受時間假設限制,對全部持久化位置、全機未簽章的 Mach-O 執行檔、所有應用程式的簽章完整性、隱私權限(TCC)資料庫、網路設定與憑證進行系統性檢查。
  4. 多輪複查:清除後進行三輪獨立複查,每一輪採用不同的偵測角度。

3.3 資料來源

資料來源 用途
APFS 檔案建立時間與修改時間 重建事件時間軸
launchd 設定與背景項目資料庫(BTM) 找出持久化機制
codesign/spctl 驗證簽章與公證狀態
Chrome Secure Preferences 與擴充功能目錄 判斷擴充功能來源與安裝方式
macOS 統一日誌(mDNSResponder、kernel、launchd) 觀察 C2 活動與清除效果
lsof 觀察即時網路連線
LaunchServices 隔離資料庫(QuarantineEventsV2) 下載紀錄
擴充功能 JavaScript 原始碼 靜態分析其能力

3.4 研究倫理與去識別化

本文已移除主機名稱、使用者名稱、受害者專屬識別碼、個人軟體清單與證據存放路徑,所有時間一律轉換為 UTC。受害者截圖中的影像不予公開。惡意樣本僅供研究人員與執法單位私下取得。


4. 個案分析

4.1 入侵時間軸

timeline
    title 入侵事件時間軸(UTC)
    2026-04-24 08h03 : 假密碼視窗元件出現
                     : Staging 目錄建立
    2026-04-24 08h04 : 受害者截圖 - 假 Teams 等候頁
    2026-04-24 08h06 : root 後門 cloudsync 寫入
    2026-04-24 08h07 : LaunchDaemon 持久化建立
    2026-05-05 : 第二階段加密資料
    2026-05-25 03h40 : 間諜擴充功能與 Native Host 植入
    2026-06-03 : 第二階段執行檔 .authds
    2026-06-23 : LaunchAgent 更新
    2026-11-03 : 偵測、遏止與根除

表 1:關鍵事件(UTC)

時間 事件 證據
2026-04-24 08:03:01 建立 ~/Library/Staging、ammad.Mac-Password-Popup 檔案建立時間
2026-04-24 08:04:47 受害者截圖:偽造的 Teams 等候頁 截圖檔
2026-04-24 08:05:16 建立 ~/Library/Identification/、Authorization/auth.db 檔案建立時間
2026-04-24 08:06:28 寫入 root 擁有的未簽章 Mach-O cloudsync(7.26 MB) 檔案建立時間、codesign
2026-04-24 08:07:18 建立 /Library/LaunchDaemons/com.safari.sync.service.plist 檔案建立時間
2026-05-05 11:30 寫入 /Users/Shared/.apple.auth 檔案建立時間
2026-05-25 03:40:46 植入擴充功能與 Native Host;data.js 內嵌受害者識別資訊 檔案建立時間
2026-06-03 00:20 寫入 /Users/Shared/.authds(5.24 MB,曾被執行) 檔案建立時間、xattr
2026-06-23 03:17:32 以 root 身分建立鏡像目錄 /Users/root/Library/(含 Identification/ 與 Authorization/auth.db),同一秒產生一筆 TCC 臨時簽章快取紀錄 檔案建立時間、TCC AdhocSignatureCache
2026-06-23 05:39:36 /Users/root/.../auth.db 被修改,同步產生另一筆 TCC 快取紀錄 檔案修改時間、TCC AdhocSignatureCache
2026-06-23 10:59 更新 com.apple.google.auth.plist 檔案修改時間
2026-11-03 11:27 終止後門並移除持久化 統一日誌

表 2:潛伏期量化指標

指標 數值
從初始入侵到偵測(dwell time) 193 天
從頁面截圖到 root 持久化建立 約 2.5 分鐘
從初始入侵到植入瀏覽器擴充功能 31 天
擴充功能運作時間 162 天
後門回報頻率 每 60 秒一次(每日 1,440 次)
Cookie 外傳頻率 每 30 秒一次(每日 2,880 次;162 天約 46.7 萬次)
受影響的 Chrome 設定檔 4/4

4.2 攻擊鏈(回答 RQ1)

sequenceDiagram
    autonumber
    actor A as 攻擊者
    participant TG as Telegram
    actor U as 受害者
    participant W as 偽造會議網頁
    participant OS as macOS
    participant BD as cloudsync 後門
    participant CH as Chrome 間諜擴充功能
    participant NH as Native Host
    participant C2 as C2 check02id.com

    A->>TG: 以商務名義邀約視訊會議
    TG->>U: 會議連結
    U->>W: 進入偽造 Teams 等候頁
    W->>U: 提示需更新音訊元件或 SDK
    U->>OS: 執行下載內容
    OS->>U: 假系統密碼對話框
    U->>OS: 輸入登入密碼
    Note over OS: 密碼外洩後以 sudo 提權
    OS->>BD: 寫入 root 後門與 LaunchDaemon
    loop 每 60 秒
        BD->>C2: 回報(TCP 5202)
    end
    BD->>CH: 第 31 天植入擴充功能(4 個設定檔)
    BD->>NH: 植入並註冊 Native Host
    loop 持續 162 天
        CH->>C2: Cookie、localStorage、鍵盤記錄、截圖
        C2-->>CH: WebSocket 即時指令
        CH->>NH: 遠端 Shell 指令
    end
    A->>TG: 以竊得的 Session 接管帳號

攻擊鏈有一個關鍵特徵:取得密碼的時機早於提權。假密碼對話框(Mac-Password-Popup)在 08:03 就已出現,root 檔案則在 08:06 才寫入,這與「以使用者輸入的密碼執行 sudo」的模型一致。整個過程不需要任何零時差漏洞,完全建立在使用者的信任之上。

4.3 惡意元件架構(回答 RQ2)

flowchart TB
    subgraph Host["受害主機 (macOS)"]
        direction TB
        subgraph P["持久化層"]
            LD["LaunchDaemon<br/>com.safari.sync.service"]
            LA["LaunchAgent<br/>com.apple.google.auth"]
        end
        subgraph S1["第一階段 (root)"]
            CS["cloudsync<br/>未簽章 Mach-O 7.26MB"]
            ENV[".com.apple.better.env<br/>加密設定"]
        end
        subgraph S2["第二階段"]
            AD[".authds<br/>未簽章 Mach-O 5.24MB"]
            AA[".apple.auth<br/>加密資料"]
        end
        subgraph B["瀏覽器層"]
            EXT["偽 Google 文件離線版<br/>MV3 擴充功能"]
            NMH["google.chrome.diagnostics<br/>未簽章 Native Host"]
        end
    end
    C2[("C2<br/>check02id.com")]
    LD -->|開機執行| CS
    CS --> ENV
    CS -->|下載| AD
    CS -->|下載| AA
    CS -->|植入| EXT
    CS -->|植入| NMH
    EXT <-->|nativeMessaging| NMH
    CS <-->|TCP 5202| C2
    EXT <-->|TCP 5078 / 8443| C2

這套架構可以理解為兩層互補的控制面:

  • 系統層(cloudsync):擁有 root 權限與持久性,但看不到瀏覽器裡加密的 Session。
  • 瀏覽器層(擴充功能):直接拿得到 Cookie、頁面內容與使用者輸入,再藉由 Native Host 取得本機的指令執行能力。

由於兩層分別回報、各有通道,就算其中一層被清除,另一層仍然能維持部分控制。實際調查也驗證了這一點:第一輪清除系統層後門後,擴充功能仍持續與 C2 連線,直到第二輪複查才被發現。

4.4 瀏覽器間諜擴充功能分析(回答 RQ3)

classDiagram
    class FakeDocsOfflineExtension {
        +id ppconlkbhfnachephglhgbhdgeapgjoj
        +manifest_version 3
        +location 4 非商店安裝
        +host_permissions all_urls
        +permissions cookies history tabs scripting desktopCapture pageCapture nativeMessaging
    }
    class ContentScript1 {
        +keydown 鍵盤側錄
        +copy_paste 剪貼簿側錄
        +click 觸發截圖
        +visibilitychange 上傳 localStorage
    }
    class ContentScript2 {
        +攔截 Google Meet 加入按鈕
        +誘導授予螢幕錄製權限
    }
    class BackgroundWorker {
        +f3 每 30 秒上傳全部 Cookie
        +keylog 每 60 秒上傳
        +capture 每 6 秒截圖
        +cmd4 清除指定網站 Session
        +cmd11 上傳瀏覽紀錄
        +cmd13 注入任意 JavaScript
        +cmd14_15_16 遠端 Shell
        +cmd17 MHTML 頁面擷取
    }
    class NativeHost {
        +未簽章 x86_64
        +執行 payload
    }
    FakeDocsOfflineExtension *-- ContentScript1
    FakeDocsOfflineExtension *-- ContentScript2
    FakeDocsOfflineExtension *-- BackgroundWorker
    BackgroundWorker --> NativeHost : sendNativeMessage

靜態分析擴充功能原始碼後,本研究歸納出三項對 RQ3 特別關鍵的能力:

  1. Session 竊取(f3、cmd3):每 30 秒以 chrome.cookies.getAll({}) 取得全部 Cookie(包含 HttpOnly),Base64 編碼後外傳。
  2. localStorage 外傳:每次頁面切換都會上傳該網站的 localStorage。Telegram Web 等單頁應用程式將登入權杖存在 localStorage,因此這是受害者 Telegram 遭接管最可能的途徑。
  3. 強迫重新登入(cmd4):攻擊者可以清除特定網站的 Cookie 與儲存資料,逼受害者重新登入,再搭配鍵盤側錄取得新輸入的密碼。這是一種「先讓 Session 失效、再收割憑證」的組合戰術。

此外,content-script2.js 會攔截 Google Meet 的「立即加入」按鈕,在受害者按下時順勢誘導授予螢幕錄製權限。這顯示攻擊者刻意利用「使用者正要加入會議」的情境,讓權限請求看起來合理。

4.5 C2 基礎設施關聯

macOS 統一日誌會以雜湊值遮蔽 DNS 查詢的網域名稱。本研究發現,在同一個開機期間內,cloudsync(PID 543)查詢的網域雜湊值,與 Chrome 程序查詢次數高達 14,202 次的網域雜湊值完全相同;而 Chrome 端的網域,已由擴充功能設定檔確認為 check02id.com。

因此可以推論,系統層後門(連接埠 5202)與瀏覽器擴充功能(連接埠 5078/8443)共用同一個 C2 網域,只以不同的連接埠區分用途。這個方法讓研究者在無法逆向工程封裝過的二進位檔時,仍能完成跨程序的基礎設施關聯。

4.6 反鑑識:時間戳記偽造

擴充功能目錄內有部分檔案的建立時間顯示為 2025-10-16,Secure Preferences 中記錄的安裝時間則是 2025-08-13,兩者都早於初始入侵。本研究以四點證據判斷這些時間是偽造的:

  1. 2025-10-16 當天,全機都找不到任何惡意活動或可疑下載。
  2. 內嵌受害者主機名稱的 data.js、以及 Native Host 執行檔,建立時間都是 2026-05-25 03:40:46。這些檔案必須在受害者主機上才能產生。
  3. 子目錄的建立時間早於父目錄,這種狀況符合「從保留原始時間的封存檔解壓縮」,而不是在本機上原生建立。
  4. 全機特徵掃描在 Chrome 的 Service Worker 腳本快取中,找到該擴充功能 background.js 的快取副本,建立時間為 2026-05-25 03:40:51,比 data.js 晚 5 秒,與擴充功能「首次被載入執行」的情境一致。

這個發現代表:只依賴擴充功能的安裝時間做事件鑑識,可能嚴重誤判入侵起點。

4.7 以 root 身分複製的持久化狀態

全機特徵掃描另外找到一個前兩輪人工檢查都沒發現的目錄:/Users/root/Library/。macOS 的 root 家目錄是 /var/root,正常系統不會有 /Users/root。這個目錄由 root 擁有,內部結構與受害者家目錄中的惡意檔案完全相同:一個空的 Identification/,以及內容指向 Identification/.verify 的 Authorization/auth.db。

這個目錄建立於 2026-06-23 03:17:32 UTC,同一秒系統的 TCC 臨時簽章快取也新增了一筆紀錄;auth.db 在 05:39:36 UTC 被修改時,快取又同步新增一筆。可能的解釋是:惡意程式以 root 身分執行時,用「/Users/ 加目前使用者名稱」組出家目錄路徑,而不是讀取系統設定,於是在不存在的 /Users/root 底下重建了一份狀態檔。調查時並沒有任何持久化項目引用這個目錄。

這項發現說明了兩件事:一、以特徵字串進行全機掃描,能補足人工檢查的盲點;二、偵測規則不應只檢查真實使用者的家目錄,/Users/ 底下不對應任何帳號的目錄同樣值得注意。


5. 處置與驗證

stateDiagram-v2
    state "偵測" as D
    state "遏止系統層" as C1
    state "根除系統層" as E1
    state "複查一" as R1
    state "遏止瀏覽器層" as C2s
    state "根除瀏覽器層" as E2
    state "DNS 封鎖" as B
    state "複查二與三" as R2
    [*] --> D
    D --> C1: 發現偽裝 LaunchDaemon
    C1 --> E1: 終止 root 後門
    E1 --> R1: 確認無殘留
    R1 --> C2s: 發現未簽章 Native Host 與 C2 連線
    C2s --> E2: 隔離四個設定檔的擴充功能
    E2 --> B: hosts 封鎖 C2 網域
    B --> R2: 簽章、注入、腳本、日誌全面複查
    R2 --> [*]

表 3:複查範圍與結果

檢查面向 結果
持久化(LaunchAgents/Daemons、登入項目、BTM、cron、登入掛鉤、資料夾動作) 已清除,未見其他
Shell 設定檔、hosts、PAM、sudoers、驗證外掛、核心與系統擴充 未遭修改
全機 2026-04 之後新增的未簽章 Mach-O 惡意者皆已移除
所有應用程式的簽章完整性 無竄改
DYLD 注入、launchd 環境變數 無
帳號、SSH、遠端登入 正常
TCC 隱私權限 無異常授權(Chrome 原本就有的螢幕錄製權限遭擴充功能濫用)
網路設定與受信任憑證 正常
清除後的 C2 活動 無
全機特徵掃描(610,801 個本機檔案;比對 5 個雜湊值與 11 個特徵字串) 雜湊命中 0;字串命中中新發現 /Users/root 鏡像目錄(第 4.7 節,已移除),其餘為 Chrome 快取與連線紀錄、Wi-Fi 晶片記憶體快照,以及調查本身產生的文件

值得注意的是,第一輪清除並不完整。以檔案建立時間為主的初步分析漏掉了瀏覽器層元件,原因正是第 4.6 節所述的時間戳記偽造。直到第二輪改用「全機未簽章 Mach-O 掃描」才找到 Native Host,再循線追到擴充功能。


6. 討論

6.1 Session 竊取讓 2FA 防線失效

本個案說明,在端點已經被入侵的前提下,2FA 的保護範圍有根本上的限制。受害者在帳號被盜後更換密碼,也無法讓攻擊者手上已經持有的 Session 失效;必須在乾淨的裝置上主動撤銷所有工作階段,才能真正切斷存取。對使用者與服務提供者的建議如下:

  • 服務端:將 Session 綁定裝置特徵,偵測異常的 Session 搬移,並對高風險操作要求重新驗證。
  • 使用者端:懷疑遭入侵時,先「登出所有裝置」,之後才改密碼。

6.2 社交工程的情境設計

攻擊者在三個層次精心設計情境:通訊平台(Telegram)、會議品牌(使用者記得是 Zoom,實際截圖則是 Teams),以及權限請求的時機(在 Google Meet 按下「加入」的瞬間)。受害者事後記錯會議品牌,也顯示假會議頁面的品牌細節對使用者來說不容易辨識。

6.3 偵測啟發式規則(回答 RQ4)

編號 規則 本案命中元件
H1 LaunchDaemon/Agent 的 ProgramArguments 是 /bin/sh -c,並指向 ~/Library 或 /Users/Shared 底下的執行檔 兩個持久化 plist
H2 ~/Library 或 /Users/Shared 底下有 root 擁有的未簽章 Mach-O cloudsync、.authds
H3 標籤冒用不同廠商的命名(例如 com.apple.google.*、com.safari.*),但簽章者並非該廠商 com.apple.google.auth、com.safari.sync.service
H4 使用者層 NativeMessagingHosts 底下有未簽章的執行檔 google.chrome.diagnostics
H5 擴充功能 location=4(未封裝)、from_webstore=false,但程式碼放在 Extensions/ 目錄而不是開發者路徑 假文件離線版
H6 擴充功能名稱冒用 Google 官方擴充功能,但 ID 跟官方不同 ppconlk… 對比官方的 ghbmnn…

上述規則都可以用 osquery 或 EDR 實作,誤報率預期不高。H5 與 H6 尤其值得關注,因為它們針對的是瀏覽器層,而傳統 EDR 往往不會深入檢查這一層。

6.4 歸因評估

表 4:與公開報告的比較

本案觀察 公開報告中 BlueNoroff 的手法 [1]–[4]
經 Telegram 邀約假會議 吻合
偽造 Zoom/Teams 會議介面 吻合
以假系統對話框取得密碼 吻合
以 Apple/Google 名義偽裝持久化項目 吻合
鎖定加密貨幣使用者 吻合
瀏覽器擴充功能搭配 Native Host 在本研究檢閱的公開資料中,未見詳細描述

手法吻合程度高,本研究給予「中度信心」。但我們沒有做樣本逆向工程,也沒有比對威脅情資平台,因此不構成正式歸因。


7. 研究限制

  1. 單一個案:研究結果未必能推論到所有同類攻擊。
  2. 沒有逆向工程:cloudsync、.authds 與 Native Host 都是封裝過的二進位檔,本研究只分析了它們的行為與外部特徵。
  3. 日誌保存期限:macOS 統一日誌與 Chrome 瀏覽紀錄(約 90 天)都已經沒有 4 月的資料,所以無法確定最初的誘餌網址與第一階段下載內容。
  4. LaunchAgent 酬載遺失:~/Library/Identification/.verify 在調查時就已不存在,它的功能無法分析。
  5. 全機特徵掃描範圍:掃描跳過了只存在於 iCloud 雲端、沒有下載到本機的檔案。這類檔案無法在本機執行,對結論影響有限。
  6. 歸因限制:如第 6.4 節所述。

8. 結論

本研究以一起潛伏 193 天的 macOS 入侵個案,說明現代假會議攻擊如何在幾分鐘內取得 root 權限,並在潛伏期間把控制範圍擴張到瀏覽器層。研究的主要發現如下:

  • 攻擊靠的是信任,不是漏洞:整個入侵過程沒有使用任何零時差漏洞,完全倚賴使用者輸入密碼。
  • 兩層控制面互為備援:系統層後門與瀏覽器層間諜擴充功能各自與 C2 通訊,清掉其中一層並不足以根除入侵。
  • Session 竊取讓 2FA 失效:這是即時通訊帳號遭接管最可能的機制。
  • 時間戳記會騙人:攻擊者偽造了擴充功能的時間,只依賴時間線的鑑識方法可能漏掉關鍵元件。

未來研究可以朝三個方向延伸:對 Native Host 的指令協定進行逆向工程;將第 6.3 節的啟發式規則實作成可公開的偵測規則;以及跨多個個案驗證「系統層加瀏覽器層」雙控制面模式的普遍程度。


參考文獻

[1] Kaspersky GReAT. BlueNoroff APT campaigns GhostCall and GhostHire. Securelist, Oct. 2025. https://securelist.com/bluenoroff-apt-campaigns-ghostcall-and-ghosthire/

[2] Kaspersky. “GhostCall and GhostHire: hunting for crypto assets.” Kaspersky Daily, Oct. 2025. https://www.kaspersky.com/blog/bluenoroff-ghostcall-ghosthire-lazarus/54681/

[3] The Hacker News. BlueNoroff deepfake Zoom scam(新聞報導,引述 Huntress 事件分析). Jun. 2025. https://thehackernews.com/2025/06/bluenoroff-deepfake-zoom-scam-hits.html

[4] BleepingComputer. North Korean hackers deepfake execs in Zoom call to spread Mac malware(新聞報導). Jun. 2025. https://www.bleepingcomputer.com/news/security/north-korean-hackers-deepfake-execs-in-zoom-call-to-spread-mac-malware/

[5] Google. “Native messaging.” Chrome for Developers. https://developer.chrome.com/docs/extensions/mv3/nativeMessaging

[6] MITRE. “ATT&CK Enterprise Matrix.” https://attack.mitre.org/


附錄 A:入侵指標(IoC)

網路

類型 指標 說明
網域 check02id.com 後門與擴充功能共用的 C2
IP 83.136.210.180 上述網域的解析結果
連接埠 TCP 5202 後門回報
連接埠 TCP 5078、8443 擴充功能外傳資料與 WebSocket 指令

檔案雜湊(SHA-256)

檔案 SHA-256
cloudsync 4a8059ae03301e8b0397c0c26f8b5d01fb1cb05c2563e1c2f538e11c74d37c3b
.authds 7f2e8e4432d80194aadca7f051e0f243ecf727af4a95bb4fd7af34490e27ea0b
google.chrome.diagnostics 7a0ee74dcdb2d30ef63884e2505799d7f95e670b628a5504f0f292424da37c3d
com.google.chrome.diagnostics.json 2e76e387b1f6a4412ce6840bf1221a1d7de4df619c78b35a4106b9e36dc2fcf4
background.js 764b5681720001dc9af9da4d7aa948abf2bd458336e0bd8ccb1b2d6fcb1d66f0
content-script1.js cac1539fe2e8aa9d2db9928a384554839ae6d597ec61ef01b1089e976035a586
content-script2.js 530e7a28e79c8fc8d1fd651066de29c6926ec187da3d5d132c87539daa32e879
.apple.auth 1b5dc3dda3c4f3b26bb9d19f731b646a794feb095af5fb382f8896c473a8fd7d
.com.apple.better.env d62e7d144cfb2ad761661ec2befcd2aa09ed335faafc279cd51db3a0f4af8551
com.safari.sync.service.plist c189e4a9c69b7f07ce9533646f5bcaac58876da05f11795572a53fabbcb6e758
com.apple.google.auth.plist 5d97e4a0e8da6cff7d85b986d1de71e992bb977119580757d45650ddba527758
/Users/root/.../Authorization/auth.db fc2c4fce5446a04d33d6dfe24014ec088033d4a984bd4d095ee901e633a77c99

主機路徑與識別碼

/Library/LaunchDaemons/com.safari.sync.service.plist
~/Library/LaunchAgents/com.apple.google.auth.plist
~/Library/CloudSync/cloudsync
~/Library/Identification/.verify
~/Library/Staging/
~/Library/Application Scripts/ammad.Mac-Password-Popup/
~/Library/Application Support/Authorization/auth.db
/Users/root/Library/Identification/
/Users/root/Library/Application Support/Authorization/auth.db
/Users/Shared/.authds
/Users/Shared/.apple.auth
/Users/Shared/.com.apple.better.env
~/Library/Application Support/Google/Chrome/NativeMessagingHosts/google.chrome.diagnostics
~/Library/Application Support/Google/Chrome/NativeMessagingHosts/com.google.chrome.diagnostics.json
Chrome 擴充功能 ID:ppconlkbhfnachephglhgbhdgeapgjoj("Google Doc Sheets Offline" v1.97.1)
擴充功能硬編碼 token 前綴:jfweibd234HFIDhfiwef…

附錄 B:MITRE ATT&CK 對應

戰術 技術 本案觀察
初始存取 T1566.003 Spearphishing via Service Telegram 會議邀約
執行 T1204.002 User Execution 受害者執行「更新」
憑證存取 T1056.002 GUI Input Capture 假密碼對話框
權限提升 T1548.003 Sudo 以竊得的密碼寫入 root 檔案
持久化 T1543.004 Launch Daemon com.safari.sync.service
持久化 T1543.001 Launch Agent com.apple.google.auth
持久化 T1176 Browser Extensions 偽造的文件離線版擴充功能
防禦規避 T1036.005 Masquerading 冒用 Apple/Google 命名
防禦規避 T1564.001 Hidden Files /Users/Shared/.authds 等
防禦規避 T1070.006 Timestomp 偽造擴充功能時間
防禦規避 T1027 Obfuscated Files 加密設定、封裝的執行檔
憑證存取 T1539 Steal Web Session Cookie 每 30 秒外傳 Cookie
收集 T1056.001 Keylogging content-script1
收集 T1115 Clipboard Data 複製/貼上側錄
收集 T1113 Screen Capture 每 6 秒截圖
探索 T1217 Browser Information Discovery 上傳瀏覽紀錄
執行 T1059.004 Unix Shell 經 Native Host 執行遠端指令
指揮控制 T1071.001 Web Protocols HTTPS/WebSocket
指揮控制 T1571 Non-Standard Port 5078、5202、8443
外洩 T1041 Exfiltration Over C2 Channel 經 /update 上傳
防禦規避 T1550.004 Web Session Cookie Telegram 帳號遭接管