傳統木馬以獨立 .exe 執行,易被工作管理員、防毒軟體發現。2004 年後,主流木馬改用核心嵌入、遠端線程注入、PSAPI 掛鉤等技術,將惡意程式碼注入 svchost.exe、spoolsv.exe、explorer.exe 等合法系統進程,達到:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServices
HKEY_LOCAL_MACHINE\Software\Classes\exefile\shell\open\command (檢查是否被改為 "malware.exe \"%1\" %*")
重點檢查指向系統目錄(%SystemRoot%、%SystemRoot%\System32)的可疑鍵值。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ (查找可疑服務鍵值)
services.msc → 啟動類型改為「已停用」或刪除整個服務鍵值
regedit: Start=4 (0x4) 表已停用
msconfig → 檢查 win.ini [windows] load/run、system.ini [boot] shell=explorer.exe 後是否有附加路徑。C:\AUTOEXEC.BAT, C:\Windows\WinStart.bat 檢查 @echo off 隱藏指令。# 乾淨開機後立即建立基線
tasklist /svc > C:\baseline_processlist.txt
# 懷疑感染時再次匯出對比
tasklist /svc > C:\current_processlist.txt
fc baseline_processlist.txt current_processlist.txt
重點關注:新增進程、異常服務載入(svchost.exe 載入非標準 DLL)、PID 與服務名稱不符。
cd %windir%\system32
dir *.dll > C:\baseline_dll.txt
# 稍後對比
dir *.dll > C:\current_dll.txt
fc baseline_dll.txt current_dll.txt
使用 UltraEdit 等工具視覺化差異,鎖定新增/變更的 DLL。
msinfo32.exe → 軟體環境 → 載入的模組 → 匯出文字檔對比
此法可過濾掉因安裝合法軟體導致的檔案系統變動,聚焦於真正載入記憶體的模組。
netstat -ano # -o 顯示 PID
# 找出 LISTENING/ESTABLISHED 狀態的非標準埠(>1024)
# 記下 PID,用 tasklist /fi "PID eq xxx" 或進程分析工具(Process Explorer, WinProcess)定位進程
注意:木馬可能劫持埠 80、139、445 等常用埠進行通訊,需結合網路嗅探器分析封包內容判斷。
sfc /scannow、DISM 修復映像。線程注入木馬雖隱蔽,但「必須啟動、必須通訊、必須持久化」三大剛需無法消除。建立乾淨基線、善用對比工具、深入記憶體取證,配合自動化 EDR 持續監控,即可將隱藏時間壓縮至分鐘級,將損失降至最低。