当前位置:首页 > 工业技术
黑客攻防技术宝典  系统实战篇
黑客攻防技术宝典  系统实战篇

黑客攻防技术宝典 系统实战篇PDF电子书下载

工业技术

  • 电子书积分:16 积分如何计算积分?
  • 作 者:(英)ChrisAnley,(英)JohnHeasman,(美)GerardoRicharte等著
  • 出 版 社:北京:人民邮电出版社
  • 出版年份:2010
  • ISBN:9787115217967
  • 页数:545 页
图书介绍:本书由世界顶尖级安全专家执笔,详细阐述了系统安全、应用程序安全、软件破解、加密解密等安全领域的核心问题,并用大量实例说明如何检查Windows、Linux等流行操作系统中存在的安全漏洞以及Oracle等数据库中的安全隐患。
《黑客攻防技术宝典 系统实战篇》目录

第一部分 破解入门:x86上的Linux第1章 写在前面 2

1.1 基本概念 2

1.1.1 内存管理 3

1.1.2 汇编语言 4

1.2 识别汇编指令里的C和C++代码 5

1.3 小结 7

第2章 栈溢出 8

2.1 缓冲区 8

2.2 栈 10

2.3 栈上的缓冲区溢出 13

2.4 有趣的转换 17

2.5 利用漏洞获得根特权 20

2.5.1 地址问题 21

2.5.2 NOP法 26

2.6 战胜不可执行栈 28

2.7 小结 31

第3章 shellcode 32

3.1 理解系统调用 32

3.2 为exit()系统调用写shellcode 34

3.3 可注入的shellcode 37

3.4 派生shell 39

3.5 小结 46

第4章 格式化串漏洞 47

4.1 储备知识 47

4.2 什么是格式化串 47

4.3 什么是格式化串漏洞 49

4.4 利用格式化串漏洞 52

4.4.1 使服务崩溃 53

4.4.2 信息泄露 54

4.5 控制程序执行 59

4.6 为什么会这样 67

4.7 格式化串技术概述 67

4.8 小结 69

第5章 堆溢出 70

5.1 堆是什么 70

5.2 发现堆溢出 71

5.2.1 基本堆溢出 72

5.2.2 中级堆溢出 77

5.2.3 高级堆溢出 83

5.3 小结 84

第二部分 其他平台:Windows、Solaris、OS X和Cisco第6章 Windows操作系统 86

6.1 Windows和Linux有何不同 86

6.2 堆 88

6.3 DCOM、DCE-RPC的优缺点 90

6.3.1 侦察 91

6.3.2 破解 93

6.3.3 令牌及其冒用 93

6.3.4 Win32平台的异常处理 95

6.4 调试Windows 96

6.4.1 Win32里的bug 96

6.4.2 编写Windows shellcode 97

6.4.3 Win32 API黑客指南 97

6.4.4 黑客眼中的Windows 98

6.5 小结 99

第7章 Windows shellcode 100

7.1 句法和过滤器 100

7.2 创建 101

7.2.1 剖析PEB 102

7.2.2 分析Heapoverflow.c 102

7.3 利用Windows异常处理进行搜索 116

7.4 弹出shell 121

7.5 为什么不应该在Windows上弹出shell 122

7.6 小结 122

第8章 Windows溢出 123

8.1 栈缓冲区溢出 123

8.2 基于帧的异常处理程序 123

8.3 滥用Windows 2003 Server上的基于帧的异常处理 127

8.3.1 滥用已有的处理程序 128

8.3.2 在与模块不相关的地址里寻找代码段,从而返回缓冲区 129

8.3.3 在没有Load Configuration Directory的模块的地址空间里寻找代码段 130

8.3.4 关于改写帧处理程序的最后说明 131

8.4 栈保护与Windows 2003 Server 131

8.5 堆缓冲区溢出 136

8.6 进程堆 136

8.6.1 动态堆 136

8.6.2 与堆共舞 136

8.6.3 堆是如何工作的 137

8.7 破解堆溢出 140

8.7.1 改写PEB里指向RtlEnter CriticalSection的指针 140

8.7.2 改写指向未处理异常过滤器的指针 146

8.7.3 修复堆 152

8.7.4 堆溢出的其他问题 154

8.7.5 有关堆的总结 154

8.8 其他的溢出 154

8.8.1 .data区段溢出 154

8.8.2 TEB/PEB溢出 156

8.9 破解缓冲区溢出和不可执行栈 156

8.10 小结 161

第9章 战胜过滤器 162

9.1 为仅接受字母和数字的过滤器写破解代码 162

9.2 为使用Unicode的过滤器写破解代码 165

9.2.1 什么是Unicode 165

9.2.2 从ASCII转为Unicode 166

9.3 破解Unicode漏洞 166

9.4 百叶窗法 168

9.5 译码器和译码 171

9.5.1 译码器的代码 172

9.5.2 在缓冲区地址上定位 173

9.6 小结 174

第10章 Solaris破解入门 175

10.1 SPARC体系结构介绍 175

10.1.1 寄存器和寄存器窗口 176

10.1.2 延迟槽 177

10.1.3 合成指令 177

10.2 Solaris/SPARC shellcode基础 178

10.2.1 自定位和SPARC shellcode 178

10.2.2 简单的SPARC exec shellcode 178

10.2.3 Solaris里有用的系统调用 179

10.2.4 NOP和填充指令 180

10.3 Solaris/SPARC栈帧介绍 180

10.4 栈溢出的方法 180

10.4.1 任意大小的溢出 180

10.4.2 寄存器窗口和栈溢出的复杂性 181

10.4.3 其他复杂的因素 181

10.4.4 可能的解决方法 181

10.4.5 off-by-one栈溢出漏洞 182

10.4.6 shellcode的位置 182

10.5 栈溢出破解实战 183

10.5.1 脆弱的程序 183

10.5.2 破解代码 184

10.6 Solaris/SPARC上的堆溢出 187

10.6.1 Solaris System V堆介绍 188

10.6.2 堆的树状结构 188

10.7 基本的破解方法(t_delete) 209

10.7.1 标准堆溢出的限制 210

10.7.2 改写的目标 211

10.8 其他与堆相关的漏洞 213

10.8.1 off-by-one溢出 213

10.8.2 二次释放漏洞 214

10.8.3 任意释放漏洞 214

10.9 堆溢出的例子 214

10.10 破解Solaris的其他方法 218

10.10.1 静态数据溢出 218

10.10.2 绕过不可执行栈保护 218

10.11 小结 219

第11章 高级Solaris破解 220

11.1 单步执行动态链接程序 221

11.2 Solaris SPARC堆溢出的各种技巧 235

11.3 高级Solaris/SPARC shellcode 236

11.4 小结 248

第12章 OS X shellcode 249

12.1 OS X就是BSD吗 249

12.2 OS X是否开源 250

12.3 UNIX支持的OS X 250

12.4 OS X PowerPC shellcode 251

12.5 OS X Intel shellcode 257

12.5.1 shellcode实例 258

12.5.2 ret2libc 259

12.5.3 ret2str(1)cpy 261

12.6 OS X跨平台shellcode 263

12.7 OS X堆利用 264

12.8 在OS X中寻找bug 266

12.9 一些有趣的bug 266

12.10 关于OS X破解的必读资料 267

12.11 小结 268

第13章 思科IOS破解技术 269

13.1 思科IOS纵览 269

13.1.1 硬件平台 269

13.1.2 软件包 270

13.1.3 IOS系统架构 271

13.2 思科IOS里的漏洞 274

13.2.1 协议剖析代码 274

13.2.2 路由器上的服务 274

13.2.3 安全特征 274

13.2.4 命令行接口 275

13.3 逆向分析IOS 275

13.3.1 仔细剖析映像 275

13.3.2 比较IOS映像文件 276

13.3.3 运行时分析 277

13.4 破解思科IOS 281

13.4.1 栈溢出 282

13.4.2 堆溢出 283

13.4.3 shellcode 286

13.5 小结 294

第14章 保护机制 295

14.1 保护 295

14.1.1 不可执行栈 296

14.1.2 W^X内存 299

14.1.3 栈数据保护 304

14.1.4 AAAS 309

14.1.5 ASLR 310

14.1.6 堆保护 312

14.1.7 Windows SEH保护机制 318

14.1.8 其他保护机制 321

14.2 不同实现之间的差异 322

14.2.1 Windows 322

14.2.2 Linux 325

14.2.3 OpenBSD 327

14.2.4 Mac OS X 328

14.2.5 Solaris 329

14.3 小结 330

第三部分 漏洞发现 332

第15章 建立工作环境 332

15.1 需要什么样的参考资料 332

15.2 用什么编程 333

15.2.1 gcc 333

15.2.2 gdb 333

15.2.3 NASM 333

15.2.4 WinDbg 333

15.2.5 OllyDbg 333

15.2.6 Visual C++ 334

15.2.7 Python 334

15.3 研究时需要什么 334

15.3.1 有用的定制脚本/工具 334

15.3.2 所有的平台 335

15.3.3 UNIX 336

15.3.4 Windows 336

15.4 需要学习的资料 337

15.5 优化shellcode开发 339

15.5.1 计划 339

15.5.2 用内联汇编写shellcode 340

15.5.3 维护shellcode库 341

15.5.4 持续运行 341

15.5.5 使破解程序稳定可靠 342

15.5.6 窃取连接 343

15.6 小结 343

第16章 故障注入 344

16.1 设计概要 345

16.1.1 生成输入数据 345

16.1.2 故障注入 347

16.1.3 修正引擎 347

16.1.4 提交故障 351

16.1.5 Nagel算法 351

16.1.6 时序 351

16.1.7 试探法 351

16.1.8 无状态协议与基于状态的协议 352

16.2 故障监视 352

16.2.1 使用调试器 352

16.2.2 FaultMon 352

16.3 汇总 353

16.4 小结 354

第17章 模糊测试的艺术 355

17.1 模糊测试理论 355

17.1.1 静态分析与模糊测试 359

17.1.2 可扩缩的模糊测试 359

17.2 模糊测试法的缺点 360

17.3 建立任意的网络协议模型 361

17.4 其他可能的模糊测试法 362

17.4.1 位翻转 362

17.4.2 修改开源程序 362

17.4.3 带动态分析的模糊测试 362

17.5 SPIKE 363

1 7.5.1 什么是SPIKE 363

17.5.2 为什么用SPIKE数据结构模仿网络协议 364

17.6 其他的模糊测试工具 371

17.7 小结 371

第18章 源码审计:在基于C的语言里寻找漏洞 372

1 8.1 工具 373

18.1.1 Cscope 373

18.1.2 Ctags 373

18.1.3 编辑器 373

18.1.4 Cbrowser 373

18.2 自动源码分析工具 374

18.3 方法论 374

18.3.1 自顶向下(明确的)的方法 374

18.3.2 自底向上的方法 375

18.3.3 结合法 375

18.4 漏洞分类 375

18.4.1 普通逻辑错误 375

18.4.2 (几乎)绝迹的错误分类 375

18.4.3 格式化串 376

18.4.4 错误的边界检查 377

18.4.5 循环结构 378

18.4.6 off-by-one漏洞 378

18.4.7 非正确终止问题 379

18.4.8 跳过以'\0'结尾问题 380

18.4.9 有符号数比较漏洞 381

18.4.10 整数相关漏洞 382

18.4.11 不同大小的整数转换 383

18.4.12 二次释放错误 384

18.4.13 超出范围的内存使用漏洞 384

18.4.14 使用未初始化的变量 384

18.4.15 释放后再使用漏洞 385

18.4.16 多线程问题和重入安全代码 386

18.5 超越识别:真正的漏洞和错误 386

18.6 小结 386

第19章 手工的方法 387

19.1 原则 387

19.2 Oracle extproc溢出 387

19.3 普通的体系架构故障 390

19.3.1 问题发生在边界 390

19.3.2 在数据转换时出现问题 391

19.3.3 不对称区域里的问题 393

19.3.4 当认证和授权混淆的时候出现问题 393

19.3.5 在最显眼的地方存在的问题 393

19.4 绕过输入验证和攻击检测 394

19.4.1 剥离坏数据 394

19.4.2 使用交替编码 394

19.4.3 使用文件处理特征 395

19.4.4 避开攻击特征 397

19.4.5 击败长度限制 397

19.5 Windows 2000 SNMP DOS 399

19.6 发现DOS攻击 399

19.7 SQL-UDP 400

19.8 小结 400

第20章 跟踪漏洞 402

20.1 概述 402

20.1.1 脆弱的程序 403

20.1.2 组件设计 404

20.1.3 编译VulnTrace 411

20.1.4 使用VulnTrace 416

20.1.5 高级的技术 418

20.2 小结 419

第21章 二进制审计:剖析不公开源码的软件 421

21.1 二进制与源码审计之间的明显差异 421

21.2 IDA pro——商业工具 422

21.2.1 IDA特征简介 422

21.2.2 调试符号 423

2.1.3 二进制审计入门 423

21.3.1 栈帧 423

21.3.2 调用约定 424

21.3.3 编译器生成的代码 425

21.3.4 类似memcpy代码构造 428

21.3.5 类似stlen的代码构造 429

21.3.6 C十十代码构造 429

21.3.7 this指针 429

21.4 重构类定义 430

21.4.1 vtables 430

21.4.2 快速且有用的花絮 431

21.5 手动二进制分析 431

21.5.1 快速检查函数库调用 431

21.5.2 可疑的循环和写指令 431

21.5.3 高层理解和逻辑错误 432

21.5.4 二进制的图形化分析 432

21.5.5 手动反编译 433

21.6 二进制漏洞例子 433

21.6.1 微软SQL Server错误 433

21.6.2 LSD的RPC-DCOM漏洞 434

21.6.3 IIS WebDav漏洞 434

21.7 小结 436

第四部分 高级内容 438

第22章 其他载荷策略 438

22.1 修改程序 438

22.2 SQL Server 3B补丁 439

22.3 MySQL 1位补丁 442

22.4 OpenSSH RSA认证补丁 443

22.5 其他运行时修补方法 444

22.6 上载和运行(或proglet服务器) 446

22.7 系统调用代理 446

22.8 系统调用代理的问题 448

22.9 小结 456

第23章 编写在实际环境中运行的代码 457

23.1 不可靠的因素 457

23.1.1 魔术数字 457

23.1.2 版本 458

23.1.3 shellcode问题 458

23.2 对策 459

23.2.1 准备 460

23.2.2 暴力破解 460

23.2.3 本地破解 461

23.2.4 OS/应用程序指纹 461

23.2.5 信息泄露 463

2.3.3 小结 463

第24章 攻击数据库软件 464

24.1 网络层攻击 464

24.2 应用层攻击 474

24.3 运行操作系统命令 475

24.3.1 微软SQL Server 475

24.3.2 Oracle 475

24.3.3 IBM DB2 476

24.4 SQL层的多种利用方法 478

24.5 小结 480

第25章 UNIX内核溢出 481

25.1 内核漏洞类型 481

25.2 Oday内核漏洞 489

25.2.1 OpenBSD exec_ibcs2_coff_prep_zmagic()栈溢出 489

25.2.2 漏洞 490

25.3 Solaris vfs_getvfssw()可加载内核模块遍历漏洞 494

25.3.1 sysfs()系统调用 495

25.3.2 mount()系统调用 496

25.4 小结 497

第26章 破解UNIX内核漏洞 498

26.1 exec_ibcs2_coff_prep_zmagic()漏洞 498

26.1.1 计算偏移量和断点 503

26.1.2 改写返回地址并重定向执行流程 505

26.1.3 查找进程描述符(或进程结构) 506

26.1.4 开发内核模式载荷 508

26.1.5 从内核载荷返回 509

26.1.6 得到根权限(uid=0) 514

26.2 Solaris vfs_getvfssw()可加载内核模块路径遍历破解 520

26.2.1 精心编写破解代码 521

26.2.2 加载内核模块 522

26.2.3 得到根权限(uid=0) 525

26.3 小结 526

第27章 破解Windows内核 527

27.1 Windows内核模式缺陷——逐渐增多的猎物 527

27.2 Windows内核介绍 528

27.3 常见内核模式编程缺陷 528

27.3.1 栈溢出 529

27.3.2 堆溢出 532

27.3.3 没有充分验证用户模式地址 532

27.3.4 多目的化攻击 533

27.3.5 共享的对象攻击 533

27.4 Windows系统调用 533

27.4.1 理解系统调用 534

27.4.2 攻击系统调用 535

27.5 与设备驱动程序通信 536

27.5.1 IOCTL组件 536

27.5.2 发现1OCTL处理程序中的缺陷 537

27.6 内核模式载荷 538

27.6.1 提升用户模式进程 538

27.6.2 运行任意的用户模式载荷 540

27.6.3 颠覆内核安全 543

27.6.4 安装rootkit 544

27.7 内核shellcoder的必读资料 544

27.8 小结 545

相关图书
作者其它书籍
返回顶部