《0day安全 软件漏洞分析技术》PDF下载

  • 购买积分:13 如何计算积分?
  • 作  者:failwest编著
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2008
  • ISBN:7121060779
  • 页数:358 页
图书介绍:本书分4篇17章,系统全面地介绍Windows平台软件缓冲区溢出漏洞的发现、检测、分析,以及利用等方面的知识。书中所有概念和方法都会在紧随其后的调试实验中被再次解释,实验和案例是本书的精髓所在。本书可作为网络安全从业人员、黑客技术发烧友的参考指南,也可作为网络安全专业的研究生或本科生的指导用书。

第1篇 基础知识 2

第1章 漏洞概述 2

1.1 bug与漏洞 2

1.2 几个令人困惑的安全问题 2

1.3 漏洞挖掘、漏洞分析、漏洞利用 3

1.4 漏洞的公布与0 day响应 5

第2章 二进制文件概述 6

2.1 PE文件格式 6

2.2 虚拟内存 6

2.3 PE文件与虚拟内存之间的映射 8

第3章 必备工具 13

3.1 OllyDbg简介 13

3.2 SoftICE简介 14

3.3 WinDbg简介 19

3.4 IDA Pro简介 22

3.5 二进制编辑器 24

3.6 虚拟机简介 26

3.7 Crack二进制文件 27

第2篇 漏洞利用 38

第4章 栈溢出利用 38

4.1 系统栈的工作原理 38

4.1.1 内存的不同用途 38

4.1.2 栈与系统栈 40

4.1.3 函数调用时发生了什么 41

4.1.4 寄存器与函数栈帧 44

4.1.5 函数调用约定与相关指令 45

4.2 修改邻接变量 49

4.2.1 修改邻接变量的原理 49

4.2.2 突破密码验证程序 52

4.3 修改函数返回地址 57

4.3.1 返回地址与程序流程 57

4.3.2 控制程序的执行流程 60

4.4 代码植入 66

4.4.1 代码植入的原理 66

4.4.2 向进程中植入代码 67

第5章 开发shellcode的艺术 78

5.1 shellcode概述 78

5.1.1 shellcode与exploit 78

5.1.2 shellcode需要解决的问题 80

5.2 定位shellcode 81

5.2.1 栈帧移位与jmp esp 81

5.2.2 获取“跳板”的地址 84

5.2.3 使用“跳板”定位的exploit 86

5.3 缓冲区的组织 91

53.1 缓冲区的组成 91

5.3.2 抬高栈顶保护shellcode 92

5.3.3 使用其他跳转指令 94

5.3.4 不使用跳转指令 94

5.3.5 函数返回地址移位 95

5.4 开发通用的shellcode 97

5.4.1 定位API的原理 97

5.4.2 shellcode的加载与调试 100

5.4.3 动态定位API地址的shellcode 101

5.5 shellcode编码技术 112

5.5.1 为什么要对shellcode编码 112

5.5.2 会“变形”的shellcode 114

5.6 为shellcode“减肥” 119

5.6.1 shellcode瘦身大法 119

5.6.2 选择恰当的hash算法 121

5.6.3 191个字节的bindshell 124

第6章 堆溢出利用 141

6.1 堆的工作原理 141

6.1.1 Windows堆的历史 141

6.1.2 堆与栈的区别 142

6.1.3 堆的数据结构与管理策略 143

6.2 在堆中漫游 149

6.2.1 堆分配函数之间的调用关系 149

6.2.2 堆的调试方法 150

6.2.3 识别堆表 154

6.2.4 堆块的分配 158

6.2.5 堆块的释放 159

6.2.6 堆块的合并 160

6.3 堆溢出利用(上)——DWORD SHOOT 161

6.3.1 链表“拆卸”中的问题 161

6.3.2 在调试中体会“DWORD SHOOT” 164

6.4 堆溢出利用(下)——代码植入 168

6.4.1 DWORD SHOOT的利用方法 168

6.4.2 狙击P.E.B中RtlEnterCritical-Section()的函数指针 169

6.4.3 堆溢出利用的注意事项 176

第7章 Windows异常处理机制深入浅出 179

7.1 S.E.H概述 179

7.2 在栈溢出中利用S.E.H 181

7.3 在堆溢出中利用S.E.H 187

7.4 挖掘Windows异常处理 190

7.4.1 不同级别的S.E.H 190

7.4.2 线程的异常处理 191

7.4.3 进程的异常处理 194

7.4.4 系统默认的异常处理U.E.F 195

7.4.5 异常处理流程的总结 196

7.5 V.E.H简介 197

第8章 高级内存攻击技术 199

8.1 狙击异常处理机制 199

8.1.1 攻击V.E.H链表的头节点 199

8.1.2 攻击TEB中的S.E.H头节点 200

8.1.3 攻击U.E.F 201

8.1.4 攻击PEB中的函数指针 203

8.2 “offby one”的利用 203

8.3 攻击C++的虚函数 205

8.4 Heap Spray:堆与栈的协同攻击 209

第9章 揭秘Windows安全机制 213

9.1 Service Pack 2简介 213

9.2 百密一疏的S.E.H验证 215

9.3 栈中的较量 215

9.3.1 .net中的GS安全编译选项 215

9.3.2 GS机制面临的挑战 217

9.4 重重保护下的堆 218

9.5 硬件方面的安全措施 220

第10章 用MetaSploit开发Exploit 222

10.1 漏洞测试平台MSF简介 222

10.2 入侵Windows系统 224

10.2.1 漏洞简介 224

10.2.2 图形界面的漏洞测试 225

10.2.3 console界面的漏洞测试 229

10.3 利用MSF制作shellcode 230

10.4 用MSF扫描“跳板” 232

10.5 Ruby语言简介 233

10.6 “傻瓜式”Exploit开发 239

10.7 用MSF发布POC 248

第11章 其他漏洞利用技术 251

11.1 格式化串漏洞 251

11.1.1 printf中的缺陷 251

11.1.2 用printf读取内存数据 253

11.1.3 用printf向内存写数据 254

11.1.4 格式化串漏洞的检测与防范 255

11.2 SQL注入攻击 256

11.2.1 SQL注入原理 256

11.2.2 攻击PHP+MySQL网站 257

11.2.3 攻击ASP+SQL Server网站 260

11.2.4 注入攻击的检测与防范 261

11.3 XSS攻击 262

11.3.1 脚本能够“跨站”的原因 262

11.3.2 XSS Reflection攻击场景 264

11.3.3 Stored XSS攻击场景 265

11.3.4 攻击案例回顾:XSS蠕虫 266

11.3.5 XSS的检测与防范 267

第3篇 漏洞分析 270

第12章 漏洞分析技术概述 270

12.1 漏洞分析的方法 270

12.2 用“白眉”在PE中漫步 271

12.2.1 指令追踪技术与Paimei 271

12.2.2 Paimei的安装 272

12.2.3 使用PE Stalker 273

12.2.4 迅速定位特定功能对应的代码 276

12.3 补丁比较 278

第13章 MS06-040分析:系统入侵与蠕虫 282

13.1 MS06-040简介 282

13.2 漏洞分析 283

13.2.1 动态调试 283

13.2.2 静态分析 292

13.3 远程Exploit 297

13.3.1 RPC编程简介 297

13.3.2 实现远程exploit 299

13.3.3 改进exploit 306

13.3.4 MS06-040与蠕虫 308

第14章 MS06-055分析:揭秘“网马” 310

14.1 MS06-055简介 310

14.1.1 矢量标记语言(VML)简介 310

14.1.2 0 day安全响应纪实 311

14.2 漏洞分析 312

14.3 漏洞利用 315

14.3.1 实践Heap Spray技术 315

14.3.2 网页木马攻击 319

第15章 MS07-060分析:Word文档中的阴谋 321

15.1 MS07-060简介 321

15.2 POC分析 322

第4篇 漏洞挖掘与软件安全性测试 330

第16章 漏洞挖掘技术浅谈 330

16.1 漏洞挖掘概述 330

16.2 Fuzz文件格式 331

16.2.1 File Fuzz简介 331

16.2.2 用Paimei实践File Fuzz 332

16.3 Fuzz网络协议 334

16.3.1 协议测试简介 334

16.3.2 SPIKE的Fuzz原理 336

16.3.3 SPIKE的Hello World 337

16.3.4 定义Block 338

16.3.5 生成Fuzz用例 340

16.4 Fuzz ActiveX 344

16.5 静态代码审计 347

第17章 安全的软件生命周期 350

17.1 Threat Modeling 350

17.2 编写安全的代码 351

17.3 产品安全性测试 353

17.4 漏洞管理与应急响应 356

参考文献 358