欢迎来到天天文库
浏览记录
ID:28971162
大小:76.20 KB
页数:8页
时间:2018-12-15
《windowsrootkitsof2005,parttwo(翻译》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、实用标准文案http://blog.csdn.net/coding_hello/archive/2007/06/27/1668464.aspxWindowsrootkitsof2005,parttwo(翻译)收藏 上一篇文章中,我们谈到了当前的rootkit开发技术。本文更深入一点,将焦点集中在rootkit技术的最前沿。在第三篇,也就是本系列的最后一篇中,将重点论述rootkit侦测的各种方法及安全方面的专业的应对措施。 本文讲述的方法是在BlackHat2005大会上介绍的
2、ShadowWalker的rootkit原型试验时提出的。这些方法使得攻击者通过控制扫描器在硬件层次所读到的内存来隐藏已知或未知的恶意代码。虽然我们的焦点是在rootkits之上,但该技术潜在的影响颇令人担忧。因为它可以被应用到从蠕虫到间谍软件的所有形式的恶意代码上。1.1可持久的rootkit与基于内存的rootkit 一般来说,rootkits分两种:可持久的rootkit和基于内存的rootkits。其最根本的区别就是被感染的机器重新启动后,两者的持久性。可持久的rootkit在系统
3、重启后还继续存在,而基于内存的rootkit则不行。要想在重启后还继续存在,必须满足两个条件。第一,必须有些手段可以在被感染的系统上长久的保存他们的代码,比如存在硬盘上。第二,必须在系统启动序列中放置一个钩子,以便他们能够从硬盘被加载到内存中开始运行。 基于内存的rootkit不会去保存他们的代码到硬盘,也不会去hook启动过程。他们仅仅存在与内存中,或许就是通过一次软件exploit就被隐蔽的安装进内存了,因此这类rootkit相对于其可持久的兄弟隐蔽性更好,其优势不容置疑。虽然它在系统
4、重启后就不存在了,看起来似乎没用。但是,要知道服务器可是经常连续几天,几周甚至几个月都保持在线。实际上,基于内存的rootkit失去影响的可能跟难以预料的攻击者的需要大致是平衡的。1.2隐藏rootkit Rootkit的编写者为了在系统中隐藏他们的rootkit的存在,开发了一些巧妙的技术,从各种hook技巧到直接更改内核对象(Directkernelobjectmanipulation,DKOM)都有。然而即使像FU这样成熟的内核rootkits也有其固有的缺陷[ref1]。虽然这些R
5、ootkits控制执行路径很有一套,但是基本都没有办法控制其它应用程序看到的内存。因此,这些rootkits如果想要不被发现,必须注意两个问题。第一,必须能隐藏他们本身的执行代码;第二,必须能够隐藏其对操作系统组件的内存所作的修改(比如hooks)。没有这些能力的话,在原始的内存签名侦测扫描面前,即使最成熟的公开的内核rootkits也只是sitting-ducks精彩文档实用标准文案,要知道20年前的防病毒软件就已经开始使用这种扫描技术了。可持久的rootkis则需要另外处理隐藏其在长期存储媒介上的
6、代码以及其系统启动序列中的钩子。本文后面只会谈到前两个问题。实际上,我们的讨论仅限于基于内存的rootkit。 隐藏代码或者其对内存的修改是病毒作者们很早以前就遇到的问题。为了与文件系统签名扫描作斗争,病毒作者们发展了多态变种技术。这种技术使得保持相同功能的一块代码在表面上看起来不一样。可以用英语中的同义词(拼写不同,然而意思相近)来类比一下。多态的病毒用不同的代码(同义词)替换指令(原来的词语)来执行相同的功能。这种变异的病毒表面上看起来有区别,就可以逃过基于简单模式的侦测。
7、 Rootkit也已经在整合多态技术上取得了一些成效。只是这种公开的rootkit还非常少。虽然多态技术对于把rootkit的代码部分同扫描的签名区分开有些效果,但还不理想。因为这对于隐藏rootkit对其他系统组件的二进制代码做的修改没有帮助。也就是说,劫持系统组件留下了内存完整性校验的弱点。因此,更好的解决方案不是改变rootkit的代码,而是改变其他系统组件"看到"它的途径。接下来会看到现在架构是如何准许虚拟内存管理器颠覆的,这样一来非多态的的内核模式rootkit就能够控制操作系统和其他进程所
8、读到的内存。第2节回顾一下虚拟内存的基本架构和支持的操作。第3节讲述ShadowWalker的rootkit原型试验是如何扰乱虚拟内存子系统达到其在安全扫描器前隐藏执行代码的。在第4节,也就是最后一节中将讨论这种技术对于安全专家和黑客的潜在意义。2.虚拟内存概念 现代的大多数系统架构都区分虚拟内存核物理内存。通常,系统更多的是在处理虚拟内存。在一个安装了256MB内存的32位系统的机器上,虽然我们只有256MB物理内存,但是虚拟内存有4GB。
此文档下载收益归作者所有