一、失败之因
我们以“BYshell 2008”为例,它可以通过恢复SSTD表突破一些简单的主动防御功能安全工具。在利用绝杀工具进行免杀时,可以躲过杀毒软件的查杀,然而当执行木马时,电脑上安装的杀毒软件弹出了提示对话框。关闭杀毒软件后进行检测,发现“byshell32.sys”文件原来是Byshell木马的服务安装文件。
虽然木马服务端主程序文件免杀成功,但是木马服务端程序运行时释放的“byshell32.sys”文件还是会被杀毒软件查出来。直接对木马服务端程序文件进行加密加壳,免杀效果不够彻底,只有再次进行彻底的免杀。
二、服务端分析
Byshell木马生成器目录下有一个名为“Cache”的文件夹,在其中有一个名为“ByServer.dat”的文件,这是木马服务端程序的基础文件。木马生成器在经过用户的配置之后,将相应的配置信息加入到此文件中,最后才生成木马服务端程序。每个木马生成器中都有类似的服务端基础文件,其文件后缀名通常为“.dat”。
1.脱壳
在分析基础文件前,先要进行查壳脱壳操作,否则无法查看到基础文件中的资源,也无法导出需要修改的资源。可用PEiD进行查壳,检测的结果表明基础文件没有加壳,是用Visual C++ 语言编写的。在对其它木马免杀时,如果发现基础文件加了壳,一定要先进行脱壳步骤。

2.导出资源
运行Restorator,将木马服务端基础文件“ByServer.dat”拖入到左侧边栏中,将自动导入分析基础文件中的所有资源。在左侧资源项目中展开“DLL”,可以看到其下名为“BYSHELL_DLL”的资源项目,点击该项在右侧的资源查看器中可以查看到资源文件内容。“BYSHELL_DLL”资源内容就是最终生成服务端程序释放的“byshell32.sys”文件。
那么到底如何辨别分析资源中的可执行文件呢?
有的木马服务端基础文件资源中,有多个资源项目,而且资源项目名与释放的资源文件名不一定相同,如何从中分析找到相应的生成可执行文件(DLL、EXE)的资源呢?其实很简单,只需要在资源内容窗口中查看资源的文件头,在最前面如果有特征标志“MZ”,则表示这是一个可执行文件(DLL、EXE)的资源。

右键点击“BYSHELL_DLL”,在弹出菜单中选择导出,在弹出对话框中将资源保存为“test.dll”。