特洛伊木马病毒的隐藏技术李军丽云南大学信息学院 云南 650031摘要:隐藏技术是木马的关键技术之一,其直接决定木马的生存能力。
本文对木马病毒的隐藏技术从几个方面进行了研究,并对木马病毒的预防和检测提出了自己的一些建议。
关键词:木马病毒;网络安全;隐藏技术0 引言随着计算机网络技术的迅速发展和普及,人们也开始面临着越来越多的网络安全的隐患,特别木马对网络用户的网络数据和隐私安全产生了极大的威胁;据调查,目前在国内,68.26%的用户怀疑受到过木马病毒的攻击,63%的电脑用户曾受到过木马病毒攻击。
隐藏技术是木马的关键技术之一,其直接决定木马的生存能力。
本文对木马病毒的隐藏技术从几个方面进行了研究,并对木马病毒的预防和检测提出了自己的一些建议。
1 木马的隐藏技术木马区别与远程控制程序的主要不同点就在于它的隐蔽性,木马的隐蔽性是木马能否长期存活的关键。
木马的隐藏技术主要包括以下几个方面:本地文件隐藏、启动隐藏、进程隐藏、通信隐藏和内核模块隐藏和协同隐藏等。
1.1 本地文件伪装隐藏木马文件通过将木马文件设置为系统、隐藏或是只读属性来实现木马问的隐藏,或是通过将木马文件命名为和系统文件的文件名相似的文件名,从而使用户误认为系统文件而忽略。
或是将文件的存放在不常用或难以发现的系统文件目录中,或是将木马存放的区域设置为坏扇区。
1.2 木马的启动隐藏方式(1) 本地文件伪装最常用的文件隐藏是将木马病毒伪装成本地文件。
木马病毒将可执行文件伪装成图片或文本----在程序中把图标改成WINDOWS的默认图片图标,再把文件名改为.JPG.EXE。
由于WINDOWS默认设置是不显示已知的文件后缀名,文件将会显示为.JPG.,不注意的人一点击这个图标就在无意间启动了木马程序。
(2) 通过修改系统配置来实现木马的启动隐藏利用配置文件的特殊作用,木马很容易就能在大家的计算机中运行。
像Autoexec.bat和Config.sys。
特别是系统配置文件MSCONFIG.SYSMSCONFIG.SYS中的系统启动项——system.iniwindow.ini是众多木马的隐藏地。
Windows安装目录下的system.in的[boot]字段中,正常情况下为boot=“Explorer.exe”,如果后面有其他的程序,如这样的内容,boot=“Explorer.exe file.exe”,这里的file.exe,可能就是木马服务端程序。
另外,在System.ini中的[386enh]字段,要注意检查在此段内的driver=路径\程序名。
这里也有可能被木马所利用。
再有System.ini中的[drivers],[drivers32],[mci]这3个字段,也是起到加载驱动程序的作用,因此也是增添木马程序的好场所。
(3) 利用系统路径遍历优先级欺骗Windows系统搜寻一个不带路径信息的文件时遵循一种“从外到里”的规则,它会由系统所在的盘符的根目录开始向系统目录深处递进查找,而不是精确定位;这就意味着,如果有两个同样名称的文件分别放在“C:\”和“C:\WINDOWS”下,WINDOWS会执行C:\下的程序,而不是C:\WINDOWS下的。
这样的搜寻逻辑就给入侵者提供了一个机会,木马可以把自己改为系统启动时必定会调用的某个文件里,并复制到比原文件要浅一级的目录里,WINDOWS就会想当然的执行这个木马程序。
要提防这种占用系统启动项而作到自动运行的木马,用户必须了解自己机器里所有正常的启动项信息,才能知道木马有没有混进来。
(4) 替换系统文件木马病毒就利用系统里那些不会危害到系统正常运行而又经常会被调用的程序文件,像输入法指示程序INTERNAT.EXE。
让动态链接库可以像程序一样运行的RUNDLL32.EX等。
木马程序会替换掉原来的系统文件,并把原来的系统文件名改成只有它自己知道的一个偏僻文件名。
只要系统调用那个被替换的程序,木马就能继续驻留内存了。
木马作为原来的程序被系统启动时,会获得一个由系统传递来的运行参数,木马程序就把这个参数传递给被改名的程序执行。
1.3 进程隐藏进程隐藏有两种情况,一种隐藏是木马程序的进程仍然存在,只是不在进程列表里;采用APIHOOK技术拦截有关作者简介:李军丽(1980-),女,云南大学信息学院05级硕士研究生,研究方向:计算机网络安全,嵌入式系统。
系统函数的调用实现运行时的隐藏,替换系统服务等方法导致无法发现木马的运行痕迹。
另外一种方法是木马不以一个进程或者服务的方式工作。
将木马核心代码以线程或DLL的方式插入到远程进程中,由于远程进程是合法的用户程序,用户又很难发现被插入的线程或DLL,从而达到木马隐藏的目的。
在Windows系统中常见的真隐藏方式有:注册表DLL插入、特洛伊DLL、动态嵌入技术、CreateProrocess插入和调试程序插入等。
1.4 内核模块隐藏有些木马在运行时能够删除自身启动运行及存在的痕迹,当检测到操作系统重新启动再重新在系统中设置需要启动自身的参数,这类木马存在的问题:当系统失效时(如断电、死机时)无法再次恢复运行。
内核模块隐藏,使木马程序依附到操作系统部件上,或成为操作系统的一部分。
1.5 原始分发隐藏软件开发商可以在软件的原始分发中植入木马。
其主要思想是:(1)修改编译器的源代码A,植入木马,包括针对特定程序的木马(如login程序)和针对编译器的木马。
经修改后的编译器源码称为B。
(2) 用干净的编译器C对D进行编译得到被感染的编译器D。
(3) 删除B,保留D和A,将D和A同时发布。
以后,无论用户怎样修改login源程序,使用D编译后的目标login程序都包含木马。
而更严重的是用户无法查出原因,因为被修改的编译器源码B已被删除,发布的是A,用户无法从源程序A中看出破绽,即使用户使用D对A重新进行编译,也无法清除隐藏在编译器二进制中的木马。
相对其它隐藏手段,原始分发的隐藏手段更加隐蔽。
1.6 通信隐藏主要包括通信内容、流量、信道和端口的隐藏。
木马常用的通信隐藏方法是对传输内容加密,隐藏通信内容。
采用网络隐蔽通道技术隐藏通信信道。
在TCP/IP协议族中,有许多信息冗余可用于建立网络隐蔽通道。
木马可以利用这些网络隐蔽通道突破网络安全机制,比较常见的有:ICMP畸形报文传递、HTTP隧道技术,自定义TCP/UDP报文等。
采用网络隐蔽通道技术,如果选用一般安全策略都允许的端口通信,如80端口,则可轻易穿透防火墙和避过入侵检测系统等安全机制的检测,从而具有很强的隐蔽性。
通信流量的隐藏,当存在其他通信流量时,木马程序也启动通信。
当不存在任何其他通信流量时,木马程序处于监听状态,等待其他进程通信。
有些木马为了能更好地实现隐藏,达到长期潜伏的目的,通常融合多种隐藏技术,如采用多线程方式,线程间相互实时保护,一旦一方被删除,另一方可以通过备份恢复并远程启动。
或是通过一个木马程序(称为“主木马”),在局域网内部繁殖生产“子木马”,统一协调完成工作。
各子木马根据主木马分派的任务,各自负责一独立任务。
达到相互之间的保护,同时可以分散传输数据量,达到目的地址接受数据,增大追查源地址的难度。
而且主木马和子木马寄生于不同主机,并且相互联系,增强了木马的抗查杀的能力。
2 木马病毒的检测及清除方法2.1 本地隐藏方式木马的监测与清除本地隐藏的木马比较容易发现。
我们可以通过以下几种方法来查杀。
(1)设置文件的查看方式通过设置文件的查看方式将文件的扩展名显示出来,查看是否存在多扩展名的程序。
同时检查系统文件是否处于正常的系统文件夹内。
如果发现存在多个同样的系统文件,那么就要小心查看是否为病毒文件。
可先做备份,然后再将可疑文件删除。
(2)检查注册表和系统配置文件对于通过修改系统配置文件和注册表启动项来达到自启动的木马,需要常查看容易被修改的那些键值,看是否有新的程序加入。
如果有异常程序添加进了启动项,如果有异常程序,则可以先将系统配置文件备份。
然后,根据文件路径找到可疑文件源,查找注册表中所有相关项,删除源文件并同时删除注册表中的启动项和所有相关信息。
(3)检查HKEY——CLASSES——ROOT项检查HKEY——CLASSES——ROOT项下每类文件所对应的打开程序是否异常,如果发现异常则可能是系统进了木马。
特别是HKEY——CLASSES——ROO\EXEFILE\SHELL\OPEN\COMMAND,是否被修改。
如果有木马修改了该项,则只需要查看EXE文件的打开方式被指向了什么程序,立即停止这个程序的进程,如果它还产生了其他的木马文件的话,也一起停止,然后在保持注册表编辑器开启的情况下(否则所有程序都打不开了),删除掉所有木马文件,把EXEFILE的打开方式项“HKEY——CLASSES——ROOT\EXEFIEL\SHELL\OPEN\COMMAND”改回原来的”%1”%*”即可。
2.2 替换系统文件或是远程线程注入木马的检测与清除对替换了系统文件或是远程线程注入木马的检测与清除,需要我们首先找出被替换的是哪些系统文件。
保留一份系统文件备份,特别是重要的系统程序和所有的DLL链接库文件。
如果知道病毒替换了系统程序,则只需要找出病毒文件,从系统盘或备份文件复制一个覆盖病毒文件即可。
如果是有DLL 木马线程注入,调用系统进程启动。
则可以通过开始->运行输入cmd,打开命令窗口,转到windows\system32下,输入命令dir *.dll >x:\dllback.txt,对系统DLL文件备份,在命令窗里输入命令fc dllback.txt xitongd.txt > x:\qubie.txt ,将DLL[下转41页]通信主机只能看到本地地址和区域转交地址,无法看到本地转交地址。
除了在路由代理和移动主机本身所在的链路上,移动主机的位置无法被获知,本地转交地址出现在该链路的隧道头中。
管理地址的技术通常也称为局部移动性管理,因为路由代理域中的移动性管理是相当严格的。
HMIPv6就是移动IPv6局部移动性管理协议的一个实例。
在HMIPv6中,路由代理称为移动锚点(MAP)。
图2描述了HMIPv6如何隐藏移动主机的位置信息。
图2 位置隐私协议HMIPv6路由代理的另一个优势是可以为管理绑定更新时间和信令负荷提供额外效率。
当移动主机进入路由代理的覆盖域时,它必须发送一条绑定更新给路由代理。
但是,如果使用了路由最优化,每次当移动主机运动至新子网时,绑定更新必须发送给本地代理和所有的通信主机。
发送绑定更新的开销是相当大的,尤其是需要迂回路由安全协议时或接收方位于另一个大陆时。
路由代理的主要缺点是他们在路由基础设施中引入了单点故障。
路由代理包含了所有移动主机的绑定信息,这些移动主机横跨宽的地理区域或大型组织。