海莲花样本分析

上月29号数字发布名为海莲花”APT报告:攻击中国政府海事机构的网络空间威胁的apt报告,遂对该攻击样本进行了一番分析。 

整 个样本的整体行为如上图所示,样本的通常为一个图标为word的exe程序,点击之后样本会释放出形如XXXX.tmp的文件并运行,该文件首先会释放一 个正常的doc文件运行,用以迷惑普通用户,之后会释名为qq.exe和Bundle.rdb的两个文件,其中qq.exe运行之后会将 Bundle.rdb文件注入到一个僵尸进程中,Bundle.rdb实现与远程主机的交互。下面是详细的分析。

母体行为

样本运行之后,在C:\Users\zht\AppData\Local\Temp下释放名为D651.tmp的文件。

 

之后会以—ping/样本目录的格式启动该tmp文件,参数不对则不会释放之后的qq.exe和Bundle.rdb文件。

 

此 处因为存在从样本exe文件到tmp文件的进程切换过程,ollydbg中并没有像gdb那样提供了用于在调试中从主进程切换到子进程的方式,此处可以有 两种解决方法,第一种就是在调试在CreateProcee这个函数的时候,将生成的子进程的属性该为suspend,这样的就可以通过另一个od附加到 该子进程,但是这样的话需要在主进程中对该子进程直接汇编调用resumethread,可以不妨为此制作一个patch,第二种方式就比较简单,找到生 成的tmp文件,直接将winmian函数的第一个字节改成cc(即int 3),这样子进程启动的时候就会异常报错,此时只要将od设置为实时调试器,异常触发时我们的调试器即可以接管子进程了。

此处采用第二种方法。

 

之后样本会检测当前运行的环境,用于判断是否是在虚拟机中运行。此处直接将该函数nop即可绕过。

 

之后该tmp文件会对自身进行解密,该解密为分块解密,整个过程并不连续。

 

解密完成之后,tmp文件会进行一次进程扫描用于关闭一些可能威胁到样本运行的程序,此处同样需要将该函数nop掉。       

 

最 后在C:\Documents and Settings\Administrator\Application Data\Tencent\QQ和~\QQ\Plugin\Com.Tencent.DirectShow下分别释放出qq.exe文件和 Bundle.rdb文件。

 

同时qq.exe文件会被添加到启动计划中,如下图所示。

 

修改注册表

 

qq.exe

qq.exe启动之后会将Bundle.rdb文件注入到到目标进程中

 

此处为msiexec.exe,首先写入Bundle.rdb文件路径

 

之后同样通过WriteProcessMemory将shellcode分多次写入到目标的进程内存空间中,该shellcode主要用于rdb文件的加载。

 

最后通过函数createremoteThread函数进行远线程调用,启用目标程序中的shellcode。

 

rdb文件

qq.exe注入之后,rdb文件主要用于同远程服务器的通信,如下图所示

 

可以发现该ip下绑定的三个域名,不过都已经失效。

 

posted @ 2015-06-16 12:20  goabout2  阅读(1015)  评论(0编辑  收藏  举报