找回密码
 注册
搜索
热搜: 回贴
微赢网络技术论坛 门户 安全攻防 查看内容

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

2009-12-14 02:50| 发布者: admin| 查看: 15| 评论: 0|原作者: 冰淇淋

【51CTO.com 专家特稿】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扫描器。
BlackLight
F-Secure BlackLight的Rootkit清除技术可以检测普通用户和安全工具无法找到的对象,并向用户提供一个清除rootkit的选择。此工具可以对系统进行深度检查,从而使其可以检测普通安全软件无法清除的威胁。
这种Rootkit清除技术有三个优点:
1.它可以检测并清除计算机中活动的rootkit。要知道,传统的反病毒扫描程序是无法做到这一点的。
2.在一个普通的系统上,这种技术并不会让用户看到那种令人感到迷茫的可疑对象列表,这样一来即使普通用户也可以使用它。
3.这种技术还可以在用户的系统操作期间用于后台的工作。其它的许多rootkit扫描器在扫描期间如果系统正被用户使用的话,将要求系统重启,或者生成虚假的信息。
正是因为它容易上手、便于操作等特点,使得BlackLight既可用于企业环境,可以用于普通的家用电脑。下图展示的就是F-Secure Internet security 2008.jpg,它集成了检测rootkit的功能。(下图1)



这款工具的使用是相当简单的,用户只需要运行Blacklight Rootkit Eliminator软件即可。不过,现在这款软件的最新功能已经集成到F-Secure Internet security 2008中。
RootkitRevealer
RootkitRevealer是一款高级的rootkit检测程序,它可以成功地检测www.rootkit.com网站上所公布的所有顽固的rootkit。使用RootkitRevealer时一个需要注意的方面是它不再使用命令行版本,因为一些恶意软件作者通过使用其可执行的文件名而开始采取相应的对抗手段。此软件的开发者重新修改了软件,使其可以从一个随机的文件副本启动扫描。注意,用户可以使用命令行选项来执行自动扫描,并将结果记录到一个文件中,这与命令行版本的行为是等同的。(下图2)



但是,现在的rootkit技术已非同寻常。理论上讲,如果某种rootkit针对此工具采取了躲避技术,那么RootkitRevealer有可能无法检测到其存在。要达到这种效果,它就得截获RootkitRevealer从注册表中所读取的数据或文件系统中的数据。这种技术的要求极高。一般的黑客很难做到,但并非不可能。
RootkitRevealer支持几处自动扫描系统的选择,其用法为:
rootkitrevealer [-a [-c] [-m] [-r] 输出的文件名]
其中,-a表示自动扫描,在完成后退出;-c表示输出格式为CSV;-m表示显示NTFS元数据文件;-r表示不扫描注册表;这里的输出文件的一般格式为文本文件。
比如,如果RootkitRevealer检测到了一种流行的HackerDefender确rootkit :注册表的key差异显示了存储HackerDefender设备驱动程序的注册表key和服务设置对Windows API是不可见的,但却展示在了注册表的原始扫描数据中。同样的,与hackerdefender相关的文件对windows API的目录扫描是不可见的,但却展示在了原始文件系统数据的扫描中:
管理员或用户应当检测所有的这些差异,并决定这种差异指明rootkit存在的可能性。但并没有什么确定的方法告诉我们怎样决定,这主要依靠的是输出结果和用户的知识、经验。如果用户认为确实感染了rootkit,就可以上网搜索清除办法。如果用户不能确定如何清除,就应当用干净的媒体重新格式化系统盘,并重新安装系统。
微软恶意软件检测和清除工具
虽然这款工具并非专用的rootkit检测和清除工具,它主要用于检测和清除许多病毒和蠕虫家族,而且它拥有检测某

最新评论

QQ|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )

GMT+8, 2024-9-30 17:24 , Processed in 0.215311 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

返回顶部