本帖最后由 龙飞雪 于 2015-12-27 13:15 编辑
一、样本信息
样本名称:rt55.exe 样本大小: 159288 字节 文件类型:EXE文件 病毒名称:Win32.Backdoor.Zegost 样本MD5: C176AF21AECB30C2DF3B8B8D8AA27510 样本SHA1:16E951925E9C92BC8EFDF21C2FBAF46B6FFD13BC
二、行为具体分析
1.获取当前运行模块的命令行参数,根据当前命令行参数是否包含字符串"NewUpdatExe"进行判断,决定下面提到的内存解密PE文件是 调用导出函数NewUpdatExe还是导出函数xDllMain。
2.解密当前病毒进程内存地址为0x408070处,文件大小为0x17C00的被加密隐藏的PE文件。
3.加载内存解密的PE格式的Dll文件,进行恶意病毒行为的操作;具体的加载过程后面会具体分析。
4.将解密内存PE文件的每个区节块的数据从文件映射到申请的内存空间中。
5.对内存解密PE文件的重定位表Base RelocationTable进行重定位的修复。
6. 获取解密内存PE文件的导入表中的INT表中的函数的调用地址填充IAT表。
7. 循环修改解密内存PE文件的各区节块数据段的内存数据属性。
8.运行的病毒进行将PE文件(dll文件)的加载已经基本完成了,因此这个被病毒进行内存加载的PE的动态库文件是有效可以执行的; 因此以该内存PE动态库的OEP为函数指针执行恶意的代码。
9. 获取导出函数名称字符串"NewUpdatExe"或"xDllMain",用以获取解密内存PE文件的导出函数"NewUpdatExe"或"xDllMain"的调用地址。
遍历内存解密PE文件的导出表,获取需要的导出函数"NewUpdatExe"或"xDllMain"的调用地址。
10.根据步骤1中的传入的函数的名称"NewUpdatExe"或者"xDllMain",根据上面的步骤获取需要的导出函数"NewUpdatExe"或者"xDllMain"的地址, 然后调用内存解密PE动态库文件的导出函数"NewUpdatExe"或者"xDllMain",执行恶意的代码;然后再次以内存解密PE文件的OEP为函数指针, 执行内存PE文件的代码,执行恶意行为。
总体来说,上面的详细的分析,基本可以使用一句话总结,那就是:宿主样本程序通过LoadPE的方式加载解密的PE动态库dll文件,然后 有加载的PE动态库dll文件来执行具体恶意的病毒行为,从而达到逃过杀软的查杀的目的。关于Backdoor.Zegost木马病毒的具体行为也 就是内存解密PE动态dll文件的恶意行为后面会详细的分析。
注:由于笔记本的屏幕发白,截图总是显示发白发花,具体的分析见分析的PDF文档。这个木马病毒使用的手法也不是什么新的手法,只是分析一下 该木马的实现方法,关注一下LoadPE的方法,和加壳的原理有些相似。
|