一、对木马使用花指令
花指令就是指程序中包括了跳转指令及一些无用的指令在内的汇编指令段,有加区加花和去头加花两种,通常是用来改变程序的入口点或打乱整个程序的顺序。而一些杀毒软件在进行木马查杀工作时,都是按从程序的开头到结尾的顺序进行检测的,以此来找到与病毒库中某一特征码相似的特征。甚至一些杀毒软件就是以程序的入口点作为特征码的。因此,如果木马的程序顺序被打乱,或者程序的入口点被修改,那么,杀毒软件也就很难检测出它来,于是就达到了隐身的目的。能完成这些工作的,就是在木马程序中使用花指令。
要在木马程序中使用花指令,可以有两种方式,一种是使用互联网上现成的,另一种是攻击者自己编写或者使用花指令生成软件。由于互联网上现成的花指令同样会被杀毒软件厂商所得到,因此不会有什么好的保护效果。对于有一定汇编技术的攻击者来说,就会使用自己编写花指令的方式,还可以使用一些花指令生成软件,如超级加花器和花蝴蝶等。
正是由于给木马添加不易被检测到的花指令需要高超的编程技术,也就很少有普通的攻击者使用这种方式,至少在没有陌生的花指令生成软件出现之前,是不太喜欢使用它的。
并且,由于对木马使用花指令也只是对其可执行文件本身有效,当其加载至内存后,这种隐身方式将失去作用。因此,使用具有内存查杀功能的杀毒软件,就能够非常容易地检测到只使用这种隐身方式的木马病毒的。
在当前具有内存查杀功能的安全软件之中,查杀花指令保护木马比较好的就是EWIDO了。也可以使用Ollydbg程序先将木马加入到内存中后再查杀。同时,还可以使用像“花指令清除器”一类的花指令检测软件,来识别和除去花指令。
二、终止安全软件进程
现在,几乎所有的木马都在使用一种十分有效的、躲避安全检测软件的方法,就是终止系统中所有安全软件的进程,从而达到了不会被查杀的目的。
而要实现这种功能,只要木马能够枚举系统中的所有正在运行的进程,然后从中找到匹配的安全软件进程名,通过发送一个终止进程的Windows消息给它,就可以结束这些正在运行的安全软件。
还可以通过挂起安全软件的所有子进程,以此来冻结其父进程。或者通过查找并修改安全软件已经加载在内存中的代码,让安全软件的进程崩溃而退出运行。
有时,为了防止由于终止安全软件进程而引起计算机用户的注意,会在系统任务栏的托盘区产生与安全软件图标相似的图标来欺骗用户,以此来延长在系统中存活的时间。所有的种种,都是为了达到不被查杀的目的。
要防范这种方式的木马攻击。首先,杀毒软件等安全软件本身要已经具有忽略来自系统结束任务消息的功能,以防止通过Windows消息来结束安全运行进程的攻击。另外,最好的方法就是系统用户自己在平时使用计算机过程当中,要不断查看系统中安全软件或其它进行的运行情况,一旦发现原本开机启动的安全软件没有运行或启动不了,就应该怀疑是否已经有木马在系统中运行了。此时,应当检测系统中所有正在运行的进程是否有可疑的,例如使用IceSword和ProceXP这两款软件来检测,或通过查看系统日志来发现可疑问题。
三、修改安全软件的配置文件
每一个安全软件,都会将它的安全设置放入到一个配置文件当中,然后在每次系统启动时读取这个文件,并以这个文件中的设置内容来设置保护方式。这些配置文件,对于单机版的安全软件来说,一般都是保存在用户系统硬盘当中的某个位置的。因此,在系统中运行的木马程序也是可以获得这些安全软件的配置文件的,然后就可以对这些文件中的配置内容进行修改。例如修改防火墙对所有的程序都放行,修改杀毒软件在任何时候都不进行系统扫描检测。这样就能躲避杀毒软件,又能穿过防火墙与攻击者进行网络连接。
但是,对于这些配置文件,安全软件也是会对它们进行加密的。因此,要修改这些配置文件也不是那么容易就实现的。不过,木马还是会通过一些方法来完成修改安全软件配置文件的任务的。例如进行反向连接,然后由攻击者通过远程控制修改安全软件的设置。还可以通过对安全软件已经加载到内存中与配置相关的位置进行填充或修改等等。尤其是对于哪些将安全设置项写入到注册表中的,要修改就更加容易一些了。不过,攻击者不会常用这种方式,毕竟实现起来比其它要麻烦得多。
要防止这种木马攻击,使用主动防御型杀毒软件(如Mcafee)和防火墙( 如Tiny Firewall),能达到一定的预防效果。还可以使用Filemon和Regmon软件对系统文件和注册表进行监控,以此来提醒用户有某种非法文件修改行为在发生,以及哪些文件和注册表项被修改了。