目錄
第1章 銷聲匿跡 1
1.1 攻擊者的動機 1
1.1.1 潛行的角色 2
1.1.2 不需潛行的情況 3
1.2 rootkit的定義 3
1.3 rootkit存在的原因 4
1.3.1 遠程命令和控製 4
1.3.2 軟件竊聽 5
1.3.3 rootkit的閤法使用 5
1.4 rootkit的存在曆史 6
1.5 rootkit的工作方式 7
1.5.1 打補丁 7
1.5.2 復活節彩蛋 7
1.5.3 間諜件修改 7
1.5.4 源代碼修改 8
1.5.5 軟件修改的閤法性 8
1.6 rootkit與其他技術的區彆 9
1.6.1 rootkit不是軟件利用工具 9
1.6.2 rootkit不是病毒 10
1.7 rootkit與軟件利用工具 11
1.8 攻擊型rootkit技術 14
1.8.1 HIPS 14
1.8.2 NIDS 15
1.8.3 繞過IDS/IPS 15
1.8.4 繞過取證分析工具 16
1.9 小結 17
第2章 破壞內核 19
2.1 重要的內核組件 20
2.2 rootkit的結構設計 20
2.3 在內核中引入代碼 23
2.4 構建Windows設備驅動程序 24
2.4.1 設備驅動程序開發工具包 24
2.4.2 構建環境 24
2.4.3 文件 25
2.5 加載和卸載驅動程序 28
2.6 對調試語句進行日誌記錄 28
2.7 融閤rootkit:用戶和內核模式的融閤 29
2.7.1 I/O請求報文 30
2.7.2 創建文件句柄 33
2.7.3 添加符號鏈接 35
2.8 加載rootkit 36
2.8.1 草率方式 36
2.8.2 正確方式 38
2.9 從資源中解壓縮.sys文件 40
2.10 係統重啓後的考驗 42
2.11 小結 43
第3章 硬件相關問題 45
3.1 環0級 46
3.2 CPU錶和係統錶 47
3.3 內存頁 48
3.3.1 內存訪問檢查 49
3.3.2 分頁和地址轉換 50
3.3.3 頁錶查詢 51
3.3.4 頁目錄項 52
3.3.5 頁錶項 53
3.3.6 重要錶的隻讀訪問 53
3.3.7 多個進程使用多個頁目錄 54
3.3.8 進程和綫程 54
3.4 內存描述符錶 55
3.4.1 全局描述符錶 55
3.4.2 本地描述符錶 56
3.4.3 代碼段 56
3.4.4 調用門 56
3.5 中斷描述符錶 56
3.6 係統服務調度錶 60
3.7 控製寄存器 60
3.7.1 控製寄存器0 60
3.7.2 其他控製寄存器 61
3.7.3 EFlags寄存器 61
3.8 多處理器係統 61
3.9 小結 63
第4章 古老的鈎子藝術 65
4.1 用戶空間鈎子 65
4.1.1 導入地址錶鈎子 67
4.1.2 內聯函數鈎子 68
4.1.3 將DLL注入到用戶空間進程中 70
4.2 內核鈎子 74
4.2.1 鈎住係統服務描述符錶 75
4.2.2 修改SSDT內存保護機製 76
4.2.3 鈎住SSDT 79
4.3 混閤式鈎子方法 99
4.3.1 進入進程的地址空間 99
4.3.2 鈎子的內存空間 103
4.4 小結 105
第5章 運行時補丁 107
5.1 detour補丁 108
5.1.1 用MigBot重定控製流程路徑 109
5.1.2 檢查函數字節 110
5.1.3 記錄被重寫的指令 112
5.1.4 使用NonPagedPool內存 114
5.1.5 運行時地址修正 115
5.2 跳轉模闆 119
5.3 補丁方法的變型 126
5.4 小結 127
第6章 分層驅動程序 129
6.1 鍵盤嗅探器 130
6.2 剖析KLOG rootkit 134
6.3 文件過濾器驅動程序 146
6.4 小結 161
第7章 直接內核對象操作 163
7.1 DKOM的優缺點 163
7.2 確定操作係統的版本 165
7.2.1 用戶模式的自確定 165
7.2.2 內核模式的自確定 167
7.2.3 在注冊錶中查詢操作係統版本 167
7.3 用戶空間與設備驅動程序的通信 169
7.4 DKOM隱藏技術 173
7.4.1 隱藏進程 173
7.4.2 隱藏設備驅動程序 179
7.4.3 同步問題 183
7.5 使用DKOM提升令牌權限和組 187
7.5.1 修改進程令牌 187
7.5.2 僞造Windows Event Viewer 201
7.6 小結 203
第8章 操縱硬件 205
8.1 為何使用硬件 206
8.2 修改固件 207
8.3 訪問硬件 208
8.3.1 硬件地址 208
8.3.2 訪問硬件與訪問RAM的區彆 209
8.3.3 定時問題 210
8.3.4 I/O總綫 210
8.3.5 訪問BIOS 212
8.3.6 訪問PCI和PCMCIA設備 213
8.4 訪問鍵盤控製器示例 213
8.4.1 8259鍵盤控製器 213
8.4.2 修改LED指示器 214
8.4.3 強製重啓 220
8.4.4 擊鍵監視器 220
8.5 微碼更新 227
8.6 小結 228
第9章 隱秘通道 229
9.1 遠程命令、控製和數據竊取 230
9.2 僞裝TCP/IP協議 231
9.2.1 注意通信量模式 231
9.2.2 不以明文發送數據 232
9.2.3 充分利用時間因素 232
9.2.4 隱藏在DNS請求中 233
9.2.5 對ASCII編碼有效負載進行隱寫操作 233
9.2.6 使用其他TCP/IP通道 234
9.3 TCP/IP內核中支持rootkit的TDI接口 235
9.3.1 構建地址結構 235
9.3.2 創建本地地址對象 237
9.3.3 根據上下文創建TDI端點 240
9.3.4 將端點與本地地址進行關聯 243
9.3.5 連接到遠程服務器(發送TCP握手消息) 245
9.3.6 將數據發送到遠程服務器 247
9.4 原始網絡操作 250
9.4.1 在Windows XP上實現原始套接字 250
9.4.2 綁定到接口 251
9.4.3 使用原始套接字進行嗅探 252
9.4.4 使用原始套接字進行雜亂嗅探 253
9.4.5 使用原始套接字發送報文 254
9.4.6 僞造源信息 254
9.4.7 彈迴報文 254
9.5 TCP/IP內核中支持rootkit的NDIS接口 255
9.5.1 注冊協議 255
9.5.2 協議驅動程序迴調函數 260
9.5.3 移動完整報文 266
9.6 主機仿真 273
9.6.1 創建MAC地址 273
9.6.2 處理ARP協議 273
9.6.3 IP網關 276
9.6.4 發送報文 276
9.7 小結 280
第10章 rootkit檢測 281
10.1 檢測rootkit的存在 281
10.1.1 守護門口 282
10.1.2 掃描“空間” 284
10.1.3 查找鈎子 284
10.2 檢測rootkit的行為 293
10.2.1 檢測隱藏的文件和注冊錶鍵 294
10.2.2 檢測隱藏的進程 294
10.3 小結 297
· · · · · · (
收起)