第一部分 反病毒技術入門
第1章 反病毒軟件入門 2
1.1 何謂反病毒軟件 2
1.2 反病毒軟件的曆史與現狀 2
1.3 反病毒掃描器、內核和産品 3
1.4 反病毒軟件的典型誤區 4
1.5 反病毒軟件功能 5
1.5.1 基礎功能 5
1.5.2 高級功能 8
1.6 總結 10
第2章 逆嚮工程核心 11
2.1 逆嚮分析工具 11
2.1.1 命令行工具與GUI工具 11
2.1.2 調試符號 12
2.1.3 提取調試符號的技巧 13
2.2 調試技巧 16
2.3 移植內核 22
2.4 實戰案例:為Linux版Avast編寫Python binding 23
2.4.1 Linux版Avast簡介 23
2.4.2 為Linux版Avast編寫簡單的Python binding 25
2.4.3 Python binding的最終版本 30
2.5 實戰案例:為Linux版Comodo編寫本機C/C++工具 30
2.6 內核加載的其他部分 46
2.7 總結 47
第3章 插件係統 48
3.1 插件加載原理 48
3.1.1 反病毒軟件的全功能鏈接器 49
3.1.2 理解動態加載 49
3.1.3 插件打包方式的利弊 50
3.2 反病毒插件的種類 52
3.2.1 掃描器和通用偵測程序 52
3.2.2 支持文件格式和協議 53
3.2.3 啓發式檢測 54
3.3 高級插件 57
3.3.1 內存掃描器 57
3.3.2 非本機代碼 58
3.3.3 腳本語言 59
3.3.4 模擬器 60
3.4 總結 61
第4章 反病毒特徵碼技術 62
4.1 典型特徵碼 62
4.1.1 字節流 62
4.1.2 校驗和 63
4.1.3 定製的校驗和 63
4.1.4 加密散列算法 64
4.2 高級特徵碼 64
4.2.1 模糊散列算法 65
4.2.2 基於程序圖的可執行文件散列算法 66
4.3 總結 68
第5章 反病毒軟件的更新係統 69
5.1 理解更新協議 69
5.1.1 支持SSL/TLS 70
5.1.2 驗證更新文件 71
5.2 剖析更新協議 72
5.3 錯誤的保護 79
5.4 總結 79
第二部分 繞過反病毒軟件
第6章 繞過反病毒軟件 82
6.1 誰會使用反病毒軟件的繞過技術 82
6.2 探究反病毒軟件偵測惡意軟件的方式 83
6.2.1 用於偵測惡意軟件的老把戲:分治算法 83
6.2.2 二進製指令和汙點分析 88
6.3 總結 89
第7章 繞過特徵碼識彆 90
7.1 文件格式:偏門案例和無文檔說明案例 90
7.2 繞過現實中的特徵碼 91
7.3 繞過特定文件格式的相關提示和技巧 96
7.3.1 PE文件 96
7.3.2 JavaScript 98
7.3.3 PDF 100
7.4 總結 102
第8章 繞過掃描器 104
8.1 繞過技術的通用提示和策略 104
8.1.1 識彆分析模擬器 105
8.1.2 高級繞過技巧 106
8.2 自動化繞過掃描器 117
8.2.1 初始步驟 117
8.2.2 MultiAV配置 121
8.2.3 peCloak 125
8.2.4 編寫終極工具 126
8.3 總結 128
第9章 繞過啓發式引擎 130
9.1 啓發式引擎種類 130
9.1.1 靜態啓發式引擎 130
9.1.2 繞過簡單的靜態啓發式引擎 131
9.1.3 動態啓發式引擎 137
9.2 總結 142
第10章 確定攻擊麵 144
10.1 理解本地攻擊麵 145
10.1.1 查找文件和係統目錄權限的弱點 145
10.1.2 權限提升 146
10.2 錯誤的訪問控製列錶 146
10.2.1 在Unix平颱上利用SUID和SGID二進製文件漏洞 148
10.2.2 程序和二進製文件的ASLR和DEP保護 149
10.2.3 利用Windows對象的錯誤權限 151
10.2.4 利用邏輯缺陷 153
10.3 理解遠程攻擊麵 155
10.3.1 文件解析器 155
10.3.2 通用偵測和感染文件修復代碼 156
10.3.3 網絡服務、管理麵闆和控製颱 156
10.3.4 防火牆、入侵監測係統和解析器 157
10.3.5 更新服務 157
10.3.6 瀏覽器插件 157
10.3.7 安全增強軟件 158
10.4 總結 159
第11章 拒絕服務攻擊 161
11.1 本地拒絕服務攻擊 161
11.1.1 壓縮炸彈 162
11.1.2 文件格式解析器中的缺陷 165
11.1.3 攻擊內核驅動 165
11.2 遠程拒絕服務攻擊 166
11.2.1 壓縮炸彈 166
11.2.2 文件格式解析器中的缺陷 167
11.3 總結 167
第三部分 分析與攻擊
第12章 靜態分析 170
12.1 手動二進製審計 170
12.1.1 文件格式解析器 170
12.1.2 遠程服務 177
12.2 總結 181
第13章 動態分析 182
13.1 模糊測試 182
13.1.1 模糊測試工具是什麼 182
13.1.2 簡單的模糊測試 183
13.1.3 對反病毒産品的自動化模糊測試 185
13.1.4 找到好的模糊測試模版 192
13.1.5 查找模版文件 194
13.1.6 使代碼覆蓋率最大化 196
13.1.7 模糊測試套組Nightmare 201
13.2 總結 207
第14章 本地攻擊 209
14.1 利用後門和隱藏功能 209
14.2 挖掘非法特權、權限分配和訪問控製列錶 213
14.3 在內核態查找隱蔽的功能特性 217
14.4 更多的內核邏輯漏洞 223
14.5 總結 231
第15章 遠程漏洞 233
15.1 實施客戶端漏洞利用攻擊 233
15.1.1 利用沙盒的缺陷 233
15.1.2 利用ASLR、DEP和位於固定地址的RWX頁麵漏洞 234
15.1.3 編寫復雜的payload 235
15.1.4 利用更新服務中的漏洞 240
15.2 服務器端的漏洞利用 248
15.2.1 客戶端和服務器端漏洞利用的區彆 248
15.2.2 利用ASLR、DEP和地址固定的RWX內存頁麵相關漏洞 249
15.3 總結 249
第四部分 當前趨勢與建議
第16章 當前反病毒防護趨勢 252
16.1 匹配攻擊技術與目標 252
16.1.1 多種多樣的反病毒産品 252
16.1.2 針對傢庭用戶 253
16.1.3 針對中小型公司 254
16.2 針對政府機構和大型公司 254
16.3 總結 255
第17章 一些建議和未來展望 256
17.1 給反病毒軟件用戶的建議 256
17.1.1 盲目信任是錯誤的 256
17.1.2 隔離機器來增強防護 260
17.1.3 審計反病毒産品 261
17.2 給反病毒廠商的建議 261
17.2.1 優秀的工程師並不代錶安全 261
17.2.2 利用反病毒軟件的漏洞很簡單 262
17.2.3 進行審計 262
17.2.4 模糊測試 262
17.2.5 安全地使用權限 263
17.2.6 減少解析器中的危險代碼 263
17.2.7 改進升級服務和協議的安全性 264
17.2.8 刪除或禁用舊代碼 264
17.3 總結 265
· · · · · · (
收起)