出版社:机械工业出版社
年代:2013
定价:89.0
随着互联网的普及与流行,rootkit技术已经成为白帽黑客与黑帽黑客之间战争的必争之地,高技术领域的事物日新月异,在计算机安全领域更是如此。严峻的安全形势需要主动地了解你的安全工具存在的固有缺陷,避免有可能遭受到的入侵者的攻击。本书为你提供了快速上手rootkit技术并轻易获取信息的机会,目的是鼓励新进入安全领域的专业人员认识到工具的局限性,不仅能够意识到潜在的盲点,而且能够促使软件开发商进步以应对正在兴起的大规模网络安全威胁。本书行文流畅、文笔优雅、引经据典、比喻形象生动,能够把复杂的技术性问题化解为简单的思想,让人很容易领会。第一部分从rootkit技术所需要的系统知识、软/硬件知识等多个方面详细描述了掌握rootkit技术所需的基本内容,同时在后续部分具体阐述了应对调查人员检查的多种方式、技巧。
译者序献给“孙悟空”前言第一部分基础知识第1章 清空思想1.1不速之客1.2提炼一个更确切的定义1.2.1攻击循环1.2.2rootkit在攻击循环中的角色1.2.3单级释放器与多级释放器1.2.4其他部署方法1.2.5确切的学术性定义1.2.6不要混淆设计目标与实现1.2.7rootkit技术--力量倍增器1.2.8金·费尔比式比喻:破坏与毁坏1.2.9为何使用隐身技术?rootkit不能被发现吗1.3rootkit不等于恶意软件1.3.1感染源1.3.2广告软件和间谍软件1.3.3僵尸网络的兴起1.3.4引入:愚人飞客病毒1.3.5恶意软件与rootkit1.4谁在开发和使用rootkit1.4.1市场营销1.4.2数字版权管理1.4.3不是rootkit,而是种功能1.4.4法律实施1.4.5商业间谍1.4.6政治间谍1.4.7网络犯罪1.4.8谁开发了颇具艺术感的rootkit1.4.9rootkit的道德性1.5慑魄惊魂:战场伤员分类1.6总结第2章 反取证综述2.1事件响应2.1.1入侵检测系统(和入侵防御系统)2.1.2异常行为2.1.3发生故障2.2计算机取证2.2.1rootkit不是隐身的吗?为什么还要进行反取证2.2.2假定最糟糕案例的场景2.2.3取证技术分类:第一种方法2.2.4取证技术分类:第二种方法2.2.5在线取证2.2.6当关机不再是种选择2.2.7关于拔掉电源插头的争论2.2.8崩溃转储或者不进行崩溃转储2.2.9事后检查分析2.2.10非本地数据2.3AF策略2.3.1数据销毁2.3.2数据隐藏2.3.3数据转换2.3.4数据伪造2.3.5数据源消除2.4AF技术的总体建议2.4.1使用定制工具2.4.2低且慢与焦土策略2.4.3避免特定实例攻击2.4.4使用分层防御2.5不明身份者具有优势2.5.1攻击者能够专注于攻击2.5.2防御者面临制度性挑战2.5.3安全是一种过程(而且还是一种令人讨厌的过程)2.5.4持续增加的复杂度2.6总结第3章 硬件概述3.1物理内存3.2IA-32内存模型3.2.1平面内存模型3.2.2分段内存模型3.2.3操作模式3.3实模式3.3.1案例研究:MS-DOS3.3.2这不是浪费时间吗?为什么学习实模式3.3.3实模式执行环境3.3.4实模式中断3.3.5分段和程序控制3.3.6案例研究:转储IVT3.3.7案例研究:用TSR记录击键3.3.8案例研究:隐藏TSR3.3.9案例研究:为TREE.COM命令打补丁3.3.10小结3.4保护模式3.4.1保护模式执行环境3.4.2保护模式分段3.4.3保护模式分页3.4.4地址扩展分页3.4.5进一步研究页表3.4.6进一步研究控制寄存器3.5实现内存保护3.5.1通过分段实现保护3.5.2界限检查3.5.3类型检查3.5.4特权检查3.5.5受限指令检查3.5.6门描述符3.5.7保护模式中断表3.5.8分页保护3.5.9总结第4章 系统概述4.1Windows系统下的物理内存4.1.1失落的大陆(内存)4.1.2Windows如何使用物理地址扩展4.1.3页、页帧、页帧号4.2Windows下的分段和分页4.2.1分段4.2.2分页4.2.3线性地址到物理地址的转换4.2.4一个更快的方法4.2.5关于EPROCESS和KPROCESS的讨论4.3用户空间和内核空间4.3.14GB调优(4GT)4.3.2各得其所4.3.3跨越篱笆4.3.4用户空间剖析4.3.5内核空间动态分配4.3.6地址窗口化扩展4.3.7PAE、4GT和AWE的对比4.4用户模式和内核模式4.4.1执行方式与执行位置4.4.2内核模式组件4.4.3用户模式组件4.5其他内存保护特征4.5.1数据执行保护4.5.2地址空间布局随机化4.5.3GS 编译选项4.5.4SAFESEH链接器选项4.6本机API4.6.1中断向量表的发展4.6.2进一步研究中断描述表4.6.3通过中断进行系统调用4.6.4SYSENTER指令4.6.5系统服务调度表4.6.6枚举本机API4.6.7Nt*( )系统调用与Zw*( )系统调用4.6.8系统调用的生命周期4.6.9其他内核模式例程4.6.10内核模式API文档4.7引导过程4.7.1BIOS固件启动4.7.2EFI固件启动4.7.3Windows启动管理器4.7.4Windows启动加载器4.7.5初始化执行体4.7.6会话管理器4.7.7wininit.exe4.7.8winlogon.exe4.7.9启动过程概括4.8设计决策4.8.1藏在人群中:类型04.8.2主动隐藏:类型1和类型24.8.3跳出边界:类型34.8.4前景展望第5章 行业工具5.1开发工具5.1.1诊断工具5.1.2磁盘映像工具5.1.3更快速救灾:虚拟机5.1.4工具综述5.2调试器5.2.1配置CDB.exe5.2.2符号文件5.2.3Windows符号5.2.4激活CDB.exe5.2.5控制CDB.exe5.2.6有用的调试器命令5.2.7检查符号命令(x)5.2.8列举已加载的模块(lm和!lmi)5.2.9显示类型命令(dt)5.2.10反汇编命令(u)5.2.11显示命令(d*)5.2.12寄存器命令(r)5.3KD.exe内核调试器5.3.1使用内核调试器的不同方法5.3.2物理宿主机-目标机配置5.3.3准备硬件5.3.4准备软件5.3.5启动内核调试会话5.3.6控制目标机5.3.7虚拟宿主机-目标机配置5.3.8 有用的内核模式调试器命令5.3.9列举已加载模块命令5.3.10!process扩展命令5.3.11寄存器命令(r)5.3.12使用崩溃转储5.3.13方法1:PS2键盘技巧5.3.14方法2:KD.exe命令5.3.15方法3:NotMyFault.exe5.3.16崩溃转储分析第6章 内核空间中的玄机6.1KMD模板6.1.1内核模式驱动程序:全局概览6.1.2WDK框架6.1.3真正最小的KMD6.1.4处理IRP6.1.5与用户模式代码通信6.1.6从用户模式发送命令6.2加载内核模式驱动程序6.3服务控制管理器6.3.1在命令行使用sc.exe6.3.2编程使用SCM6.3.3注册表踪迹6.4使用导出驱动程序6.5综合利用内核中的漏洞6.6Windows内核模式安全6.6.1内核模式代码签名6.6.2KMCS的应对措施6.6.3内核补丁保护6.6.4KPP的应对措施6.7同步6.7.1中断请求级6.7.2延迟过程调用6.7.3实现6.8总结第二部分事 后 分 析第7章 阻止磁盘分析7.1事后调查:概述7.2取证副本7.3卷分析7.3.1Windows下的存储卷7.3.2手工分析卷7.3.3应对措施:破坏分区表7.3.4Windows下的原始磁盘访问7.3.5原始磁盘访问:突破常规7.4文件系统分析7.4.1恢复删除的文件7.4.2恢复删除的文件:应对措施7.4.3枚举可选数据流7.4.4枚举可选数据流: 应对措施7.4.5恢复文件系统对象7.4.6恢复文件系统对象:应对措施7.4.7带外隐藏7.4.8带内隐藏7.4.9引入:FragFS7.4.10应用层隐藏7.4.11获取元数据7.4.12获取元数据:应对措施7.4.13改变时间戳7.4.14改变校验和7.4.15识别已知文件7.4.16交叉时间差异与交叉视图差异7.4.17识别已知文件:应对措施7.5文件签名分析7.6总结第8章 阻止可执行文件分析8.1 静态分析8.1.1扫描相关人工痕迹8.1.2验证数字签名8.1.3转储字符串数据8.1.4检查文件头8.1.5反汇编和反编译8.2破坏静态分析8.2.1数据转换:加壳8.2.2加壳:加密程序8.2.3密钥管理8.2.4加壳:压缩程序8.2.5加壳:变形代码8.2.6定制工具的需求8.2.7关于加壳的争论8.2.8数据伪造8.2.9虚旗攻击8.2.10数据源清除:多级加载器8.2.11深度防御8.3运行时分析8.3.1运行环境8.3.2手工与自动运行时分析8.3.3手工分析:基本概要8.3.4手工分析:跟踪8.3.5手工分析:内存转储8.3.6手工分析:捕捉网络活动8.3.7自动化分析8.3.8运行时复合分析8.4破坏运行时分析8.4.1跟踪的应对措施8.4.2API跟踪:规避迂回补丁8.4.3API跟踪:多级加载器8.4.4指令级跟踪:攻击调试器8.4.5断点8.4.6检测用户模式调试器8.4.7检测内核模式调试器8.4.8检测用户模式调试器或者内核模式调试器8.4.9通过代码校验和检测调试器8.4.10关于反调试器技术的争论8.4.11指令级跟踪:混淆8.4.12混淆应用数据8.4.13混淆应用代码8.4.14阻止自动化8.4.15应对运行时复合分析8.5总结第三部分在 线 取 证第9章 阻止在线取证9.1在线取证:基本过程9.2用户模式加载器9.2.1UML破坏现有的API9.2.2关于加载器API模块的争论9.2.3纵览Windows PE文件格式9.2.4相对虚拟地址9.2.5PE文件头9.2.6导入数据节(.idata)9.2.7基址重定位节(.reloc)9.2.8实现独立的UML9.3最小化加载器踪迹9.3.1数据节育:献给The Grugq的颂歌9.3.2下一步:通过漏洞利用程序加载9.4关于独立PE加载器的争论第10章 用C语言创建shellcode10.1用户模式shellcode10.1.1Visual Studio工程设置10.1.2使用相对地址10.1.3寻找kernel32.dll:通往TEB和PEB的旅程10.1.4扩展地址表10.1.5解析kernel32.dll导出表10.1.6提取shellcode10.1.7危险空间10.1.8构建自动化10.2内核模式shellcode10.2.1工程设置:$(NTMAKEENV)\makefile.new10.2.2工程设置:SOURCES10.2.3地址解析10.2.4加载内核模式shellcode10.3特殊武器和策略10.4展望第11章 更改调用表11.1在用户空间挂钩:IAT11.1.1DLL基础11.1.2访问导出例程11.1.3注入DLL11.1.4走查磁盘上PE文件的IAT11.1.5挂钩IAT11.2内核空间的调用表11.3挂钩IDT11.3.1处理多处理器:方案#111.3.2裸例程11.3.3关于挂钩IDT的问题11.4挂钩处理器MSR11.5挂钩SSDT11.5.1禁用WP位:技巧#111.5.2禁用WP位:技巧#211.5.3挂钩SSDT项11.5.4SSDT示例:跟踪系统调用11.5.5SSDT示例:隐藏进程11.5.6SSDT示例:隐藏网络连接11.6挂钩IRP处理程序11.7挂钩GDT:安装调用门11.8挂钩的应对措施11.8.1检查内核模式挂钩11.8.2检查IA32_SYSENTER_EIP11.8.3检查 INT 0x2E11.8.4检查 SSDT11.8.5检查IRP处理程序11.8.6检查用户模式钩子11.8.7解析PEB:第1部分11.8.8解析PEB:第2部分11.9反应对措施11.9.1假设最坏的案例11.9.2最坏案例应对措施#111.9.3最坏案例应对措施#2第12章 更改代码12.1跟踪调用12.1.1迂回实现12.1.2获取NtSetValueKey()的地址12.1.3初始化补丁元数据结构12.1.4对照已知签名核实原始机器码12.1.5保存原始序言和尾声代码12.1.6更新补丁元数据结构12.1.7锁定访问并禁用写保护12.1.8注入迂回12.1.9序言迂回12.1.10尾声迂回12.1.11事后总结12.2破坏组策略12.2.1迂回实现12.2.2初始化补丁元数据结构12.2.3尾声迂回12.2.4将注册表值映射到组策略12.3绕过内核模式API记录器12.3.1故障安全规避12.3.2更上一层楼12.4指令补丁应对措施第13章 更改内核对象13.1隐形的代价13.1.1问题#1:陡峭的学习曲线13.1.2问题#2:并发性13.1.3问题#3:可移植性和指针运算13.1.4特有技术:DKOM13.1.5对象13.2再访EPROCESS对象13.2.1获取EPROCESS指针13.2.2EPROCESS相关域13.2.3UniqueProcessId13.2.4ActiveProcessLinks13.2.5Token13.2.6ImageFileName13.3DRIVER_SECTION对象13.4令牌对象13.4.1Windows授权13.4.2定位令牌对象13.4.3令牌对象中的相关域13.5隐藏进程13.6隐藏驱动程序13.7操纵访问令牌13.8使用No-FU13.9内核模式回调13.10应对措施13.10.1交叉视图检测13.10.2高级枚举:CreateToolhelp32Snapshot()13.10.3高级枚举:PID暴力13.10.4低级枚举:进程13.10.5低级枚举:线程13.10.6相关软件13.10.7域校验和13.11反应对措施13.11.1最好的防护:饿死对手13.11.2评论:超越双环模型13.11.3最后一道防线第14章 隐秘通道14.1普通恶意软件通道14.1.1互联网中继聊天14.1.2对等通信14.1.3HTTP14.2最坏案例场景:截获所有数据内容14.2.1协议隧道14.2.2DNS14.2.3ICMP14.2.4外围设备问题14.3Windows TCPIP栈14.3.1Windows Sockets 214.3.2原始套接字14.3.3Winsock内核API14.3.4NDIS14.3.5不同任务使用不同的工具14.4DNS隧道14.4.1DNS查询14.4.2DNS应答14.5DNS隧道:用户模式14.6DNS隧道:WSK实现14.6.1初始化应用程序的上下文14.6.2创建内核模式套接字14.6.3确定本地传输地址14.6.4绑定套接字与传输地址14.6.5设置远程地址(C2客户端)14.6.6发送DNS查询14.6.7接收DNS应答14.7NDIS协议驱动程序14.7.1创建并运行NDISProt6.0示例14.7.2客户端代码概要14.7.3驱动程序代码概要14.7.4Protocol*()例程14.7.5缺失的特征14.8被动的隐秘通道第15章 转到带外15.1 附加处理器模式15.1.1系统管理模式15.1.2流氓管理程序15.1.3白帽成员对策15.1.4流氓管理程序与SMM rootkit15.2固件15.2.1主板BIOS15.2.2ACPI组件15.2.3扩展ROM15.2.4UEFI固件15.3远程管理设施15.4不太明显的备用方案15.4.1板载闪存15.4.2电路级伎俩15.5总结第四部分结 束 语第16章 rootkit之道16.1核心策略16.1.1尊重你的对手16.1.2五指穿心掌16.1.3忍耐强行夺取的欲望16.1.4研究你的目标16.2识别隐藏之门16.2.1对付专有系统16.2.2监视内核16.2.3重要特点:硬件是新软件16.2.4充分利用现有研究16.3建筑领域的训诫16.3.1首先加载,深度加载16.3.2为自主性而奋斗16.3.3Butler Lampson:策略与机制分离16.4设计rootkit16.4.1隐身与开发努力16.4.2使用定制工具16.4.3稳定性很重要:致力于最佳实践16.4.4逐步提高16.4.5容错移转:自我修复的rootkit16.5处理感染
。 Amazon五星级畅销书,rootkit领域的重要著作,计算机安全领域公认经典。从反取证角度,深入、系统解读rootkit的本质和核心技术,以及如何构建属于自己的rootkit武器。包含大量模块化示例,行文风趣幽默,颇具实战性和可读性。 全书共分四部分。第一部分(第1~6章),全新阐释rootkit本质、rootkit与反取证关系、安全领域态势,以及反取证技术的策略、应对建议和攻击优势。之后,从硬件、软件(系统)、行业工具和内核空间方面介绍rootkit调查过程和利用反取证技术破坏调查过程的策略,使你对取证和反取证有全新了解。第二部分(第7~8章),主要介绍rootkit如何阻止磁盘分析和可执行文件的分析,而调查人员如何利用有效的工具和策略来分析辅助存储器(例如磁盘分析、卷分析、文件系统分析以及未知二进制分析)中可能留下的rootkit痕迹,并对内存驻留和多级释放器技术及用户态Exec(UserlandExec)理念进行了深入剖析。第三部分(第9~15章)主要详解攻击者利用rootkit破坏数据收集过程和造成“一切安好”的假象的前沿实用策略:阻止在线取证、内核模式策略、更改调用表、更改代码、更改内核对象、创建隐秘通道和部署带外rootkit。第四部分(第16章),高屋建瓴地重新总结了rootkit的核心策略,以及如何识别隐藏的rootkit、注意事项和如何处理感染等。【作者简介】 Bill Blunden 资深计算机安全专家,从事相关研究10余年,对rootkit有非常深入的研究。目前从事网络安全设备代码和ERP中间件的相关工作。活跃于计算机安全类社区,常与计算机安全领域多名世界级安全专家交流探讨。在学术生涯中走过不少弯路,因此对计算机安全有异于常人的观察角度和体会。