网络安全 频道

从入门到精通:Rootkit的检测、清除、预防

        Rootkit是一种能够以管理员身份访问计算机或计算机网络的程序。典型情况下,黑客们会通过利用已知的漏洞或口令破解而获得用户级访问,从而将rootkit安装到计算机上。Rootkit安装以后,它将准许攻击者掩饰其入侵行为,并获得对计算机的root级或特权级的访问,在可能的情况下还可以获得对网络上其它计算机的访问。

  rootkit的威胁

  一般来说,Rootkit自身并不是恶意软件,它是恶意软件用来隐藏自己的一种手段。但经黑客改造的rookkit可能包括间谍软件和其它的程序,如监视网络通信和用户击键的程序,也可以在系统中构建一个后门便于黑客使用,还可以修改日志文件,攻击网络上的其它计算机,或者改变现有的系统工具以用逃避检测。

  黑客利用多种技术来操纵操作系统,其结果就是用户无法利用普通的杀毒软件来找到其踪迹,更别说清除了。

  例如,用户无法在资源管理器中利用普通的文件查看程序来查找间谍文件,也不能通过任务管理器或其它的多数进程查看器来查看。同样地,在系统的启动文件夹内或其它的启动位置中都无法找到其它。即使用趋势科技的HijackThis这款工具也很困难。

  黑客们日益热衷于用rooktit隐藏间谍软件或病毒等,这对于用户而言并不是一个好消息,因为用户们更容易遭受这种感染。

  检测rootkit的存在并不是一件容易的事。多数反间谍软件或反病毒扫描程序无法检测这种代码,虽然一些产品具备了这种功能,但用户需要更加专业的rootkit检测工具。

  Rootkit的类型

  至少有五种类型的rootkit:固件(firmware)rootkit、虚拟化rootkit、内核级rootkit、库级rootkit、应用程序级rootkit等。

  1.固件(firmware)rootkit

  固件(firmware)rootkit使用设备或平台固件来创建顽固的恶意软件镜像。这种rootkit可以成功地隐藏在固件中,因为人们通常并不检查固件代码的完整性.

  2.虚拟化rootkit

  这种rootkit通过修改计算机的启动顺序而发生作用,其目的是加载自己而不是原始的操作系统。一旦加载到内存,虚拟化rootkit就会将原始的操作系统加载为一个虚拟机,这就使得rootkit能够截获客户操作系统所发出的所有硬件请求。如Blue Pill即是一例。

  3.内核级rootkit

  内核级rootkit增加了额外的代码,并能够替换一个操作系统的部分功能,包括内核和相关的设备驱动程序。现在的操作系统大多并没有强化内核和驱动程序的不同特性。这样,许多内核模式的rootkit是作为设备驱动程序而开发的,或者作为可加载模块,如Linux中的可加载模块或Windows中的设备驱动程序,这类rootkit极其危险,因为它可获得不受限制的安全访问权。如果代码中有任何一点错误,那么内核级别的任何代码操作都将对整个系统的稳定性产生深远的影响。

  内核级的rootkit极其危险,因为它难于检测。其原因在于它与操作系统处于同一级别,如此一来,它就可以修改或破坏由其它软件所发出的任何请求。这种情况下,系统自身不再值得信任,一种可接受的检测方法是使用另外一个可信任的系统及其安装的检测软件,并将受感染的系统加载为一个数据源进行检测。

  4.库级rootkit

  库级rootkit可以用隐藏攻击者信息的方法来补丁、钩住(即所谓的hook)、替换系统调用。从理论上讲,这种rootkit可以通过检查代码库(在windows平台中就是DLL即动态链接库)的改变而发现其踪迹。事实上,与一些应用程序和补丁包一起发行的多种程序库都使得检测这种rootkit相当困难。

  5.应用级rootkit

  应用级rootkit可以通过具有特洛伊木马特征的伪装代码来替换普通的应用程序的二进制代码,也可以使用钩子、补丁、注入代码或其它方式来修改现有应用程序的行为。

  Rootkit的检测

  通过对上述rootkit种类的简单分析,我们认为在一个被怀疑感染了rootkit的计算机上检测rootkit是不可靠的或不可信的。Rootkit可以篡改多种工具和其它所有程序赖以运行的库文件,因此rootkit检测的基本问题是,如果当前系统已经被rootkit破坏,那么它就不再值得信任。具体而言,管理员的一些操作,如列示正在运行的程序列表、列示一个文件夹内的所有文件等都未必是最初的设计者所期望的。总之,在一个活动的计算机上运行rootkit检测程序要想发挥作用只能建立在这样一个假设的基础上:所检测到的rootkit并没有采取隐藏自己的机制。

  检测rootkit的最好方法是关闭被怀疑感染rootkit的计算机,然后用另外一个干净的硬盘或其它媒体启动计算机,再用相关的检测软件实施检查。因为一个没有运行的rootkit是无法隐藏自己的,所以我们可以使用一些通用的反恶意软件工具(如瑞星等国产安全程序套件)配合专门的反rootkit工具来检查和清除rootkit。但是,正如并非所有的反病毒软件都能检测和清除所有的病毒一样,这种检测方法是否有效也值得进一步探讨。

  现在有许多检测rootkit的工具,如linux平台的chkrootkit、rkhunter、OSSEC、zeppoo等。Windowws平台的工具我们下面将有介绍,但就目前来看,许多rootkit编写者已经将一些检测程序加入到躲避文件列表中,也就是说它们将采取某种方法躲避检测。因此下面笔者所涉及的检测工具的效用并不是绝对的。

  检测Windows 平台rootkit的四大利器

  如果可以找到一个未受感染的测试系统的副本,将其作为参考,那么执行一个文件到文件的比较可以作为一种检测方法。 在这种情况下,rookkit及其装载文件就可以被轻易地检测到。

  然而事实上这种情况是很少碰到的,因为很多人没有其系统的参考副本,更何况系统是动态变化的,系统中总要发生一些合法的改变,而这种改变使得文件的比较更为困难。

  实际情况下,rootkit的检测程序往往是在可能受感染的系统内部着手工作的。此时检测rootkit就成为一种艰难的任务。更何况rootkit的开发者们意识到了一些新技术的使用,便不断地开发其产品的新版本,目的是逃避新的检测方法。事实上,检测与逃避检测也就成为猫和老鼠的捉迷藏游戏。

  这种情况也就要求用户不应当局限于这样一种观念:某个特定的rootkit检测程序是最好的。事实上,笔者建议用户要采用几种检测程序。用户还应当及时升级检测程序,因为道和魔的斗争是不断升级变化的。

  现在有许多rootkit检测程序都可以使用,但多数都是针对特定rootkit程序的,笔者将为您推荐四个通用的、并不针对某种rootkit的检测程序,而且推荐你最好使用多个工具,这样就增加了检测到多数最新rootkit的机率。要知道,rootkit扫描程序不像防病毒软件那样“一山不容二虎”。

  总体而言,内核模式的rootkit可以控制系统的任何方面,因此经由API返回的信息(包括注册表和文件系统的数据)都有可能遭到破坏。虽然比较一个系统的在线扫描和离线扫描(如启动进入到一个基于CD的操作系统即光盘启动)比较可靠,但rootkit可以针对这种工具逃避检测。这样说来,不可能存在一个统一的绝对可靠的rootkit扫描器。
 

0
相关文章