第Ⅰ部分 速成課:備戰
第1章 道德黑客和法律製度 3
1.1 理解敵方策略的意義 3
1.2 正義黑客過程 4
1.2.1 滲透測試過程 5
1.2.2 不道德黑客的做法 7
1.3 網絡法的興起 8
1.3.1 瞭解各種網絡法 8
1.3.2 關於“黑客”工具的爭論 13
1.4 漏洞披露 13
1.4.1 各方看待問題的不同角度 14
1.4.2 個中緣由 14
1.4.3 CERT目前采取的工作流程 15
1.4.4 Internet安全組織 16
1.4.5 爭議仍將存在 17
1.4.6 再沒有免費的bug瞭 18
1.4.7 bug賞金計劃 19
1.5 本章小結 19
1.6 參考文獻 20
1.7 擴展閱讀 21
第2章 編程技能 23
2.1 C編程語言 23
2.1.1 C語言基本結構 23
2.1.2 程序範例 27
2.1.3 使用gcc進行編譯 28
2.2 計算機內存 29
2.2.1 隨機存取存儲器(RAM) 29
2.2.2 字節序 29
2.2.3 內存分段 30
2.2.4 內存中的程序 30
2.2.5 緩衝區 31
2.2.6 內存中的字符串 31
2.2.7 指針 31
2.2.8 內存知識小結 32
2.3 Intel處理器 32
2.4 匯編語言基礎 33
2.4.1 機器指令、匯編語言與
C語言 33
2.4.2 AT&T與NASM 33
2.4.3 尋址模式 36
2.4.4 匯編文件結構 37
2.4.5 匯編過程 37
2.5 使用gdb進行調試 37
2.5.1 gdb基礎 38
2.5.2 使用gdb進行反匯編 39
2.6 Python編程技能 40
2.6.1 獲取Python 40
2.6.2 Python的Hello World程序 40
2.6.3 Python對象 41
2.6.4 字符串 41
2.6.5 數字 42
2.6.6 列錶 43
2.6.7 字典 44
2.6.8 Python文件操作 45
2.6.9 Python套接字編程 46
2.7 本章小結 47
2.8 參考文獻 47
2.9 擴展閱讀 47
第3章 靜態分析 49
3.1 道德的逆嚮工程 49
3.2 使用逆嚮工程的原因 50
3.3 源代碼分析 51
3.3.1 源代碼審計工具 51
3.3.2 源代碼審計工具的實用性 53
3.3.3 手工源代碼審計 54
3.3.4 自動化源代碼分析 59
3.4 二進製分析 60
3.4.1 二進製代碼的手工審計 60
3.4.2 自動化的二進製分析工具 72
3.5 本章小結 74
3.6 擴展閱讀 74
第4章 使用IDA Pro進行高級分析 75
4.1 靜態分析難點 75
4.1.1 剝離的二進製文件 75
4.1.2 靜態鏈接程序和FLAIR 77
4.1.3 數據結構分析 83
4.1.4 已編譯的C++代碼的
怪異之處 87
4.2 擴展IDA Pro 89
4.2.1 IDAPython腳本 90
4.2.2 執行Python代碼 98
4.3 本章小結 98
4.4 擴展閱讀 98
第5章 模糊測試的世界 101
5.1 模糊測試簡介 101
5.2 選擇目標 102
5.2.1 輸入類型 102
5.2.2 易於自動化 102
5.2.3 復雜性 103
5.3 模糊器的類型 104
5.3.1 變異模糊器 104
5.3.2 生成模糊器 105
5.4 開始 105
5.4.1 尋找模糊測試模闆 106
5.4.2 實驗 5-1: 從互聯網
檔案館獲取樣本 107
5.4.3 利用代碼覆蓋率選取
最優模闆集 108
5.4.4 實驗 5-2: 為模糊測試
選取最優樣本 109
5.5 Peach模糊測試框架 110
5.5.1 Peach模糊測試策略 115
5.5.2 速度的重要性 116
5.5.3 崩潰分析 116
5.5.4 實驗5-3:Peach變異
模糊測試 120
5.5.5 其他變異模糊器 121
5.6 生成模糊器 121
5.7 本章小結 122
5.8 擴展閱讀 122
第6章 shellcode策略 125
第7章 編寫Linux shellcode 139
shellcode進行編碼 166
7.6 本章小結 167
7.7 擴展閱讀 167
第Ⅱ部分 漏洞攻擊
第8章 基於欺騙的攻擊 171
8.1 什麼是欺騙 171
8.2 ARP欺騙 172
8.2.1 實驗8-1:使用Ettercap的
ARP欺騙 173
8.2.2 查看網絡流量 174
8.2.3 修改網絡流量 175
8.3 DNS欺騙 181
8.3.1 實驗8-2:使用Ettercap
進行DNS欺騙 182
8.3.2 執行攻擊 183
8.4 NetBIOS名稱欺騙和
LLMNR欺騙 184
8.4.1 實驗8-3:使用Responder
攻擊NetBIOS和LLMNR 185
8.4.2 破解NTLMv1和
NTLMv2哈希 188
8.5 本章小結 188
8.6 擴展閱讀 189
第9章 攻擊Cisco路由器 191
9.1 攻擊團體字符串和密碼 191
9.1.1 實驗9-1:使用Ncrack和
Metasploit來猜測憑據 191
9.1.2 實驗9-2:使用onesixtyone和
Metasploit猜測團體字符串 193
9.2 SNMP和TFTP 195
9.2.1 實驗9-3:使用Metasploit
下載配置文件 195
9.2.2 實驗9-4:使用SNMP和
TFTP修改配置 197
9.3 攻擊Cisco密碼 199
9.3.1 攻擊CiscoType 7密碼 199
9.3.2 實驗9-5:使用Cain破解
Type 7密碼 200
9.3.3 實驗9-6:使用Metasploit
解密Type 7密碼 200
9.3.4 攻擊CiscoType 5密碼 201
9.3.5 實驗9-7:使用John the Ripper
攻擊CiscoType 5密碼 201
9.4 使用隧道中轉流量 202
9.4.1 實驗9-8:建立GRE隧道 203
9.4.2 實驗9-9:在GRE隧道上
路由流量 205
9.5 漏洞攻擊和其他攻擊 209
9.5.1 Cisco漏洞攻擊 209
9.5.2 保持對Cisco設備的訪問 210
9.6 本章小結 210
9.7 擴展閱讀 211
第10章 基本的Linux漏洞攻擊 213
10.1 棧操作 213
10.2 緩衝區溢齣 214
10.2.1 實驗10-1:meet.c
溢齣 216
10.2.2 緩衝區溢齣的後果 219
10.3 本地緩衝區溢齣漏洞攻擊 220
10.3.1 實驗10-2:漏洞攻擊的
組件 220
10.3.2 實驗10-3:在命令行上
進行棧溢齣漏洞攻擊 222
10.3.3 實驗10-4:使用通用漏
洞攻擊代碼進行棧溢齣
漏洞攻擊 224
10.3.4 實驗10-5:對小緩衝區
進行漏洞攻擊 225
10.4 漏洞攻擊的開發過程 228
10.4.1 實驗10-6:構建定製
漏洞攻擊 228
10.4.2 確定偏移 229
10.4.3 確定攻擊嚮量 231
10.4.4 生成shellcode 232
10.4.5 驗證漏洞攻擊 233
10.5 本章小結 234
10.6 擴展閱讀 234
第11章 高級Linux漏洞攻擊 235
11.1 格式化字符串漏洞攻擊 235
11.1.1 問題描述 235
11.1.2 實驗11-1:從任意
內存讀取 238
11.1.3 實驗11-2:寫入
任意內存 241
11.1.4 實驗11-3:改變
程序執行 242
11.2 內存保護機製 245
11.2.1 編譯器的改進 245
11.2.2 實驗11-4:繞過
堆棧保護 247
11.2.3 內核補丁和腳本 249
11.2.4 實驗11-5:"Return to libc"
漏洞攻擊 250
11.2.5 實驗 11-6:使用ret2libc
保持權限 254
11.2.6 結論 258
11.3 本章小結 259
11.4 參考文獻 259
11.5 擴展閱讀 259
第12章 Windows漏洞攻擊 261
12.1 Windows程序編譯與調試 261
12.1.1 實驗12-1: 在Windows
上編譯程序 261
12.1.2 在Windows上使用
Immunity Debugger
進行調試 263
12.1.3 實驗12-2:程序崩潰 265
12.2 編寫Windows漏洞
攻擊程序 268
12.2.1 漏洞攻擊程序開發
過程迴顧 268
12.2.2 實驗12-3:攻擊
ProSSHD服務器 268
12.3 理解結構化異常
處理(SEH) 277
12.4 本章小結 279
12.5 參考文獻 279
12.6 擴展閱讀 279
第13章 繞過Windows內存保護 281
13.1 理解Windows內存保護
(XP SP3、Vista、Windows 7/8、
Server 2008和Server 2012) 281
13.1.1 基於棧的緩衝區溢齣
檢測(/GS) 281
13.1.2 SafeSEH 282
13.1.3 SEHOP 283
13.1.4 堆保護 283
13.1.5 DEP 283
13.1.6 ASLR 284
13.1.7 EMET 285
13.2 繞過Windows內存保護 285
13.2.1 繞過/GS 285
13.2.2 繞過SafeSEH 286
13.2.3 繞過ASLR 287
13.2.4 繞過DEP 287
13.2.5 繞過EMET 293
13.2.6 繞過SEHOP 294
13.3 本章小結 300
13.4 參考文獻 300
13.5 擴展閱讀 301
第14章 攻擊Windows訪問
控製模型 303
14.1 為何黑客要攻擊訪問
控製機製 303
14.1.1 多數人並不理解訪問
控製機製 303
14.1.2 訪問控製漏洞易於攻擊 304
14.1.3 訪問控製漏洞的
數量巨大 304
14.2 Windows訪問控製的
工作機製 304
14.2.1 安全標識符 304
14.2.2 訪問令牌 305
14.2.3 安全描述符 308
14.2.4 訪問檢查 311
14.3 訪問控製配置的分析工具 314
14.3.1 轉儲進程令牌 314
14.3.2 轉儲SD 317
14.4 特殊SID、特殊訪問權限
和“禁止訪問” 318
14.4.1 特殊的SID 318
14.4.2 特殊訪問權限 320
14.4.3 剖析“禁止訪問” 321
14.5 分析訪問控製引起的
提權漏洞 327
14.6 各種關注的對象類型的
攻擊模式 328
14.6.1 針對服務的攻擊 328
14.6.2 針對Windows注冊錶
DACL的攻擊 334
14.6.3 針對目錄DACL的攻擊 337
14.6.4 針對文件DACL的攻擊 342
14.7 其他對象類型的枚舉方法 346
14.7.1 枚舉共享內存段 346
14.7.2 枚舉命名管道 347
14.7.3 枚舉進程 347
14.7.4 枚舉其他命名的內核
對象(信號量、互斥鎖、
事件、設備) 348
14.8 本章小結 349
14.9 擴展閱讀 349
第15章 攻擊Web應用程序 351
15.1 概述十大Web漏洞 351
15.2 MD5哈希注入 352
15.2.1 實驗15-1:注入哈希 352
15.3 多字節編碼注入 357
15.3.1 理解漏洞 357
15.3.2 實驗15-2:利用
多字節編碼 358
15.4 搜捕跨站腳本攻擊(XSS) 362
15.4.1 實驗15-3:JavaScript塊
中的基本XSS注入 363
15.5 Unicode規範化形式攻擊 364
15.5.1 實驗15-4:利用
Unicode規範化 364
15.5.2 Unicode規範化簡介 365
15.5.3 規範化形式 366
15.5.4 準備好測試的環境 367
15.5.5 通過x5s插件執行
XSS測試 368
15.5.6 手動發起攻擊 369
15.5.7 添加自己的測試用例 370
15.6 本章小結 371
15.7 參考文獻 372
15.8 擴展閱讀 372
第16章 攻擊IE:堆溢齣攻擊 373
16.1 設置環境 373
16.1.1 WinDbg配置 373
16.1.2 將瀏覽器附加到
WinDbg 374
16.2 堆噴射簡介 374
16.3 使用HTML5噴射 376
16.3.1 實驗16-1:使用HTML5
執行堆噴射 377
16.4 DOM元素屬性噴射(DEPS) 379
16.4.1 實驗16-2:使用DEPS
技術的堆噴射 380
16.5 HeapLib2技術 382
16.5.1 通過耗盡緩存塊來
強製執行新的分配 383
16.5.2 實驗16-3:HeapLib2
噴射 383
16.6 使用字節數組的Flash噴射 384
16.6.1 實驗16-4:使用Flash
執行基本的堆噴射 385
16.7 使用整數嚮量的Flash噴射 386
16.7.1 實驗16-5:使用Flash
嚮量的堆噴射 385
16.8 利用低碎片堆(LFH) 388
16.9 本章小結 389
16.10 參考文獻 389
16.11 擴展閱讀 389
第17章 攻擊IE:釋放後重用技術 391
第18章 使用BeEF進行高級
客戶端攻擊 409
18.1 BeEF基礎 409
18.1.1 實驗18-1:設置BeEF 409
18.1.2 實驗18-2:使用BeEF
控製颱 411
18.2 掛鈎瀏覽器 414
18.2.1 實驗18-3:基本的
XSS掛鈎 414
18.2.2 實驗18-4:使用網站
欺騙掛鈎瀏覽器 415
18.2.3 實驗18-5:使用shank
自動注入掛鈎 417
18.3 使用BeEF獲得指紋 419
18.3.1 實驗18-6:使用BeEF
獲得瀏覽器指紋 419
18.3.2 實驗18-7:使用BeEF
獲得用戶指紋 420
18.3.3 實驗18-8:使用BeEF
獲得計算機指紋 421
18.4 攻擊瀏覽器 423
18.4.1 實驗18-9:使用BeEF和
Java來攻擊瀏覽器 423
18.4.2 使用BeEF和Metasploit
攻擊瀏覽器 426
18.5 自動化攻擊 430
18.6 本章小結 432
18.7 擴展閱讀 432
第19章 基於補丁比較的1-day
漏洞開發 433
第Ⅲ部分 高級惡意軟件分析
第20章 剖析Android惡意軟件 457
第21章 剖析勒索軟件 475
第22章 分析64位惡意軟件 495
22.1 AMD64架構概述 495
22.2 解密C&C服務器 498
22.3 本章小結 511
22.4 擴展閱讀 511
第23章 下一代逆嚮工程 513
23.2.1 免費的動態分析工具 523
23.2.2 商業替代品:TrapX
Malware Trap 524
23.3 本章小結 527
23.4 參考文獻 527
23.5 擴展閱讀
· · · · · · (
收起)