当前位置:首页 > 工业技术
Rootkit  系统灰色地带的潜伏者  原书第2版
Rootkit  系统灰色地带的潜伏者  原书第2版

Rootkit 系统灰色地带的潜伏者 原书第2版PDF电子书下载

工业技术

  • 电子书积分:17 积分如何计算积分?
  • 作 者:(美)布伦登著;姚领田,刘安,李潇等译
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2013
  • ISBN:9787111441786
  • 页数:570 页
图书介绍:随着互联网的普及与流行,rootkit技术已经成为白帽黑客与黑帽黑客之间战争的必争之地,高技术领域的事物日新月异,在计算机安全领域更是如此。严峻的安全形势需要主动地了解你的安全工具存在的固有缺陷,避免有可能遭受到的入侵者的攻击。本书为你提供了快速上手rootkit技术并轻易获取信息的机会,目的是鼓励新进入安全领域的专业人员认识到工具的局限性,不仅能够意识到潜在的盲点,而且能够促使软件开发商进步以应对正在兴起的大规模网络安全威胁。本书行文流畅、文笔优雅、引经据典、比喻形象生动,能够把复杂的技术性问题化解为简单的思想,让人很容易领会。第一部分从rootkit技术所需要的系统知识、软/硬件知识等多个方面详细描述了掌握rootkit技术所需的基本内容,同时在后续部分具体阐述了应对调查人员检查的多种方式、技巧。
《Rootkit 系统灰色地带的潜伏者 原书第2版》目录

第一部分 基础知识 1

第1章 清空思想 1

1.1 不速之客 1

1.2 提炼一个更确切的定义 2

1.2.1 攻击循环 3

1.2.2 rootkit在攻击循环中的角色 4

1.2.3 单级释放器与多级释放器 4

1.2.4 其他部署方法 5

1.2.5 确切的学术性定义 6

1.2.6 不要混淆设计目标与实现 7

1.2.7 rootkit技术——力量倍增器 7

1.2.8 金·费尔比式比喻:破坏与毁坏 8

1.2.9 为何使用隐身技术?rootkit不能被发现吗 8

1.3 rootkit不等于恶意软件 9

1.3.1 感染源 9

1.3.2 广告软件和间谍软件 10

1.3.3 僵尸网络的兴起 10

1.3.4 引入:愚人飞客病毒 11

1.3.5 恶意软件与rootkit 11

1.4 谁在开发和使用rootkit 12

1.4.1 市场营销 12

1.4.2 数字版权管理 12

1.4.3 不是rootkit,而是种功能 13

1.4.4 法律实施 13

1.4.5 商业间谍 14

1.4.6 政治间谍 14

1.4.7 网络犯罪 15

1.4.8 谁开发了颇具艺术感的rootkit 16

1.4.9 rootkit的道德性 17

1.5 慑魄惊魂:战场伤员分类 17

1.6 总结 21

第2章 反取证综述 22

2.1 事件响应 23

2.1.1 入侵检测系统(和入侵防御系统) 23

2.1.2 异常行为 23

2.1.3 发生故障 24

2.2 计算机取证 24

2.2.1 rootkit不是隐身的吗?为什么还要进行反取证 24

2.2.2 假定最糟糕案例的场景 25

2.2.3 取证技术分类:第一种方法 26

2.2.4 取证技术分类:第二种方法 26

2.2.5 在线取证 27

2.2.6 当关机不再是种选择 28

2.2.7 关于拔掉电源插头的争论 28

2.2.8 崩溃转储或者不进行崩溃转储 28

2.2.9 事后检查分析 28

2.2.1 0非本地数据 29

2.3 AF策略 29

2.3.1 数据销毁 30

2.3.2 数据隐藏 30

2.3.3 数据转换 31

2.3.4 数据伪造 31

2.3.5 数据源消除 31

2.4 AF技术的总体建议 31

2.4.1 使用定制工具 31

2.4.2 低且慢与焦土策略 32

2.4.3 避免特定实例攻击 32

2.4.4 使用分层防御 33

2.5 不明身份者具有优势 33

2.5.1 攻击者能够专注于攻击 33

2.5.2 防御者面临制度性挑战 33

2.5.3 安全是一种过程(而且还是一种令人讨厌的过程) 34

2.5.4 持续增加的复杂度 34

2.6 总结 35

第3章 硬件概述 36

3.1 物理内存 36

3.2 IA-32内存模型 38

3.2.1 平面内存模型 38

3.2.2 分段内存模型 38

3.2.3 操作模式 39

3.3 实模式 39

3.3.1 案例研究:MS-DOS 40

3.3.2 这不是浪费时间吗?为什么学习实模式 42

3.3.3 实模式执行环境 42

3.3.4 实模式中断 44

3.3.5 分段和程序控制 46

3.3.6 案例研究:转储IVT 47

3.3.7 案例研究:用TSR记录击键 48

3.3.8 案例研究:隐藏TSR 52

3.3.9 案例研究:为TREE.COM命令打补丁 56

3.3.1 0小结 58

3.4 保护模式 59

3.4.1 保护模式执行环境 59

3.4.2 保护模式分段 61

3.4.3 保护模式分页 64

3.4.4 地址扩展分页 66

3.4.5 进一步研究页表 67

3.4.6 进一步研究控制寄存器 68

3.5 实现内存保护 70

3.5.1 通过分段实现保护 70

3.5.2 界限检查 70

3.5.3 类型检查 70

3.5.4 特权检查 71

3.5.5 受限指令检查 72

3.5.6 门描述符 72

3.5.7 保护模式中断表 75

3.5.8 分页保护 76

3.5.9 总结 77

第4章 系统概述 79

4.1 Windows系统下的物理内存 80

4.1.1 失落的大陆(内存) 80

4.1.2 Windows如何使用物理地址扩展 81

4.1.3 页、页帧、页帧号 82

4.2 Windows下的分段和分页 82

4.2.1 分段 83

4.2.2 分页 84

4.2.3 线性地址到物理地址的转换 87

4.2.4 一个更快的方法 88

4.2.5 关于EPROCESS和KPROCESS的讨论 88

4.3 用户空间和内核空间 89

4.3.1 4GB调优(4GT) 90

4.3.2 各得其所 91

4.3.3 跨越篱笆 91

4.3.4 用户空间剖析 92

4.3.5 内核空间动态分配 93

4.3.6 地址窗口化扩展 94

4.3.7 PAE、4GT和AWE的对比 94

4.4 用户模式和内核模式 94

4.4.1 执行方式与执行位置 95

4.4.2 内核模式组件 95

4.4.3 用户模式组件 98

4.5 其他内存保护特征 99

4.5.1 数据执行保护 100

4.5.2 地址空间布局随机化 103

4.5.3 /GS编译选项 105

4.5.4 /SAFESEH链接器选项 107

4.6 本机API 108

4.6.1 中断向量表的发展 108

4.6.2 进一步研究中断描述表 109

4.6.3 通过中断进行系统调用 110

4.6.4 SYSENTER指令 110

4.6.5 系统服务调度表 111

4.6.6 枚举本机API 114

4.6.7 Nt*()系统调用与Zw*()系统调用 114

4.6.8 系统调用的生命周期 115

4.6.9 其他内核模式例程 117

4.6.1 0内核模式API文档 119

4.7 引导过程 121

4.7.1 BIOS固件启动 121

4.7.2 EFI固件启动 122

4.7.3 Windows启动管理器 122

4.7.4 Windows启动加载器 124

4.7.5 初始化执行体 125

4.7.6 会话管理器 126

4.7.7 wininit.exe 128

4.7.8 winlogon.exe 128

4.7.9 启动过程概括 129

4.8 设计决策 130

4.8.1 藏在人群中:类型0 131

4.8.2 主动隐藏:类型1和类型2 131

4.8.3 跳出边界:类型3 132

4.8.4 前景展望 133

第5章 行业工具 134

5.1 开发工具 134

5.1.1 诊断工具 135

5.1.2 磁盘映像工具 135

5.1.3 更快速救灾:虚拟机 136

5.1.4 工具综述 137

5.2 调试器 138

5.2.1 配置CDB.exe 139

5.2.2 符号文件 140

5.2.3 Windows符号 140

5.2.4 激活CDB.exe 141

5.2.5 控制 CDB.exe 142

5.2.6 有用的调试器命令 143

5.2.7 检查符号命令(x) 143

5.2.8 列举已加载的模块(1m和!lmi) 144

5.2.9 显示类型命令(dt) 146

5.2.10 反汇编命令(u) 146

5.2.11 显示命令(d*) 147

5.2.12 寄存器命令(r) 148

5.3 KD.exe内核调试器 148

5.3.1 使用内核调试器的不同方法 148

5.3.2 物理宿主机-目标机配置 150

5.3.3 准备硬件 150

5.3.4 准备软件 152

5.3.5 启动内核调试会话 153

5.3.6 控制目标机 154

5.3.7 虚拟宿主机—目标机配置 155

5.3.8 有用的内核模式调试器命令 156

5.3.9 列举已加载模块命令 156

5.3.10 !process扩展命令 156

5.3.11 寄存器命令(r) 158

5.3.12 使用崩溃转储 159

5.3.13 方法1:PS/2键盘技巧 159

5.3.14 方法2:KD.exe命令 160

5.3.15 方法3:NotMyFault.exe 161

5.3.16 崩溃转储分析 161

第6章 内核空间中的玄机 162

6.1 KMD模板 162

6.1.1 内核模式驱动程序:全局概览 163

6.1.2 WDK框架 164

6.1.3 真正最小的KMD 164

6.1.4 处理IRP 167

6.1.5 与用户模式代码通信 171

6.1.6 从用户模式发送命令 174

6.2 加载内核模式驱动程序 177

6.3 服务控制管理器 177

6.3.1 在命令行使用sc.exe 177

6.3.2 编程使用SCM 179

6.3.3 注册表踪迹 181

6.4 使用导出驱动程序 181

6.5 综合利用内核中的漏洞 184

6.6 Windows内核模式安全 185

6.6.1 内核模式代码签名 185

6.6.2 KMCS的应对措施 187

6.6.3 内核补丁保护 189

6.6.4 KPP的应对措施 189

6.7 同步 190

6.7.1 中断请求级 190

6.7.2 延迟过程调用 193

6.7.3 实现 193

6.8 总结 198

第二部分 事后分析 199

第7章 阻止磁盘分析 199

7.1 事后调查:概述 199

7.2 取证副本 200

7.3 卷分析 202

7.3.1 Windows下的存储卷 203

7.3.2 手工分析卷 204

7.3.3 应对措施:破坏分区表 205

7.3.4 Windows下的原始磁盘访问 205

7.3.5 原始磁盘访问:突破常规 206

7.4 文件系统分析 208

7.4.1 恢复删除的文件 209

7.4.2 恢复删除的文件:应对措施 209

7.4.3 枚举可选数据流 210

7.4.4 枚举可选数据流:应对措施 212

7.4.5 恢复文件系统对象 212

7.4.6 恢复文件系统对象:应对措施 212

7.4.7 带外隐藏 213

7.4.8 带内隐藏 217

7.4.9 引入:FragFS 225

7.4.10 应用层隐藏 226

7.4.11 获取元数据 226

7.4.12 获取元数据:应对措施 229

7.4.13 改变时间戳 230

7.4.14 改变校验和 232

7.4.15 识别已知文件 232

7.4.16 交叉时间差异与交叉视图差异 233

7.4.17 识别已知文件:应对措施 234

7.5 文件签名分析 235

7.6 总结 236

第8章 阻止可执行文件分析 237

8.1 静态分析 237

8.1.1 扫描相关人工痕迹 237

8.1.2 验证数字签名 238

8.1.3 转储字符串数据 239

8.1.4 检查文件头 239

8.1.5 反汇编和反编译 240

8.2 破坏静态分析 242

8.2.1 数据转换:加壳 242

8.2.2 加壳:加密程序 243

8.2.3 密钥管理 249

8.2.4 加壳:压缩程序 249

8.2.5 加壳:变形代码 251

8.2.6 定制工具的需求 253

8.2.7 关于加壳的争论 254

8.2.8 数据伪造 254

8.2.9 虚旗攻击 256

8.2.1 0数据源清除:多级加载器 256

8.2.1 1深度防御 257

8.3 运行时分析 258

8.3.1 运行环境 258

8.3.2 手工与自动运行时分析 260

8.3.3 手工分析:基本概要 260

8.3.4 手工分析:跟踪 261

8.3.5 手工分析:内存转储 263

8.3.6 手工分析:捕捉网络活动 264

8.3.7 自动化分析 265

8.3.8 运行时复合分析 266

8.4 破坏运行时分析 267

8.4.1 跟踪的应对措施 267

8.4.2 API跟踪:规避迂回补丁 268

8.4.3 API跟踪:多级加载器 272

8.4.4 指令级跟踪:攻击调试器 273

8.4.5 断点 273

8.4.6 检测用户模式调试器 273

8.4.7 检测内核模式调试器 276

8.4.8 检测用户模式调试器或者内核模式调试器 276

8.4.9 通过代码校验和检测调试器 277

8.4.10 关于反调试器技术的争论 278

8.4.11 指令级跟踪:混淆 278

8.4.12 混淆应用数据 278

8.4.13 混淆应用代码 279

8.4.14 阻止自动化 282

8.4.15 应对运行时复合分析 282

8.5 总结 283

第三部分 在线取证 285

第9章 阻止在线取证 285

9.1 在线取证:基本过程 290

9.2 用户模式加载器 294

9.2.1 UML破坏现有的API 294

9.2.2 关于加载器API模块的争论 295

9.2.3 纵览Windows PE文件格式 296

9.2.4 相对虚拟地址 296

9.2.5 PE文件头 297

9.2.6 导入数据节(.idata) 300

9.2.7 基址重定位节(.reloc) 302

9.2.8 实现独立的UML 303

9.3 最小化加载器踪迹 307

9.3.1 数据节育:献给The Grugq的颂歌 307

9.3.2 下一步:通过漏洞利用程序加载 308

9.4 关于独立PE加载器的争论 308

第10章 用C语言创建shellcode 309

10.1 用户模式shellcode 311

10.1.1 Visual Studio工程设置 312

10.1.2 使用相对地址 313

10.1.3 寻找kernel32.dll:通往TEB和PEB的旅程 316

10.1.4 扩展地址表 321

10.1.5 解析kernel32.dll导出表 322

10.1.6 提取shellcode 325

10.1.7 危险空间 327

10.1.8 构建自动化 329

10.2 内核模式shellcode 329

10.2.1 工程设置:$(NTMAKEENV)makefile.new 330

10.2.2 工程设置:SOURCES 331

10.2.3 地址解析 332

10.2.4 加载内核模式shellcode 334

10.3 特殊武器和策略 337

10.4 展望 338

第11章 更改调用表 340

11.1 在用户空间挂钩:IAT 342

11.1.1 DLL基础 342

11.1.2 访问导出例程 344

11.1.3 注入DLL 345

11.1.4 走查磁盘上PE文件的IAT 349

11.1.5 挂钩IAT 354

11.2 内核空间的调用表 357

11.3 挂钩IDT 358

11.3.1 处理多处理器:方案#1 359

11.3.2 裸例程 363

11.3.3 关于挂钩IDT的问题 365

11.4 挂钩处理器MSR 366

11.5 挂钩SSDT 372

11.5.1 禁用WP位:技巧#1 373

11.5.2 禁用WP位:技巧#2 374

11.5.3 挂钩SSDT项 376

11.5.4 SSDT示例:跟踪系统调用 377

11.5.5 SSDT示例:隐藏进程 380

11.5.6 SSDT示例:隐藏网络连接 385

11.6 挂钩IRP处理程序 385

11.7 挂钩GDT:安装调用门 387

11.8 挂钩的应对措施 395

11.8.1 检查内核模式挂钩 396

11.8 .2检查IA32 SYSENTER EIP 398

11.8.3 检查INT 0×2E 399

11.8.4 检查SSDT 401

11.8.5 检查IRP处理程序 402

11.8.6 检查用户模式钩子 404

11.8.7 解析PEB:第1部分 406

11.8.8 解析PEB:第2部分 408

11.9 反应对措施 408

11.9.1 假设最坏的案例 409

11.9.2 最坏案例应对措施#1 409

11.9.3 最坏案例应对措施#2 409

第12章 更改代码 410

12.1 跟踪调用 415

12.1.1 迂回实现 418

12.1.2 获取NtSetValueKey()的地址 421

12.1.3 初始化补丁元数据结构 421

12.1.4 对照已知签名核实原始机器码 423

12.1.5 保存原始序言和尾声代码 423

12.1.6 更新补丁元数据结构 423

12.1.7 锁定访问并禁用写保护 424

12.1.8 注入迂回 424

12.1.9 序言迂回 425

12.1.10 尾声迂回 426

12.1.11 事后总结 430

12.2 破坏组策略 430

12.2.1 迂回实现 432

12.2.2 初始化补丁元数据结构 432

12.2.3 尾声迂回 433

12.2.4 将注册表值映射到组策略 436

12.3 绕过内核模式API记录器 437

12.3.1 故障安全规避 438

12.3.2 更上一层楼 441

12.4 指令补丁应对措施 441

第13章 更改内核对象 442

13.1 隐形的代价 442

13.1.1 问题#1:陡峭的学习曲线 442

13.1.2 问题#2:并发性 443

13.1.3 问题#3:可移植性和指针运算 443

13.1.4 特有技术:DKOM 445

13.1.5 对象 445

13.2 再访EPROCESS对象 446

13.2.1 获取EPROCESS指针 446

13.2.2 EPROCESS相关域 448

13.2.3 UniqueProcessId 448

13.2.4 ActiveProcessLinks 448

13.2.5 Token 449

13.2.6 ImageFileName 450

13.3 DRIVER SECTION对象 450

13.4 令牌对象 452

13.4.1 Windows授权 452

13.4.2 定位令牌对象 455

13.4.3 令牌对象中的相关域 457

13.5 隐藏进程 460

13.6 隐藏驱动程序 464

13.7 操纵访问令牌 467

13.8 使用No-FU 470

13.9 内核模式回调 472

13.10 应对措施 475

13.10.1 交叉视图检测 475

13.10.2 高级枚举:CreateToolhelp32Snapshot() 475

13.10.3 高级枚举:PID暴力 477

13.10.4 低级枚举:进程 480

13.10.5 低级枚举:线程 481

13.10.6 相关软件 487

13.10.7 域校验和 488

13.11 反应对措施 488

13.11.1 最好的防护:饿死对手 489

13.11.2 评论:超越双环模型 489

13.11.3 最后一道防线 490

第14章 隐秘通道 491

14.1 普通恶意软件通道 491

14.1.1 互联网中继聊天 491

14.1.2 对等通信 492

14.1.3 HTTP 492

14.2 最坏案例场景:截获所有数据内容 495

14.2.1 协议隧道 495

14.2.2 DNS 496

14.2.3 ICMP 496

14.2.4 外围设备问题 498

14.3 Windows TCP/IP栈 499

14.3.1 Windows Sockets 2 499

14.3.2 原始套接字 500

14.3.3 Winsock内核API 501

14.3.4 NDIS 502

14.3.5 不同任务使用不同的工具 503

14.4 DNS隧道 504

14.4.1 DNS查询 504

14.4.2 DNS应答 506

14.5 DNS隧道:用户模式 507

14.6 DNS隧道:WSK实现 511

14.6.1 初始化应用程序的上下文 517

14.6.2 创建内核模式套接字 517

14.6.3 确定本地传输地址 519

14.6.4 绑定套接字与传输地址 520

14.6.5 设置远程地址(C2客户端) 521

14.6.6 发送DNS查询 522

14.6.7 接收DNS应答 523

14.7 NDIS协议驱动程序 525

14.7.1 创建并运行NDISProt6.0示例 526

14.7.2 客户端代码概要 528

14.7.3 驱动程序代码概要 531

14.7.4 Protocol*()例程 533

14.7.5 缺失的特征 537

14.8 被动的隐秘通道 538

第15章 转到带外 540

15.1 附加处理器模式 541

15.1.1 系统管理模式 542

15.1.2 流氓管理程序 546

15.1.3 白帽成员对策 548

15.1.4 流氓管理程序与SMM rootkit 549

15.2 固件 550

15.2.1 主板BIOS 550

15.2.2 ACPI组件 551

15.2.3 扩展ROM 552

15.2.4 UEFI固件 553

15.3 远程管理设施 554

15.4 不太明显的备用方案 554

15.4.1 板载闪存 555

15.4.2 电路级伎俩 555

15.5 总结 556

第四部分 结束语 559

第16章 rootkit之道 559

16.1 核心策略 563

16.1.1 尊重你的对手 563

16.1.2 五指穿心掌 563

16.1.3 忍耐强行夺取的欲望 564

16.1.4 研究你的目标 564

16.2 识别隐藏之门 564

16.2.1 对付专有系统 565

16.2.2 监视内核 565

16.2.3 重要特点:硬件是新软件 566

16.2.4 充分利用现有研究 566

16.3 建筑领域的训诫 566

16.3.1 首先加载,深度加载 566

16.3.2 为自主性而奋斗 567

16.3.3 Butler Lampson:策略与机制分离 567

16.4 设计rootkit 567

16.4.1 隐身与开发努力 568

16.4.2 使用定制工具 568

16.4.3 稳定性很重要:致力于最佳实践 568

16.4.4 逐步提高 569

16.4.5 容错移转:自我修复的rootkit 570

16.5 处理感染 570

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