3.4 木马及其破解

3.4.1 木马概述

“特洛伊木马”简称“木马”,这个名称来源于希腊神话《木马屠城记》。完整的木马程序一般由两个部分组成:一个是服务器程序,一个是控制器程序。木马的工作原理就是在被害者的计算机上安装木马的服务器端程序,然后入侵者利用客户端程序通过网络控制被害者的计算机、为所欲为,此时用户计算机上的各种文件、程序和账号、密码等信息就毫无安全性可言了。

3.4.2 木马的破解方式

木马是随计算机或操作系统的启动而启动并掌握一定的控制权,其启动方式可谓多种多样,令人防不胜防。为了对木马进行破解,就要阻止木马的启动。下面就对木马常见的启动方式及其破解方式进行介绍。

1. 通过“开始”→“程序”→“启动”

很多正常程序都通过开始菜单的启动项来启动的,比如QQ等,但木马却很少用它。因为启动组的所有程序都会出现在“系统配置实用程序”(msconfig.exe,以下简称msconfig)中。事实上,出现在“开始”→“程序”→“启动”中的木马很容易引起被害者的注意,所以采用这种启动方式的木马并不多。

破解方法:查看“开始”→“程序”→“启动”,如有可疑程序,右击选择“删除”命令将其删除。

2. 通过Wⅰn.ⅰnⅰ文件启动(如Asylum)

同开始菜单的启动项一样,也是从Windows 3.2开始就使用的方法。在Windows 3.2中,Win.ini文件相当于Windows 9x中的注册表,在该文件中的“[Windows]”域中的load和run项会在Windows启动时自动加载运行,这两个项目也会出现在msconfig中。而且,在Windows 98安装完成后它们就会被Windows的程序使用了,也不是很适合木马使用。不过相对通过开始菜单的启动组来启动的方法来说,这种方法也算是“高明”了一点。

破解方法:编辑Win.ini文件,删除load和run后面的可疑语句。

3. 通过注册表启动

(1)通过HKEY_CURRENT_USER \Software\ Microsoft \ Windows \ CurrentVersion\Run,HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run和RunServices(如BO 2000,GOP,NetSpy,IE thief,冰河)。

通过注册表加载是木马最常用的方法,一旦提到木马,就会让人想到注册表中的这几个主键,而木马通常会使用最后一个。使用Windows自带的程序msconfig或注册表编辑器(regedit.exe,以下简称regedit)都能将其轻易地删除,所以这种方法并不十分可靠。

不过,可以在木马程序中加一个时间控件,以便实时监视注册表中自身的启动键值是否存在,一旦发现被删除,则立即重新写入,保证下次Windows启动时自己还能被运行。这样木马程序和注册表中的启动键值之间形成一种互相保护的状态。木马程序未中止,启动键值就无法删除(手工删除后,木马程序又会自动添加上),相反,不删除启动键值,下次启动Windows还会启动木马。

破解方法:首先以安全模式启动Windows,这时Windows不会加载注册表中的项目,因此木马不会被启动,相互保护的状况也就不攻自破了。此时,就可以删除注册表中的键值和相应的木马程序了。

(2)通过HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce,HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce和HKEY_LOCAL_MA-CHINE\Software\Microsoft\Windows\CurrentVersion\ RunServices Once(如Happy99)。

用这种方法的木马并不多,不过其隐蔽性比上面方法相对要好,其内容不会出现在msconfig中。在这个键值下的项目和上一种相似,会在Windows启动时启动,但Windows启动后,该键值下的项目会被清空,因而不易被发现。为了能发挥效果,木马启动成功后会再在这里添加一次。还有另外一种方法,不是在系统启动时添加而是在退出Windows时添加,这要求木马程序本身要截获Windows的消息,当发现关闭Windows消息时,暂停关闭过程,添加注册表项目,然后才开始关闭Windows,这样用regedit也找不到它的踪迹了。这种方法也有个缺点,就是一旦Windows异常中止(对于Windows这是“家常便饭”),木马也就失效了。

破解方法:对于前一种方法可以直接在regedit中将它删除,后一种则可进入安全模式,然后删除。

注意:

另外使用这三个键值并不完全一样,通常木马会选择第一个,因为在第二个键值下的项目会在Windows启动完成前运行,并等待程序结束后才继续启动Windows。

4. 通过Autoexec.bat、wⅰnstart.bat或confⅰg.sys文件

严格来说,这种方法并不适合木马使用,因为上述文件必须在Windows启动前运行(即在DOS引导阶段),这时32位木马也失去了意义,而且现在Windows 2000/XP等都不支持这些文件。不过,很多人还是会在上面bat文件中加入类似“Deltree C:\*.*”和“Format C:/u”之类的命令行,这样用户的计算机将会很危险。

破解方法:经常查看这些文件内容,发现可疑的语句就删除掉。

5. 通过System.ⅰnⅰ文件(如尼姆达)

在System.ini文件的“[Boot]”节下的Shell项的值正常情况下是“Explorer.exe”,但有很多人却在“Explorer.exe”后加上木马程序(常包括完整路径),这样Windows启动后木马也就随之启动,名噪一时的尼姆达病毒就是采用这种方法。

破解方法:使用进程查看工具中止木马,再修改Shell项Explorer.exe后面的语句。同时,监视system.ini文件的任何变化。

6. 通过某特定程序或文件启动

(1)寄生于特定程序之中。即木马和正常程序捆绑,程序在运行时,木马程序先获得控制权或另开一个线程以监视用户操作,截取密码等,这需要了解PE文件结构和Windows底层知识。但随着“病毒捆绑机”一类特殊软件的出现,“制造”出这样的木马并不是很难的事情。

破解方法:升级杀毒程序,并查杀木马。

(2)将特定的程序改名。这种方式常见于针对QQ的木马,例如将QQ的启动文件QQ2000b.exe改为QQ2000b.ico.exe(Windows默认是不显示扩展名的,因此它会被显示为QQ2000b.ico,而用户会认为它是一个图标),再将木马程序改为QQ2000b.exe,此后,用户运行,实际是运行了木马,再由木马去启动真正的QQ,这种方式实现起来要比上一种简单得多。

(3)文件关联。通常木马程序会将自己和TXT文件或EXE文件关联,这样当用户打开一个文本文件或运行一个程序时,木马也就神不知鬼不觉地启动了。通过这种方式启动的木马其实很聪明,因为它可能在系统中复制了自身的多个副本,只要没有彻底删除它,它都可能随着某类特定文件的打开而启动。

破解方法:这类通过特定程序或文件启动的木马,发现比较困难,但查杀并不难。一般只要删除相应的文件和相关注册表键值即可。

3.4.3 木马终结者

上面介绍的木马的破解方式都需要用户自己手工进行操作,其实有很多现成的软件工具可以帮助用户完成对木马的破解,而且更专业、功能更强大。其中木马终结者就是这类工具中很有名的一个。下面对木马终结者的使用进行简单的介绍。

木马终结者的原理十分简单,因为木马都要打开被害者主机的某一个或者某几个端口,用来和攻击者的客户端进行通信,所以木马终结者使用的查杀木马的方法是通过对计算机联网端口的扫描进行判断,并不是常规的杀毒软件采用的查杀方法。

木马终结者的使用十分简单,其主要功能就是扫描端口。启动程序之后就会自动开始扫描端口,当扫描到被使用的端口及其类型后将在列表中列出,并且出现提示音,提示音可以自己设置。

值得注意的是,为了扫描结果的准确性,在扫描的过程中不要运行其他访问网络程序,如IE、QQ等,因为这些程序也使用端口,而木马终结者并不能分辨出这些是程序使用的端口还是黑客病毒使用的端口,而是采取统一列出的方式,会给用户的判断带来负面影响。而如果不使用这些合法的程序,那么木马终结者扫描到的结果就很容易判断,这些没经过用户许可的端口访问很可能就是木马了。这时,用户只要关闭该可疑的端口即可。

注意:

此时尽管木马软件的服务端并未真正从用户计算机上删除,但是关闭了其与客户端的通信端口,木马服务端也就失去其破坏能力了。

木马终结者的使用就是这样简单,但是需要注意的是,在使用木马终结者禁用了某个端口之后,可能会出现如下情况:

(1)系统正常启动,一切工作正常:说明用户的判断和修改是正确的。

(2)提示错误信息:说明用户的判断和修改是错误的,很可能错误地关闭了系统必要的端口。可采用如下方法解决:依次单击“开始”→“运行”,输入regedit打开注册表编辑器,找到“HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\ CurrentVersion\Run

Services”分支,把里面所有名称和键值复制到“HKEY_ LOCAL_MACHINE\Software\

Microsoft\Windows\CurrentVersion\Run”里面(仅需改变启动顺序而已),再重新启动,即可删除错误。

(3)某个网络软件使用不正常:说明用户的判断和修改是错误的,很可能禁用了合法软件的访问端口,此时可以采用如下方法判断:退出木马终结者,然后再次启动出现问题的软件,如果此时这个软件可以正常使用,证明用户在使用木马终结者时错误地把该软件使用的端口当做黑客木马使用的端口关闭了,只要恢复该软件使用的端口即可。