Malware

深入銀狐 Part 2:失效工程:EDR 消失術

銀狐載入鏈第二階段的控制程式 men.exe 專為「在 EDR 仍在線時清場」而設計:以 BYOVD 載入帶漏洞的簽章驅動在 Ring 0 強制終止防護,再用惡意驅動致盲並刪除 EDR,並以分段投放、延後解密與 DACL 反蒐證為 ValleyRAT 核心鋪路。

DinlonLeo · 發布

地區 China · Taiwan · Japan · Korea · India · APAC 產業 政府 · 公共基礎設施 · 醫療 · 教育與研發 · 金融 · 電子商務 · 遊戲 · 資安 平台 Windows 歸因信心 high
actor Silver Fox(銀狐) malware ValleyRAT technique BYOVD vulnerability NSecKrnl.sys(IOCTL 0x2248E0 → ZwTerminateProcess)

Key findings

  • men.exe 是 ValleyRAT 載入鏈的第二階段控制程式,任務是在第三方 EDR 仍在線時把端點防護徹底移除,為木馬核心落地鋪路。
  • 以 bypass.exe 做 UAC bypass 提權、串接 NVIDIA.exe(AV Killer),透過 BYOVD 載入帶漏洞的合法簽章驅動 NSecKrnl.sys,在 Ring 0 用 ZwTerminateProcess 強制終止 360、金山、HIPS、騰訊 QQ 等中國常見防護行程。
  • 再載入開源專案 BlindEdr 的惡意驅動 rwdriver.sys 與 main.exe,清除 kernel callbacks 並刪除防護檔案讓 EDR 永久消失;所用驅動雖簽章已過期,仍因 2015 年前的交叉簽章符合 Windows 驅動簽章政策而被載入。
  • 採分段投放與延後解密:最敏感的核心載入器與驅動(me.key)留到端點防護失效後才解出,壓縮偵測窗口。
  • 收尾以 DACL Deny ACE(拒絕刪除)、Hidden/System 目錄屬性,以及 del.bat 延遲自刪,強化持久性並提高蒐證難度。

銀狐 Part 2 示意圖,狼形剪影結合電路紋樣(AI 生成)

前言

在 Part 1 的最後,安裝器完成了兩個關鍵動作:執行誘餌 setup.exe 讓使用者降低警戒,並在背景啟動 men.exe 對 Windows Defender 做初步限制。Part 2 開始後,攻擊鏈的目標轉為:在第三方端點防護(EDR)仍然在線的前提下,把木馬核心落地。

本文聚焦 men.exe 如何繞過 EDR,利用內嵌壓縮檔的解密解壓、BYOVD,以及惡意驅動永久移除端點防護,並使用 DACL 提高持久性與蒐證難度。攻擊者透過分段投放與延後解密,把最敏感的載入器與驅動留到端點防護失效後才釋出,同時串接提權與 AVK,確保下一階段的核心主程式能在幾乎沒有監控阻力的狀態下落地與執行。

本文僅供防禦研究、事件應變、威脅狩獵與教育用途。文中提及之樣本與工具可能具風險,請僅在隔離、可還原且不連接生產網路之環境中測試。本文不鼓勵、協助或默許任何未經授權之行為;文中所提及之第三方平台與產品名稱僅作技術描述之用。

第二階段分析

本階段針對 men.exe 進行拆解。由於過程較長且深入,先概述這支程式做了哪些事:

  1. 停止 EDR(使用 bypass.exeNVIDIA.exe
  2. 執行下階段病毒
  3. 讓 EDR 消失(使用 rwdriver.sysmain.exe
  4. 持久化與清理

men.exe 本身是相對線性的執行過程,但攻擊者為了分散惡意載荷被偵測的風險,於程式中利用檔案分段操作並呼叫多個外部執行檔,因此本次分析實際上涉及多個樣本。

初步樣本分析

在上一階段安裝器投放了 men.exe。動態執行前先用 DIE(Detect It Easy)掃描結構,可知 men.exe 為 C++ 撰寫之程式。

DIE 掃描 men.exe,顯示為 C++ 編譯的 PE 執行檔

透過 Entropy 分析檢視檔案內容,發現其中存在一段熵值顯著偏高的區段。高熵值通常代表資料具高度隨機性,常見於加密或混淆後的內容,因此推測該區段可能為經加密或混淆處理的資源。

DIE 熵值圖,men.exe 中有一段明顯高熵區段

切換至 Extractor 檢視,發現該區段呈現 ZIP 壓縮檔特徵。對該區域資料傾印後嘗試解壓縮,系統要求輸入密碼,顯示傾印所得確實符合 ZIP 格式;綜合判斷其解壓密碼很可能被硬編碼於 men.exe 內。

(補充:某些情況下 DIE 可能誤判 Size 欄位,因此仍需透過反組譯或指令分析確認實際應傾印的區段位置與大小。)

DIE Extractor 檢視內嵌區段,呈現 ZIP 壓縮檔格式

對靜態檔案可用 Capa 檢查特徵。結果偵測到許多檔案操作與混淆技術之特徵:

Capa 對 men.exe 的靜態分析結果,列出檔案操作與混淆相關能力

進階樣本分析

透過 Ghidra、IDA Pro 或 x64dbg 等工具還原 men.exe 的實際執行邏輯。

分析顯示,men.exe 在主流程前先進行 GPU 裝置環境檢查,屬反分析機制的一部分。程式呼叫 Direct3D9 相關 API 取得系統 Adapter 資訊,據此判斷目前是否為沙箱或虛擬化環境。若符合判定條件即終止執行。此處檢測的是 Microsoft Basic Render Driver(Microsoft 內建軟體渲染器):

  • VendorId != 5140
  • DeviceId != 140

類似透過 GPU 介面反分析的手法在 Checkpoint 部落格曾被提及,是存在已久但少被利用的技術。若你的虛擬機剛好符合該條件,動態分析前需先把該指令 patch 掉,否則主邏輯不會執行。

men.exe 以 Direct3D9 取得 Adapter 的 VendorId/DeviceId 進行防沙盒判斷

進入主邏輯後,第一步為確認工作目錄與避免重複執行:檢查 C:\Users\Public\Pictures\WindowsData\me.key 是否存在,並將其作為後續投放與持久化的固定位置。

  • 若路徑不存在,表示前序 payload 尚未落地。
  • 若檔案已存在,可能表示程式正被重複執行。

對於上述任一情況,程式會透過 WMI 嘗試恢復網路連線,隨後直接終止執行,以降低異常行為累積與被偵測的風險。

men.exe 檢查 me.key 是否存在以決定工作目錄與是否重複執行

程式會檢查系統是否運行防毒或 EDR。若存在,擷取其映像檔路徑並加入內部字串清單。該清單不立即使用,而是在執行最後階段作為清除防護軟體的參考路徑。

men.exe 偵測端點防護狀態並蒐集其映像路徑

防護清理模組的落地

程式從自身檔案中映射出一個大小為 0xDB307 的區段,建立為 tree.exe(壓縮格式),隨後以預設密碼解壓。此檔案與先前用 DIE 傾印出的內容相符。

men.exe 從自身傾印出 tree.exe 壓縮檔

以下為 tree.exe 釋出的檔案,其中 me.key 亦為壓縮檔,會在端點防護遭停用後繼續解壓:

tree.exe 解壓後釋出的檔案清單(多階段解壓縮,階段一)

tree.exe 釋放的檔案與功能,主要用於持久化與端點防護卸除:

  • bypass.exe:提權工具,提升程式權限以便執行後續操作
  • NVIDIA.exe:EDR 停止工具,降低攻擊鏈中被偵測或阻擋的風險
  • X.vbe:持久化腳本
  • me.key:壓縮檔,內含木馬核心程式,用於後續載入主要惡意邏輯
  • Kail.exe:7z 解壓程式,此階段未被使用

隱藏提權與 BYOVD 組合拳

在此階段,men.exe 開始對 EDR 進行操作,透過 bypass.exe(提權)與 NVIDIA.exe(防毒中止)嘗試關閉 EDR 相關服務。

程式首先透過 WdcRunTaskAsInteractiveUser 以一般使用者權限啟動 bypass.exe,該程式接著利用 ICMLuaUtil 介面進行 UAC Bypass 提權,並啟動 NVIDIA.exe 執行後續的防護停止操作。

由於此呼叫流程透過系統機制間接觸發,在 EDR 的行程關聯視角中,bypass.exe 的父行程會顯示為 taskhost.exe 而非 men.exe。此設計混淆實際行程來源,增加事件追蹤與行為關聯分析的難度。

Cortex XDR 視角下 bypass.exe 的父行程顯示為 taskhost.exe

NVIDIA.exe 作為 AV Killer(AVK),藉由載入具弱點的驅動來終止端點防護。由於本樣本的 NVIDIA.exe 分析結果與外部紀錄大致相符,此處僅簡述流程,聚焦於 BYOVD 的利用方式:

ValleyRAT Exploiting BYOVD to Kill Endpoint Security — Hexastrike Cybersecurity During threat-intelligence activities, we identified a new ValleyRAT campaign distributing fake application installers…(來源:hexastrike.com)

NVIDIA.exe 會透過載入 NSecKrnl.sys(一個帶已知漏洞的合法簽章驅動)掃描主機上是否存在指定防毒或 EDR。若偵測到目標,即利用驅動漏洞取得核心權限並強制終止相關進程,使防護失效。由於驅動具合法簽章且存在漏洞,通常不易被作業系統的驅動封鎖機制攔截,此手法即為 BYOVD(Bring Your Own Vulnerable Driver)

分析發現其 EDR 掃描清單偏向中國常見的消費級安全軟體:

  • 360 系列ZhuDongFangYu.exe360tray.exe360Tray.exe360sd.exe360rp.exe360Safe.exe
  • 金山(Kingsoft)kxecenter.exekxemain.exekxetray.exekxescore.exe
  • HIPS 家族HipsMain.exeHipsTray.exeHipsDaemon.exe
  • 騰訊 QQ(Tencent PC Manager)QMDL.exeQMPersonalCenter.exeQQPCPatch.exeQQPCRealTimeSpeedup.exeQQPCRTP.exeQQPCTray.exeQQRepair.exe

由於驅動中 ZwTerminateProcess 驗證不足,任何程式皆可透過 IOCTL 0x2248E0 呼叫該函數來中止任意程序。下圖反白處即為 NVIDIA.exe 中透過 DeviceIoControl 呼叫該函數中止 EDR 行程的指令:

NVIDIA.exe 透過 DeviceIoControl 送出 IOCTL 0x2248E0 終止 EDR 進程

NSecKrnl.sys 驅動被呼叫時,會以 Ring 0 核心權限使用 ZwTerminateProcess 強制終止指定進程。

NSecKrnl.sys 中呼叫 ZwTerminateProcess 的弱點函數位置

驅動 NSecKrnl.sys MD5:80961850786D6531F075B8A6F9A756AD

檢查 EDR 的呼吸

men.exe 執行 AVK 後會持續檢查是否仍有防毒軟體存在,用以等待 AVK 生效並確保端點防護已被關閉。當確認裝置上的 EDR 已全部停止,會透過 WMI 恢復感染裝置的網路功能。

men.exe 反覆確認 EDR 是否已全部停止

防護停止之後的行為

後續分析發現,程式嘗試啟動 LetsPRO.exe,但本樣本並未實際投放該檔案。此名稱在過去的 ValleyRAT 載入器中曾被使用,推測樣本保留了歷史呼叫邏輯,或與先前版本具相似行為模式。

men.exe 中與 LetsPRO.exe 相關的指令(本樣本未投放該檔)

根據趨勢科技相關報告,該名稱對應的執行檔通常被用作木馬載入器。推測本次未使用可能與 log.dll 的載入流程有關,以避免程式間衝突,顯示樣本設計時考量了模組互動,選擇保留呼叫邏輯但不實際投放。

假借提供 Deepfake 脫衣、換臉、變聲工具與 VPN 軟體,駭客組織 Void Arachne 攻擊簡中用戶 駭客組織 Void Arachne 鎖定中國用戶,以簡體中文版 Chrome、LetsVPN、QuickVPN 等熱門軟體為誘餌,搭配 Deepfake 等 AI 工具,引誘用戶下載含有 Winos…(來源:trendmicro.com)

接著把 me.key 中的檔案以密碼解密,析出檔案作為 ValleyRAT 的記憶體載入器與驅動程式:

me.key 解密解壓後的檔案(多階段解壓縮,階段二)

程式檢查並啟動 NtHandleCallback.exe,該程式為後續 ValleyRAT 的記憶體載入器,以 DLL 側載 log.dll 發動攻擊(下一章分析)。

持久化上,透過 COM 將 X.vbe 建立為近似系統名稱 WindowsPowerShell.WbemScripting.SWbemLocator 的登入觸發任務;使用者登入時將以管理權限執行 VBScript X.vbe

X.vbe 持久化腳本(解碼前,呈亂碼形式)

該持久化腳本雖呈亂碼,但可透過解碼工具分析。然而解碼後仍存在錯誤,使腳本無法正常完成持久化,每次登入都會彈出錯誤視窗。後續樣本分析指出,SilverFox 已修復此問題,使持久化能在啟動時正常執行,完成 AVK 與木馬核心的持久化與自動執行。

X.vbe 解碼後的內容

X.vbe 執行時的行為

讓 EDR 永遠消失

為了讓 EDR 防護永遠自端點移除,惡意程式透過載入惡意驅動 rwdriver.sys 與利用 main.exe 取得核心權限。觀察驅動註冊名稱與檔名,查到該驅動實為實驗性開源專案工具:

其本質為透過驅動載入 MmCopyVirtualMemory 函數,清除核心回呼(kernel callbacks)中觸發事件時會通知的 EDR 程式清單,通常用以致盲 EDR。不過這裡的目的是防止系統呼叫指向被刪除的 EDR 程式指標導致系統崩潰。完成後直接刪除防毒端點防護檔案(一開始掃描時取得的路徑),讓 EDR 徹底消失。

來自 BlindEdr 的目標核心回呼清單

一般開發驅動需開啟測試模式才能註冊與啟動,而本案載入驅動時,觀察到雖具簽章但有效日期已過期仍被載入

過期的交叉簽章仍被 Windows 載入

這是因為根據 Windows 驅動程式簽章政策,只要符合其中之一即允許使用交叉簽章;而該簽章為 2015 年前頒發的交叉簽章,符合政策因此可被載入。這種手法在銀狐攻擊行動的多個環節都能看到。

Microsoft Learn 的 Driver Signing Policy 說明

打完,收工

程式結束時最後呼叫兩個函數,分別進行資料夾權限修改與刪除自身檔案,以防止被輕易開啟與刪除、並提高蒐證難度。

第一個函數先針對 C:\Users\Public\Pictures\WindowsData 目錄設定 Hidden 與 System 屬性,降低一般使用者透過檔案總管發現的機率。接著取得該目錄的 DACL,新增一條針對 Everyone 的 Deny ACE,拒絕 FILE_DELETE_CHILD (0x40) 並設定繼承,使目錄下子項目更難被刪除;之後再對目錄內 7 個檔案逐一新增 Deny ACE 拒絕 DELETE (0x00010000),讓檔案本身更難被刪除。

men.exe 修改 WindowsData 目錄與檔案的 DACL,加入 Deny ACE

第二個函數使用大量指令字串,透過 XOR 解密後執行。其命令除強化 X.vbe 的持久性外,還刪除本次執行過程中使用到的檔案。

經 XOR 解密後執行的清理命令

最後生成 del.bat 並執行,使用 ping 延遲刪除自身,避免刪除時程式尚在執行:

@echo off
ping -n 2 127.0.0.1 >nul          & rem 延遲執行
del /f /q "C:\ProgramData\WindowsData\men.exe"   & rem 刪除 men.exe 檔案
del /f /q "%%0"                   & rem 刪除這個批次檔

到這邊,第二階段結束。下一階段將講解 NtHandleCallback.exe 如何透過白加黑與多個戰術,完成最終 ValleyRAT 核心的執行。

技術統整

men.exe 第二階段的行為橫跨反分析、偵察、提權與偽裝、防護破壞、持久化與反蒐證等多個面向,逐項與 ATT&CK 的對照見文末的 MITRE ATT&CK mapping 表。以戰術視角總覽如下:

men.exe 第二階段技術的 ATT&CK Navigator 熱力圖(Enterprise v18)

在長期追蹤多起樣本與載入鏈的過程中,可觀察到攻擊者在工具層的更換頻率很高:BYOVD、漏洞利用、持久化與載入手段,都會隨防禦方的偵測規則與公開揭露而快速替換,甚至傾向採用剛被揭露或仍在地下的新手法,以壓縮防守方的反應時間。改以戰術視角重新審視樣本,才能在不同變種之間辨識出穩定不變的意圖與流程,即使工具與技術不斷替換,其行為結構仍會留下可觀測的痕跡。

執行鏈檔案關係圖

將第一與第二階段製成流程圖,可更直觀看到載入鏈執行過程中使用了哪些檔案(NtHandleCallback.exe 之後的部分將於下一階段說明):

銀狐 Part 1 與 Part 2 的執行鏈檔案關係圖,從 Hysij.exe 一路到 men.exe 投放的 bypass.exe、NVIDIA.exe、rwdriver.sys、NSecKrnl.sys 與 NtHandleCallback.exe

結語

本章分析攻擊者如何在規避階段系統性地移除端點防護,並把持久化、自我保護與反蒐證機制一併完成。men.exe 以 UAC bypass 串接 AVK、落地 BYOVD 驅動,在 Ring 0 終止 EDR 行程;再透過分段投放與延後解密,讓核心模組在相對安全的時間點落地;最後補上自製惡意驅動進行致盲與蒐證對抗,包括清理 kernel callbacks、以 DACL 增加刪除難度、以及自刪降低現場痕跡。

對防禦方而言,這條鏈最棘手之處在於它由多個技巧組合,形成一個為了確保下一階段成功而設計的工程化流程。若只盯著木馬本體或某項指標,往往在第一時間就已失去端點防護的可視性。

下一章我們將針對木馬核心載入器 NtHandleCallback.exelog.dll 進行詳細分析,探究它如何載入更多 Rootkit 與記憶體執行,利用進階隱藏技術達成木馬核心全程不落地的執行。

樣本與參考

MITRE ATT&CK mapping

TacticTechniqueProcedure
Defense evasionT1497.001以 Direct3D9 取得 GPU Adapter 資訊,檢查 VendorId(!=5140)與 DeviceId(!=140),命中 Microsoft Basic Render Driver 即提前退出以規避沙盒
Defense evasionT1027內嵌高熵、密碼保護的 ZIP 資源,並以編碼字串與 XOR 混淆命令與字串
Defense evasionT1140執行期解出內嵌 ZIP,以硬編碼密碼解壓取得下一階段載荷
DiscoveryT1518.001掃描端點防護與防毒產品是否存在,作為 AVK 與刪除流程的目標依據
DiscoveryT1057枚舉行程對照內建清單,蒐集防護軟體映像路徑供後續刪除
Privilege escalationT1548.002bypass.exe 經 ICMLuaUtil 介面進行 UAC bypass 取得管理權限
Defense evasionT1036.005以 NVIDIA.exe 及偽裝成 WindowsPowerShell.WbemScripting.SWbemLocator 的任務名近似合法元件
Defense evasionT1211利用帶漏洞的簽章驅動 NSecKrnl.sys,透過 IOCTL 0x2248E0 觸發 ZwTerminateProcess 終止防護行程
Defense evasionT1562.001AVK 掃描並終止端點防護行程,並在後段刪除防護檔案降低可視性
PersistenceT1543.003建立並啟動 rwdriver 驅動服務,以服務機制載入核心驅動取得 Ring 0 能力
Defense evasionT1014載入驅動干預 kernel callbacks 清單,對核心層致盲 EDR
PersistenceT1053.005以 COM 建立登入觸發任務,使用者登入時以管理權限執行 X.vbe
ExecutionT1059.005以 VBScript 腳本 X.vbe 作為任務觸發後的腳本載具
ExecutionT1047透過 WMI 恢復網路連線等管理操作,降低前序限制造成的異常可見度
Defense evasionT1564.001將工作目錄設為 Hidden 與 System 屬性,降低使用者發現投放痕跡的機率
Defense evasionT1222.001修改目錄與檔案 DACL,加入 Everyone 的 Deny ACE 拒絕 FILE_DELETE_CHILD 與 DELETE
ExecutionT1059.003以批次檔串接清理,ping 延遲後 del 自刪
Defense evasionT1070.004生成 del.bat 刪除 men.exe 與落地檔案,降低現場殘留

Indicators of compromise

TypeIndicatorFirst seenLast verifiedConfidenceStatus
MD5A7B31B5B3B7214146EA115DAA5EFC064me.key — 密碼保護壓縮檔,內含 ValleyRAT 記憶體載入器與驅動,端點防護失效後才解壓2025-092026-03-06High
MD5042BC3AF557A49A9A788F6785CA7E1ABtree.exe — men.exe 自身傾印出的壓縮檔,釋出防護清理模組2025-092026-03-06High
MD510A5C5B913D5D983AAA555B7F28344F7bypass.exe — UAC bypass 提權工具2025-092026-03-06High
MD55D38C8A2E1786E464A368465D594D2B4NVIDIA.exe — AV Killer(AVK),以 BYOVD 停用 EDR2025-092026-03-06High
MD580961850786D6531F075B8A6F9A756ADNSecKrnl.sys — 帶漏洞的合法簽章驅動(IOCTL 0x2248E0 → ZwTerminateProcess)2025-092026-03-06High
MD55231A08C5286803E300AC657E37272F8rwdriver.sys — 惡意驅動(BlindEdr),清除 kernel callbacks 致盲 EDR2025-092026-03-06High
MD58AA68B90C08578CA55CCA1011D3AA1A4rwdriver.cat — rwdriver 的目錄簽章檔2025-092026-03-06High
MD5893EDFA3A3A71D71CA670424E554E04Cmain.exe — BlindEdr 使用者態元件,驅動 rwdriver 進行致盲2025-092026-03-06High
MD5BD979DD43BEE92F085E22086A07F1845X.vbe — 持久化 VBScript(登入觸發任務)2025-092026-03-06High
MD5BCEC4279D95D0B09EBCF4388CB9A4F64NtHandleCallback.exe — 下一階段 ValleyRAT 記憶體載入器(側載 log.dll)2025-092026-03-06High
MD504A781F089684FF2A9124708B0905EABlog.dll — NtHandleCallback.exe 側載的惡意 DLL2025-092026-03-06High
MD5F3333DAB07B8D9D7A6B76B9DB8CEEE69kail.exe — 7z 解壓工具(本階段未被使用)2025-092026-03-06Moderate
PathC:\Users\Public\Pictures\WindowsData\me.keymen.exe 的執行標記與核心載荷固定位置(存在即視為已落地)2025-092026-03-06High
StringWindowsPowerShell.WbemScripting.SWbemLocatorX.vbe 持久化用的偽裝 COM 登入觸發任務名2025-092026-03-06High

OIS-2026-005 · TLP:CLEAR under FIRST TLP 2.0 · 引用本研究請附研究編號與固定網址。