让病毒无法遁形 文件对比查杀嵌入式木马 | |
---|---|
http://www.sina.com.cn 2006年03月22日 15:00 天极yesky | |
随着计算机的发展,木马技术也在不停的发展,以冰河为首的老一代经典木马已经开始慢慢消失在经典木马行列中,取而代之的则是新一代的嵌入式木马,也就是通常所说的dll型注入式木马,其运用了动态嵌入技术,动态嵌入最常见的是最常见的是钩子、API以及远程线程技术,而现在大多数的嵌入式木马都是运用远程线程技术把自己本身挂在一个正常的系统进程中,通常这一类木马清除起来比较困难。 嵌入式木马之迷 那到底什么是嵌入式dll型木马呢?DLL的代码和其他程序几乎没什么两样,仅仅是接口和启动模式不同,只要改动一下代码入口,DLL就变成一个独立的程序了。当然,DLL文件是没有程序逻辑的,这里并不是说DLL=EXE,不过,依然可以把DLL看做缺少了main入口的EXE,DLL带的各个功能函数可以看作一个程序的几个函数模块。DLL木马就是把一个实现了木马功能的代码,加上一些特殊代码写成DLL文件,导出相关的API,在别人看来,这只是一个普通的DLL,但是这个DLL却携带了完整的木马功能,而dll木马的标准执行入口为dllmain,dllmain包含了木马的运行代码,或者其指向木马的执行模块,在dll木马中通过在另一个进程中创建远程线程(RemoteThread)的方法进入那个进程的内存地址空间被称为“注入”,当载体在那个被注入的进程里创建了远程线程并命令它加载DLL时,木马就挂上去执行了,没有新进程产生,这就是嵌入式dll木马。 因此黑客通常把dll木马注入到一些系统关键进程,如嵌入到ie浏览器,Explorer.exe中,来达到更好的启动和隐蔽自身的目的。如今除了专门的dll木马外,还有许多优秀的木马也可以选择生成一般的exe木马和dll木马2种类型,来提供给用户各种需要,其中的典型的木马是黑洞和灰鸽子,这2款经典之作就支持这2种服务端的生成,其生成的dll木马服务端的稳定性也相当出色,各大杀毒产商都将其列入重点查杀对象。 揪出嵌入式木马 在了解了嵌入式木马的工作原理后,我们应该如何来及时发现和清除这一类木马呢?不管是传统木马还是嵌入式木马,首先我们要了解木马的藏身之地,同传统木马一样system32同样也是嵌入式木马最喜爱的藏身之所,根据这个特点我们在安装好系统和必要的应用程序后,对该目录下的exe文件和dll文件做一个记录,运行CMD--转换目录到system32--dir *.exe>exe.txt & dir*.dll>dll.txt,这样所有的EXE和DLL文件的名称都被分别记录到exe.txt和dllback.txt中。 如果系统在以后的使用中出现异常而用传统的方法查不出来的时候,我们就要考虑是不是嵌入式木马在捣乱了,此时我们再次运行CMD--转换目录到system32--dir *.exe>exe1.txt & dir*.dll>dll1.txt将system32下的exe和dll文件分别再记录到exe1.txt和dll1.txt中,接下来我们就可以对2次记录的文件进行比较了,来判断是否存在嵌入式木马,方法如下:运行CMD--fc exe.txt exe1.txt>change.txt & fc dll.txt dll1.txt>change.txt,其含义为用fc命令比较exe和dll的2次记录文件,并将结果输出到change.txt中。这时我们就可以从change.txt中发现发生变化的exe和dll文件以及多出来的exe和dll文件,最后我们查看这些文件的创建时间、版本、是否经过压缩等就能够比较容易地判断出是不是已经被DLL木马修改了。 如果有的话,在没有把握的情况下就把dll文件先删除到回收站中,以便误删以后还能文件还原,如果重新启动后系统没有任何异常,我们就可以彻底删除此dll文件了。但同时由于有的进程调用的DLL文件非常多,使得靠我们自己去一个一个去核对变的不太现实,所以此时我们可以借助一些工具来帮助我们缩小范围,其中NT进程/内存模块查看器ps.exe就是一款很不错的工具,用命令ps.exe /a /m >usedll.txt将系统目前正在调用的所有DLL文件名称保存到usedll.txt中,然后再用fc dll.txt usedll.txt>changenow.txt把比较结果输出到changenow.txt中,这样我们就能大大的缩小查找范围。同时端口也是值得我们重视的一部分,我们可以用进程端口查看工具Fport.exe来查看与端口对应的进程,一般木马开放的是高端口(但也不排除其使用了端口转发和复用技术)样还可以将范围缩小到具体的进程,然后结合Procedump.exe这款脱壳工具来查看此进程调用的dll文件,再利用上面介绍的文件比较法来比较,从而使得查找DLL木马变的更容易。针对端口我们还可以使用嗅探的方法来嗅探端口所传输的数据,如果数据异常则,再使用Fport来找出端口所对应进程然后再重复以上步骤 |