摘要

本報告針對 HybridPetya 進行全面的技術分析,這是一種複雜的勒索軟體變體,同時展現出 Petya 和 NotPetya 惡意軟體家族的特性。本報告主要著重於其攻擊 UEFI-based 系統的能力,以及如何利用 CVE-2024-7344 繞過易受攻擊平台上的 UEFI Secure Boot。報告詳細介紹了 UEFI bootkit 的執行邏輯、磁碟加密與解密機制,以及用於 NTFS< 分割區識別和主檔案資料表 (MFT) 加密的方法。報告中附有架構圖,以圖示方式說明此惡意軟體的運作流程和關鍵技術程序。本分析目的為提升對進階 bootkit 層級威脅及其對系統安全影響的理解。

直搗韌體核心:解析 HybridPetya 如何透過 UEFI Secure Boot 繞過機制達成持久性攻擊 | 資訊安全新聞

1. 簡介

網路威脅情勢不斷演變,勒索軟體依然是一個重大且持續存在的挑戰。近年來最具破壞性的勒索軟體事件,莫過於 Petya 及其更具破壞力的變種 NotPetya。這些惡意軟體家族以其加密關鍵系統元件,導致受影響系統無法運作的能力而聲名狼藉。本報告深入探討 HybridPetya,這是一種新發現的勒索軟體,它從其前身汲取靈感,同時引入了新的功能,特別是在與統一可延伸韌體介面 (Unified Extensible Firmware Interface, UEFI) 系統的互動方面。

HybridPetya 在一個樣本分享平台(Sample sharing platform)上被發現,顯示其為一種潛在威脅。與其主要鎖定主開機記錄 (Master Boot Record, MBR) 系統的前身不同,HybridPetya 將其攻擊範圍擴展到現代 UEFI-based 環境。這種演變的關鍵層面是它能夠在 EFI 系統分割區 (EFI System Partition, ESP) 上安裝惡意 EFI 應用程式,從而在系統開機過程的極低層次上獲得控制權。此外,據觀察,HybridPetya 的一個變體會將 CVE-2024-7344 武器化,此一漏洞允許其透過一個特製的 cloak.dat 檔案,繞過過時系統上的 UEFI Secure Boot。這種繞過機制代表了勒索軟體能力的一大進步,使此惡意軟體即使在有防止未經授權程式碼在啟動期間執行功能的環境中,也能夠持久存在並執行其 payload。

本文提出的技術分析著重於 HybridPetya 元件的複雜細節,包括其 UEFI bootkit 和安裝程式。我們將探討其執行邏輯、其磁碟加密程序所涉及的特定演算法和檔案,以及它用於識別和加密 NTFS 分割區的方法。本報告也觸及磁碟解密程序,與 NotPetya 不同的是,HybridPetya 允許潛在的 key 重建,使其更像是傳統勒索軟體,而非純粹的資料銷毀器。透過剖析這些技術層面,本報告旨在提供對 HybridPetya 運作機制及其對網路安全防禦影響的清晰而深入的理解。目標是為韌體層級惡意軟體的廣泛知識庫做出貢獻,並為應對此類進階威脅的策略提供資訊。

2. 技術分析

HybridPetya 的架構以其 UEFI bootkit 和安裝程式元件為特點,旨在跨傳統和現代 UEFI-based 系統運作。本節將詳細介紹這些元件,並特別強調 UEFI bootkit 的功能及其對 UEFI Secure Boot 繞過漏洞的攻擊。

2.1 UEFI Bootkit

UEFI bootkit 是負責勒索軟體主要運作的核心元件,包括磁碟加密與解密。已識別出此 bootkit 的兩個不同版本,它們共享類似的功能,但有細微差異。執行時,bootkit 透過從 \\EFI\\Microsoft\\Boot\\config 檔案載入 Configuration 資料來啟動其程序。此 Configuration 檔案至關重要,因為它包含一個加密旗標,用於決定 bootkit 的後續動作。該旗標可以呈現三種狀態之一:

  • 0 :表示系統已準備好進行加密。
  • 1 :表示磁碟已經被加密。
  • 2 :表示贖金已支付,且磁碟已解密。

HybridPetya 的 UEFI bootkit 執行流程如下圖所示:

graph TD A[Start Bootkit Execution] --> B{Load config from
\\\\EFI\\\\Microsoft\\\\Boot
\\\\config} B --> C{Check Encryption Flag} C -- "Flag = 0
(Ready for encryption)" --> D[Extract Salsa20
Key & Nonce] D --> E[Rewrite config:
zero key,
set flag = 1] E --> F[Encrypt
\\\\EFI\\\\Microsoft\\\\Boot
\\\\verify
with Salsa20] F --> G[Create
\\\\EFI\\\\Microsoft\\\\Boot
\\\\counter] G --> H[Identify NTFS Partitions] H --> I[Encrypt MFT] I --> J[Update
\\\\EFI\\\\Microsoft\\\\Boot
\\\\counter &
Fake CHKDSK] J --> K[Reboot Machine] C -- Flag = 1
(Already encrypted) --> L[Display Ransom Note] L --> M[Prompt for
Decryption Key] M --> N{Verify Key} N -- Key Correct --> O[Decrypt MFT] O --> P[Reset config:
set flag = 2] P --> Q[Reboot Machine] N -- Key Incorrect --> L C -- "Flag = 2
(Ransom paid,
disk decrypted)" --> R[Boot Normally]
圖 1. HybridPetya 的執行邏輯

2.1.1 磁碟加密程序

當加密旗標設定為 0,表示系統已準備好進行加密時,bootkit 會執行以下步驟:

  1. key 和 Nonce 提取 :從 Configuration 資料中提取 32 位元組的 Salsa20 加密 key 和 8 位元組的 nonceSalsa20 是一種串流加密,以其速度和安全性而聞名,使其適合用於磁碟加密運作。
  2. Configuration 更新 :Configuration 檔案會立即被覆蓋。提取的加密 key 被歸零,且加密旗標更新為 1,將系統標記為已加密。此步驟對於防止重複加密和標示系統在加密後的狀態至關重要。
  3. 驗證檔案加密 \\EFI\\Microsoft\\Boot\\verify 檔案使用新提取的 Salsa20 key 和 nonce 進行加密。此檔案及其加密的目的沒有明確詳細說明,但可能作為完整性檢查或解密程序的元件。
  4. 計數器檔案建立 :在 EFI 系統分割區上建立一個名為 \\EFI\\Microsoft\\Boot\\counter 的檔案。此檔案透過儲存已加密的磁碟叢集數量,在追蹤磁碟加密進度方面發揮作用。
  5. NTFS 分割區識別 :bootkit 會識別系統上的所有 NTFS 格式化分割區。這涉及一個多步驟的程序,如下圖所示。
graph TD A[Start NTFS
Partition Identification] --> B[Get handles for
connected storage devices] B --> C{For each device handle} C --> D{Check
EFI_BLOCK_IO_MEDIA->LogicalPartition} D -- TRUE --> E{Read first
sector of partition} E -- Read Success --> F{Compare first 4 bytes
with NTFS signature} F -- Match --> G[Partition is NTFS formatted] F -- No Match --> C D -- FALSE --> C G --> H[Add to list of
NTFS partitions] H --> C C -- No more device handles --> I[End NTFS Partition
Identification]
圖 2. NTFS 分割區識別邏輯
  1. 主檔案資料表 (MFT) 加密 :一旦識別出 NTFS 分割區,bootkit 便開始加密主檔案資料表 (MFT)。MFT 是 NTFS 磁碟區上的一個關鍵 Metadata 檔案,其中包含所有檔案和目錄的資訊,包括它們在磁碟上的位置。加密 MFT 會有效地使整個檔案系統無法存取。在此過程中, \\EFI\\Microsoft\\Boot\\counter 檔案會持續更新已加密叢集的計數,並且在受害者的螢幕上顯示一個假的 CHKDSK 訊息,模仿合法的磁碟檢查運作以隱藏加密活動。
graph TD A[Start MFT Encryption] --> B(Identify Master File Table); B --> C{Encrypt MFT content}; C --> D(Rewrite counter file); D --> E(Update
fake CHKDSK
message); E --> C; C -- MFT encryption complete --> F(End MFT Encryption);
圖 3. MFT 加密程序
  1. 系統重新開機 :MFT 加密完成後,bootkit 會重新啟動機器,確保系統嘗試開機到加密狀態,從而向使用者顯示勒索要求。

2.1.2 磁碟解密程序

如果 bootkit 偵測到 Configuration 檔案中的加密旗標為 1,表示磁碟已加密,它會啟動解密程序。這包括:

  1. 勒索訊息顯示 :向受害者顯示勒索訊息,指示他們如何支付贖金並取得解密 key。
  2. 解密 key 輸入 :提示受害者輸入解密 key。
  3. key 驗證 :對輸入的 key 進行驗證,以比對儲存的加密參數。如果 key 正確,bootkit 會繼續解密 MFT。
  4. MFT 解密 :解密主檔案資料表,恢復對檔案系統的存取。
  5. Configuration 重置 :Configuration 檔案中的加密旗標被重置為 2,表示贖金已支付且磁碟已解密。
  6. 系統重新開機 :機器重新開機,使其能夠以解密後的檔案系統正常開機。

2.2 UEFI Secure Boot 繞過 (CVE-2024-7344)

HybridPetya 最顯著的進步之一是它能夠繞過易受 CVE-2024-7344 攻擊的系統上的 UEFI Secure Boot。UEFI Secure Boot 是一種安全功能,目的為防止在開機過程中載入未簽章或惡意的開機載入器和驅動程式。HybridPetya 透過利用一個特製的 cloak.dat 檔案來規避此防護。此檔案包含惡意的 EFI 應用程式,由於此漏洞,儘管 Secure Boot 啟用,該程式仍被允許執行。此攻擊突顯了過時系統安全開機鏈中的一個關鍵弱點,允許勒索軟體在系統啟動的早期階段建立持久性並執行其 payload,這是在大多數安全軟體能夠干預之前。

2.3 安裝程式功能

文章提到了促進 HybridPetya bootkit 部署的安裝程式元件。雖然沒有廣泛涵蓋安裝程式內部運作的具體技術細節,但其主要功能是確保惡意 EFI 應用程式成功安裝到 EFI 系統分割區。此安裝程式其功能為與傳統 BIOS 和現代 UEFI 系統相容,展現了勒索軟體對不同硬體環境的適應性。此元件負責設定初始 Configuration,包括 \\EFI\\Microsoft\\Boot\\config 檔案,並確保 bootkit 正確定位以在系統啟動順序期間執行。支援傳統和 UEFI 系統的能力突顯了此惡意軟體廣泛的攻擊潛力。

3. 結論

HybridPetya 代表了勒索軟體能力的重大演變,特別是透過其與 UEFI-based 系統的複雜互動及其繞過 UEFI Secure Boot 的能力。透過利用像 CVE-2024-7344 這樣的漏洞,這種勒索軟體展現了向更低層級系統攻擊的明確趨勢,使得偵測和修復更具挑戰性。對其 UEFI bootkit、磁碟加密機制和 MFT 攻擊的詳細技術分析,凸顯了強健韌體安全和及時修補漏洞的重要性。雖然 HybridPetya 與其前身 Petya 和 NotPetya 共享運作上的相似性,但其對 UEFI 系統攻擊能力的增強,強調了需要超越傳統作業系統層級安全措施的進階防禦策略。未來的研究應著重於針對 UEFI bootkit 的主動偵測方法,以及開發更具彈性的 Secure Boot 實作,以應對此類不斷演變的威脅。