登入帳戶  | 訂單查詢  | 購物車/收銀台( 0 ) | 在線留言板  | 付款方式  | 運費計算  | 聯絡我們  | 幫助中心 |  加入書簽
會員登入 新用戶登記
HOME新書上架暢銷書架好書推介特價區會員書架精選月讀2023年度TOP分類瀏覽雜誌 臺灣用戶
品種:超過100萬種各類書籍/音像和精品,正品正價,放心網購,悭钱省心 服務:香港台灣澳門海外 送貨:速遞郵局服務站

新書上架簡體書 繁體書
暢銷書架簡體書 繁體書
好書推介簡體書 繁體書

三月出版:大陸書 台灣書
二月出版:大陸書 台灣書
一月出版:大陸書 台灣書
12月出版:大陸書 台灣書
11月出版:大陸書 台灣書
十月出版:大陸書 台灣書
九月出版:大陸書 台灣書
八月出版:大陸書 台灣書
七月出版:大陸書 台灣書
六月出版:大陸書 台灣書
五月出版:大陸書 台灣書
四月出版:大陸書 台灣書
三月出版:大陸書 台灣書
二月出版:大陸書 台灣書
一月出版:大陸書 台灣書

『簡體書』Rootkit:系统灰色地带的潜伏者(原书第2版)(Amazon五星级畅销书,rootkit领域的重要著作,计算机安全领域公认经典)

書城自編碼: 2135666
分類:簡體書→大陸圖書→計算機/網絡信息安全
作者: [美]Bill
國際書號(ISBN): 9787111441786
出版社: 机械工业出版社
出版日期: 2013-10-10
版次: 1 印次: 1
頁數/字數: 600/
書度/開本: 16开 釘裝: 平装

售價:HK$ 262.4

我要買

 

** 我創建的書架 **
未登入.


新書推薦:
一间自己的房间
《 一间自己的房间 》

售價:HK$ 47.8
波段交易的高级技术:股票和期权交易者的资金管理、规则、策略和程序指南
《 波段交易的高级技术:股票和期权交易者的资金管理、规则、策略和程序指南 》

售價:HK$ 94.8
人,为什么需要存在感:罗洛·梅谈死亡焦虑
《 人,为什么需要存在感:罗洛·梅谈死亡焦虑 》

售價:HK$ 81.6
锁国:日本的悲剧
《 锁国:日本的悲剧 》

售價:HK$ 93.6
AI智能写作: 巧用AI大模型 让新媒体变现插上翅膀
《 AI智能写作: 巧用AI大模型 让新媒体变现插上翅膀 》

售價:HK$ 70.8
家庭养育七步法5:理解是青春期的通关密码
《 家庭养育七步法5:理解是青春期的通关密码 》

售價:HK$ 59.8
三体(全三册)
《 三体(全三册) 》

售價:HK$ 113.5
天象之维:汉画像中的天文与人文
《 天象之维:汉画像中的天文与人文 》

售價:HK$ 105.0

 

建議一齊購買:

+

HK$ 164.7
《 Android安全攻防权威指南 》
+

HK$ 235.9
《 Metasploit渗透测试魔鬼训练营(首本中文原创Metasploit渗透测试著作!国内信息安全领域布道者和资深Metasploit渗透测试专家领衔撰写。) 》
內容簡介:
Amazon五星级畅销书,rootkit领域的重要著作,计算机安全领域公认经典。从反取证角度,深入、系统解读rootkit的本质和核心技术,以及如何构建属于自己的rootkit武器。包含大量模块化示例,行文风趣幽默,颇具实战性和可读性。
全书共分四部分。第一部分(第1~6章),全新阐释rootkit
本质、rootkit与反取证关系、安全领域态势,以及反取证技术的策略、应对建议和攻击优势。之后,从硬件、软件(系统)、行业工具和内核空间方面介绍rootkit调查过程和利用反取证技术破坏调查过程的策略,使你对取证和反取证有全新了解。第二部分(第7~8章),主要介绍rootkit如何阻止磁盘分析和可执行文件的分析,而调查人员如何利用有效的工具和策略来分析辅助存储器(例如磁盘分析、卷分析、文件系统分析以及未知二进制分析)中可能留下的rootkit痕迹,并对内存驻留和多级释放器技术及用户态Exec(Userland
Exec)理念进行了深入剖析。第三部分(第9~15章)主要详解攻击者利用rootkit破坏数据收集过程和造成“一切安好”的假象的前沿实用策略:阻止在线取证、内核模式策略、更改调用表、更改代码、更改内核对象、创建隐秘通道和部署带外rootkit。第四部分(第16章),高屋建瓴地重新总结了rootkit的核心策略,以及如何识别隐藏的rootkit、注意事项和如何处理感染等。
關於作者:
Bill Blunden
资深计算机安全专家,从事相关研究10余年,对rootkit有非常深入的研究。目前从事网络安全设备代码和ERP中间件的相关工作。活跃于计算机安全类社区,常与计算机安全领域多名世界级安全专家交流探讨。在学术生涯中走过不少弯路,因此对计算机安全有异于常人的观察角度和体会。
目錄
译者序
献给“孙悟空”
前言
第一部分基础知识
第1章清空思想 1
1.1不速之客 1
1.2提炼一个更确切的定义 2
1.2.1攻击循环 3
1.2.2rootkit在攻击循环中的角色 4
1.2.3单级释放器与多级释放器 4
1.2.4其他部署方法 5
1.2.5确切的学术性定义 6
1.2.6不要混淆设计目标与实现 7
1.2.7rootkit技术——力量倍增器 7
1.2.8金·费尔比式比喻:破坏与毁坏 8
1.2.9为何使用隐身技术?rootkit不能被发现吗 8
1.3rootkit不等于恶意软件 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.9rootkit的道德性 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.1rootkit不是隐身的吗?为什么还要进行反取证 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.10非本地数据 29
2.3AF策略 29
2.3.1数据销毁 30
2.3.2数据隐藏 30
2.3.3数据转换 31
2.3.4数据伪造 31
2.3.5数据源消除 31
2.4AF技术的总体建议 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.2IA-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.10小结 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.1Windows系统下的物理内存 80
4.1.1失落的大陆(内存) 80
4.1.2Windows如何使用物理地址扩展 81
4.1.3页、页帧、页帧号 82
4.2Windows下的分段和分页 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.14GB调优(4GT) 90
4.3.2各得其所 91
4.3.3跨越篱笆 91
4.3.4用户空间剖析 92
4.3.5内核空间动态分配 93
4.3.6地址窗口化扩展 94
4.3.7PAE、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.3GS 编译选项 105
4.5.4SAFESEH链接器选项 107
4.6本机API 108
4.6.1中断向量表的发展 108
4.6.2进一步研究中断描述表 109
4.6.3通过中断进行系统调用 110
4.6.4SYSENTER指令 110
4.6.5系统服务调度表 111
4.6.6枚举本机API 114
4.6.7Nt* 系统调用与Zw* 系统调用 114
4.6.8系统调用的生命周期 115
4.6.9其他内核模式例程 117
4.6.10内核模式API文档 119
4.7引导过程 121
4.7.1BIOS固件启动 121
4.7.2EFI固件启动 122
4.7.3Windows启动管理器 122
4.7.4Windows启动加载器 124
4.7.5初始化执行体 125
4.7.6会话管理器 126
4.7.7wininit.exe 128
4.7.8winlogon.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.3Windows符号 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列举已加载的模块(lm和!lmi) 144
5.2.9显示类型命令(dt) 146
5.2.10反汇编命令(u) 146
5.2.11显示命令(d*) 147
5.2.12寄存器命令(r) 148
5.3KD.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:PS2键盘技巧 159
5.3.14方法2:KD.exe命令 160
5.3.15方法3:NotMyFault.exe 161
5.3.16崩溃转储分析 161
第6章内核空间中的玄机 162
6.1KMD模板 162
6.1.1内核模式驱动程序:全局概览 163
6.1.2WDK框架 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.6Windows内核模式安全 185
6.6.1内核模式代码签名 185
6.6.2KMCS的应对措施 187
6.6.3内核补丁保护 189
6.6.4KPP的应对措施 189
6.7同步 190
6.7.1中断请求级 190
6.7.2延迟过程调用 193
6.7.3实现 193
6.8总结 198
第二部分事?后?分?析
第7章阻止磁盘分析 199
7.1事后调查:概述 199
7.2取证副本 200
7.3卷分析 202
7.3.1Windows下的存储卷 203
7.3.2手工分析卷 204
7.3.3应对措施:破坏分区表 205
7.3.4Windows下的原始磁盘访问 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.10数据源清除:多级加载器 256
8.2.11深度防御 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.2API跟踪:规避迂回补丁 268
8.4.3API跟踪:多级加载器 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
第三部分在?线?取?证
第9章阻止在线取证 285
9.1在线取证:基本过程 290
9.2用户模式加载器 294
9.2.1UML破坏现有的API 294
9.2.2关于加载器API模块的争论 295
9.2.3纵览Windows PE文件格式 296
9.2.4相对虚拟地址 296
9.2.5PE文件头 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.1Visual 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.1DLL基础 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.4SSDT示例:跟踪系统调用 377
11.5.5SSDT示例:隐藏进程 380
11.5.6SSDT示例:隐藏网络连接 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 0x2E 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.2EPROCESS相关域 448
13.2.3UniqueProcessId 448
13.2.4ActiveProcessLinks 448
13.2.5Token 449
13.2.6ImageFileName 450
13.3DRIVER_SECTION对象 450
13.4令牌对象 452
13.4.1Windows授权 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.3HTTP 492
14.2最坏案例场景:截获所有数据内容 495
14.2.1协议隧道 495
14.2.2DNS 496
14.2.3ICMP 496
14.2.4外围设备问题 498
14.3Windows TCPIP栈 499
14.3.1Windows Sockets 2 499
14.3.2原始套接字 500
14.3.3Winsock内核API 501
14.3.4NDIS 502
14.3.5不同任务使用不同的工具 503
14.4DNS隧道 504
14.4.1DNS查询 504
14.4.2DNS应答 506
14.5DNS隧道:用户模式 507
14.6DNS隧道: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.7NDIS协议驱动程序 525
14.7.1创建并运行NDISProt6.0示例 526
14.7.2客户端代码概要 528
14.7.3驱动程序代码概要 531
14.7.4Protocol*例程 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.2ACPI组件 551
15.2.3扩展ROM 552
15.2.4UEFI固件 553
15.3远程管理设施 554
15.4不太明显的备用方案 554
15.4.1板载闪存 555
15.4.2电路级伎俩 555
15.5总结 556
第四部分结?束?语
第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.3Butler 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
內容試閱
第一部分
基 础 知 识
第1章?清 空 思 想
各位,抛弃你过去的思想,这是学习本书的起点。沿着本书指明的道路前进吧,很快你将见到美好而可畏的奥兹国。在本章中,我们将总体介绍rootkit相关情况,讨论“rootkit”这个词的词源,以及怎样把rootkit技术运用于攻击循环的基本框架和相应的领域。为了突出rootkit的独特特征,我们将把该技术和几种恶意软件进行对比,并纠正一些常见的错误观念。
1.1?不速之客
几年前,媒体报道了一位独居在日本福冈市中年男子的故事。该男子几个月以来发现,厨房里的一些食物不见了。这是个有启发意义的教训:如果你感觉什么东西不对,相信自己的直觉。
那么,这个日本单身汉怎么做的呢?他架起一个监控摄像头并把监控图像传到自己的手机上。某一天,摄像头捕捉到一个人在他的公寓里走动。他认为那是小偷,立即打电话报了警,于是警察就冲向他的公寓去抓那个小偷。当警察来到他家后,发现家中所有的门窗紧锁。警察在公寓内搜查后发现一个名叫Tatsuko
Horikawa的58岁妇女蜷缩在衣柜底部。根据警方调查,她无家可归并至少在衣柜里住了半年之久。
该妇女向警察解释道,某一天,当这个单身汉离家而没锁门时,她得以第一次进入这个公寓。日本当局怀疑,为了将被抓获的风险降到最低,这个妇女只是有时住在这个公寓,并往返于不同的公寓之间居住。当她隐藏在公寓时,一般会洗个澡,然后在她睡的衣柜里铺上垫子,并喝上几瓶水以渡过难关。警方发言人Horiki
Itakura称该妇女“既整洁又干净”。
从某种意义上说,这就是rootkit:一位不速之客,非常整洁、干净且难以发现。
1.2?提炼一个更确切的定义
虽然将入侵者比喻为既整洁又干净的不速之客的确有助于我们的理解,但还是让我们通过这个词的起源来追踪该词更加确切的定义。按照UNIX领域内的说法,系统管理员账户(即安全限制最少的用户账户)通常称为root账户。这个特殊账户有时在字面上称为“root”,但是这种叫法更多的是历史习惯而不是规定。
“攻陷”一台电脑并取得该电脑的管理员权限称为root一台机器。取得root账户权限的攻击者就可以称他已经root了该机器。另外一种描述你已经root一台电脑的说法是你own(拥有)了它,这种说法的本意是指你可以对这台电脑为所欲为,因为你已经完全控制了这台机器。按照因特网上的说法,在标准的计算机键盘上,由于字母p和o毗邻,致使一些人用pwn代替own。
严格地说,你并不需要通过取得管理员账户权限来root电脑。root电脑的最终目的是取得与管理员同级别的原始访问权限。例如,在安装有Windows系统的机器中,SYSTEM账户表示操作系统本身,实际上SYSTEM账户比管理员组中的账户拥有更高的权限。如果你能攻陷一个运行在SYSTEM账户下的Windows程序,这和拥有管理员权限具有同样的效果(有过之而无不及)。事实上,有些人认为在SYSTEM账户下运行是非常高级的,因为追踪一个使用SYSTEM账户的入侵者极度困难,系统产生的日志条目如此之多,很难区分哪些是由攻击者产生的。
然而,root一台机器与保持访问权限有所区别(如同挣到一百万美元和保管一百万美元的区别)。有一些工具可以由有经验的系统管理员来用于发现入侵者,并将他们踢出被攻陷的机器。一些新取得权限而大肆声张的入侵者将会引起管理员的注意,失去他们的权限。对入侵者来说,关键是进入机器、取得权限、监控机器的状态,然后隐藏起来享受他们的劳动成果。
《计算机行话辞典》 把rootkit定义为“能保持root权限的一套工具”。换句话说,
rootkit是由二进制代码、脚本和配置文件组成的集合体(例如,一套工具),人们能够使用它隐秘地保持对计算机的访问权限,以便在不引起系统管理员注意的情况下发布命令、搜索数据。
设计良好的rootkit可以让一台被攻陷的机器看起来没有任何异常,并使攻击者在系统管理员的眼皮底下保持一个据点,而且他想待多久就待多久。
1.2.1?攻击循环
现在你可能会想:“好吧,root机器第一步该干什么呢?”要回答这个问题所涉及的话题可能几本书都写不完。出于简洁的目的,我将提供一个简要概述(可能有些不全面)。
假定一个精准攻击的场景,大多数入侵者都会从搜集目标组织的概要情报开始。在这个攻击阶段中,将涉及信息筛选,例如筛选该组织的域名注册信息、分配的公共IP地址范围信息,也有可能要查阅证券交易委员会(Securities
and Exchange Commission,SEC)的文件、年报和媒体信息以确定该组织办公地点的位置。
如果攻击者决定使用基于漏洞的方法进行攻击,他们将通过情报搜集初期发现的目标组织的因特网踪迹来枚举主机,主要的枚举方法有ping扫描或目标IP扫描,然后检查发现的每台存活主机运行的标准网络服务。因此,像nmap这样的工具就显得必不可少。
当攻击者识别到一台特定的计算机并搜集一系列监听服务后,将试图寻找获取shell访问的方法,使他能够执行任意的命令并可能进一步提升权限,甚至是取得root账户访问权限(虽然有时在运行Windows的机器上取得超级用户权限就足够了)。例如,受攻击的机器是网站服务器,攻击者可能对开发拙劣的网站应用程序发起结构化查询语言(Structured
Query
Language,SQL)注入攻击,以突破与其相关联的数据库服务器的安全防护。然后,他能够访问数据库服务器以获取管理员权限,或许root账户密码和数据库管理员密码是一样的呢?
基于漏洞的方法并不是唯一的攻击方式,有无数的方式可以进行访问并获取权限。最后,一切都在于取得一些通往目标的接口(参见图1.1),然后提升你的权限。
这个接口不一定是传统的命令行shell,它也有可能是攻击者设计的专用API。你可以通过装扮成修电脑的技术人员或通过肩窥(shoulder
surfing)来建立接口。因此,用于root机器的工具范围很广:从社会工程学(例如鱼叉式网络钓鱼、恐吓性软件、假托电话等),到密码蛮力破解、偷窃备份,再到像Joanna
Rutkowska的“Evil
Maid”之类的离线攻击。基于我个人的经验和同行们提供的信息,在大规模攻击中,软件漏洞和社会工程学是经常采用的两类入侵方法。
1.2.2?rootkit在攻击循环中的角色
rootkit通常在攻击循环的最后阶段发挥作用,这就是为什么称它们为post-exploit工具的原因。你一旦获得接口并(用某种方式)提升为root权限,接下来自然就是要保持已攻陷机器的访问权限(也称为驻扎场地或据点),rootkit有助于实现持续性访问。至此,攻击者就可以从目标主机上挖掘有价值的信息了,如社会保险号、相关账户细节信息或者CVV2码(即完整信用卡号码、相应到期日期、账单地址以及3位数的保险码)。
或者,攻击者可以简单地运用当前据点来攻击目标网络内不能直接路由的其他机器,以扩大影响范围,这种行为叫做支点攻击(pivoting),这种攻击有助于混淆入侵源(参见图1.2)。
注意,图1.2中的最后一步为何不属于支点攻击。我在本书的前言就解释过了,本书的侧重点是台式计算机,因为在很多情况下,攻击者通过攻击能够访问目标数据的客户机以取得所需信息。当你能够通过攻陷一些主管的台式计算机系统以取得同样的基本结果时,为什么还要花数天时间突破加固的企业级大型机的安全防护层呢?这是Pete的最爱,去摘树上低悬的水果!正如Richard
Bejtlich所说:“一旦没有了其他选择,攻击数据的最终点将落在对授权用户有用的地方”。
1.2.3?单级释放器与多级释放器
在目标机器上安装rootkit的方式各种各样,有时它被安装成一个由漏洞利用程序释放的载荷。在此载荷中有个特殊程序叫做释放器(dropper),由它完成实际的安装任务(参见图1.3)。
释放器的作用很多,例如帮助rootkit通过网关安全扫描,释放器能够变换rootkit(例如对rootkit进行压缩、编码或者加密),然后把rootkit封装成内部数据结构。当释放器最终执行时,它将释放(例如解压缩、解码、解密和安装)rootkit。表现良好的释放器事后会删除自身,只留下rootkit所需的内容。
多级释放器并不会将rootkit列为字节流的一部分,相反,它们将搭载在一些小程序上,例如定制的FTP客户端、浏览器插件或存根程序,这些程序存在的唯一目的就是从远程网络上下载rootkit(参见图1.4)。在更极端的情况下,最初的存根程序可能会下载第二个更大的存根程序,然后第二个存根程序下载rootkit,通过两个独立的阶段完成rootkit的安装。
多级释放器的思想在于最小化释放器留下的取证证据数量。按这种方式,如果调查人员一旦发现一个未能恰当地触发并执行自毁的释放器,也无法分析你的rootkit代码。例如,他试图在一个独立的沙盒环境中运行释放器,但存根程序甚至无法下载rootkit。在最坏的案例场景中,存根程序将认识到那是个虚拟的环境而什么都不做。这个思路完全符合The
Grugq的数据节育(data contraception)策略,我们将在本书的后面讲述这一点。

 

 

書城介紹  | 合作申請 | 索要書目  | 新手入門 | 聯絡方式  | 幫助中心 | 找書說明  | 送貨方式 | 付款方式 香港用户  | 台灣用户 | 大陸用户 | 海外用户
megBook.com.hk
Copyright © 2013 - 2024 (香港)大書城有限公司  All Rights Reserved.