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

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

第1篇 漏洞利用原理(初级) 2

第1章 基础知识 2

1.1漏洞概述 2

1.1.1 bug与漏洞 2

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

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

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

1.2二进制文件概述 5

1.2.1 PE文件格式 5

1.2.2虚拟内存 6

1.2.3 PE文件与虚拟内存之间的映射 7

1.3必备工具 11

1.3.1 OllyDbg简介 11

1.3.2 SoftICE简介 11

1.3.3 WinDbg简介 16

1.3.4 IDA Pro简介 18

1.3.5二进制编辑器 20

1.3.6 VMwa简介 21

1.3.7 Python编程环境 28

1.4 Crack小实验 29

第2章 栈溢出原理与实践 38

2.1系统栈的工作原理 38

2.1.1内存的不同用途 38

2.1.2栈与系统栈 39

2.1.3函数调用时发生了什么 40

2.1.4寄存器与函数栈帧 43

2.1.5函数调用约定与相关指令 44

2.2修改邻接变量 47

2.2.1修改邻接变量的原理 47

2.2.2突破密码验证程序 49

2.3修改函数返回地址 53

2.3.1返回地址与程序流程 53

2.3.2控制程序的执行流程 57

2.4代码植入 62

2.4.1代码植入的原理 62

2.4.2向进程中植入代码 62

第3章 开发shellcode的艺术 71

3.1 shellcode概述 71

3.1.1 shellcode与exploit 71

3.1.2 shellcode需要解决的问题 72

3.2定位shellcode 73

3.2.1栈帧移位与Jmp esp 73

3.2.2获取“跳板”的地址 76

3.2.3使用“跳板”定位的exploit 78

3.3缓冲区的组织 81

3.3.1缓冲区的组成 81

3.3.2抬高栈顶保护shellcode 83

3.3.3使用其他跳转指令 83

3.3.4不使用跳转指令 84

3.3.5函数返回地址移位 85

3.4开发通用的shellcode 87

3.4.1定位API的原理 87

3.4.2 shellcode的加载与调试 88

3.4.3动态定位API地址的shellcode 89

3.5 shellcode编码技术 98

3.5.1为什么要对shellcode编码 98

3.5.2会“变形”的shellcode 99

3.6为shellcode“减肥” 103

3.6.1 shellcode瘦身大法 103

3.6.2选择恰当的hash算法 105

3.6.3 191个字节的bindshell 107

第4章用MetaSploit开发Exploit 119

4.1漏洞测试平台MSF简介 119

4.2入侵Windows系统 121

4.2.1漏洞简介 121

4.2.2图形界面的漏洞测试 121

4.2.3 console界面的漏洞测试 125

4.3利用MSF制作shellcode 126

4.4用MSF扫描“跳板” 128

4.5 Ruby语言简介 129

4.6“傻瓜式”Exploit开发 134

4.7用MSF发布POC 140

第5章 堆溢出利用 144

5.1堆的工作原理 144

5.1.1 Windows堆的历史 144

5.1.2堆与栈的区别 145

5.1.3堆的数据结构与管理策略 146

5.2在堆中漫游 151

5.2.1堆分配函数之间的调用关系 151

5.2.2堆的调试方法 152

5.2.3识别堆表 155

5.2.4堆块的分配 158

5.2.5堆块的释放 159

5.2.6堆块的合并 159

5.2.7快表的使用 161

5.3堆溢出利用(上)—DWORD SHOOT 163

5.3.1链表“拆卸”中的问题 163

5.3.2在调试中体会“DWORD SHOOT” 165

5.4堆溢出利用(下)—代码植入 169

5.4.1 DWORD SHOOT的利用方法 169

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

5.4.3堆溢出利用的注意事项 175

第6章 形形色色的内存攻击技术 178

6.1狙击Windows异常处理机制 178

6.1.1 S.E.H概述 178

6.1.2在栈溢出中利用S.E.H 180

6.1.3在堆溢出中利用S.E.H 184

6.1.4深入挖掘Windows异常处理 187

6.1.5其他异常处理机制的利用思路 192

6.2 “off by one”的利用 196

6.3攻击C++的虚函数 198

6.4 Heap Spray:堆与栈的协同攻击 201

第7章 手机里的缓冲区溢出 204

7.1 Windows Mobile简介 204

7.1.1 Windows Mobile前世今生 204

7.1.2 Windows Mobile架构概述 205

7.1.3 Windows Mobile的内存管理 209

7.2 ARM简介 212

7.2.1 ARM是什么 212

7.2.2 ARM寄存器结构 212

7.2.3 ARM汇编指令结构 215

7.2.4 ARM指令寻址方式 220

7.2.5 ARM的函数调用与返回 222

7.3 Windows Mobile上的HelloWorld 223

7.4远程调试工具简介 227

7.4.1远程信息查看管理套件 227

7.4.2手机上的调试—Microsoft Visual Studio 231

7.4.3手机上的调试—IDA 233

7.5手机上的exploit me 237

第8章 其他类型的软件漏洞 243

8.1格式化串漏洞 243

8.1.1 printf中的缺陷 243

8.1.2用printf读取内存数据 244

8.1.3用printf向内存写数据 245

8.1.4.格式化串漏洞的检测与防范 246

8.2 SQL注入攻击 247

8.2.1 SQL注入原理 247

8.2.2攻击PHP+MySQL网站 248

8.2.3攻击ASP+SQL Server网站 250

8.2.4注入攻击的检测与防范 252

8.3其他注入方式 253

8.3.1 Cookie注入,绕过马其诺防线 253

8.3.2 XPath注入,XML的阿喀琉斯之踵 254

8.4 XSS攻击 255

8.4.1脚本能够“跨站”的原因 255

8.4.2 XSS Reflection攻击场景 256

8.4.3 Stored XSS攻击场景 258

8.4.4攻击案例回顾:XSS蠕虫 258

8.4.5 XSS的检测与防范 259

8.5路径回溯漏洞 260

8.5.1路径回溯的基本原理 260

8.5.2范式化与路径回溯 261

第2篇 漏洞利用原理(高级) 264

第9章Windows安全机制概述 264

第10章 栈中的守护天使:GS 267

10.1 GS安全编译选项的保护原理 267

10.2利用未被保护的内存突破GS 271

10.3覆盖虚函数突破GS 273

10.4攻击异常处理突破GS 276

10.5同时替换栈中和.data中的Cookie突破GS 280

第11章 亡羊补牢:SafeSEH 284

11.1 SafeSEH对异常处理的保护原理 284

11.2攻击返回地址绕过SafeSEH 288

11.3利用虚函数绕过SafeSEH 288

11.4从堆中绕过SafeSEH 288

11.5利用未启用SafeSEH模块绕过SafeSEH 292

11.6利用加载模块之外的地址绕过SafeSEH 299

11.7利用Adobe Flash Player ActiveX控件绕过SafeSEH 305

第12章 数据与程序的分水岭:DEP 313

12.1 DEP机制的保护原理 313

12.2攻击未启用DEP的程序 316

12.3利用Ret2Libc挑战DEP 317

12.3.1 Ret2Libc实战之利用ZwSetInfonnationProcess 318

12.3.2 Ret2Libc实战之利用Virtualpotect 330

12.3.3 Ret2Libc实战之利用VirtuaLAlloc 339

12.4利用可执行内存挑战DEP 348

12.5利用.NET挑战DEP 352

12.6利用Java applet挑战DEP 359

第13章 在内存中躲猫猫:ASLR 363

13.1内存随机化保护机制的原理 363

13.2攻击未启用ASLR的模块 367

13.3利用部分覆盖进行定位内存地址 372

13.4利用Heap spray技术定位内存地址 376

13.5利用Java applet heap spray技术定位内存地址 379

13.6为.NET控件禁用ASLR 382

第14章S.E.H终极防护:SEHOP 386

14.1 SEHOP的原理 386

14.2攻击返回地址 388

14.3攻击虚函数 388

14.4利用未启用SEHOP的模块 388

14.5伪造S.E.H链表 390

第15章 重重保护下的堆 396

15.1堆保护机制的原理 396

15.2攻击堆中存储的变量 397

15.3利用chunk重设大小攻击堆 398

15.4利用Lookaside表进行堆溢出 407

第3篇 漏洞挖掘技术 414

第16章 漏洞挖掘技术简介 414

16.1漏洞挖掘概述 414

16.2动态测试技术 415

16.2.1 SPIKE简介 415

16.2.2 beSTORM简介 421

16.3静态代码审计 429

第17章 文件类型漏洞挖掘与Smart Fuzz 431

17.1 Smart Fuzz概述 431

17.1.1文件格式Fuzz的基本方法 431

17.1.2 Blind Fuzz和Smart Fuzz 432

17.2用Peach挖掘文件漏洞 433

17.2.1 Peach介绍及安装 433

17.2.2 XML介绍 434

17.2.3定义简单的Peach Pit 436

17.2.4定义数据之间的依存关系 440

17.2.5用Peach Fuzz PNG文件 441

17.3 010脚本,复杂文件解析的瑞士军刀 446

17.3.1 010 Editor简介 446

17.3.2 010脚本编写入门 447

17.3.3 010脚本编写提高—PNG文件解析 449

17.3.4深入解析,深入挖掘—PPT文件解析 452

第18章FTP的漏洞挖掘 457

18.1 FTP协议简介 457

18.2漏洞挖掘手记1: DOS 457

18.3漏洞挖掘手记2:访问权限 466

18.4漏洞挖掘手记3:缓冲区溢出 468

18.5漏洞挖掘手记4: Fuzz DIY 472

第19章E-mail的漏洞挖掘 477

19.1挖掘SMTP漏洞 477

19.1.1 SMTP协议简介 477

19.1.2 SMTP漏洞挖掘手记 478

19.2挖掘POP3漏洞 480

19.2.1 POP3协议简介 4480

19.2.2 POP3漏洞挖掘手记 481

19.3挖掘IMAP4漏洞 489

19.3.1 IMAP4协议简介 489

19.3.2 IMAP4漏洞挖掘手记 490

19.4其他E-mail漏洞 491

19.4.1 URL中的路径回溯 491

19.4.2内存中的路径回溯 494

19.4.3邮件中的XSS 500

第20章ActiveX控件的漏洞挖掘 502

20.1 ActiveX控件简介 502

20.1.1浏览器与ActiveX控件的关系 502

20.1.2控件的属性 503

20.2手工测试ActiveX控件 504

20.2.1建立测试模板 504

20.2.2获取控件的接口信息 505

20.3用工具测试ActiveX控件:COMRaider 509

20.4挖掘ActiveX漏洞 516

20.4.1 ActiveX漏洞的分类 516

20.4.2漏洞挖掘手记1:超星阅读器溢出 517

20.4.3漏洞挖掘手记2:目录操作权限 521

20.4.4漏洞挖掘手记3:文件读权限 523

20.4.5漏洞挖掘手记3:文件删除权限 525

第4篇 操作系统内核安全 528

第21章 探索ring0 528

21.1内核基础知识介绍 528

21.1.1内核概述 528

21.1.2驱动编写之Hello World 528

21.1.3派遣例程与IRP结构 533

21.1.4 Ring3打开驱动设备 537

21.1.5 DeviceIoControl函数与IoControlCode 538

21.1.6 Ring3/Ring0的四种通信方式 539

21.2内核调试入门 541

21.2.1创建内核调试环境 541

21.2.2蓝屏分析 549

21.3内核漏洞概述 551

21.3.1内核漏洞的分类 551

21.3.2内核漏洞的研究过程 553

21.4编写安全的驱动程序 555

21.4.1输入输出检查 555

21.4.2验证驱动的调用者 556

21.4.3白名单机制的挑战 556

第22章 内核漏洞利用技术 557

22.1利用实验之exploitme.sys 557

22.2内核漏洞利用思路 559

22.3内核漏洞利用方法 560

22.4内核漏洞利用实战与编程 565

22.5 Ring0 Shellcode的编写 570

第23章FUZZ驱动程序 579

23.1内核FUZZ思路 579

23.2内核FUZZ工具介绍 581

23.3内核FUZZ工具DIY 583

23.3.1 Fuzz对象、Fuzz策略、Fuzz项 583

23.3.2 IoControl MITM Fuzz 583

23.3.3 IoControl Driver Fuzz 585

23.3.4 MyIoControl Fuzzer界面 586

23.4内核漏洞挖掘实战 588

23.4.1超级巡警ASTDriver.sys本地提权漏洞 588

23.4.2东方微点mp110013.sys本地提权漏洞 594

23.4.3瑞星HookCont.sys驱动本地拒绝服务漏洞 601

第24章 内核漏洞案例分析 605

24.1远程拒绝服务内核漏洞 605

24.2本地拒绝服务内核漏洞 611

24.3缓冲区溢出内核漏洞 614

24.4任意地址写任意数据内核漏洞 619

24.5任意地址写固定数据内核漏洞 622

第5篇 漏洞分析案例 628

第25章 漏洞分析技术概述 628

25.1漏洞分析的方法 628

25.2运动中寻求突破:调试技术 629

25.2.1断点技巧 630

25.2.2回溯思路 644

25.3用“白眉”在PE中漫步 647

25.3.1指令追踪技术与Paimei 647

25.3.2 Paimei的安装 648

25.3.3使用PE Stalker 649

25.3.4迅速定位特定功能对应的代码 652

25.4补丁比较 654

第26章RPC入侵:M S06-040与MS08-067 658

26.1 RPC漏洞 658

26.1.1 RPC漏洞简介 658

26.1.2 RPC编程简介 658

26.2 MS06-040 659

26.2.1 MS06-040简介 659

26.2.2动态调试 660

26.2.3静态分析 667

26.2.4实现远程exploit 670

26.3 Windows XP环境下的MS06-040 exploit 677

26.3.1静态分析 677

26.3.2蠕虫样本的exploit方法 682

26.3.3实践跨平台exploit 684

26.4 MS08-067 690

26.4.1 MS08-067简介 690

26.4.2认识Legacy Folder 693

26.4.3“移经”测试 694

26.4.4“移经”风险 694

26.4.5 POC的构造 696

26.5魔波、Conficker与蠕虫病毒 703

第27章MS06-055分析:实战Heap Spray 705

27.1 MS06-055简介 705

27.1.1矢量标记语言(VML)简介 705

27.1.2 0 day安全响应纪实 706

27.2漏洞分析 707

27.3漏洞利用 710

第28章MS09-032分析:一个“&”引发的血案 713

28.1 MS09-032简介 713

28.2漏洞原理及利用分析 713

第29章Yahoo!Messenger栈溢出漏洞 719

29.1漏洞介绍 719

29.2漏洞分析 719

29.3漏洞利用 724

第30章CVE-2009-0927: PDF中的JS 726

30.1 CVE-2009-0927简介 726

30.2 PDF文档格式简介 726

30.3漏洞原理及利用分析 728

第31章 坝之蚁穴:超长URL溢出漏洞 732

31.1漏洞简介 732

31.2漏洞原理及利用分析 732

第32章 暴风影音M3U文件解析漏洞 738

32.1漏洞简介 738

32.2 M3U文件简介 738

32.3漏洞原理及利用分析 739

第33章LNK快捷方式文件漏洞 745

33.1漏洞简介 745

33.2漏洞原理及利用分析 745

附录A已公布的内核程序漏洞列表 750

参考文献 753