【IT专家网独家】本文是病毒和反病毒解决方案演变史系列的第三篇文章。我认为演变是涉及事件发展先后顺序和一系列逻辑变化的连接,因此我在介绍各种演变史的时候,都是采用清晰的逻辑和时间顺序介绍方式,这样就能够帮助广大读者来深入理解我们的主题。
导言
我第一次接触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年出版。

