惡意軟件分析與檢測工程

阿比吉特?莫漢塔(Abhijit Mohanta)阿努普?薩爾達尼亞(Anoop Saldanha)

  • 惡意軟件分析與檢測工程-preview-1
惡意軟件分析與檢測工程-preview-1

相關主題

商品描述

本書是惡意軟件分析與檢測領域的系統性實戰指南,全面講解惡意軟件內部原理、分析方法與檢測技術,不僅系統介紹惡意軟件分析與逆向工程技能,還深入介紹惡意軟件分類、研判方法及業內尚未公開的實用技巧,幫助讀者深入理解攻擊意圖,從容應對各類惡意軟件挑戰。 本書分為6個部分,共25章。第一部分介紹惡意軟件基礎、類型、行業術語及分析實驗室的搭建等知識;第二部分講解操作系統與系統的基礎知識,涵蓋文件格式、虛擬內存、Windows內核原理等;第三部分深入剖析惡意軟件的組成部分,包括加殼、持久化機制、代碼註入與進程掏空等;第四部分聚焦惡意軟件分析與歸類,詳述靜態分析、動態分析、內存取證及家族歸類等方法;第五部分介紹惡意軟件逆向工程核心內容,涵蓋調試器、匯編語言、脫殼技巧及代碼註入調試等;第六部分聚焦檢測工程,解析殺毒引擎、IDS、IPS和Suricata規則編寫、沙箱的工作原理及二進制插樁技術等。全書配有大量實操練習,幫助讀者掌握從拆解、分析到防禦惡意軟件的全流程技能。 本書適合網絡安全從業者及網絡工程師閱讀,也可作為高校網絡安全相關專業的教學參考書或者企業安全培訓的實操教材。

作者簡介

阿比吉特·莫漢塔:獨立網絡安全顧問與企業培訓師,深耕惡意軟件逆向工程、漏洞研究、防病毒引擎開發、反惡意軟件特征碼編寫與沙箱開發等領域。他曾任職於賽門鐵克(Symantec)、邁克菲(McAfee)、瞻博網絡(Juniper Networks)反惡意軟件實驗室,並擁有多項專利。定期撰寫博客,多次在安全會議和研討會上發表演講,其文章被包括eForensics在內的多家博客、期刊和白皮書轉載引用。另著有Preventing Ransomware: Understand, Prevent, and Remediate Ransomware Attacks。 阿努普·薩爾達尼亞:獨立安全顧問與企業安全培訓師。美國國土安全部資助的感染檢測與防禦系統Suricata的核心開發者之一。他擅長設計與開發各種基於主機和網絡的安全檢測技術,涵蓋IDS/IPS等網絡安全工具、惡意軟件沙箱、惡意軟件分析工具、防火墻、終端與物聯網安全工具。擁有多項安全領域專利,多次在安全會議和研討會上發表演講。曾任職於RSA Security、Juniper Networks、Cyphort Cybersecurity及多家網絡安全初創公司的威脅研究實驗室與檢測工程團隊。

目錄大綱

第 一部分 緒論 第 1 章 導論 ...................................................... 3 1.1 惡意軟件類型 ...................................... 4 1.1.1 平臺多樣性 .................................. 5 1.1.2 目標多樣性 .................................. 5 1.2 網絡殺傷鏈 .......................................... 6 1.3 惡意軟件生命周期 ............................. 7 1.3.1 開發階段 ...................................... 7 1.3.2 分發階段:多樣化的傳輸系統.............................................. 8 1.3.3 感染階段 ...................................... 8 1.3.4 感染後階段 .................................. 8 1.4 惡意軟件的商業模式 ........................ 9 1.5 對抗惡意軟件的戰爭 ........................ 9 1.5.1 作戰團隊 ...................................... 9 1.5.2 反惡意軟件產品 ........................ 11 1.6 術語 ...................................................... 11 1.7 小結 ...................................................... 13 第 2 章 搭建惡意軟件分析實驗室 ............ 14 2.1 對主機系統的要求 ........................... 14 2.2 對網絡的要求 .................................... 15 2.3 創建分析虛擬機 ............................... 15 2.4 調整分析虛擬機 ............................... 16 2.4.1 顯示文件擴展名 ........................ 16 2.4.2 顯示隱藏的文件和文件夾 ........ 17 2.4.3 禁用 ASLR ................................ 17 2.4.4 禁用 Windows 防火墻 ............... 18 2.4.5 禁用 Windows Defender (和其他殺毒軟件) ................................ 18 2.4.6 模擬終端用戶系統 .................... 19 2.5 快照 ...................................................... 19 2.6 分析工具 ............................................. 20 2.6.1 HashMyFiles 等哈希工具 ......... 21 2.6.2 APIMiner ................................... 21 2.6.3 CFF Explorer 和 PEView ........... 21 2.6.4 文件類型識別工具 .................... 21 2.6.5 Process Hacker Process Explorer 和 CurrProcess ........................... 22 2.6.6 ProcMon ..................................... 22 2.6.7 Autoruns ..................................... 22 2.6.8 Regshot ....................................... 22 2.6.9 NTTrace ..................................... 22 2.6.10 FakeNet .................................... 23 2.6.11 BinText ..................................... 23 2.6.12 YARA ....................................... 23 2.6.13 Wireshark ................................. 24 2.6.14 Microsoft Network Monitor ..... 24 2.6.15 OllyDbg 2.0 .............................. 24 2.6.16 Notepad++ ................................ 24 2.6.17 Malzilla .................................... 24 2.6.18 PEiD ......................................... 25 2.6.19 FTK Imager Lite ....................... 25 2.6.20 Volatility Standalone ................ 25 2.6.21 Ring3 API Hook Scanner ......... 25 2.6.22 GMER ...................................... 25 2.6.23 SSDTView ................................ 25 2.6.24 DriverView ............................... 25 2.6.25 Strings ...................................... 25 2.6.26 SimpleWMIView ...................... 26 2.6.27 Registry Viewer ........................ 26 2.6.28 Bulk Extractor .......................... 26 2.6.29 Suricata ..................................... 26 2.6.30 Cuckoo Sandbox ....................... 26 2.6.31 rundll32.exe .............................. 26 2.6.32 oledump.py ............................... 27 2.6.33 OllyDumpEx ............................ 27 2.6.34 DocFileViewer .......................... 27 2.6.35 Fiddler ...................................... 27 2.6.36 IDA Pro .................................... 27 2.6.37 x64dbg 和 Immunity Debugger .................................. 27 2.7 小結 ...................................................... 28 第二部分 操作系統與系統基礎 第 3 章 文件與文件格式 .............................. 31 3.1 以原生十六進制形式顯示文件 ... 31 3.2 哈希值:獨特的文件指紋 ............. 32 3.3 識別文件類型 .................................... 33 3.3.1 文件擴展名 ................................ 33 3.3.2 文件格式:識別文件類型的可靠方法 .................................... 36 3.3.3 手動識別文件格式 .................... 38 3.4 小結 ...................................................... 39 第 4 章 虛擬內存與 PE 文件 ...................... 40 4.1 進程的創建 ........................................ 40 4.1.1 執行程序 .................................... 40 4.1.2 使用 Process Hacker 探究進程 .................................... 41 4.2 虛擬內存 ............................................. 43 4.2.1 可尋址性 .................................... 44 4.2.2 內存頁........................................ 44 4.2.3 請求分頁 .................................... 45 4.2.4 頁表 ........................................... 46 4.2.5 虛擬內存地址空間劃分 ............ 46 4.2.6 使用 Process Hacker 查看頁面 ........................................... 47 4.2.7 虛擬內存中的字符串 ................ 49 4.2.8 使用虛擬內存檢測惡意軟件 ...... 50 4.3 可移植可執行 (PE) 文件 ............ 51 4.3.1 探究 Windows 可執行文件 ....... 52 4.3.2 PE 文件中重要的頭和字段 ...... 56 4.3.3 動態鏈接庫 ................................ 60 4.3.4 導入地址表 ................................ 64 4.4 小結 ...................................................... 65 第 5 章 Windows 內核原理 ........................ 66 5.1 Win32 API ........................................... 66 5.1.1 獲取 API 日誌 ........................... 66 5.1.2 Win32 DLL ................................ 67 5.1.3 研究 Win32 API 與 MSDN 文檔 ............................................ 68 5.1.4 通過 API 識別行為 .................... 72 5.2 Windows 註冊表 ............................... 73 5.2.1 註冊表的邏輯視圖 .................... 73 5.2.2 註冊表中的數據存儲 ................ 74 5.2.3 向註冊表添加數據 .................... 74 5.2.4 惡意軟件與註冊表 .................... 75 5.3 Windows 系統中的重要目錄 ........ 75 5.3.1 System32 目錄 ........................... 76 5.3.2 Program Files 目錄 .................... 76 5.3.3 用戶文檔和設置目錄 ................ 76 5.3.4 惡意軟件分析人員的關註點 .... 76 5.4 Windows 進程 .................................... 77 5.5 Windows 服務 .................................... 80 5.5.1 services.exe 下的可執行文件型服務 ............................................ 81 5.5.2 svchost 下的 DLL 型服務 ......... 82 5.5.3 冒充 Windows 服務的惡意軟件 .................................... 83 5.6 系統調用 ............................................. 85 5.7 互斥體 .................................................. 85 5.8 小結 ...................................................... 86 第三部分 惡意軟件的組成部分 第 6 章 惡意軟件的組成部分和傳播方式 ... 89 6.1 惡意軟件的組成部分 ...................... 89 6.1.1 載荷 ........................................... 89 6.1.2 加殼器........................................ 90 6.1.3 持久化模塊 ................................ 90 6.1.4 防護機制 .................................... 91 6.1.5 隱身模塊 .................................... 91 6.1.6 通信模塊 .................................... 91 6.1.7 傳播模塊 .................................... 91 6.2 傳播方式 ............................................. 92 6.2.1 漏洞利用程序與漏洞利用工具包 ........................................ 92 6.2.2 垃圾郵件 .................................... 98 6.2.3 受感染的存儲設備 .................... 99 6.2.4 惡意廣告 .................................... 99 6.2.5 無交互下載 .............................. 100 6.2.6 下載器 ...................................... 100 6.2.7 通過弱認證直接登錄 .............. 100 6.2.8 共享文件夾 .............................. 100 6.3 小結 .................................................... 101 第 7 章 惡意軟件加殼器 ............................ 102 7.1 加密與壓縮 ...................................... 102 7.2 加殼器 ................................................ 103 7.2.1 加殼器的工作原理 .................. 103 7.2.2 加密器和保護器 ...................... 104 7.2.3 安裝程序 .................................. 104 7.3 加殼示例 ........................................... 104 7.4 識別經過加殼的樣本 .................... 106 7.4.1 熵值.......................................... 106 7.4.2 字符串 ...................................... 107 7.5 識別加殼器 ....................................... 111 7.5.1 PEiD 工具 ................................. 111 7.5.2 入口點代碼 .............................. 112 7.5.3 節名.......................................... 113 7.5.4 自行開發的加殼器 .................. 113 7.6 對加殼器的誤解 ............................. 114 7.7 小結 .................................................... 114 第 8 章 持久化機制 ..................................... 115 8.1 用於持久化的資源 ......................... 115 8.2 分析工具 ........................................... 115 8.2.1 Autoruns ................................... 115 8.2.2 ProcMon ................................... 116 8.3 啟動目錄 ........................................... 117 8.4 註冊表 Run 項 ................................. 119 8.5 服務 .................................................... 121 8.6 文件感染 ........................................... 123 8.7 DLL 劫持 .......................................... 123 8.8 Winlogon ........................................... 124 8.9 任務計劃程序 .................................. 124 8.10 調試器 ............................................. 125 8.10.1 Image File Execution Options ................................. 125 8.10.2 SilentProcessExit .................. 126 8.11 小結 .................................................. 127 第 9 章 網絡通信 ......................................... 128 9.1 為何進行通信 .................................. 128 9.2 CnC 服務器 中繼器 代理和惡意軟件網絡 ........................................... 129 9.3 解析 CnC 服務器的 IP 地址 ....... 130 9.3.1 固定 IP 地址 ............................ 130 9.3.2 固定域名 .................................. 131 9.3.3 域名通量和域名生成算法 ...... 131 9.4 CnC / 數據竊取方法 ........................ 133 9.4.1 HTTP ........................................ 133 9.4.2 IRC ........................................... 135 9.4.3 其他方法 .................................. 136 9.5 橫向移動 ........................................... 136 9.5.1 偵查 .......................................... 137 9.5.2 憑證竊取或漏洞利用準備 ...... 137 9.5.3 獲取訪問權限 .......................... 139 9.5.4 SMB PsExec 等滲透方法 ..... 139 9.6 檢測網絡通信 .................................. 139 9.6.1 網絡 API 與 API 日誌工具 APIMiner .................................. 139 9.6.2 字符串分析 .............................. 141 9.6.3 IP 聲譽和域名聲譽 ................. 141 9.6.4 靜態特征碼:IDS 和防火墻 .... 141 9.6.5 異常基線 .................................. 142 9.7 小結 .................................................... 143 第 10 章 代碼註入 進程掏空與 API 掛鉤 ............................................... 144 10.1 何為代碼註入 ................................ 144 10.2 代碼註入的動機 ........................... 144 10.2.1 隱身 ...................................... 144 10.2.2 進程搭載 .............................. 145 10.2.3 篡改功能 .............................. 146 10.3 代碼註入的目標 ........................... 146 10.4 常見的代碼註入技術 .................. 147 10.5 代碼註入步驟 ................................ 147 10.6 傳統 DLL 註入 .............................. 157 10.7 進程掏空 ......................................... 159 10.8 傳統 shellcode 註入 ..................... 161 10.9 反射型 DLL 註入 ......................... 162 10.10 需要記住的重要 API ................ 162 10.11 為何提供這些惡意 API ............ 163 10.12 代碼 / API 掛鉤 ............................. 163 10.12.1 確定掛鉤點 / 目標 ............. 164 10.12.2 在用戶空間中設置掛鉤 .... 165 10.12.3 惡意軟件為何要設置掛鉤 ................................. 167 10.12.4 掛鉤技術在安全軟件中的應用 ................................. 169 10.12.5 掛鉤掃描工具 .................. 170 10.12.6 案例研究:針對 DeleteFile () 的掛鉤 ............................. 171 10.12.7 案例研究:在 Internet Explorer 中設置掛鉤 ....... 172 10.12.8 APIMiner ......................... 174 10.13 小結 ................................................ 175 第 11 章 隱身技術與根工具包 ................ 176 11.1 為何要隱身 .................................... 176 11.2 簡單的隱身技術 ........................... 176 11.2.1 文件屬性與權限 .................. 177 11.2.2 圖標偽造 .............................. 180 11.2.3 文件名偽造與擴展名偽造 ...................................... 181 11.2.4 盜用系統文件名 .................. 181 11.2.5 心理語言學隱身術 .............. 181 11.2.6 隱藏進程窗口 ...................... 182 11.3 代碼註入 ......................................... 182 11.4 根工具包 ......................................... 183 11.4.1 用戶模式根工具包 .............. 183 11.4.2 內核模式根工具包 .............. 185 11.4.3 其他的根工具包創建方法 .... 197 11.5 小結 .................................................. 198 第四部分 惡意軟件分析與歸類 第 12 章 靜態分析 ...................................... 201 12.1 為何要進行靜態分析 .................. 201 12.2 用於信息交換的樣本哈希值 .... 202 12.3 互聯網 博客和分析報告 ........ 202 12.4 VirusTotal 及其他分析平臺 ...... 203 12.5 確定文件格式 ............................... 205 12.6 獲取完整的感染上下文 ............. 206 12.7 文件名偽造與擴展名偽造 ........ 206 12.8 文件圖標偽造 ............................... 207 12.9 文件類型與文件擴展名不匹配 ............................................. 208 12.10 版本信息 / 詳細信息 ................... 209 12.11 代碼簽名者信息 ......................... 209 12.12 靜態字符串分析......................... 210 12.13 YARA ............................................ 212 12.14 為動態分析做準備的靜態分析 ................................................ 214 12.15 小結 ................................................ 214 第 13 章 動態分析 ...................................... 215 13.1 備好基準快照 ............................... 215 13.2 首次運行:概覽 ........................... 215 13.2.1 樣本拒絕運行 ...................... 216 13.2.2 是否以管理員身份運行 ...... 216 13.2.3 案例研究 1 ........................... 216 13.2.4 案例研究 2 ........................... 217 13.2.5 案例研究 3 ........................... 218 13.3 APIMiner: 根據 API 日誌識別行為 ......................................... 219 13.4 動態字符串分析 ........................... 221 13.4.1 文件類型 .............................. 222 13.4.2 版本信息 / 詳細信息 ............. 222 13.4.3 是否經過了加殼 .................. 222 13.5 ProcMon: 行為事件分析 .......... 225 13.6 檢測代碼註入 ................................ 227 13.7 對進程運行 YARA 規則 ............ 228 13.8 其他惡意行為 ................................ 228 13.8.1 為隱身盜用系統文件的名稱 ...................................... 228 13.8.2 怪異的文件名和進程名 ...... 228 13.8.3 消失的可執行文件 .............. 229 13.8.4 進程實例數 .......................... 229 13.8.5 進程會話 ID ......................... 229 13.9 小結 .................................................. 229 第 14 章 使用 Volatility 進行內存取證 ... 230 14.1 何為內存取證 ................................ 230 14.2 為何要進行內存取證 .................. 231 14.3 內存取證的步驟 ........................... 231 14.4 內存獲取 ......................................... 231 14.4.1 Sample-14-1.mem ................ 232 14.4.2 Sample-14-2.mem ................ 233 14.4.3 Sample-14-3.mem ................ 233 14.5 內存分析 / 取證 .............................. 233 14.5.1 Volatility 命令的格式 .......... 235 14.5.2 映像信息 .............................. 235 14.5.3 列出進程和服務 .................. 236 14.5.4 檢查虛擬內存 ...................... 238 14.5.5 列出進程模塊 ...................... 240 14.5.6 列出句柄 .............................. 242 14.5.7 掃描註冊表 .......................... 244 14.5.8 識別代碼註入和 API 掛鉤 ...................................... 247 14.5.9 檢查內核 .............................. 249 14.5.10 網絡通信 ............................ 250 14.6 小結 .................................................. 251 第 15 章 惡意軟件載荷剖析與歸類 ........ 253 15.1 惡意軟件類型 家族 變種與聚集 .................................................. 253 15.2 命名規則 ......................................... 254 15.3 歸類的重要性 ............................... 255 15.3.1 主動檢測 .............................. 255 15.3.2 正確處置 .............................. 255 15.3.3 情報收集 .............................. 256 15.3.4 攻擊的意圖與範圍 .............. 256 15.4 歸類依據 ......................................... 256 15.4.1 API 調用 .............................. 257 15.4.2 惡意軟件開發者信息 .......... 257 15.4.3 API 掛鉤 .............................. 257 15.4.4 調試信息 .............................. 257 15.4.5 復用的代碼 .......................... 258 15.4.6 庫依賴項 .............................. 258 15.4.7 格式字符串 .......................... 258 15.4.8 互斥體名稱 .......................... 258 15.4.9 IP 地址 域名和 URL ........ 259 15.4.10 文件名 ................................ 259 15.4.11 獨特字符串 ........................ 259 15.5 鍵盤記錄器 .................................... 259 15.5.1 攔截鍵盤消息 ...................... 260 15.5.2 獲取鍵狀態 .......................... 260 15.6 信息竊取器 .................................... 262 15.6.1 動態事件與 API 日誌 .......... 262 15.6.2 對信息竊取器進行字符串分析 ...................................... 263 15.7 銀行惡意軟件 ................................ 264 15.7.1 API 日誌與掛鉤掃描工具 .... 264 15.7.2 對銀行木馬進行字符串分析 ...................................... 265 15.8 POS 惡意軟件 ............................... 267 15.8.1 POS 設備的工作原理 .......... 267 15.8.2 POS 惡意軟件的工作原理 ..... 268 15.8.3 POS 惡意軟件的識別與歸類 ...................................... 268 15.8.4 POS 惡意軟件中的字符串 ..... 269 15.9 ATM 惡意軟件 .............................. 270 15.10 RAT ................................................ 271 15.10.1 識別 RAT ......................... 272 15.10.2 RAT 中的字符串 ............. 272 15.11 勒索軟件 ....................................... 273 15.11.1 識別勒索軟件 .................. 273 15.11.2 勒索軟件中的字符串 ...... 275 15.12 加密貨幣挖礦惡意軟件 ........... 276 15.13 病毒 ................................................ 277 15.14 小結 ................................................ 278 第五部分 惡意軟件逆向工程 第 16 章 調試器與匯編語言 ..................... 281 16.1 逆向工程與反匯編器 .................. 281 16.2 PE 與機器碼 .................................. 282 16.3 x86 匯編語言 ................................. 283 16.3.1 指令格式 .............................. 283 16.3.2 寄存器 .................................. 286 16.3.3 重要的 x86 指令 .................. 289 16.4 調試器與反匯編 ........................... 297 16.4.1 調試器基礎 .......................... 297 16.4.2 比較 OllyDbg 和 IDA Pro .... 298 16.4.3 探索 OllyDbg ....................... 298 16.4.4 探索 IDA Pro ....................... 305 16.4.5 OllyDbg 和 IDA Pro 所做的美化和修改 .......................... 307 16.5 識別反匯編結果中的高級語言結構 ......................................... 309 16.5.1 識別棧幀 .............................. 309 16.5.2 識別函數序言和函數尾聲 .... 311 16.5.3 識別局部變量 ...................... 311 16.5.4 識別指針 .............................. 313 16.5.5 識別全局變量 ...................... 314 16.5.6 識別棧上的數組 .................. 315 16.5.7 識別棧上的結構體 .............. 316 16.5.8 識別函數調用參數 .............. 318 16.5.9 識別分支條件 ...................... 319 16.5.10 識別循環 ............................ 320 16.6 提高反匯編結果的可讀性 ......... 322 16.6.1 顏色標記 .............................. 322 16.6.2 標簽與註釋 .......................... 322 16.6.3 跟蹤變量 .............................. 323 16.7 提高反匯編分析的速度 ............. 324 16.7.1 跳過編譯器樁代碼 .............. 324 16.7.2 用代數方法精簡指令 .......... 324 16.7.3 使用反編譯器 ...................... 325 16.7.4 代碼塊和流程圖 .................. 325 16.7.5 交叉引用 .............................. 327 16.8 調試器的高級用法 ...................... 330 16.8.1 查看 API 調用和參數 ......... 330 16.8.2 Win32 API 開頭設置斷點 ... 331 16.8.3 調試器事件 .......................... 333 16.8.4 修改 ...................................... 333 16.8.5 調用棧 .................................. 334 16.9 小結 .................................................. 335 第 17 章 調試技巧在惡意軟件脫殼中的應用 ............................................... 337 17.1 脫殼原理 ......................................... 337 17.1.1 OEP 和載荷 ......................... 337 17.1.2 經過加殼的二進制文件的執行過程 .............................. 338 17.2 使用調試器手動脫殼 .................. 342 17.2.1 借助 APIMiner 生成的 API 日誌快速脫殼 ...................... 343 17.2.2 常見加殼器的調試技巧 ...... 344 17.2.3 其他技巧 .............................. 347 17.2.4 借助編譯器樁代碼識別 OEP ...................................... 347 17.2.5 回溯 ...................................... 348 17.2.6 是否在載荷內 ...................... 350 17.3 不同的脫殼方法 ........................... 350 17.4 小結 .................................................. 350 第 18 章 代碼註入調試 .............................. 351 18.1 API 日誌和斷點 ........................... 351 18.2 註入入口點 .................................... 351 18.3 借助 CreateRemoteThread 定位 IEP .......................................... 352 18.4 根據線程上下文定位 IEP .......... 356 18.5 EBFE 技巧 ..................................... 362 18.6 小結 .................................................. 363 第 19 章 防護與規避 .................................. 364 19.1 防護技術 ......................................... 364 19.1.1 反靜態分析 .......................... 364 19.1.2 反動態分析 .......................... 364 19.1.3 反調試 .................................. 371 19.1.4 使用垃圾代碼對抗反匯編 .... 375 19.2 規避技術 ......................................... 375 19.2.1 規避殺毒軟件 ...................... 376 19.2.2 規避網絡安全產品 .............. 376 19.2.3 規避沙箱 .............................. 377 19.2.4 對抗惡意軟件防護機制 ...... 378 19.2.5 開源的反規避項目 .............. 379 19.3 小結 .................................................. 379 第 20 章 無文件 宏及其他惡意軟件的發展趨勢 ....................................... 380 20.1 Windows 腳本編寫環境 ............. 380 20.2 混淆 .................................................. 381 20.2.1 十六進制編碼 ...................... 381 20.2.2 字符串拆分與拼接 .............. 382 20.2.3 插入垃圾內容 ...................... 382 20.2.4 使用 eval () 執行表達式運算 ...................................... 383 20.2.5 加密算法 .............................. 384 20.3 反混淆 ............................................. 384 20.3.1 靜態反混淆 .......................... 385 20.3.2 動態反混淆 .......................... 386 20.3.3 瀏覽器內置的腳本調試器 .... 387 20.4 載荷 .................................................. 389 20.4.1 下載器與投放器 .................. 389 20.4.2 漏洞利用代碼 ...................... 390 20.5 VBScript 惡意軟件 ...................... 390 20.6 Microsoft Office 惡意軟件 ......... 392 20.6.1 OLE 文件格式 ..................... 392 20.6.2 剖析 OLE 格式 .................... 393 20.6.3 提取流 .................................. 393 20.6.4 宏 .......................................... 395 20.7 無文件惡意軟件 ........................... 399 20.7.1 Windows 管理規範 .............. 399 20.7.2 PowerShell ........................... 401 20.8 小結 .................................................. 404 第六部分 檢測工程 第 21 章 檢測工程準備 .............................. 408 21.1.2 構建 APIMiner 和 Cuckoo Monitor ................................. 409 21.2 Windows 虛擬機 ........................... 410 21.2.1 安裝 Visual Studio ............... 410 21.2.2 安裝 Cygwin ........................ 411 21.2.3 整合 Cygwin 和 Visual Studio ........................ 412 21.2.4 其他工具 .............................. 412 21.3 小結 ...................................................... 413 第 22 章 殺毒引擎 ...................................... 414 22.1 殺毒軟件的主要組件 .................. 414 22.2 特征碼和特征碼模塊 .................. 415 22.2.1 特征碼分類 .......................... 416 22.2.2 註意事項 .............................. 422 22.2.3 特征碼優化 .......................... 422 22.2.4 風險最小化 .......................... 424 22.3 文件掃描器 .................................... 425 22.4 脫殼器模塊 .................................... 426 22.5 內存掃描器 .................................... 427 22.6 鉤子和根工具包檢測模塊 ........ 428 22.7 病毒多態性和仿真器 .................. 429 22.8 修復模塊 ......................................... 429 22.9 下一代殺毒軟件 ........................... 430 22.10 小結 ................................................ 430 第 23 章 編寫 IDS IPS 和 Suricata 規則 ............................................... 431 23.1 網絡流量的流向 ........................... 431 23.1.1 南北流量 .............................. 432 23.1.2 東西流量 .............................. 432 23.2 網絡流量分析 ............................... 432 23.3 基於 IDPS 的網絡安全 ............... 432 23.3.1 IDS 和 IPS 的區別 ............... 433 23.3.2 IDS 流量饋送 ...................... 433 23.3.3 IPS 流量饋送 ....................... 434 23.3.4 偽 IPS = IDS + 偽串聯 ....... 435 23.3.5 IDPS 傳感器的部署要點 .... 435 23.4 IDPS 組件 ....................................... 436 23.4.1 數據包捕獲模塊 .................. 436 23.4.2 解碼器模塊 .......................... 437 23.4.3 TCP 流重組模塊 .................. 437 23.4.4 應用層解析 .......................... 438 23.4.5 檢測引擎 .............................. 438 23.4.6 日誌模塊 .............................. 438 23.5 Suricata ............................................ 439 23.5.1 yaml 配置文件 ..................... 439 23.5.2 使用 Suricata 分析 PCAP 文件 ...................................... 440 23.6 編寫 Suricata 規則 ....................... 441 23.6.1 規則的基本結構 .................. 441 23.6.2 IP only 規則 ......................... 443 23.6.3 關鍵字 .................................. 444 23.7 小結 .................................................. 447 第 24 章 惡意軟件沙箱的工作原理 ........ 448 24.1 什麼是惡意軟件沙箱 .................. 448 24.2 為何需要惡意軟件沙箱 ............. 449 24.3 安全架構中的沙箱 ...................... 450 24.4 沙箱設計 ......................................... 450 24.4.1 樣本分析工作流程 .............. 451 24.4.2 客戶機 .................................. 452 24.4.3 宿主機代理和客戶機代理 .... 453 24.4.4 監視代理 .............................. 455 24.4.5 誘騙代理和其他代理 .......... 456 24.4.6 宿主機代理與客戶機代理之間的通信通道 .................. 456 24.4.7 記錄技術:文件寫入和流式傳輸 .............................. 456 24.5 根據沙箱分析結果編寫檢測規則 .................................................. 456 24.6 結合使用沙箱和機器學習 ......... 457 24.7 小結 .................................................. 457 第 25 章 借助二進制插樁自動化逆向工程 ....................................... 458 25.1 何為二進制插樁 ........................... 458 25.2 DBI 涉及的術語和工作原理 .... 460 25.3 DBI 在惡意軟件分析中的應用 ....................................... 462 25.4 使用 DBI 編寫工具 ..................... 463 25.4.1 安裝 Intel PIN ...................... 463 25.4.2 工具 1: 記錄所有指令 ....... 465 25.4.3 工具 2:Win32 API 日誌記錄 ...................................... 466 25.4.4 工具 3: 修改代碼及改變執行流程 .............................. 468 25.5 小結 ...................................................... 470