图书介绍
Rootkit 系统灰色地带的潜伏者 原书第2版PDF|Epub|txt|kindle电子书版本网盘下载
![Rootkit 系统灰色地带的潜伏者 原书第2版](https://www.shukui.net/cover/72/35005950.jpg)
- (美)布伦登著;姚领田,刘安,李潇等译 著
- 出版社: 北京:机械工业出版社
- ISBN:9787111441786
- 出版时间:2013
- 标注页数:570页
- 文件大小:763MB
- 文件页数:597页
- 主题词:计算机病毒-防治
PDF下载
下载说明
Rootkit 系统灰色地带的潜伏者 原书第2版PDF格式电子书版下载
下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!
(文件页数 要大于 标注页数,上中下等多册电子书除外)
注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具
图书目录
第一部分 基础知识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 恶意软件与rootkit11
1.4 谁在开发和使用rootkit12
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 谁开发了颇具艺术感的rootkit16
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-DOS40
3.3.2 这不是浪费时间吗?为什么学习实模式42
3.3.3 实模式执行环境42
3.3.4 实模式中断44
3.3.5 分段和程序控制46
3.3.6 案例研究:转储IVT47
3.3.7 案例研究:用TSR记录击键48
3.3.8 案例研究:隐藏TSR52
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 本机API108
4.6.1 中断向量表的发展108
4.6.2 进一步研究中断描述表109
4.6.3 通过中断进行系统调用110
4.6.4 SYSENTER指令110
4.6.5 系统服务调度表111
4.6.6 枚举本机API114
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.exe128
4.7.8 winlogon.exe128
4.7.9 启动过程概括129
4.8 设计决策130
4.8.1 藏在人群中:类型0131
4.8.2 主动隐藏:类型1和类型2131
4.8.3 跳出边界:类型3132
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.exe139
5.2.2 符号文件140
5.2.3 Windows符号140
5.2.4 激活CDB.exe141
5.2.5 控制 CDB.exe142
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.exe161
5.3.16 崩溃转储分析161
第6章 内核空间中的玄机162
6.1 KMD模板162
6.1.1 内核模式驱动程序:全局概览163
6.1.2 WDK框架164
6.1.3 真正最小的KMD164
6.1.4 处理IRP167
6.1.5 与用户模式代码通信171
6.1.6 从用户模式发送命令174
6.2 加载内核模式驱动程序177
6.3 服务控制管理器177
6.3.1 在命令行使用sc.exe177
6.3.2 编程使用SCM179
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 引入:FragFS225
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破坏现有的API294
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 实现独立的UML303
9.3 最小化加载器踪迹307
9.3.1 数据节育:献给The Grugq的颂歌307
9.3.2 下一步:通过漏洞利用程序加载308
9.4 关于独立PE加载器的争论308
第10章 用C语言创建shellcode309
10.1 用户模式shellcode311
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 提取shellcode325
10.1.7 危险空间327
10.1.8 构建自动化329
10.2 内核模式shellcode329
10.2.1 工程设置:$(NTMAKEENV)makefile.new330
10.2.2 工程设置:SOURCES331
10.2.3 地址解析332
10.2.4 加载内核模式shellcode334
10.3 特殊武器和策略337
10.4 展望338
第11章 更改调用表340
11.1 在用户空间挂钩:IAT342
11.1.1 DLL基础342
11.1.2 访问导出例程344
11.1.3 注入DLL345
11.1.4 走查磁盘上PE文件的IAT349
11.1.5 挂钩IAT354
11.2 内核空间的调用表357
11.3 挂钩IDT358
11.3.1 处理多处理器:方案#1359
11.3.2 裸例程363
11.3.3 关于挂钩IDT的问题365
11.4 挂钩处理器MSR366
11.5 挂钩SSDT372
11.5.1 禁用WP位:技巧#1373
11.5.2 禁用WP位:技巧#2374
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 EIP398
11.8.3 检查INT 0×2E399
11.8.4 检查SSDT401
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 最坏案例应对措施#1409
11.9.3 最坏案例应对措施#2409
第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 特有技术:DKOM445
13.1.5 对象445
13.2 再访EPROCESS对象446
13.2.1 获取EPROCESS指针446
13.2.2 EPROCESS相关域448
13.2.3 UniqueProcessId448
13.2.4 ActiveProcessLinks448
13.2.5 Token449
13.2.6 ImageFileName450
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-FU470
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 HTTP492
14.2 最坏案例场景:截获所有数据内容495
14.2.1 协议隧道495
14.2.2 DNS496
14.2.3 ICMP496
14.2.4 外围设备问题498
14.3 Windows TCP/IP栈499
14.3.1 Windows Sockets 2499
14.3.2 原始套接字500
14.3.3 Winsock内核API501
14.3.4 NDIS502
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 rootkit549
15.2 固件550
15.2.1 主板BIOS550
15.2.2 ACPI组件551
15.2.3 扩展ROM552
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 设计rootkit567
16.4.1 隐身与开发努力568
16.4.2 使用定制工具568
16.4.3 稳定性很重要:致力于最佳实践568
16.4.4 逐步提高569
16.4.5 容错移转:自我修复的rootkit570
16.5 处理感染570