內容簡介
利用Ettercap來構建和發動欺騙攻擊 ? 使用模糊器來誘發錯誤條件並使軟體崩潰 ? 利用高級逆向工程技術對Windows和Linux上的軟體發起漏洞攻擊 ? 繞過Windows訪問控制和記憶體保護方案 ? 利用Padding Oracle Attack攻擊Web應用程式 ? 研究最近0-day漏洞中使用的“釋放後重用”技術 ? 使用高級
XSS攻擊來劫持Web瀏覽器 ? 理解勒索軟體及其如何控制桌面 ? 使用JEB 和DAD反編譯器來剖析Android惡意軟體 ? 通過二進制比較來查找1-day漏洞 ? 使用軟體無線電(SDR)攻擊無線系統 ? 攻擊物聯網設備 ? 剖析和攻擊嵌入式設備 ? 了解漏洞賞金計畫 ? 部署下一代蜜罐 ? 剖析ATM惡意軟體和常見的ATM攻擊 ? 從業務角度分析道德黑客攻擊
圖書目錄
第Ⅰ部分 備 戰
第1章 灰帽黑客—— 道德和法律 3
1.1 了解敵人 3
1.1.1 當前的安全狀況 3
1.1.2 識別攻擊 5
1.2 灰帽黑客之道 5
1.2.1 模擬攻擊 6
1.2.2 測試頻率及關注點 9
1.3 網路安全相關法律的演變 10
1.4 本章小結 13
第2章 編程技能 15
2.1 C程式語言 15
2.1.1 C語言程式的基本結構 15
2.1.2 程式示例 22
2.1.3 使用gcc進行編譯 23
2.2.2 位元組序 25
2.2.3 記憶體分段 25
2.2.4 記憶體中的程式 25
2.2.5 緩衝區 27
2.2.6 記憶體中的字元串 27
2.2.7 指針 27
2.2.8 記憶體知識小結 28
2.3 Intel處理器 29
2.4 彙編語言基礎 30
2.4.1 機器語言、彙編語言與C語言 30
2.4.2 AT&T與NASM 30
2.4.3 定址模式 33
2.4.4 彙編檔案結構 34
2.4.5 彙編過程 35
2.5 使用gdb進行調試 35
2.5.1 gdb基礎 35
2.5.2 使用gdb進行反彙編 37
2.6 Python編程技能 38
2.6.1 獲取
2.6.1獲取Python39
2.6.2Python的“Helloworld”程式39
2.6.3Python對象39
2.6.4字元串40
2.6.5數值41
2.6.6列表42
2.6.7字典44
2.6.8Python檔案操作44
2.6.9Python套接字編程46
2.7本章小結47
第3章下一代模糊測試49
3.1模糊測試簡介49
3.2模糊測試器的類型50
3.2.1數據變異模糊測試器50
3.2.2數據生成模糊測試器50
3.2.3遺傳模糊測試50
3.3Peach數據變異模糊測試51
3.4Peach數據生成模糊測試56
3.5AFL遺傳或進化模糊測試64
3.6本章小結68
第4章下一代逆向工程69
4.1代碼標註69
4.1.1使用IDAscope的IDB標註69
4.1.2C++代碼分析75
4.2協作分析79
4.2.1利用FIRST協作知識80
4.2.2使用BinNavi進行協作82
4.3動態分析84
4.3.1使用Cuckoo沙箱自動執行動態分析84
4.3.2使用Labeless填補靜態工具與動態工具之間的空隙85
4.3.3實驗4-1:將IDA標註套用於x64dbg調試器86
4.3.4實驗4-2:將調試器記憶體區域導入IDA87
4.4本章小結88
第5章軟體定義的無線電89
5.1SDR入門89
5.1.1從何處購買89
5.1.2了解管理規則91
5.2示例91
5.2.1搜尋91
5.2.2捕獲92
5.2.3重放94
5.2.4分析96
5.2.5預覽102
5.2.6執行104
5.3本章小結105
第Ⅱ部分從業務角度分析黑客攻擊
第6章成為一名滲透測試人員109
6.1從新手成長為專家的歷程109
6.1.1滲透測試精神110
6.1.2滲透測試分類110
6.1.3未來的黑客攻擊110
6.1.4了解技術111
6.1.5知道什麼是“良好”的111
6.1.6滲透測試培訓112
6.1.7實踐112
6.1.8學位課程115
6.1.9知識傳播115
6.2滲透測試人員和職業技能116
6.2.1個人責任116
6.2.2成為一名值得信賴的顧問117
6.2.3管理滲透測試119
6.3本章小結122
第7章紅隊的行動123
7.1紅隊的基本行動124
7.1.1策略、行動和戰術重點124
7.1.2評估比較125
7.2紅隊的目標126
7.3常見問題127
7.3.1範圍受限127
7.3.2時間受限127
7.3.3參與者受限127
7.3.4克服條件的限制127
7.4溝通128
7.4.1規劃會議128
7.4.2確定可衡量的事件129
7.5理解威脅129
7.6攻擊框架130
7.7測試環境131
7.8自適應測試132
7.8.1外部評估132
7.8.2物理安全評估133
7.8.3社交工程攻擊133
7.8.4內部評估134
7.9吸取的教訓135
7.10本章小結136
第8章紫隊的行動137
8.1紫隊簡介137
8.2藍隊的基本行動138
8.2.1了解敵人139
8.2.2了解自己139
8.2.3安全程式140
8.2.4事故回響程式140
8.2.5常見的藍隊挑戰142
8.3紫隊的基本行動143
8.3.1決策框架143
8.3.2破壞殺傷鏈144
8.3.3殺傷鏈對策框架146
8.3.4溝通146
8.4紫隊的最佳化和自動化147
8.5本章小結148
第9章漏洞賞金計畫149
9.1漏洞披露的歷史149
9.1.1完全向供應商披露150
9.1.2完全向公眾披露151
9.1.3負責任的披露方式152
9.1.4再沒有免費的Bug152
9.2漏洞賞金計畫153
9.2.1漏洞賞金計畫的類型153
9.2.2激勵措施155
9.2.3圍繞漏洞賞金計畫的爭議155
9.2.4主流的漏洞賞金計畫促進者155
9.3Bugcrowd詳解156
9.3.1程式所有者Web界面156
9.3.2程式所有者API示例161
9.3.3研究人員Web界面162
9.4通過發現漏洞謀生163
9.4.1選擇一個目標163
9.4.2如有必要,進行註冊163
9.4.3理解遊戲規則164
9.4.4發現漏洞164
9.4.5報告漏洞164
9.4.6領取賞金165
9.5事故回響165
9.5.1溝通165
9.5.2鑑別和分級165
9.5.3修復166
9.5.4向用戶披露166
9.5.5公關166
9.6本章小結167
第Ⅲ部分漏洞攻擊
第10章不使用漏洞獲取許可權171
10.1捕獲口令哈希171
10.1.1理解LLMNR和NBNS171
10.1.2理解WindowsNTLMv1和NTLMv2身份認證172
10.1.3使用Responder173
10.1.4實驗10-1:使用Responder獲取口令175
10.2使用Winexe178
10.2.1實驗10-2:使用Winexe訪問遠程系統178
10.2.2實驗10-3:使用Winexe提升許可權179
10.3使用WMI180
10.3.1實驗10-4:使用WMI查詢系統信息180
10.3.2實驗10-5:使用WMI執行命令182
10.4利用WinRM185
10.4.1實驗10-6:使用WinRM執行命令185
10.4.2實驗10-7:使用WinRM遠程運行PowerShell186
10.5本章小結188
第11章基本的Linux漏洞攻擊189
11.1堆疊操作和函式調用過程189
11.2緩衝區溢出191
11.2.1實驗11-1:meet.c溢出192
11.2.2緩衝區溢出的後果196
11.3.1實驗11-2:漏洞攻擊的組件197
11.3.2實驗11-3:在命令行上進行堆疊溢出漏洞攻擊200
11.3.3實驗11-4:使用通用漏洞攻擊代碼進行堆疊溢出漏洞攻擊203
11.3.4實驗11-5:對小緩衝區進行漏洞攻擊205
11.4漏洞攻擊的開發過程208
11.5本章小結215
第12章高級的Linux漏洞攻擊217
12.1格式化字元串漏洞攻擊217
12.1.1格式化字元串217
12.1.2實驗12-1:從任意記憶體讀取222
12.1.3實驗12-2:寫入任意記憶體224
12.1.4實驗12-3:改變程式執行226
12.2記憶體保護機制229
12.2.1編譯器的改進229
12.2.2實驗12-4:繞過棧保護231
12.2.3核心補丁和腳本234
12.2.4實驗12-5:ReturntoLibc漏洞攻擊235
12.2.5實驗12-6:使用ret2libc保持許可權240
12.2.6結論244
12.3本章小結245
第13章基本的Windows漏洞攻擊247
13.1編譯和調試Windows程式247
13.1.1實驗13-1:在Windows上編譯程式248
13.1.2Windows編譯選項249
13.1.3在Windows上使用ImmunityDebugger進行調試250
13.1.4實驗13-2:程式崩潰253
13.2編寫Windows漏洞攻擊程式256
13.2.1回顧漏洞攻擊程式的開發過程256
13.2.2實驗13-3:攻擊ProSSHD伺服器256
13.3理解SEH267
13.4理解和繞過Windows記憶體保護269
13.4.1SafeSEH269
13.4.2繞過SafeSEH270
13.4.3SEHOP271
13.4.4繞過SEHOP271
13.4.5基於堆疊的緩衝區溢出檢測(/GS)278
13.4.6繞過/GS280
13.4.7堆保護280
13.5本章小結281
第14章高級的Windows漏洞攻擊283
14.1DEP283
14.2ASLR284
14.3EMET和WindowsDefenderExploitGuard285
14.4繞過ASLR285
14.5繞過DEP和ASLR287
14.5.1VirtualProtect函式287
14.5.2ROP287
14.5.3指令片段288
14.5.4構建ROP鏈289
14.6通過記憶體泄漏突破ASLR293
14.6.1觸發缺陷294
14.6.2跟蹤記憶體泄漏297
14.6.3記憶體泄漏武器化308
14.6.4構建RVAROP鏈311
14.7本章小結315
第15章PowerShell漏洞攻擊317
15.1為什麼使用PowerShell317
15.1.1利用現有資源317
15.1.2PowerShell日誌記錄318
15.1.3PowerShell的可移植性319
15.2載入PowerShell腳本319
15.2.1實驗15-1:攻擊條件319
15.2.2實驗15-2:在命令行上傳遞命令321
15.2.3實驗15-3:編碼的命令322
15.2.4實驗15-4:通過Web啟動323
15.3使用PowerSploit進行漏洞攻擊和後漏洞攻擊325
15.3.1實驗15-5:設定PowerSploit325
15.3.2實驗15-6:通過PowerShell運行Mimikatz327
15.3.3實驗15-7:使用PowerSploit創建持續訪問330
15.4使用Empire實現命令和控制333
15.4.1實驗15-8:設定Empire333
15.4.2實驗15-9:使用Empire執行命令和控制333
15.4.3實驗15-10:使用Empire攻克系統334
15.5本章小結337
第16章下一代Web應用程式漏洞攻擊339
16.1XSS演化史339
16.1.1設定環境340
16.1.2實驗16-1:溫習XSS341
16.1.3實驗16-2:XSS規避Internet防線344
16.1.4實驗16-3:使用XSS更改應用程式邏輯346
16.1.5實驗16-4:為XSS使用DOM348
16.2框架漏洞351
16.2.1設定環境352
16.2.2實驗16-5:CVE-2017-5638漏洞攻擊352
16.2.3實驗16-6:CVE-2017-9805漏洞攻擊354
16.3PaddingOracleAttack357
16.4本章小結360
第17章下一代補丁漏洞攻擊361
17.1有關二進制比較的介紹361
17.1.1應用程式比較361
17.1.2補丁比較362
17.2二進制比較工具363
17.2.1BinDiff364
17.2.2turbodiff365
17.2.3實驗17-1:首次檔案比較367
17.3補丁管理流程369
17.3.1微軟星期二補丁370
17.3.2獲得並提取微軟補丁371
17.3.3實驗17-2:比較MS17-010372
17.4通過比較補丁進行漏洞攻擊375
17.4.1DLL旁路漏洞375
17.4.2實驗17-3:比較MS16-009377
17.5本章小結382
第Ⅳ部分高級惡意軟體分析
第18章剖析移動平台惡意軟體385
18.1Android平台簡介385
18.1.1Android應用程式包385
18.1.2應用程式清單387
18.1.3分析DEX389
18.1.4Java反編譯391
18.1.5DEX反編譯392
18.1.6DEX反彙編394
18.1.7示例18-1:在模擬器中運行APK395
18.1.8惡意軟體分析397
18.1.9示例18-2:運用Droidbox進行黑盒APK監控401
18.2iOS平台403
18.2.1iOS安全403
18.2.2iOS應用程式405
18.2.3實驗18-1:分析二進制屬性列表檔案405
18.2.4實驗18-2:iPhone4S越獄406
18.2.5實驗18-3:解密Apple商店應用程式407
18.3本章小結409
第19章剖析勒索軟體411
19.1勒索軟體的歷史411
19.2贖金支付選項412
19.3剖析Ransomlock413
19.3.1示例19-1:動態分析413
19.3.2示例19-2:靜態分析415
19.4Wannacry428
19.5本章小結434
第20章ATM惡意軟體435
20.1ATM概覽435
20.2XFS概覽437
20.2.1XFS體系結構438
20.2.2XFS管理器439
20.3分析ATM惡意軟體443
20.3.1ATM惡意軟體的類型443
20.3.2攻擊者是如何在ATM上安裝惡意軟體的444
20.3.3剖析惡意軟體446
20.3.4針對ATM惡意軟體的對策453
20.4本章小結454
第21章欺騙:下一代蜜罐455
21.1欺騙簡史455
21.1.1作為欺騙形式的蜜罐456
21.1.2部署時的考慮事項458
21.1.3設定虛擬機458
21.2開源蜜罐459
21.2.1實驗21-1:Dionaea459
21.2.2實驗21-2:ConPot462
21.2.3實驗21-3:Cowrie463
21.2.4實驗21-4:T-Pot466
21.3可選的商業化產品:TrapX471
21.4本章小結480
第Ⅴ部分物聯網
第22章攻擊目標:物聯網483
22.1 IoT483
22.1.1連線設備的類型483
22.1.2無線協定484
22.1.3通信協定485
22.1.4安全方面的考慮事項485
22.2ShodanIoT搜尋引擎486
22.2.1Web界面486
22.2.2實驗22-1:使用Shodan命令行工具488
22.2.3ShodanAPI489
22.2.4實驗22-2:測試ShodanAPI489
22.2.5實驗22-3:使用MQTT491
22.2.6未經身份認證訪問MQTT帶來的啟示492
22.3IoT蠕蟲:只是時間問題493
22.3.1實驗22-4:Mirai依然存在493
22.3.2預防措施494
22.4本章小結494
第23章剖析嵌入式設備495
23.1CPU495
23.1.1微處理器495
23.1.2微控制器496
23.1.3SoC496
23.1.4常見的處理器架構496
23.2串列接口497
23.2.1UART497
23.2.2SPI502
23.2.3I2C503
23.3調試接口503
23.3.1JTAG503
23.3.2SWD505
23.4軟體506
23.4.1啟動載入程式507
23.4.2無作業系統508
23.4.3實時作業系統508
23.4.4通用作業系統509
23.5本章小結509
第24章攻擊嵌入式設備511
24.1對嵌入式設備中的漏洞進行靜態分析511
24.1.1實驗24-1:分析更新包511
24.1.2實驗24-2:執行漏洞分析515
24.2使用硬體執行動態分析518
24.2.1設定測試環境518
24.2.2Ettercap519
24.3使用模擬器執行動態分析523
24.3.1FIRMADYNE工具523
24.3.2實驗24-3:設定FIRMADYNE523
24.3.3實驗24-4:模擬固件525
24.3.4實驗24-5:攻擊固件528
24.4本章小結529
第25章反制物聯網惡意軟體531
25.1對物聯網設備的物理訪問531
25.1.1RS-232概述532
25.1.2RS-232引腳排列532
25.1.3練習25-1:排除醫療設備的RS-232連線埠故障533
25.2建立威脅實驗室539
25.2.1ARM和MIPS概述540
25.2.2實驗25-1:使用QEMU設定系統541
25.3動態分析物聯網惡意軟體544
25.3.1實驗25-2:動態分析惡意軟體544
25.3.2PANDA545
25.3.3BeagleBoneBlack開發板546
25.4物聯網惡意軟體的逆向工程546
25.4.1ARM/MIPS指令集速成546
25.4.2實驗25-3:IDAPro遠程調試和逆向工程549
25.4.3練習物聯網惡意軟體逆向工程553
25.5本章小結555
作者簡介
Allen Harper博士,CISSP。Allen曾擔任
美國海軍陸戰隊(Marine Corps)軍官,2007年,在伊拉克之旅結束後退役。Allen擁有30年以上的IT/安全經驗。Allen從Capella大學獲得IT博士學位,研究方向是信息保障和安全;從
海軍研究生院(NPS)獲得計算機科學碩士學位,從北卡羅來納州大學獲得計算機工程學士學位。Allen負責為Honeynet項目指導開發名為roo的第三代蜜牆CD-ROM。Allen曾擔任多家《財富》500強公司和政府機構的安全顧問。Allen對物聯網、逆向工程、漏洞發現以及各種形式的道德黑客攻擊感興趣。Allen是N2 Net Security有限公司的創始人,曾擔任Tangible安全公司的執行副總裁和首席道德黑客。Allen目前擔任利伯緹大學(位於維吉尼亞州林奇堡市)網路卓越中心的執行總監。