軟件安全實踐

彭國軍、傅建明、趙磊、陳澤茂

  • 出版商: 清華大學
  • 出版日期: 2025-01-01
  • 定價: $479
  • 售價: 8.5$407
  • 語言: 簡體中文
  • 頁數: 420
  • ISBN: 7302680043
  • ISBN-13: 9787302680048
  • 下單後立即進貨 (約4週~6週)

  • 軟件安全實踐-preview-1
  • 軟件安全實踐-preview-2
  • 軟件安全實踐-preview-3
軟件安全實踐-preview-1

買這商品的人也買了...

商品描述

"本書共25章,覆蓋了軟件安全基礎、惡意代碼機理分析、惡意代碼樣本分析與檢測、軟件漏洞分析,以及軟件安全智能化分析5個領域。 軟件安全基礎部分的相關實驗具體涉及磁盤結構與數據恢復、程序鏈接與執行過程分析、PE及ELF可執行文件結構剖析,旨在加強讀者的軟件安全基礎,這對於讀者後續理解惡意代碼和軟件漏洞的機理、分析與防護技術具有重要作用。 惡意代碼機理分析部分具體包括Windows PE病毒、宏病毒與腳本病毒、網絡木馬機理分析、網絡蠕蟲、勒索病毒分析等,旨在加強讀者對典型惡意代碼機理的理解。 惡意代碼樣本分析與檢測部分具體包括軟件加殼與脫殼、樣本靜態分析、樣本動態分析、樣本溯源分析、樣本特徵檢測引擎(ClamAV)、樣本行為在線分析等,旨在加強讀者對惡意代碼樣本的處理、分析與檢測方法的理解,提升讀者的惡意代碼分析與檢測能力。 軟件漏洞分析部分具體包括漏洞測試框架、棧溢出漏洞、堆溢出漏洞、格式化字符串/整型溢出漏洞、IoT漏洞、軟件漏洞防禦、GS/DEP與ALSR繞過等,旨在加強讀者對軟件漏洞測試框架、漏洞機理、挖掘與防護機制的理解,提升讀者的漏洞攻防實踐能力。 軟件安全智能化分析部分具體包括機器學習與惡意代碼檢測、機器學習與惡意代碼家族聚類,以及Fuzzing與漏洞挖掘等,旨在幫助讀者掌握智能化分析的基本方法,並將這些方法用於惡意代碼檢測與軟件漏洞分析挖掘。 本書可作為高等院校軟件安全、惡意代碼、軟件漏洞及相關課程的配套實驗教材,也可以作為軟件安全方向的實訓教材。 "

作者簡介

彭國軍,武漢大學國家網絡安全學院教授,國家級青年人才,國家級一流本科課程負責人,研究方向為軟件與系統安全。榮獲國家級教學成果獎一等獎、湖北省科技進步獎二等獎、寶鋼優秀教師獎等獎項。

目錄大綱

目錄

 

 

第一部分軟件安全基礎

第1章磁盤格式與數據恢復2

1.1實驗概述2

1.2實驗預備知識與基礎2

1.2.1磁盤編輯工具與基本用法2

1.2.2MBR與GPT磁盤分區格式2

1.2.3FAT32與NTFS文件系統4

1.2.4數據刪除與恢復技術8

1.3磁盤編輯工具的基本使用8

1.3.1實驗目的8

1.3.2實驗內容及實驗環境9

1.3.3實驗步驟9

1.4MBR磁盤主引導區分析11

1.4.1實驗目的11

1.4.2實驗內容及實驗環境11

1.4.3實驗步驟11

1.5GPT分區格式分析15

1.5.1實驗目的15

1.5.2實驗內容及實驗環境15

1.5.3實驗步驟15

1.6FAT32文件系統格式分析18

1.6.1實驗目的18

1.6.2實驗內容及實驗環境18

1.6.3實驗步驟19

1.7NTFS文件系統格式分析22

1.7.1實驗目的22

1.7.2實驗內容及實驗環境22

1.7.3實驗步驟22

1.8數據刪除與恢復28

1.8.1實驗目的28

1.8.2實驗內容及實驗環境28

1.8.3實驗步驟28

1.9本章小結33

1.10問題討論與課後提升33

1.10.1問題討論33

1.10.2課後提升33

 

第2章程序鏈接和執行34

2.1實驗概述34

2.2實驗預備知識與基礎34

2.3程序的靜態鏈接36

2.3.1實驗目的36

2.3.2實驗內容及實驗環境36

2.3.3實驗步驟36

2.4進一步控製程序的鏈接39

2.4.1實驗目的40

2.4.2實驗內容及實驗環境40

2.4.3實驗步驟40

2.5程序的裝載與啟動流程43

2.5.1實驗目的43

2.5.2實驗內容及實驗環境43

2.5.3實驗步驟43

2.6本章小結46

2.7問題討論與課後提升46

2.7.1問題討論46

2.7.2課後提升46

 

第3章PE文件結構分析48

3.1實驗概述48

3.2實驗預備知識與基礎48

3.2.1PE查看、編輯與調試工具介紹48

3.2.2函數引入機制49

3.2.3函數引出機制50

3.2.4資源節機制51

3.2.5重定位機制52

3.3PE查看、編輯與調試工具的用法54

3.3.1實驗目的54

3.3.2實驗內容及實驗環境54

3.3.3實驗步驟 54

3.4函數的引入/引出機制分析與修改59

3.4.1實驗目的59

3.4.2實驗內容及實驗環境59

3.4.3實驗步驟59

3.5資源節資源操作64

3.5.1實驗目的64

3.5.2實驗內容及實驗環境64

3.5.3實驗步驟64

3.6手工重定位66

3.6.1實驗目的66

3.6.2實驗內容及實驗環境66

3.6.3實驗步驟67

3.7PE文件縮減68

3.7.1實驗目的68

3.7.2實驗內容及實驗環境68

3.7.3實驗步驟68

3.8本章小結71

3.9問題討論與課後提升71

3.9.1問題討論71

3.9.2課後提升72

 

第4章ELF文件結構分析73

4.1實驗概述73

4.2實驗預備知識與基礎73

4.2.1ELF分析工具介紹73

4.2.2ELF文件格式74

4.2.3ELF中的指令與數據77

4.2.4函數引入與引出機制78

4.2.5延遲綁定機制80

4.2.6程序初始化過程81

4.3ELF查看、編輯與調試工具的用法83

4.3.1實驗目的83

4.3.2實驗內容及實驗環境83

4.3.3實驗步驟83

4.4函數引入引出機制的分析與修改87

4.4.1實驗目的87

4.4.2實驗內容及實驗環境87

4.4.3實驗步驟87

4.5延遲綁定機制的分析與修改93

4.5.1實驗目的93

4.5.2實驗內容及實驗環境93

4.5.3實驗步驟93

4.6ELF初始化過程的分析與修改97

4.6.1實驗目的97

4.6.2實驗內容及實驗環境97

4.6.3實驗步驟98

4.7本章小結101

4.8問題討論與課後提升101

4.8.1問題討論101

4.8.2課後提升101

第二部分惡意代碼機理分析

第5章PE病毒104

5.1實驗概述104

5.2實驗預備知識與基礎105

5.2.1反匯編和反編譯105

5.2.2反匯編的原理105

5.2.3病毒重定位的原理105

5.2.4獲取kernel32基地址的方法106

5.2.5PE病毒感染文件恢復106

5.2.6修復過程總結106

5.3熟悉masm32107

5.3.1實驗目的107

5.3.2實驗內容及實驗環境107

5.3.3實驗步驟107

5.4病毒重定位110

5.4.1實驗目的110

5.4.2實驗內容及實驗環境110

5.4.3實驗步驟111

5.5kernel32基地址定位及搜索API函數地址114

5.5.1實驗目的114

5.5.2實驗內容及實驗環境115

5.5.3實驗步驟115

5.6病毒感染過程119

5.6.1實驗目的119

5.6.2實驗內容及實驗環境120

5.6.3實驗步驟120

5.7本章小結124

5.8問題討論與課後提升124

5.8.1問題討論124

5.8.2課後提升124

 

第6章宏病毒與腳本病毒125

6.1實驗概述125

6.2實驗預備知識與基礎125

6.2.1宏的使用與宏病毒125

6.2.2VBS腳本病毒分析126

6.2.3PowerShell腳本病毒分析127

6.3宏的使用與宏病毒128

6.3.1實驗目的128

6.3.2實驗內容及實驗環境128

6.3.3實驗步驟128

6.4VBS腳本病毒分析133

6.4.1實驗目的133

6.4.2實驗內容及實驗環境133

6.4.3實驗步驟133

6.5PowerShell腳本病毒分析136

6.5.1實驗目的136

6.5.2實驗內容及實驗環境136

6.5.3實驗步驟136

6.6本章小結139

6.7問題討論與課後提升140

6.7.1問題討論140

6.7.2課後提升140

 

第7章網絡木馬機理分析141

7.1實驗概述141

7.2實驗預備知識與基礎141

7.2.1文件與註冊表活動監測141

7.2.2網絡活動監測141

7.3文件與註冊表監控工具的基本使用141

7.3.1實驗目的141

7.3.2實驗內容及實驗環境142

7.3.3實驗步驟142

7.4網絡抓包工具的基本使用144

7.4.1實驗目的144

7.4.2實驗內容及實驗環境144

7.4.3實驗步驟144

7.5虛擬機樣本調試環境的配置148

7.5.1實驗目的148

7.5.2實驗內容及實驗環境148

7.5.3實驗步驟148

7.6灰鴿子木馬的使用與機理分析152

7.6.1實驗目的152

7.6.2實驗內容及實驗環境152

7.6.3實驗步驟152

7.7本章小結158

7.8問題討論與課後提升158

7.8.1問題討論158

7.8.2課後提升159

 

第8章網絡蠕蟲160

8.1實驗概述160

8.2實驗預備知識與基礎160

8.2.1網絡蠕蟲簡介160

8.2.2WannaCry蠕蟲背景介紹161

8.2.3Slammer蠕蟲背景介紹162

8.2.4蠕蟲傳播機制分析及實驗註意事項163

8.3WannaCry傳播機制分析之初始化操作163

8.3.1實驗目的163

8.3.2實驗內容及實驗環境163

8.3.3實驗步驟163

8.4本章小結174

8.5問題討論與課後提升174

8.5.1問題討論174

8.5.2課後提升175

 

第9章勒索病毒分析176

9.1實驗概述176

9.2實驗預備知識與基礎176

9.2.1WannaCry 勒索病毒177

9.2.2GandCrab勒索病毒177

9.3WannaCry 勒索機制復現及機理分析178

9.3.1實驗目的178

9.3.2實驗內容及實驗環境178

9.3.3實驗步驟178

9.4GandCrab復現及機理分析187

9.4.1實驗目的187

9.4.2實驗內容及實驗環境187

9.4.3實驗步驟187

9.5本章小結189

9.6問題討論與課後提升189

9.6.1問題討論189

9.6.2課後提升189

第三部分惡意代碼樣本分析與檢測

第10章軟件加殼與脫殼192

10.1實驗概述192

10.2實驗預備知識與基礎192

10.2.1加殼原理192

10.2.2手工脫殼方法與原理193

10.2.3實驗工具193

10.3加殼與查殼工具的基本使用實驗194

10.3.1實驗目的194

10.3.2實驗內容及實驗環境194

10.3.3實驗步驟194

10.4手工脫殼196

10.4.1實驗目的196

10.4.2實驗內容及實驗環境196

10.4.3實驗步驟196

10.5本章小結199

10.6問題討論與課後提升199

10.6.1問題討論199

10.6.2課後提升200

 

第11章樣本靜態分析201

11.1實驗概述201

11.2實驗預備知識與基礎201

11.2.1加殼與惡意代碼混淆201

11.2.2PE文件格式201

11.2.3ASCII與Unicode202

11.2.4Strings工具202

11.2.5PE Tools203

11.3PEiD的基本使用實驗203

11.3.1實驗目的203

11.3.2實驗內容及實驗環境203

11.3.3實驗步驟203

11.4Strings的基本使用實驗205

11.4.1實驗目的205

11.4.2實驗內容及實驗環境205

11.4.3實驗步驟205

11.5PE Tools的基本使用實驗207

11.5.1實驗目的207

11.5.2實驗內容及實驗環境207

11.5.3實驗步驟207

11.6IDA Pro的基本使用實驗208

11.6.1實驗目的208

11.6.2實驗內容及實驗環境209

11.6.3實驗步驟209

11.7本章小結213

11.8問題討論與課後提升214

11.8.1問題討論214

11.8.2課後提升214

 

第12章樣本動態分析215

12.1實驗概述215

12.2實驗預備知識與基礎215

12.2.1病毒分析流程215

12.2.2病毒分析所需要的基礎215

12.3在線平臺分析216

12.3.1實驗目的216

12.3.2實驗內容及實驗環境216

12.3.3實驗步驟216

12.4樣本概況分析218

12.4.1實驗目的218

12.4.2實驗內容及實驗環境218

12.4.3實驗步驟218

12.5利用IDA和OD進行深度分析223

12.5.1實驗目的223

12.5.2實驗內容及實驗環境223

12.5.3實驗步驟223

12.6本章小結235

12.7問題討論與課後提升235

12.7.1問題討論235

12.7.2課後提升236

 

第13章樣本溯源分析237

13.1實驗概述237

13.2實驗預備知識與基礎237

13.2.1惡意軟件溯源概述237

13.2.2pefile模塊237

13.2.3溯源特徵及關聯分析237

13.2.4樣本相似性分析238

13.3簡單靜態溯源特徵提取及靜態域名關聯分析238

13.3.1實驗目的238

13.3.2實驗內容及實驗環境238

13.3.3實驗步驟238

13.4簡單樣本功能相似性分析241

13.4.1實驗目的241

13.4.2實驗內容及實驗環境241

13.4.3實驗步驟241

13.5本章小結242

13.6問題討論與課後提升242

13.6.1問題討論242

13.6.2課後提升242

 

第14章樣本特徵檢測引擎243

14.1實驗概述243

14.2實驗預備知識與基礎243

14.2.1Linux系統常用防病毒檢測工具243

14.2.2ClamAV244

14.3ClamAV的環境搭建與安裝配置244

14.3.1實驗目的244

14.3.2實驗內容及實驗環境244

14.3.3實驗步驟244

14.4ClamAV的基礎使用247

14.4.1實驗目的247

14.4.2實驗內容及實驗環境247

14.4.3實驗步驟247

14.5本章小結250

14.6問題討論與課後提升250

14.6.1問題討論250

14.6.2課後提升250

 

第15章樣本行為在線分析251

15.1實驗概述251

15.2實驗預備知識與基礎251

15.2.1VirusTotal251

15.2.2Cuckoo Sandbox253

15.2.3Any.Run254

15.2.4騰訊哈勃分析系統255

15.3Cuckoo Sandbox安裝使用256

15.3.1實驗目的256

15.3.2實驗內容及實驗環境256

15.3.3實驗步驟257

15.4本章小結263

15.5問題討論與課後提升264

15.5.1問題討論264

15.5.2課後提升264

第四部分軟件漏洞分析

第16章漏洞測試框架266

16.1實驗概述266

16.2實驗預備知識與基礎266

16.2.1滲透測試基礎266

16.2.2Metasploit用戶接口269

16.2.3Metasploit模塊271

16.2.4shellcode基礎273

16.2.5模糊測試介紹274

16.3Metasploit安裝與初次使用275

16.3.1實驗目的275

16.3.2實驗內容及實驗環境275

16.3.3實驗步驟275

16.4模糊測試與漏洞利用279

16.4.1實驗目的279

16.4.2實驗內容及實驗環境279

16.4.3實驗步驟279

16.5攻破無線路由器284

16.5.1實驗目的284

16.5.2實驗內容及環境284

16.5.3實驗步驟284

16.6本章小結287

16.7問題討論與課後提升287

16.7.1問題討論287

16.7.2課後提升288

 

第17章棧溢出漏洞289

17.1實驗概述289

17.2實驗預備知識與基礎289

17.2.1棧溢出原理289

17.2.2DEP機制及繞開DEP的方法291

17.3利用棧溢出實現目標代碼跳轉293

17.3.1實驗目的293

17.3.2實驗內容及實驗環境293

17.3.3實驗步驟293

17.4DEP防護環境下的漏洞攻擊測試296

17.4.1實驗目的297

17.4.2實驗內容及實驗環境297

17.4.3實驗步驟297

17.5本章小結305

17.6問題討論與課後提升306

17.6.1問題討論306

17.6.2課後提升306

 

第18章堆溢出漏洞307

18.1實驗概述307

18.2實驗預備知識與基礎307

18.2.1堆溢出漏洞簡介307

18.2.2堆數據結構308

18.2.3堆管理策略310

18.2.4堆溢出原理311

18.2.5堆溢出利用312

18.3堆溢出實驗313

18.3.1實驗目的313

18.3.2實驗內容及環境314

18.3.3實驗步驟314

18.4本章小結321

18.5問題討論與課後提升321

18.5.1問題討論321

18.5.2課後提升321

 

第19章格式化字符串/整數溢出漏洞322

19.1實驗概述322

19.2實驗預備知識與基礎322

19.2.1格式化字符串漏洞322

19.2.2整數溢出漏洞324

19.3格式化字符串漏洞327

19.3.1實驗目的327

19.3.2實驗內容及實驗環境328

19.3.3實驗步驟328

19.4整數溢出漏洞334

19.4.1實驗目的334

19.4.2實驗內容及實驗環境334

19.4.3實驗步驟334

19.5本章小結336

19.6問題討論與課後提升336

19.6.1問題討論336

19.6.2課後提升336

 

第20章IoT漏洞337

20.1實驗概述337

20.2實驗預備知識與基礎337

20.2.1IoT設備及其常見漏洞簡介337

20.2.2ARM/MIPS匯編340

20.3.3IoT固件345

20.3固件模擬345

20.3.1實驗目的345

20.3.2實驗內容及實驗環境345

20.3.3實驗步驟345

20.4IoT漏洞利用352

20.4.1實驗目的352

20.4.2實驗內容及實驗環境352

20.4.3實驗步驟353

20.5本章小結356

20.6問題討論與課後提升356

20.6.1問題討論356

20.6.2課後提升356

 

第21章軟件漏洞防禦357

21.1實驗概述357

21.2實驗預備知識與基礎357

21.2.1棧溢出檢查GS357

21.2.2數據執行保護DEP358

21.2.3地址隨機化ASLR358

21.2.4漏洞防禦工具359

21.3基礎漏洞實驗362

21.3.1實驗目的362

21.3.2實驗內容及實驗環境362

21.3.3實驗步驟362

21.4Exploit Protection防護實驗364

21.4.1實驗目的364

21.4.2實驗內容及實驗環境364

21.4.3實驗步驟365

21.5Visual Studio防護實驗366

21.5.1實驗目的366

21.5.2實驗內容及實驗環境366

21.5.3實驗步驟367

21.6本章小結369

21.7問題討論與課後提升369

21.7.1問題討論369

21.7.2課後提升369

 

第22章GS、DEP與ASLR繞過370

22.1實驗概述370

22.2實驗預備知識與基礎370

22.2.1GS繞過方法370

22.2.2DEP繞過方法371

22.2.3ASLR繞過方法373

22.2.4pwntools、gdb安裝與用法374

22.3利用輸出函數泄露canary377

22.3.1實驗目的377

22.3.2實驗內容及實驗環境377

22.3.3實驗步驟377

22.4利用ROP繞過NX383

22.4.1實驗目的383

22.4.2實驗內容及實驗環境383

22.4.3實驗步驟383

22.5本章小結389

22.6問題討論與課後提升389

22.6.1問題討論389

22.6.2課後提升390

第五部分軟件安全智能化分析

第23章機器學習與惡意代碼檢測392

23.1實驗概述392

23.2實驗預備知識與基礎392

23.2.1機器學習概述392

23.2.2靜態特徵和動態特徵393

23.2.3基於機器學習的惡意代碼檢測流程394

23.3機器學習模型構建與分類395

23.3.1實驗目的395

23.3.2實驗內容及實驗環境395

23.3.3實驗步驟395

23.4基於機器學習的惡意代碼檢測398

23.4.1實驗目的399

23.4.2實驗內容及實驗環境399

23.4.3實驗步驟399

23.5本章小結406

23.6問題討論與課後提升406

23.6.1問題討論406

23.6.2課後提升407

 

第24章機器學習與惡意代碼家族聚類408

24.1實驗概述408

24.2實驗預備知識與基礎408

24.3特徵預處理409

24.3.1實驗目的409

24.3.2實驗內容及實驗環境409

24.3.3實驗步驟409

24.4聚類實驗410

24.4.1實驗目的410

24.4.2實驗內容及實驗環境410

24.4.3實驗步驟411

24.5本章小結412

24.6問題討論與課後提升412

24.6.1問題討論412

24.6.2課後提升412

 

第25章Fuzzing與漏洞挖掘413

25.1實驗概述413

25.2實驗預備知識與基礎413

25.2.1AFL概述413

25.2.2選擇初始種子413

25.2.3編譯被測試程序414

25.3AFL的配置及使用實驗414

25.3.1實驗目的414

25.3.2實驗內容及環境414

25.3.3實驗步驟415

25.4本章小結419

25.5問題討論與課後提升420

25.5.1問題討論420

25.5.2課後提升420

 

參考文獻421