2008-05-03

盯着夫人看

今天在家看杂志,杂志上有美女。夫人行过来,说:“少看美女”。我说:“那我看帅哥”。夫人说:“帅哥也不行”。那我说:“那我只看丑女行不?”夫人首肯。于是,我盯着夫人的脸看,夫人怒而打之。

目前杀木马的手法

经过木马初期极简单的伪装、存活手段后,如今的木马越来越复杂,越来越狡猾,生存能力大为提高,原来对付它的一些手段相继失效。木马日益从单独可执行文件转向进程注入,从单文件向双文件、多文件过渡,技术含量高的还有 RootKit,使得被发现的难度日益提高,杀除难度也是如此。单文件运行的进程要中止很容易,而一旦扯到多进程互相监控、注入到系统进程里的线程、注册表多处实时监控,就十分棘手,因为手的速度再快,总快不过电脑。良心好一点的十秒钟刷新一次,良心大大坏掉的一秒种刷新一次,不但加重了系统负担(系统资源占用上升也是判断木马的一个标志之一),更给杀除它带来很大困难。不借助任何专杀工具(因为有时候实在无法判断是哪种恶意程序,现在的恶意程序实在太多,而且并不是随时都有网络连接可以提供),不依靠任何杀毒软件(这玩意儿并不可靠,有时还是造成系统问题的罪魁祸首,比如2008年4月28日的瑞星误杀事件),真的就无法手工杀除这种木马了吗?答案当然是否定的。

首先我要介绍的神兵利器是微软官方推荐的 autoruns 工具。这个软件是 sysinternals 工具包内容之一,它的下载地址是 http://download.sysinternals.com/Files/SysinternalsSuite.zip 。里面的 procexp(简称 PE)经常和它搭配使用,但随着木马独立运行文件越来越少、线程注入系统进程和 RootKit 越来越多,PE 已日益不能满足工作需要,这里就不说了。autoruns 是一款看系统启动自动加载内容的软件,从各个角落,包括“程序”的“启动”,注册表的“run”,服务,IE 的加载项,驱动,把系统启动时会自动加载的内容全都列出来供您过目。这些并不是最高境界,它还可以通过数字签名来验证文件是否是里面标示的公司的原厂出品,这在判断有些冒充微软公司出品的文件时很有效。当然,大多数木马文件是不屑于在文件里加上公司标识的。

在菜单“Options”、“Verify code signature”上打上勾,再刷新一下,这时列出来的加载项的“Pulisher”一列的公司名前,会加上“Verified”或“Not verified”。这样,在查找加载项目时,只要关注于没有通过验证或根本没有公司名的文件即可。如果在上面“Options”菜单里选中“Hide Signed Microsoft Entris”把所有通过验证的微软项目都去掉,那就更方便了。当然,并不是只要是微软通过验证的项目就一定安全,比如,可以通过 rundll32 来加载链接库文件,而 rundll32 是微软官方提供的。

通过经常使用这个软件,您可以对系统中正常加载的项目有个比较精确的了解,这样在判断是否是新出现的文件、是否是恶意文件时会有很大帮助。好,所有的准备工作都做好了,所有的恶意文件都被你定位,这时该怎么办?当然是删除文件,删除注册表项。这时就会遇到上文讨论过的现象:所有的文件(前两次杀木马时系统中这样的文件都超过十个)都互相监控,一旦中止并删除一个会被立即补上并立即恢复活动状态,而注入系统进程的链接库文件用常规手段根本无法灭活,用 unlocker 会导致系统关键进程崩溃;所有注册表中关于恶意程序的项目被实时监控,一旦删除会被立即恢复。这时,你想到什么主意没有?

在介绍杀木马之前,先介绍一下 XP 系统的一个特性:无论是程序文件,还是链接库文件,在处于活动时不能被删除(废话),但可以改名。这时就方便了。我是这么操作的:找到文件,对文件名缓慢点两下进入改名状态,先复制原文件名,然后再把文件名改成随便什么名字,我一般是将其扩展名删除;然后点击“文件”、“新建”、“文件夹”,然后把新建的文件夹命名为复制下来的名字。这样,恶意文件仍在运行,但它不知道已经被注销户口并被一个文件夹占了位置,因为在进程表中它的名字并未改变。如此,将所有找到的恶意文件全部进行改名处理(一定要找到所有启动文件,这点很重要)。为确保恶意文件在关机时不会检测文件名(我没遇到过,但不保证没有),这时使用突然死亡法——拔去电源。不要怕,只要你当时没有进行大规模磁盘写操作,一般来说没有问题。然后,重新启动。如果一切顺利,你会发现所有的木马都处于沉默状态——它们都睡着了,因为所有注册表中的启动项指向的都是文件夹,而文件夹是不能运行的。这时找到它们的尸体——那些被去掉扩展名的文件,你爱怎么处理就怎么处理吧:可以直接删除,也可以发给杀毒软件公司,如果你良心坏一点,可以保存下来害人——当然,我是十分反对的。验证一下,把刚才建的那些文件夹都删掉,看看会不会再出现同名文件。如果没有再出现,并且重启后仍然没有出现,那么恭喜你,宰马成功。

杀马并不以马死为结束,这时要进行善后工作:检查防火墙状态,确保没有被打洞;检查组策略,看看空用户名禁止远程登录,确保被启用;检查系统中没有多余的用户名,已有的用户没有被提权;以及其他一些我现在没有想到而你想到的。