Rootkit演变

Rootkit 概述

         我第一次接触rootkit是在2004年,当时我还是一个rookie病毒分析师,具备一定的关于UNIX的 rootkit病毒的相关知识。有一天我无意中发现windows系统中的一个可执行程序,在我登录这个程序的时候,windows系统似乎没有做出任何反应。我觉得很有趣,并且准备进一步探究这个程序,然后我发现在载入模块列表中有个文件并没有出现在磁盘上。很显然,我能用肉眼看到这种状况是很幸运的,因为当时的rootkit在其代码中存在错误。在今天,我却需要使用很多专门的工具才能发现同样的状况,甚至某些专业工具都不一定检测出rootkit。

  当时我发现的rootkit当然不是第一个windows系统rootkit,然而,对于我来说却是全新的,并且向我打开了通往新世界的大门。在这个新世界里,程序可以逃脱操作系统的检测,并可能打破规则,奇迹般地从程序进程和文件列表中隐藏自己。当时我花了相当长的时间来研究这种程序用来隐藏自己所使用的驱动。

  Trojan-Dropper.Win32.SmallProx是一个设计为攻击特定系统的程序,并且它能够部署在特定位置,这在当时来看是相当复杂和相当不寻常的事情了。

  本文主要探讨的是windows rootkit,因为windows rootkit是数量最多的,并且仍然在不断演变的病毒。由于windows是现今最流行的操作系统,这使得windows rootkit对广大用户们造成了巨大的威胁,另外,绝大部分病毒编写者同样也使用的是windows操作系统。我是这样定义rootkit的,它是一种通过使用隐形技术来隐藏系统对象(包括文件、进程、驱动、服务、注册表项、开放端口、连接等)来逃避或者规避标准系统机制的程序。

  UNIX rootkit

  在关于rootkit的任何讨论中,都难以避免地要提到“rootkit”这一说法的词源含义。在UNIX系统中,”root”是指拥有所有特权的管理员,而“kit”是用来分配工具的。因此“rootkit”的意思就是指,用于恶意意图的一套工具,这些工具可以在真正的管理员不知情的情况下获取访问系统的权力。这种UNIX系统工具最早出现在90年代初期,现在它们仍然存在,但是没有发生明显的演变。

  然而,我们必须记住的是,虽然windows rootkit沿用了UNIX系统的“rootkit”这个名称,但是实际上windows系统中的这种恶意病毒是直接从DOS隐形病毒中“继承”的,而不是UNIX rootkit。

  隐形式病毒

  DOS隐形式病毒最早出现在1990年左右,与UNIX rooktit在同一时间内出现(或者比UNIX rooktit稍早出现)。UNIX rooktit是旨在获取访问系统的权力并且在系统内隐藏自己,与UNIX rooktit不同,DOS隐形式病毒只是简单地在用户和AV程序中隐藏自己,这正好与windows rootkit的方式相同。当时DOS隐形式病毒使用的技术与现在windows rootkit使用的技术非常相似,举例来说,隐形式病毒依赖于这些技术:拦截系统调用以及通过向磁盘或者存储内容中输入错误代码来掩盖恶意程序,windows rootkit恰恰也是使用这些技术。

  在windows rootkit出现了大约十年后,人们并没有将这种新程序命名为隐形式病毒或者其他更符合逻辑的名称,后来逐渐被称为“rootkit”,这还要感谢Greg Hoglund。他是第一个在系统出建立工具来隐藏数据的人,他采用的是通过合并不同技术来逃避windows系统中的系统保护功能,在电子杂志PHRACK(http://phrack.org/issues.html?issue=55&id=5#article)中Greg Hoglund发表了他得出的结果,其中他将他建立的工具命名为NT Rootkit.。这种工具被很多恶意软件编写者用于恶意软件中,事实上,NT Rootkit从技术角度激发rootkit编写者以及相关研究人员。

  起源和普及

  Hoglund的文章发表于1999年,他的研究是基于前一年发布的windows内核研究,该研究由来自斯里兰卡的程序师刊登于Usenet(具体详情请参见http://www.cmkrnl.com/arc-newint2e.html)

  早在1995年,一位windows编程专家Jeffrey Richter就在他的书《Advanced Windows》以及这本书的第四版《Microsoft Windows编程应用程序》中谈及到如何在用户模式中拦截系统调用的问题。这些技术后来在很多rootkit中被应用,甚至有些rootkit直接从这两本书中复制的源代码。

  在内核模式中拦截系统调用的技术在另外两个经典的编程手册中也有提及:Schreiber的《Undocumented Windows 2000 Secrets》,2001年出版;P. Dabak et al的《Undocumented Windows NT》,1999年出版。

 

rootkit的发展史

第一个Windows rootkits

  Researchers continued to investigate Windows system protection研究人员继续研究windows系统保护问题,并且在NTRootkit发布不久后其他几个工具也相继出现,都是用于在操作系统中隐藏对象的工具:

  * 2000年 – he4hook, 由一名俄罗斯程序员设计而成。这个工具并不是恶意软件,但是它能够隐藏文件,并且能够在内核模式下运行。有趣的是,也该工具的创建者也不把他的工具称为一个“rootkit”.

  * 2002年 – Hacker Defender (aka HacDef)。这同样也只是一个工具,但是更加强大:它可以被用于隐藏文件、进程和注册表项,可以在配置文件中灵活地设置。该工具主要用于用户模式。

  * 2003年 – Vanquish。这个工具可以用来隐藏文件、目录和注册表项,而且,它还有一个恶意有效载荷,能够登录密码。该工具主要用于用户模式。

  后来人们立刻明白了这些研究正在带来某种变化,随着研究重点逐渐从中立的工具转移到别有用心的工具,包括用于恶意目的等.

  * 2003年 – Haxdoor (aka A-311 Death and Nuclear Grabber, 同一个程序的改良变体)。这已经不仅仅是一个工具这么简单了,它是一个使用rootkit技术来在操作系统中隐藏自己的后门程序。该工具同样在内核模式下运用。

  * 2004年 – FU ,一个隐藏进程的工具,这种工具引入了一种新的技术,即重新修改程序构建自己,而不是修改进入系统的访问。该工具在内核模式下运用.

  上述清单并不是完全详尽的,但是我们可以通过上述介绍来进一步理解windows rootkit的演变过程,特别是HacDef, Haxdoor 和 FU,这三种工具经常发现被用于其他恶意软件中。

  2000年到2004年的rootkit逐渐开始适应于标准(已过时的)分类系统:它们既可以在用户模式运行,又可以在内核级别运行,通过使用Execution Path Modification 或者Direct Kernel Object Manipulation。这种分类被人们无休止地讨论着,想要了解更多详情的读者可以访问以下网站:: www.securitylab.ru (俄罗斯); z-oleg.com 俄罗斯); www.securityfocus.com

  Rootkits – 大规模产生

  随着rootkit的不断演变,它们同样开始被嵌入恶意程序中,在过去,很难独立创建隐形式技术,因为很少有人在这方面做研究。因此,这一小部分恶意rootkit可以分为以下三类来分析:

  * 使用现成的工具和资料库来隐藏自身的木马程序,这种被恶意软件编写者广泛使用的木马程序使用的是Hacker Defender 和 FU工具

  * 现成的恶意rootkit,可以通过直接下载或者购买获得,用户可以根据自己的需求进行修改。Haxdoor就是一个很好的例子,像HacDef一样,Haxdoor在2005年的秋季很受推崇,我们卡巴斯基实验室每天都要添加十种新的签名来防止新的Haxdoor变体的攻击

  * 为目标攻击开发的自定义rootkit,AV供应商通常是从客户(主要是大型企业)处直接获得关于这些rootkit的信息。通常情况下,病毒分析师在网络管理员不能确定系统问题原因时才会进行现场分析。这组rootkit出现的情况非常少,但是使用的却是非常复杂的高水平技术。

  .到2005年,现存的rootkit中几乎有80%是HacDef 和Haxdoor的变体。Rbot 和 SdBot是第一个引入内建rootkit技术的多功能后门木马程序,这种状况是很明显的,任何提高商业木马的整体功能的技术都直接为木马编写者或者操控者创造财务收益,因此BOT编写者是第一个引用隐形式技术/rootkit技术的人。

  到2006年,我们看到rootkit技术开始应用与常见的电子邮件蠕虫病毒中,例如Bagle;以及木马间谍程序,例如Goldun;另外还有Mailbot程序,例如Rustock.这种演变给AV供应商带来巨大的挑战。

  然而,当在木马程序中使用rootkit技术开始变成一种标准时,开始出现很多反rootkit工具,既有独立的也有产品形式的工具,病毒与反病毒的力量开始逐渐平衡。

Rootkit概述

到2005年,恶意软件开始广泛地使用rootkit技术,这种广泛应用开始吸引大众传媒以及安全供应商的关注。微软公司的代表在RSA中提出了这个问题。

  2006年,在与rootkit技术相关的众多丑闻中,很多都是与在各种软件和硬件产品中发现的rootkit技术丑闻,.这些rootkit丑闻都清楚地向我们展现了rootkit是如何成为热门讨论问题的过程

  1. 索尼公司光盘上的DRM版权保护能够向用户隐藏某些文档,这种技术的部署的方式带来了一个严重的问题:任何人都可以以某种方式命名他们自己的文档,然后这些文档可以被索尼DRM技术所隐藏。

  2. 赛门铁克公司的产品中也有类似的功能:他们使用了一个隐藏于用户的目录。而且更加有趣的是,赛门铁克公司创建的“保护篮protected basket” 功能很容易被禁用。事实上,在隐藏文件夹中隐藏文件的概念远远没有在系统目录树的深度隐藏文件的概念更加有趣,因为几乎没有用户会注意系统目录树。

  3. 另外一个与rootkit相关的丑闻来自我们卡巴斯基公司的反病毒软件,该产品能够在文件流中存储数据,文件流就是指隐藏于用户的文件系统中的部分文件。虽然目前尚不清楚这构成了多大的威胁,但是使用rootkit字眼确实吓跑了很多人。

  “反rootkit” 热潮

  Rootkit演变史的另一个重要方面就是与rootkit迅速发展相对应的反rootkit热潮。到2006年6月份左右,几乎所有的AV供应商都已经意识到有必要对rootkit造成的安全威胁作出反应了,每一家供应商都以自己的方式来抵抗rootkit攻击。有些供应商对他们的产品进行了修复,使其产品在定期防病毒扫描时能够搜寻隐藏的文件;有些公司则发布了独立于产品的反rootkit工具;还有一些公司承诺在他们的产品中加入反rootkit扫描,通过他们的产品界面来实现这一功能。

  事实是,没有任何一个供应商是非常成功的,他们只是改善了表面问题而已,就像在把马拴牢后锁上大门,有点多此一举的感觉。

  在反rootkit不断升级的形势下,主要供应商之一所研发的F-Secure应运而生,这个反rootkit工具在Sysinternals发布Rootkit Revealer不久后发布的,F-Secure工具目前只能检测隐藏的进程,它是居于概念证明技术之上的工具。

  供应商的独立反rootkit工具

  供应商的独立反rootkit工具出现于更早期的时候――大约在2005年左右。与其他来自反病毒供应商的解决方案不同的是,其他解决方案需要让用户很明显地感觉到他们在保护用户,而免费工具编写者只是想要尽可能多地揭露更多地隐藏数据。因此,供应商独立工具比解决方案么更加专业、更加强大,能够高更好地对不断转变地环境作出适当地反应。

  第一个反rootkit工具是被设计用于显露单一类型对象,例如隐藏文件等。随着时间的推移,这些工具功能变得越来越多,并且采用了系统化的方式。现在,最强大最有效的通用反rootkit工具式GMER和Rootkit Unhooker(antirootkit.com)(后者不再受到支持)。这些工具使人们能够对系统从不同的条件角度来进行快速的表面的分析,如果有必要的话,他们同样也可以用于进行更加深入更加专业的分析。

  现在至少有20个有效的免费反rootkit工具,每一种工具都是基于使用不同的方法来检测rootkit(预知详情,请查看z-oleq.com和www.securityfocus.com)。然而,战争越演越烈。在rootkit演变史中出现的最新趋势是开始沿用Bluepill技术(即硬盘虚拟化技术),这种隐藏方式几乎现有的所有技术都不能检测出来,当然现在还没有哪种功能齐全的反rootkit工具能够检测出使用硬盘虚拟化技术的rootkit。另一方面,也没有哪种已知的完备的恶意程序在使用这种技术,除了概念证明代码。

  不过,对于这些假设性的威胁,我们的安全防护以及检测工具也不断在进展。据我所知道的就有两个正在进行的研究硬盘虚拟化rootkit的项目――俄罗斯的North Security Labs(北部安全实验室)和美国的Hypervista Technologies研究所。到目前为止,Hypervista Technologies只公布了一些理论资料,而North Security Labs则在他们的官网上发布了Hypersight Rootkit检测器的测试版下载。这些项目研究仍然处于早期阶段,尽管如此,还是让人十分兴奋。

  概念证明型rootkit

  到2006年为止,几乎所有的rootkit都能够被反rootkit工具检测出来,这使一度猖獗的rootkit开始走下坡路。当然这场战争的发展还将取决于研究人员,无论是“白道”还是“黑道”,取决于他们对新的隐藏技术的研究和开发。

  大多数研究人员将注意力放在了使用硬盘虚拟化(已经整合入新的英特尔和AMD处理器中)来获取控制操作系统权力的概念上,这种概念可以使rootkit编写者们制造出不能被现有反rootkit工具所检测的rootkit。

  在2006年中,有这样三种概念证明型rootkit被公布:SubVirt ( www.eecs.umich.edu), BluePill (blackhat.com) 和 Vitriol ( www.blackhat.com ),而编写和检测这些rootkit仍然是一个悬而未决的问题。不过,庆幸的是,这三种rootkit还没有出现在我们的系统中(据我们所知)。

  研究人员关注的第二个主要领域是在启动扇区运行的rootkit,或者也被称为bootkit。这种rootkit可以在开机的时候获取对整个系统的控制权,这种rootkit的出现可以追溯到DOS时代流行的boot病毒技术。第一个针对boot扇区的概念证明型rootkit是eEye Bootroot(www.blackhat.com),出现在2005年。另一个类似的概念证明型rootkit是出现在2007年的Vbootkit(blackhat.com),这个rootkit是作为一项研究出现的,并且成为了现在热门的Vista安全问题的导火索。

  最近发展趋势

  在相当长一段时间内没有出现新的rootkit之后,2008年rootkit制造者们为防病毒产业带来了新的挑战。最新出现的一个恶意软件据说能够感染启动扇区,它有这么几个名称:Sinowal, Mebroot和StealthMBR.大多数防病毒解决方案现在仍然不能检测出这种rootkit,更别说是消毒机了。

  这种rootkit,或者说bootkit(正如通常采用的名称),是基于eEye Bootroot代码上的,因为它是在开机阶段就运行的。基本上来说,bootkit不是一个单独的作为隐藏木马(任何木马)的恶意软件。 有人说Sinowal正在某些网络中被共享(可能是付费项)以及我们目前还找不到任何解决方案,我们并不认为这是一个合适的结论。

  另外一个最新出现的重要技术是使用CmRegisterCallback,这项技术是微软公司开发的用于帮助开发人员在注册表中隐藏对象的,虽然很少有人会注意该技术,但是在最新发现的很多较复杂的恶意程序(包括Bulknet)使用的就是相同的技术。

  神秘的rootkit

  在2006年年底,安全论坛中充斥着关于Rustock.c的谣言,这是一个假设中的新的不可检测的rootkit,据称这个新的rootkit是Rustock垃圾邮件bot家庭中的新成员。一年半后,来自Dr.Web(一个俄罗斯反病毒公司)的研究人员对外宣称他们已经发现了Rustock.c的样本,并且分析了其繁殖的路径。可惜的是,目前还没有公布具体细节,所以我们还不是很清楚这个rootkit会给我们带来怎样的安全威胁。Dr.Web的数据似乎表明这种rootkit实际上是创建于2007年7月,而不是2006年年底。

  然而,我们唯一知道的事实就是Rustock.c是不可能被检测出来的。这个恶意程序并没有使用任何尖端技术来使其逃避检测。它确实能够逃避现有的保护方式,但是也不是那么难的,因为有一些不太臭名的恶意程序同样可以规避安全措施的检测。

  简言之,事实证明,从信息流的角度来探讨Rustock.c要比从技术角度生动有趣得多。2006年年底出现的谣言并没有得到证实,但是确实为后来事情的发展做了铺垫。当一个真正的样本最终出现的时候,每个人都很期待能够看一眼这个“不可检测的”rootkit,即使事实上Rustock.c并不能够引起人们对于其技术上的关注。在我看来,Rustock.c在计算机社区挑起的话题要比严肃的技术发展更加意义深远。
Rootkit技术探讨

非Windows系统的rootkit

  病毒实验室会时不时地获得针对UNIX系统(不是太常用的系统)的rootkit,例如Solaris,这通常是因为某公司一直都没有检测他们的系统(很久以前配置的、很久没有使用过的系统)而造成的rootkit侵入。上述系统很容易被rootkit入侵,并且在多年后才会被检测,这样就会造成大量内部信息或者机密数据的丢失,造成巨大的资金损失。

  还有一些专为攻击OS X(Macintosh系统)编写的rootkit,甚至还有一个专为该操作系统设计的反rootkit工具:OS X Rootkit Hunter。此外,由于OS X系统是基于UNIX的,所以一些UNIX rootkit也可以稍作修改在OS X中运行。不过,从整体来看,我们并没有看到Mac rootkit发生任何明显演变,这方面也没有很严重的安全威胁。

  另外还有移动设备的操作系统:Windows Mobile, Symbian等,据我所知,这些操作系统还没有受到rootkit的攻击。不过,对于运行这些操作系统的移动设备来说,确实存在相对较小的恶意程序攻击,而且很少有人会在移动设备上使用现有的AV解决方案,这让这些系统很可能成为rootkit的攻击对象。

  似是而非的rootkit

  在这篇文章中我没有着重探讨那些概念证明型恶意程序,因为他们不能归类为rootkit,并且大多数研究人员不会将他们当作rootkit。如果我们把rootkit定义为能够回避操作系统安全系统的检测并且隐藏自身活动的程序,那么下面我们谈到的恶意程序只能算是沾边。

  首先,在操作系统中确实存在某些恶意程序,但是他们是以另一种“老实”的方式隐藏:这些程序不会修改系统也不会逃避安全系统的检测。举例来说,有一些恶意程序位于目录或者文件流中,然后有一些使用记录系统功能来安装事件功能的程序,这些程序都不能归类为rootkit,虽然他们确实存在隐藏行为。

  其次,还有一些程序的隐藏性是根据该程序的内部结构实现的,如CodeRed 蠕虫 ( www.viruslist.com),这种程序既不会在磁盘上创建文件,也不会在内存中创建任何进程。

  第三,存在一些欺骗操作系统的复杂技术,恶意程序可能使用这些技术不隐藏它的行为轨迹,但是却逃避系统或者AV解决方案的检测。

  关于Rootkit的其他观点

  上一节中讨论的似是而非rootkit问题给我们的结论就是,并没有恶意rootkit,只是一些回避系统保护检测并能在系统中隐藏本身的隐藏式技术。像其他任何强大的技术一样,这些技术既可能用于好的用途,也可能用户恶意目的。例如,积极的反rootkit工具通常能够阻止威胁,而这些工具使用的就是和rootkit同样的方式,包括连接系统功能等。

  从不同的角度来看,任何技术,或者说所有这些技术都可以被归类为rootkit。在最后的分析结论中,我们很难确定到底该如何定义rootkit,因为既可以从大多数人的角度考虑(即普遍接受的角度),也可以参考权威人士的意见(即专家意见)。

  那么为什么我们需要一个确切的定义呢?如果没有确切的定义,我们很容易陷入似是而非的困境中,例如检测到所谓的rootkit的产品事件。在每一个rootkit案件中,我们应该认真分析代码和使用的技术,而不是简单的将其标识为rootkit,这样会造成不必要的恐慌以及围绕该事件的各种谣言。

  举例来说,在我们卡巴斯基的反病毒软件中发现的所谓的rootkit (www.pcworld.com; www.kaspersky.com ),实际上,该产品中使用的技术是被视为在文件系统流中配售服务信息的技术,也就是在不可能被直接检测的文件系统中保存数据。

  这是规避操作系统检测的技术么?不是,文件流只是一种记录操作系统功能。那么在这些文件流中隐藏数据属于恶意行为么?不是,在这个事件中只隐藏了服务信息。这个技术是漏洞么?也就是说,它可能被用于恶意用途么?不是,恶意程序编写者只会使用文件流来隐藏恶意代码(而且相关技术已经被部署在一些恶意程序中), 这只是一个操作系统漏洞,不是一个程序漏洞。那么,rootkit在哪里呢?不在卡巴斯基的反病毒软件中,或者我们可以说,不在那些将系统漏洞和程序漏洞混淆的任何其他产品中。

  而索尼公司的DRM事件则有些许不同,在光碟保护中使用的技术确实存在一定漏洞,因为该技术可以使恶意程序使用者重新命名他们的恶意程序来隐藏本身。现在,我们知道有几个恶意程序正是利用的这个程序漏洞,不过说句公道话,这些恶意程序是在漏洞解决和讨论后才出现的。

  下图所展示的是从第一个rootkit出现到rootkit广泛普及,再到引发IT安全社区谣言四起等过程的事件发展记录。

Rootkit演变_第1张图片

整体而言,rootkit的演变史与间谍软件的演变史是十分相似的。首先,rootkit曾经被归类为独立类别的恶意程序;其次,通过大量媒体炒作,出现了大量的反rootkit工具和反病毒行业制造的产品。今天,rootkit和间谍软件都被并入常见恶意程序列表,也不再会造成特别的轰动。然而,回避系统功能来隐藏某些对象这个概念显然还在被使用,我们很可能看到更多新的威胁来实施隐藏式攻击。

你可能感兴趣的:(windows,unix,dos,工具,产品,虚拟化)