扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
Rootkits可以被删除么?有些人说可以,有些人说不行。而开发rootkits的人毫无疑问都是绝顶聪明并且有着明显的财务动机,绝不会让rootkit轻易被检测出来。那么,答案到底是什么呢?
--------------------------------------------------------------------------------------------
在之前有关rootkit和僵尸网络的系列文章中,我看到了很多读者的反馈,尤其是有关如何移除rootkit的讨论更是热烈。因此在本文中,我将结合实际情况以及安全专家们的建议,讨论如何移除rootkit。
为何rootkit难以被删除
老实说,我的调查显示成功删除rootkit是一件很偶然的事情,并不是在任何情况下都能采用相同的方法来删除rootkit。其中一个重要原因是rootkit的复杂性日益增加。比如以下一些复杂性:
· 利用操作系统的特权等级安装的rootkit可以让它们对恶意软件扫描程序免疫。
· 通过高级的QoS 参数缩短了从概念验证型rootkit向in the wild 型rootkit过渡的时间。使得恶意软件扫描程序很难获得有效的标记。
· 内置的演变功能可以让rootkit随意改变自身特征,使得采用模式识别的扫描程序无用武之地。
这只是少数几个原因,但是已经足够了。不过我们仍然有希望,我肯定的说,只要我们能确定系统中被植入了rootkit,就有办法将其删除。关键问题在于怎么将其删除。
常犯的错误
下面三点是我经常犯的错误,我相信犯错的肯定不止我一个人。因此在进行任何杀毒工作前,先做以下三个步骤:
· 根据我的经验,杀毒过程的耗时和难度要比我们想象的更长更难。在执行杀毒工作的过程中,一定要时刻牢记这一点。这样不论工作比想象的简单还是更复杂,你都可以做好充足的准备。
· 确保电脑的操作系统,驱动以及应用程序都打上了最新的补丁以及采用了最新的版本。这可以有效的防止rootkit的再次入侵。有关这方面的经验和方法,可以参考我之前的文章 “Botnets: Keep Computers Up to Date or Else.”
· 如果可能,将被感染的电脑单独隔离在一个子网内,并接入互联网。有很多建议都要求电脑断开网络,但是实际上大部分杀毒软件或者扫描程序都需要接入网络以获取最新的病毒特征文件。另外我们也许还会用到在线扫描工具。
开始吧
每个人都有自己偏爱的扫描软件,这也许是因为他之前一直在使用这款扫描软件。和大家一样,我也有自己偏爱的软件。问题是rootkit并不是通用的,因此某个扫描软件可能只能扫描出某些rootkit,却漏掉了另一些。
我曾经使用过很多扫描软件,让我对它们进行评价和推荐是毫无问题的。当然,还有一些扫描软件我没有使用过,因此我在此对它们也不予评论。另外,好像有不少rootkit的开发者也偏爱某些扫描器,针对它们设计了反扫描机制。因此接下来,我将要介绍几种常见的并且能够有效删除用户模式和内核模式rootkit的扫描软件。
趋势科技的RUBotted
RUBotted 是一款后台工作的扫描软件。对于那些不想对扫描器进行过多配置或者不想对删除rootkit动作进行选择的用户来说,这款软件最为合适。它也是我在处理此类问题时的首选工具。我曾经使用RUBotted 成功的删除了Windows XP 系统中的用户模式的rootkit。
F-Secure公司的BlackLight
F-Secure的 Security Center 网站上有大量实用信息,包括在线扫描器,以及我们将要介绍的BlackLight扫描器。BlackLight是一款类似RUBotted的独立的扫描软件,基本不需要用户进行交互操作。这两款扫描器的最大不同在于,BlackLight 是根据用户需要进行扫描的,它不会驻留在后台。另外网站上的removal tools 页面还提供了大量恶意软件专杀工具。
Rootkit Revealer
Rootkit Revealer 是一款由前SysInternals即现在 Microsoft公司的 Mark Russinovich 和Bryce Cogswell开发的知名扫描软件。Rootkit Revealer 的工作机制如下:
“由于顽固的rootkit都会修改API,导致使用系统API的扫描器看到的结果与存储器中实际的结果不符,RootkitRevealer则会对系统进行最高级别扫描以及最低级别扫描,并对比两者的差异从而确定系统中是否含有rootkit。最高级别扫描采用的是 Windows API 而最低级别扫描则是对文件系统或者注册表项目的原始内容进行扫描。”
该软件最麻烦的地方来自扫描之后。与RUBotted 或 BlackLight不同,RootkitRevealer需要用户参与判断是否要移除某个恶意软件。一般来说,用户需要上网搜索有关可疑进程的信息,并查看如何将其删除。
GMER
GMER 是一款优秀的扫描工具,可以用来扫描隐藏的服务,注册表成分以及文件等。和Rootkit Revealer一样,这款软件需要用户参与成分较多。扫描完成后 GMER 会以红色标记出恶意软件,并且可以直接对其删除。GMER 网站上对于这款软件的介绍,也得到了大部分安全专家的认可和肯定:
“GMER 是一款用来扫描和删除rootkit的软件。它扫描对象包括:隐藏的进程,隐藏的线程,隐藏的模块,隐藏的服务,隐藏的文件,隐藏的交换数据流( Alternate Data Streams),隐藏的注册表键,驱动挂钩SSDT,驱动挂钩IDT,驱动挂钩IRP呼叫以及inline hook。 GMER还可以监视如下系统功能:进程创建,驱动加载,库加载,文件功能,注册表项目, TCP/IP连接。”
我觉得GMER上手并不是很容易,尤其是当用户不太熟悉GMER的扫描结果时,要么就完全信任GMER,删掉标记出来的可疑项目,要么就亲自上网搜索相关内容,确定扫描结果不是误报。另外,卸载GMER也挺麻烦的,需要用户输入如下命令:
· Start C:\WINDOWS\gmer_uninstall.cmd script and reboot.
Greatis公司的UnHackMe
UnHackMe 是一款专用的rootkit清理工具,可以清理大部分简单的rootkit以及部分顽固的rootkit。UnHackMe的界面相当直观,并且可以方便的设置为后台运行。不过UnHackMe并不是免费软件。用户可以试用一个月,之后如果想继续使用,就要支付19.95美元购买该软件了。
这几周我一直在试用UnHackMe,并且一直在研究它的技术细节 。实际上这款软件是由三个独立程序组成的:
· UnHackMe4– 检测隐藏的服务注册表项,进程,服务,以及驱动程序。采用UnHackMedrv.sys 内核驱动。
· Partizan– 监视Windows 启动进程。
· Reanimator– 通过Greatis程序和特征库检测和删除 木马、间谍软件、广告软件。
在我看来, UnHackMe非常适合那些希望软件完全自动化,并且能够比较有效的清理rootkit的用户。UnHackMe目前的问题在于知名度还不够大,不过CNET已经提供了该软件的下载服务。
手动方式
正如我先前提到的,采用软件清理rootkit虽然简单,但是存在扫描遗漏的问题。TechRepublic都提供了手动清除rootkit的方法,这些方法具有较高的成功率,但是并不是人人都适用。手动清除rootkit需要完全人工操作,对操作人员的操作系统技能有相当高的要求。不过就算你不想采用手动方式清除rootkit,学习一下总是没有坏处的:
1. 首先打开 Process Explorer (进程管理软件)找到可疑进程并将其终止,但是不要删除这个进程。
2. 运行一个自己选定的恶意软件扫描程序,由于可疑进程已经被终止,因此扫描程序有很大可能性会发现这个进程。
3. 使用 AutoRuns 检查非正常的服务,驱动DLL以及进程。
4. 记下任何可疑的进程位置和名称。
5. 在互联网上搜索相关进程的信息,如果确认是恶意软件,进一步查找它的专杀工具。
如果你对杀毒软件的工作比较了解,会发现上面介绍的手动方式和软件的自动方式非常相似。两者都是试图抓住操作系统的两个状态,即系统实际开启了哪些进程,以及系统打算开启哪些进程
总结
清理顽固的恶意软件和rootkit并不是一件易事,对此我深有体会。正因如此,我在研究了数个小时后,仍然觉得有关这一主题的文章难以下笔。因为看上去能否清除rootkit并没有一个明确的结论。
我觉得如果写一篇针对某个rootkit的文章反而更好写。不过由于rootkit的不断进化以及开发人员的修改,这样的文章反而没有什么价值。因此我希望通过这篇文章提高广大读者对rootkit的认识以及应对rootkit的能力。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。