网络安全 频道

打杀恶意盗贼 阻击驱动木马

在以前的文章中我们曾经介绍了驱动木马的由来,以及如何判断您的电脑是否已经驱动木马攻陷,详情请见(如何识别驱动木马:http://publish.it168.com/2007/0622/20070622006401.shtml)。而只识别驱动木马并没有达到我们最终的目的,让我们开始这场惊心动魄的木马阻击战吧!
    一、验明正身:
    如果用户的机器出现了无法删除的启动项,您需要重新启动计算机,进入安全模式里,并尝试删除这个项目一次,观察它是否会立即再度出现,或者在重启系统后出现,如果不幸它仍然无法删除,“DLL线程木马实时重写启动项”的特征就确定无疑了,你面对的是不折不扣的驱动木马。如果在安全模式里它无法立即恢复,然而到了正常模式它又出现,这就是一个早期的普通驱动木马,在安全模式里可以轻易的将其狙杀;如果安全模式里它仍然保持活动状态,那么这就是一个相当棘手的高优先级驱动木马了。
    二、阻击开始:
    方案一
    当遭遇驱动木马这种高级对手时,只要是未涉及驱动层的任何环境检测工具都是无能为力的,必须使用具备驱动检测的安全工具,在此我向您推荐国产的IceSword或超级巡警专业版。这两种软件在很多网站都可以找到,有需要的朋友可以上网搜索一下,这里提供一个链接http://images.ttian.net/2006/10/IceSword120_cn.zip。这个版本是硬盘版的,不需要安装,解压缩后就可以运行,IceSword运行后主界面如图1 。

IceSword主界面图
 点击主界面中左侧“查看”中的“进程”,观察里面是否存在被标记为红色的进程,若有便是被驱动木马保护的用户层执行体,尝试用右键将其关闭,然后立即刷新一次进程,观察它是否再次出现,即使它再次出现也不要慌张,这是只是判断驱动木马对其保护到什么级别而已,记录下它的具体存放路径,找到“查看”列表中的“SSDT”并选择,将整个列表遍历一遍,将所有标记为红色的项目所在的模块都记录下来。接着需要重启计算机并进入“基于命令提示符的安全模式”,在命令提示符界面下分别依次输入以下命令:
    cd %windir%\system32\drivers\                //进入系统驱动文件目录
    Dir   文件名 /a                           //显示在SSDT中为红色的文件
    Attrib文件名 –h –r –s –a               //修改驱动文件的各种属性
    Del  文件名                              //删除文件
    经过以上的步骤,就把驱动木马的驱动文件本体消灭了,但是事情到这一步还未结束。接下来,需要确认一下驱动文件是否真的被删除,再次输入:
    Dir文件名 /a                             //再次确认驱动木马是否存在
    如果系统返回“文件未找到”的提示,驱动文件才已经被彻底清理掉了。好了,还记得在IceSword“进程”里列出的红色标记文件名吗?这些文件是驱动木马的用户层,如果将其残留,重启系统后它们就会再次释放驱动木马,我们就前功尽弃了,所以也要将其斩除。使用上面的方法进入相应位置将其删除,只要把文件名和使用cd进入的目录名换为具体的名字就可以,例如删除位于C:\Program Files\Common Files\UPDATE目录里的用户层木马update.exe,需要以下3个命令:
    Cd “C:\Program Files\Common Files\UPDATE”
    Attrib update.exe –h –r –s –a
    Del update.exe
    注意,在命令提示符里操作带空格的目录和文件时,需要用英文双引号将其引用,否则会无法达到操作目的。接着输入命令msconfig,启动系统配置实用程序,在Windows XP里许多用户会收到系统返回的信息说“msconfig 不是内部或外部命令,也不是可运行的程序”,这是因为微软把它藏到非常规目录里去了,必须输入完整的路径信息才能访问:
%windir%\PCHealth\HelpCtr\Binaries\MSConfig.exe成功运行这条命令后会出现系统配置实用程序,在它的“启动”里取消掉那个会自动恢复的项目,确定退出,不要选中“立即重启计算机”,立即再次进入msconfig查看启动项是否又恢复了,通常情况下它已经不会恢复了,这时候我们就可以重启电脑进入正常模式,再用IceSword查看,大部分已经恢复正常(无红)了,至此驱动木马已被歼灭。
 阻击方案二
    还有一种更简单的方法,可以直接使用超级巡警专业版(AST)直接在Windows里进行简单快捷的查杀,只需要启动AST,切换到高级界面,然后点击“SSDT”列表,在里面点击鼠标右键,在出现的菜单里选中“仅显示被Hook的函数”,AST就会自动过滤正常的系统函数,用户可以方便快捷的查阅具体什么函数被驱动木马给拦截了,通常驱动木马最喜欢拦截以下函数:
    NtDeleteKey
    NtEnumerateKey
    NtQueryKey
    NtSetValueKey(注册表API)
    NtQueryDirectoryFile
    NtDeleteFile(文件操作API)
    NtOpenProcess
    NtTerminateProcess(进程操作API)
    拦截了这些函数,它们就可以达到无法查看、无法删除、无法终止的目的,这样也正是我们取消不了启动项的原因,因为相关的函数已经被拦截了,我们的操作实际上根本就没有影响到这些木马的一切。
    但是如果用户遇到的是改良型的高优先级木马或者感染了不止一个驱动木马时,问题就会变得棘手起来,这也是为什么一开始我并没有直接介绍使用AST查杀的原因,早些时候的AST在遇到这种状态的情况下,会无法正常搜集到被Hook的SSDT,而显示“正常”信息,但是用IceSword却能发现异常的Hook数据,在这种情况下由于AST存在bug,用户无法通过它来发现驱动木马的踪迹,如果用户不幸遇到这种驱动木马,他的查杀过程将会变得复杂起来……
    三、高手过招:
    在上述的步骤里我们可以查杀一般的在安全模式里无法启动的驱动木马,然而如果用户在安全模式里执行dir操作也无法列出记录下来的驱动文件名时,问题就棘手了,此时就用户遇到了高优先级驱动木马,它们在安全模式里也能被正常加载并实施保护!遇到这种情况,大部分人只能选择彻底格式化重装系统,就没有其他的方法解决吗?
通常在这种情况下,许多查杀手段都已失效,但是天无绝人之路,利用系统的特性,我们依然可以找到一线生机。
    和前面的步骤一样,首先把检测出来的驱动文件做个记录,然后进入“基于命令提示符的安全模式”里,直到dir的那一步,系统返回“找不到文件”的提示宣布了安全模式下照样运行的驱动木马的存在!此时需要冷静思考,熟悉DOS的朋友也许还记得,并不是只有dir这个命令可以查看文件。输入下面这个命令:
    Type文件名                    //在SSDT中被标记为红色的文件
    此时您会发现,如果这个驱动木马没有猖狂到封锁了某个涉及打开文件的API,用户会发现系统列出了一堆乱码,这个实际上就是驱动木马是否存在的依据!但是如果这时候用户继续执行更改文件属性和删除操作,将会发现一切都是前功尽弃,因为即使你执行了del命令,再次使用type或dir时,它又出现了。这是因为它已经hook了NtDeleteFile这个删除文件的API操作!
四、另类删除
    难道就无法将其删除了吗?答案是否定的,这是需要我们了解Windows系统对于驱动文件的处理特性:当一个驱动例程已经被载入运行后,系统将不会继续锁定它的磁盘文件映射关系,也就是说这个时候无论用户是删除还是重命名驱动文件,都不会影响到当前的系统状态,直到下次重启。
    正是因为这个原因,驱动木马才设法拦截了相关API以保护自身驱动不被删除,即使用户将驱动文件改名,它也会因为检测不到驱动例程文件的存在而立即重新释放一个,这样一来,木马似乎就无敌了。但事实上,要破坏一个文件的方法有很多种,并非是只有“删除文件”这个途径的。配合系统特性,其实我们只需要一条简单的命令就可以破坏驱动木马设下的完美保护,那就是:
Echo XXXXXX > 文件名              //此处的“X”为任意字符
这条命令的作用是简单的在字符界面显示一串用户输入的字符,当它配合管道操作符“>”(英文大于号)使用时,则为将用户要显示的字符直接流入指定的文件里,而“>”为覆盖文件内容,“>>”为追加文件内容,执行完这条指令后我们再次使用type命令查阅木马文件,会发现刚才一大堆混乱的字符已经被“XXXXXX”文字替换了,这样一来,驱动文件本体就被破坏,而由于这个操作未涉及删除文件,被拦截的API并不会对此做出反应。  
    紧接着,立即重启计算机进入“基于命令提示符的安全模式”,然后再次type检查驱动文件的内容是否被恢复,如果仍然保留着我们刚才输入的字符,则说明操作成功,木马的驱动模块已经被破坏了,这时候位于启动项里的文件由于没有驱动保护,也不会被启动,所以我们可以进一步删除这个启动项和指向的文件,然后删除刚才被我们修改的驱动文件。确认没有再次恢复文件后重启计算机再次进入“基于命令提示符的安全模式”,在命令提示符里输入explorer.exe启动Windows图形界面,然后再次运行IceSword检查是否存在另一个红色标记,如果运气不好,用户会发现出现了另一个文件名的驱动,记录下涉及的文件,重启计算机,继续重复刚才的type、echo等操作,直到“SSDT”项目里所有函数都不用红色标记标注出现为止。
    最后重启计算机进入正常模式,再次使用IceSword查看红色标记是否出现,以免漏杀被高优先级驱动木马的“光辉”掩盖的普通驱动木马,这是因为,当多个驱动文件都争取同一个函数拦截操作时,系统是以先后顺序和优先级别判断的,这样就造成了在高优先级驱动木马存在的时候,其它的驱动木马无法分到一杯羹,然而高优先级驱动木马被歼灭后,它们的出头之日就来临了。这时候,直接使用查杀普通驱动木马的方法即可使其全军覆没。
    五、打扫战场:
    查杀完驱动木马后,用户要做的事情还有很多,首先必须使用其他安全工具如“安全卫士”、“瑞星卡卡上网助手”等辅助手段加强扫描一次系统,确认没有被植入其他木马和流氓软件,或者将其清理出系统,还可以使用安全卫士的修复系统漏洞功能打上补丁,至此,我们成功狙杀了驱动木马。
    六、结束语:
    “上帝要让你灭亡,必先让你疯狂!”,在这个越来越疯狂的网络时代,普通网民的网络安全已经得不到保障,有时即使用户安装了正版的杀毒软件也无济于事。因此,应对病毒、木马和黑客攻击等破坏行为始终要以预防为主,而不是亡羊补牢,养成良好的系统使用习惯,经常升级软件、勤打补丁和获得一些安全时讯,从而为您的系统提前打上预防针!
0
相关文章