《黑客免杀攻防》PDF下载

  • 购买积分:14 如何计算积分?
  • 作  者:任晓珲著
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2013
  • ISBN:9787111440420
  • 页数:446 页
图书介绍:本书是目前国内唯一一本全面、系统、深度揭露黑客免杀技术的一本书。全书一共分为三个部分:基础篇详细介绍了变脸、免杀与特征码、花指令与免杀技术、壳在免杀技术中的应用等基础性的免杀技术,让读者对免杀技术有一个概念性的认识;高级篇讲解了PE文件、逆向工程、源码级免杀、壳的编写和Rootkit等免杀技术的进阶知识,使免杀的核心技术暴露无遗;扩展篇讲解了遏制免杀技术的方法与技巧,这是本书的核心内容和目的所在。

基础篇 初级免杀技术 2

第1章 变脸 2

1.1 为何变脸 2

1.2 何为变脸 3

1.3 免杀的发展史 3

1.4 免杀技术的简单原理 4

1.5 免杀与其他技术的区别 5

1.5.1 免杀不是Rootkit技术 5

1.5.2 免杀不是加密解密技术 5

1.6 小结 6

第2章 免杀基础知识 7

2.1 如何开始免杀 7

2.2 反病毒软件原理与反病毒技术介绍 8

2.2.1 反病毒软件的工作原理 8

2.2.2 基于文件扫描的反病毒技术 9

2.2.3 基于内存扫描的反病毒技术 12

2.2.4 基于行为监控的反病毒技术 12

2.2.5 基于新兴技术的反病毒技术 12

2.2.6 反病毒技术前沿 14

2.2.7 反病毒技术展望 14

2.3 了解PE文件 15

2.3.1 什么是PE文件 15

2.3.2 PE文件的结构 16

2.4 免杀原理 17

2.4.1 文件免杀原理 17

2.4.2 内存免杀原理 20

2.4.3 行为免杀原理 21

2.5 工具脱壳技巧 21

2.5.1 壳的分类 22

2.5.2 免杀与脱壳是什么关系 23

2.5.3 使用专用脱壳工具脱壳 24

2.5.4 使用通用脱壳工具脱壳 25

2.6 小结 26

第3章 免杀与特征码 27

3.1 特征码免杀技术 27

3.1.1 理想状态下的免杀 27

3.1.2 由脚本木马免杀理解特征码 28

3.2 特征码定位原理 29

3.2.1 特征码逐块填充定位原理 29

3.2.2 特征码逐块暴露定位原理 31

3.2.3 特征码混合定位原理 34

3.3 脚本木马定位特征码 35

3.4 MyCCL查找文件特征码 39

3.4.1 MyCCL的典型应用 39

3.4.2 针对MyCCL的一点思考 41

3.5 MyCCL查找内存特征码 43

3.6 特征码修改方法 44

3.6.1 简单的特征码修改 44

3.6.2 特征码修改进阶 45

3.7 小结 50

第4章 其他免杀技术 51

4.1 修改入口点免杀 51

4.2 使用VMProtect加密 54

4.3 Overlay附加数据的处理及应用 54

4.4 驱动程序免杀修改技巧 55

4.4.1 驱动程序的常见免杀方法 55

4.4.2 驱动程序的手工免杀思路 56

4.5 补丁在免杀中的应用 57

4.6 PE文件进阶介绍 59

4.6.1 PE文件格式 60

4.6.2 虚拟内存的简单介绍 62

4.6.3 PE文件的内存映射 63

4.7 网页木马的免杀 66

4.7.1 脚本木马免杀 66

4.7.2 网页挂马的免杀 77

4.8 小结 78

第5章 花指令与免杀 80

5.1 什么是花指令 80

5.2 脚本木马的花指令应用 81

5.3 花指令的根基——汇编语言 83

5.3.1 认识汇编 83

5.3.2 通过反汇编添加任意功能 85

5.4 花指令入门 88

5.5 花指令在免杀领域的应用 91

5.5.1 花指令的应用技巧 91

5.5.2 花指令的修改技巧简介 91

5.5.3 空白区域寻找与加空白区段 92

5.6 花指令的高级应用 94

5.6.1 花指令的提取与快速应用 94

5.6.2 SEH异常的应用 96

5.7 小结 97

第6章 壳在免杀中的应用 98

6.1 壳的基础知识 98

6.2 壳在免杀领域的应用 99

6.2.1 加壳的免杀原理 100

6.2.2 FreeRes多重加壳 100

6.3 壳的修改技巧 101

6.3.1 壳的初级修改 101

6.3.2 制作通用补丁 102

6.4 小结 107

高级篇 免杀技术进阶 110

第7章 PE文件格式详解 110

7.1 MS-DOS头 111

7.1.1 重要字段 112

7.1.2 其他字段 112

7.2 PE文件头 113

7.2.1 Signature字段 113

7.2.2 IMAGE FILE HEADER结构 113

7.2.3 IMAGE OPTIONAL HEADER结构(x86/x64) 115

7.2.4 数据目录表 118

7.3 区段表 119

7.3.1 IMAGE SECTION HEADER结构 119

7.3.2 区段名功能约定 121

7.3.3 区段对齐详解 122

7.3.4 地址转换 123

7.4 导出表 123

7.4.1 IMAGE EXPORT DIRECTORY结构 123

7.4.2 识别导出表 124

7.5 导入表 127

7.5.1 IMAGE IMPORT DESCRIPTOR结构 128

7.5.2 识别导入表 130

7.6 资源 132

7.6.1 资源结构 132

7.6.2 识别资源 135

7.7 异常 137

7.8 安全 139

7.8.1 安全目录结构 139

7.8.2 识别安全结构 140

7.9 基址重定位 141

7.9.1 基址重定位表结构 141

7.9.2 识别基址重定位表 143

7.10 调试 146

7.11 特殊结构数据(版权) 147

7.12 全局指针 147

7.13 TLS 148

7.13.1 TLS的回调函数 149

7.13.2 TLS的结构(x86/x64) 151

7.13.3 识别TLS 152

7.14 载入配置(x86/x64) 153

7.15 绑定导入表 155

7.15.1 绑定导入表结构 155

7.15.2 识别绑定导入表 156

7.16 导入地址表 157

7.17 延迟加载表 157

7.17.1 延迟加载表结构 158

7.17.2 识别延迟加载表 159

7.18 COM描述符 159

7.19 小结 159

第8章 PE文件知识在免杀中的应用 161

8.1 PE文件与免杀思路 161

8.1.1 移动PE文件头位置免杀 161

8.1.2 导入表移动免杀 163

8.1.3 导出表移动免杀 165

8.2 PE文件与反启发式扫描 165

8.2.1 最后一个区段为代码段 165

8.2.2 可疑的区段头部属性 166

8.2.3 可疑的PE选项头的有效尺寸值 166

8.2.4 可疑的代码节名称 166

8.2.5 多个PE头部 166

8.2.6 导入表项存在可疑导入 167

8.3 一个稍显复杂的例子——隐藏导入表 167

8.3.1 操作原理与先决条件 167

8.3.2 修改PE文件 168

8.3.3 构造我们的反汇编代码 168

8.4 小结 169

第9章 软件逆向工程 170

9.1 准备工作 170

9.1.1 要准备的工具及基础知识 171

9.1.2 程序是从哪里开始运行的 171

9.2 一个简单的小例子 177

9.3 函数识别初探 179

9.4 if-else分支 185

9.4.1 以常量为判断条件的简单if-else分支 185

9.4.2 以变量为判断条件的简单if-else分支 186

9.4.3 以常量为判断条件的复杂if-else分支 188

9.4.4 以变量为判断条件的复杂if-else分支 189

9.4.5 识别三目运算符 190

9.5 循环分支 194

9.5.1 do-while循环 194

9.5.2 while循环 196

9.5.3 for循环 199

9.5.4 循环体的语句外提优化 202

9.6 switch-case分支 203

9.6.1 简单switch-case分支识别技巧 203

9.6.2 复杂分支的switch-case识别 208

9.6.3 switch-case分支结构与稀疏矩阵 210

9.6.4 switch-case分支结构与平衡二叉树 215

9.7 加法与减法的识别与优化原理 220

9.7.1 加法的识别与优化 221

9.7.2 减法的识别与优化 223

9.8 乘法与除法的识别与优化原理 224

9.8.1 乘法的位移优化 224

9.8.2 乘法的lea指令优化 225

9.8.3 除法与倒数相乘 228

9.8.4 倒数相乘与定点运算的配合 229

9.8.5 除法运算的识别与优化 230

9.8.6 取模运算的识别与优化 236

9.9 指针与数组 238

9.9.1 指针与数组的渊源 238

9.9.2 数组的不同表达方式 242

9.10 数组、结构体与对象 243

9.10.1 数组与结构体 243

9.10.2 结构体与类 245

9.11 变量作用域的识别 245

9.12 识别构造与析构函数 247

9.12.1 快速识别出类 248

9.12.2 识别构造函数 252

9.12.3 识别析构函数 253

9.13 虚函数与纯虚函数的识别 254

9.13.1 识别简单的虚函数 254

9.13.2 识别较复杂的虚函数 260

9.14 正确识别类的继承关系 275

9.15 最后一役 290

9.15.1 MFC逆向初探 291

9.15.2 分析BypassUAC.exe 292

9.16 小结 301

第10章 源码级免杀 302

10.1 怎样定位产生特征的源代码 302

10.1.1 定位文件特征 302

10.1.2 定位行为特征 304

10.2 基于源码的特征修改 304

10.2.1 变换编译器与编译选项 304

10.2.2 添加垃圾代码 305

10.2.3 语法变换 306

10.2.4 添加汇编花指令 306

10.3 小结 307

第11章 详解C++壳的编写 308

11.1 了解壳的运行流程 308

11.2 设计一个纯C++编写的壳 309

11.2.1 用C++编写的壳应该是什么样的 310

11.2.2 编写过程中会遇到的问题 310

11.3 用C++写一个简单的壳 311

11.3.1 配置工程 312

11.3.2 编写Stub部分 314

11.3.3 编写加壳部分 318

11.3.4 编写界面部分 325

11.4 设计一个由C++编写的专业壳 326

11.4.1 为问题找到答案 326

11.4.2 设计专业壳的框架 329

11.4.3 如何设计Stub部分 330

11.4.4 如何设计加壳部分 331

11.4.5 需要注意的细节问题 334

11.5 怎样调试由C++编写的Stub部分 334

11.6 小结 335

第12章 黑客是怎样打造免杀壳的 336

12.1 免杀壳与加密壳的异同 336

12.2 导入表加密 337

12.3 代码混淆与代码乱序 337

12.4 附加驱动 338

12.5 小结 339

第13章 脱壳技术 340

13.1 寻找OEP 340

13.1.1 利用内存断点 340

13.1.2 利用堆栈平衡 342

13.1.3 利用编译语言特点 343

13.1.4 利用跨区段跳转 345

13.2 转储内存映像 346

13.3 重建导入表 346

13.3.1 导入表重建原理 347

13.3.2 使用ImportREC重建导入表 347

13.4 小结 348

第14章 Rootkit基础 349

14.1 构建一个Rootkit基础环境 349

14.1.1 构建开发环境 349

14.1.2 构建基于Visual Studio 2012的调试环境 350

14.1.3 构建基于WinDbg的调试环境 354

14.1.4 将Rootkit加载到系统 356

14.1.5 创建一个简单的驱动并调试 357

14.2 何为Ring0层 360

14.3 关键表 361

14.4 内存分页 362

14.4.1 地址转译 363

14.4.2 内存访问检查 367

14.4.3 Windows对重要表的保护 368

14.5 内存描述符表 369

14.6 中断描述符表(IDT) 369

14.7 系统服务调度表 371

14.8 控制寄存器 371

14.8.1 利用CR0禁用内存保护机制 371

14.8.2 其他控制寄存器 372

14.9 小结 372

第15章 Rootkit在免杀中的应用 373

15.1 用户模式Rootkit 373

15.1.1 DLL远程注入技巧 373

15.1.2 内联钩子 375

15.1.3 导入地址表钩子 375

15.1.4 一个保护文件不被删除的例子 376

15.2 内核编程基础 377

15.2.1 内核编程环境与用户层编程环境的异同 377

15.2.2 如何选择Windows驱动开发模型 378

15.2.3 驱动设备与请求处理 378

15.2.4 内核编程中的数据类型 386

15.2.5 函数调用 387

15.2.6 Windows内核编程的特点 389

15.3 内核模式Rootkit 390

15.3.1 SYSENTER钩子 390

15.3.2 SSDT钩子 394

15.3.3 内联钩子 399

15.3.4 IRP钩子 401

15.3.5 LADDR钩子 406

15.3.6 IDT钩子 411

15.3.7 IOAPIC钩子 413

15.4 小结 417

第16章 免杀技术前沿 418

16.1 免杀技术的发展趋势 418

16.2 免杀前沿之突破主动防御 419

16.2.1 “移花接木”之屏幕截图突破主动防御 419

16.2.2 “暗渡陈仓”之利用可信进程突破主动防御 419

16.2.3 “釜底抽薪”之利用系统进程突破主动防御 420

16.2.4 “顺手牵羊”之利用逻辑漏洞突破主动防御 420

16.2.5 “浑水摸鱼”之利用变形复制突破主动防御 420

16.2.6 “金蝉脱壳”之利用异同逃逸虚拟机 420

16.2.7 “借尸还魂”之利用替换文件突破主动防御 421

16.2.8 “借刀杀人”之利用调试接口突破主动防御 421

16.3 黑客免杀技术的展望 421

16.4 小结 422

扩展篇 遏制免杀技术初探 424

第17章 浅谈部分免杀技巧的遏制 424

17.1 盯紧PE文件 424

17.2 盯紧程序行为 425

17.3 小结 425

第18章 反特征码定位 426

18.1 释放干扰码 426

18.2 定位行为的判定 426

18.3 设定“靶特征码” 427

18.4 小结 427

第19章 遏制免杀与Anti Rootkit 428

19.1 适当的监控 428

19.2 基本检测逻辑 428

19.3 Rootkit检测方法初探 429

19.4 小结 430

第20章 浅谈反病毒产品的改进 431

20.1 云查杀与本地查杀紧密结合 431

20.2 注重感染型病毒木马的清除工作 431

20.3 精进启发式扫描解决效率问题 432

20.4 小结 432

附录A 80x86汇编基础知识 433