文件感染技術是傳統電腦病毒的核心傳播手段,通過將惡意代碼注入合法可執行文件,實現隨宿主程序執行而複製傳播。本文從技術原理角度分析基於 C++ Builder (BCB) 的文件感染典型實現模式——**外殼法**與**入口點修改法**,並探討現代防禦體系的對策。嚴正聲明:本文僅供安全研究、病毒分析教學及防禦技術開發參考,嚴禁用於編寫、傳播惡意代碼。
原理:構建一個獨立的「外殼」程序 (Stub),將原始宿主程序作為資源或數據區內嵌。運行時:
關鍵技術點:
原理:直接修改目標 PE 文件,將病毒代碼注入代碼區空洞或新增區段,修改 AddressOfEntryPoint 指向病毒代碼,病毒代碼執行完跳回原入口點 (OEP)。
文中代碼片段分析 (inFect 函數):
// 簡化邏輯
1. 打開目標檔案,檢查是否已感染 (讀取偏移 80 處標誌 "AntGhazi")。
2. 讀取原檔案全部內容到記憶體 (pSearchFile)。
3. 構造病毒體:標誌(8B) + 原檔大小(4B) + 病毒代碼 + 原檔內容。
4. 修改圖標 (ModifyIcon) 使外觀不變。
5. 覆寫目標檔案:病毒體 + 原檔內容。
6. 恢復檔案時間屬性。
缺陷與風險:
無論哪種模式,深入理解 PE 結構是基礎:
IMAGE_DOS_HEADER.e_lfanew 定位 PE Header。IMAGE_OPTIONAL_HEADER.AddressOfEntryPoint (入口點 RVA)。IMAGE_SECTION_HEADER 區段屬性 (可讀/寫/執行)、對齊、原始數據指針。NumberOfSections、SizeOfImage、對齊計算)。| 防禦層面 | 技術手段 | 對感染的效果 |
|---|---|---|
| **靜態特徵** | 特徵碼掃描、熵值檢測(加密區段)、PE 結構異常檢查(區段名、屬性、入口點異常)、資源異常、數位簽名驗證 | 查殺已知變種、發現未知可疑文件 |
| **動態行為** | API 掛鉤監控、沙箱模擬執行、系統調用序列分析、文件系統微濾波驅動監控寫入 EXE、進程創建鏈分析 | 攔截釋放、注入、修改 EXE 等惡意行為 |
| **記憶體防護** | DEP (NX)、ASLR、CFG (控制流守護)、ACG (任意代碼防護)、VBS (虛擬化安全) | 阻止 Shellcode 執行、RunPE 注入、ROP 攻擊 |
| **信譽與雲端** | 文件雲端查殺、數位簽名信任鏈、智慧螢幕過濾、零信任執行控制 | 阻止無簽名/低信譽文件執行 |
| **自我保護** | 關鍵系統文件保護 (WRP/SFC)、受保護進程 (PPL)、防篡改驅動 | 防止系統文件被感染替換 |
類似技術在合法軟體中有正當用途:
合規要求:數位簽名、明確用戶授權、無隱蔽行為、通過殺毒軟體白名單認證、開源或接受安全審計。
文件感染技術雖然歷史悠久,但其核心——**PE 結構操控、代碼注入、入口點劫持、資源內嵌**——構成了二進制安全攻防的基石。現代防禦體系通過「靜態+動態+記憶體+信譽+雲端」多維立體防護,已將傳統感染型病毒壓縮至極低生存空間。安全研究人員應專注於**未知威脅狩獵、行為建模、記憶體取證、供應鏈安全**等前沿方向,而非過度鑽研過時的感染技術實現細節。