【精選威脅情資】高度複雜的防禦規避技術:Gootloader 惡意程式濫用畸形 ZIP 檔

危害與影響

Gootloader 惡意程式透過獨特設計的投遞機制來取得受害系統的初始存取權,與一般使用單純壓縮檔或可執行檔散布的惡意程式不同,Gootloader 在感染初期刻意使用刻意不完整的 ZIP 壓縮檔。此壓縮檔可躲過許多常見解壓工具與自動化安全流程的偵測,能被 Windows 預設解壓工具順利開啟,確保受害者能解壓並執行其中內容。

這波活動對各產業都帶來深遠影響,因為 Gootloader 是初始存取的威脅,可能造成更嚴重的後續攻擊,包括勒索軟體部署或資料外洩。一旦成功在受感染系統上建立立足點,攻擊者便可持續存取企業網路,進而橫向移動並持續入侵。Gootloader 高複雜度的規避技術使防禦方必須採用更動態與行為導向的偵測策略。

分析師觀點

Gootloader 困難點在於隨機產製再組合的壓縮檔,其 Hash 值並不會重複,因此低層級的 IoC 無法防護,是非常完整的防禦規避機制。企業要防範此類攻擊,必須針對惡意程式的行為本身,如使用 Yara Rule 等方式進行防禦。

描述

Gootloader 事件展現了一種高度複雜的惡意程式投遞與執行技術,刻意製造不完整的 ZIP 壓縮檔來規避偵測與分析。該 ZIP 壓縮檔展現了異常的結構特徵:內部由數百個串接的 ZIP 區段組成,刻意截斷「中央目錄結束記錄」(EOCD),以及隨機化的非關鍵中繼資料。這些特徵共同構成了「雜湊破解(Hashbusting)」 的反分析與規避技術,透過為每位受害者量身打造的壓縮檔,使防禦方無法以傳統的雜湊值(Hash)比對來進行偵測,進而繞過仰賴靜態特徵碼的防毒與端點偵測系統。

感染鏈在使用者啟動 ZIP 內的 JScript 後隨之啟動。為了達成持久性,該 JScript 會於啟動資料夾中植入指向隨機目錄下、次級指令碼的捷徑檔(.LNK)。整個多階段執行流程交替利用 Windows Script Host(WScript 與 CScript) 及 PowerShell process,並結合混淆代碼與 NTFS 短檔名路徑,極大化其在系統中的隱蔽性與分析難度。

技術分析

本章將深入探討這次攻擊的技術基礎,拆解攻擊者如何打造並部署其惡意程式、維持持續性與規避防禦,以及受害者與惡意內容互動後的實際執行流程。透過將這些活動對映到 MITRE ATT&CK 框架,讀者將能全面理解此惡意程式的生命週期,以及其在技術層面的實際運作方式。

初始存取(Initial Access)

Gootloader 主要透過社交工程與使用者對惡意 ZIP 壓縮檔的互動來取得初始存取權,這些壓縮檔通常經由釣魚郵件或遭入侵的網站傳遞。與一般 ZIP 壓縮檔不同,此壓縮檔刻意被「畸形化」以規避自動化偵測:

  • 壓縮檔內含有 500–1,000 個串接的 ZIP 結構,此技術會將檔案大小膨脹到數十 MB,但實際只包含一個小型 payload(一個 JScript 檔)。
  • 中央目錄結束記錄(EOCD) 結構被截斷,缺少「註解長度(Comment Length)」等關鍵位元組,導致許多解壓工具(如 7zip、WinRAR)無法正確解析。
  • ZIP 標頭中的非關鍵欄位(如「磁碟編號」、「磁碟數量」)被隨機化,對每位受害者產生不同雜湊值——這是一種稱為雜湊破解(Hashbusting)的規避技術。

儘管存在這些異常,該壓縮檔仍可由 Windows 預設 ZIP 解壓工具正常解壓,確保受害者可以開啟。

執行 (Execution)

當受害者下載並開啟 ZIP 壓縮檔後:

  • 受害者通常會雙擊 ZIP 中的 JScript(.js)檔案,該檔案會由 Windows Script Host(WScript.exe) 自暫存資料夾(由 Windows 解壓工具建立)直接執行。
  • JScript 檔同時包含良性與惡意程式碼,常常超過 10,000 行,其中只有約 100 行為混淆過的惡意邏輯,讓人工與自動化分析都更加困難。
  • 執行後會產生一個 PowerShell process,實際上包含兩步驟的 PowerShell 啟動:第一個 PowerShell 執行個體會啟動第二個執行個體,並在其中執行高度混淆的指令。

透過監控行程鏈,分析人員可以偵測到可疑的執行模式:

  • wscript.exe 從暫存目錄(如 AppData\\Local\\Temp)執行.js 檔案
  • cscript.exe 產生 powershell.exe process

持續性(Persistence)

為了在系統重開機與使用者工作階段之間維持存取,Gootloader 採用以下持續性機制:

  • 初始 JScript 會在使用者的啟動資料夾(C:\\Users\\<username>\\AppData\\Roaming\\Microsoft\\Windows\\StartMenu\\Programs\\Startup)建立一個 .LNK 捷徑檔。
  • 此 .LNK 檔指向位於隨機選定目錄中的第二個 .LNK 檔。
  • 第二個 .LNK 會呼叫位於該隨機目錄中的第二個 JScript 檔案。
  • 第二個 JScript 透過 CScript.exe 執行,並使用 NTFS 短檔名(傳統 8.3 檔名格式,例如 FILENA~1.js),這種用法相當罕見,也提供了偵測的機會。
  • 這條多層捷徑鏈確保惡意程式碼能在系統啟動時自動執行,鞏固其在環境中的立足點。

防禦規避(Defense Evasion)

Gootloader 採用了多種規避防禦技術:

  • 不完全 ZIP 壓縮檔:透過刻意損毀及串接多個 ZIP 檔,使一般解壓工具與自動化分析工具無法解出負載,阻礙靜態與動態惡意程式分析。
  • 雜湊破解 (Hashbusting):隨機化 ZIP 標頭中的非關鍵欄位,並為每次下載重新產生獨特壓縮檔,使依賴檔案雜湊值的特徵碼偵測失效。
  • 混淆的 JScript:將惡意程式碼隱藏在龐大且看似良性的 JScript 檔案中,透過程式碼混淆與「以大量無害內容掩護少量惡意邏輯」的方式來規避偵測。
  • 自暫存資料夾執行:直接從暫存目錄執行指令碼是一種相對少見但對部分應用程式仍屬合法的行為,因此增加偵測難度。
  • 使用 NTFS 短檔名:透過舊式短檔名執行指令碼在現代系統中相當不尋常,能躲避以一般檔名慣例為基準的行為偵測。
  • PowerShell 混淆:多層 PowerShell 執行鏈採用高度混淆的指令,以規避端點防護工具的偵測。

畸形 ZIP 壓縮檔的詳細分析

1. 結構與反分析技術

一般 ZIP 壓縮檔由下列部分組成:

  • 本地檔案標頭(Local File Header):位於每個壓縮檔案之前的中繼資料。
  • 中央目錄(Central Directory):所有檔案及其位置的索引。
  • 中央目錄結束記錄(End of Central Directory,EOCD):指向中央目錄的紀錄。

Gootloader 的 ZIP 壓縮檔則有明顯差異:

  • 檔案內含數百(500–1,000 個)串接的 ZIP 壓縮檔,而非單一壓縮檔。
  • 每個壓縮檔的 EOCD 結構皆被截斷,缺少「註解長度」等必要位元組。
  • 非關鍵欄位的隨機值會讓部分解壓工具誤以為後續還有 ZIP 序列,進而解析失敗。
  • 本地檔案標頭與中央目錄之間的欄位不一致(例如修改時間、CRC32 校驗碼),導致許多 ZIP 工具將其視為毀損壓縮檔而拒絕處理。
  • Windows 預設解壓工具採用獨特方式處理此畸形結構,它會自檔案尾端讀取 EOCD,因而仍能順利解出其中的 JScript。

2. 傳遞方式與動態建構

  • 此壓縮檔並非以單純的靜態 ZIP 檔形式在網路上傳送。
  • 受害者的瀏覽器實際收到的是一個含有單一 ZIP 壓縮檔的 XOR 編碼資料區塊(blob)。
  • 該資料區塊會在客戶端被解碼,並重複附加自身直到達到所需大小,進而產生串接結構,此過程是在客戶端完成的。
  • 此技術在傳輸過程中對真正的 ZIP 壓縮檔進行混淆,避免被網路層偵測到。

總結

Gootloader 事件堪稱一個教科書式範例,說明攻擊者如何結合檔案格式操弄、程式碼混淆與多階段指令碼執行,來繞過靜態與動態防禦。問題根源在於使用了刻意不完整的 ZIP 壓縮檔,此檔案能躲過標準解壓工具,卻仍可由 Windows 預設工具解壓,進而投遞並執行惡意 JScript 負載。惡意程式隨後透過精心串接的捷徑檔建立持續性,並利用混淆的PowerShell 指令執行後續行動,同時採用雜湊破解(Hashbusting)、暫存位置執行等多種規避技術。

緩解措施

Gootloader 行動對組織構成重大挑戰,因為它運用了高度成熟的技術來繞過傳統安全機制。要有效降低此活動帶來的風險,組織應採取多層次的防禦策略,涵蓋技術與作業兩個層面。以下為協助組織預防與因應類似攻擊的詳細步驟與建議:

1. 重新關聯 JScript 副檔名

我們強烈建議透過群組原則物件(GPO)將 JScript 副檔名重新關聯到 Notepad。如此一來,當使用者雙擊 .js 檔案時,將以文字檔方式開啟,而非直接執行指令碼。這可大幅降低惡意指令碼被執行的風險,並提供較安全的使用環境。

2. 縮減攻擊面

組織應考慮阻擋 wscript.exe 與 cscript.exe 執行已下載的內容。這可透過 GPO 或其他管理控制手段達成。此外,限制這些可執行檔的使用,有助於縮減攻擊面並降低被利用的可能性。

3. 監測與偵測

為偵測與回應 Gootloader,組織應專注於監測 ZIP 壓縮檔的異常行為及隨後的行程執行鏈。關鍵偵測點包括:

  • Wscript.exe 在 AppData\\Local\\Temp 目錄執行 .js 檔案:監控此特定行為,因為它代表透過 Windows Script Host 執行 JScript 檔。
  • 在使用者啟動資料夾 (Startup Folder) 中建立不明的 .LNK 檔:監控啟動資料夾中 .LNK 檔的建立情況,這些捷徑可能被用來建立持續性。
  • cscript.exe 使用舊式 NTFS 短檔名執行 .js 檔案的情況:標記此類事件,因為這種行為極為罕見,是強烈的惡意活動指標。
  • 特定 process 的生成順序(process genealogy):對 cscript.exe 產生 powershell.exe 的 process 發出警示。

4. 動態偵測方法

導入可因應 Gootloader 不斷演變特性的動態偵測方法,包括:

  • 檔案完整性監控(File Integrity Monitoring,FIM):監控關鍵檔案與目錄的變更,以偵測未授權修改。
  • 行為分析:使用行為分析工具偵測可疑活動,例如異常的檔案存取模式或出乎意料的網路流量。
  • 端點偵測與回應:部署 EDR 解決方案,以提供即時監控與回應能力。

參考資料

入侵指標 (Indicator of Compromise, IoCs)

Yara Rule

rule gootloader_zip_archive_2025_11_17 : malware {

 

 meta:

 

   name =“gootloader_zip_archive”

 

   description= “Detects unique ZIP archive format used by Gootloader”

 

   created =“2025-11-17”

 

   reliability= 100

 

   tlp =“TLP:CLEAR”

 

   sample =“b05eb7a367b5b86f8527af7b14e97b311580a8ff73f27eaa1fb793abb902dc6e”

 

   strings:

 

  $zip_record_and_attacker_zip_parameters_hex = { 50 4B 03 04 ?? 00 00 0008 00 } // check file header

  $end_of_central_directory = { 50 4B 05 06 0? 00 0? 00 00 00 01 00 ?? ??00 00 ?? ?? ?? 00 }

 

 condition:

 

$zip_record_and_attacker_zip_parameters_hex at 0

 and#zip_record_and_attacker_zip_parameters_hex > 100

 and#end_of_central_directory > 100

}

關於 CyCraft

奧義智慧 (CyCraft) 是亞洲領先的 AI 資安科技公司,專注於 AI 自動化威脅曝險管理。其 XCockpit AI 平台整合 XASM (Extended Attack Surface Management) 三大防禦構面:外部曝險預警管理、信任提權最佳化監控,與端點自動化聯防,提供超前、事前、即時的縱深防禦。憑藉其在政府、金融、半導體高科技產業的深厚實績與 Gartner 等機構的高度認可,奧義智慧持續打造亞洲最先進的 AI 資安戰情中心,捍衛企業數位韌性。

訂閱奧義智慧電子報

Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.
點擊此按鈕,即表示您同意奧義智慧的隱私權政策,並同意奧義智慧使用您所提供的資訊並寄送資訊給您。您隨時可以取消訂閱。