图书目录

目录

第一部分软件安全基础

第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