这个是四年前披露的样本,某公司将其攻击组织命名为海莲花(OceanLotus)。我这次分析主要目的是学习分析ATP样本的方法。

样本MD5:41bced8c65c5822d43cadad7d1dc49fd

首先使用工具peid进行查壳工作,发现这个样本并没有加壳。如果有加壳的话需要进行脱壳操作。

使用ida结合OD进行分析,使用火绒剑进行监控。

木马样本入口分析:

逆向分析海莲花ATP样本

逆向分析海莲花ATP样本

我觉得这是main函数最主要的部分,首先检查参数是开始部分是否含有字符串“--ping”,如果没有会创建一个临时文件并且启动这个临时文件,若有就会调用函数sub_419B40来执行一些操作。

先是获取主机名

逆向分析海莲花ATP样本

转换成小写

逆向分析海莲花ATP样本

调用函数CoInitialize,Windows以单线程的方式创建com对象。

逆向分析海莲花ATP样本

检查字符串“--ping”

逆向分析海莲花ATP样本

解密然后开启Schedule服务

逆向分析海莲花ATP样本

获取路径以及文件名,

逆向分析海莲花ATP样本

逆向分析海莲花ATP样本

逆向分析海莲花ATP样本

获取已加载模块的名称

逆向分析海莲花ATP样本

生成字符串

逆向分析海莲花ATP样本

对源文件进行解密,然后创建新的文件,将其写入

逆向分析海莲花ATP样本

逆向分析海莲花ATP样本

新生成的文件和源文件大小一样,但是MD5值不一样

逆向分析海莲花ATP样本

将参数进行拼接

逆向分析海莲花ATP样本

启动

逆向分析海莲花ATP样本

释放一个安装界面用来迷惑用户

逆向分析海莲花ATP样本

逆向分析海莲花ATP样本

逆向分析海莲花ATP样本

在CreateProcess处加入刚刚拼接的参数,重新运行,进入sub_419B40继续分析

 

先是可以看到有反虚拟机的操作

逆向分析海莲花ATP样本

逆向分析海莲花ATP样本

逆向分析海莲花ATP样本

在执行完反虚拟机时将返回值eax改为0即可过掉反虚拟机

逆向分析海莲花ATP样本

然后进行解密

逆向分析海莲花ATP样本

遍历循环

逆向分析海莲花ATP样本

逆向分析海莲花ATP样本

通过火绒剑监控可以看到释放了qq.exe和Bundel.rdb。

逆向分析海莲花ATP样本

逆向分析海莲花ATP样本

计划

逆向分析海莲花ATP样本

QQ为国际版的

逆向分析海莲花ATP样本

提权操作

逆向分析海莲花ATP样本

逆向分析海莲花ATP样本

判断注册表是否存在,若不存在则退出

逆向分析海莲花ATP样本

比较"rundll32.exe /safemode"是否相同,由于是手动启动QQ没有任何参数所以比较不会成功。

逆向分析海莲花ATP样本

如果比较参数成功就会进入循环休眠。

逆向分析海莲花ATP样本

参数比较不成功就会遍历进程。

逆向分析海莲花ATP样本

“qq.exe”的功能主要是提权后从注册表读取木马dll的路径,通过判断传递过来的命令行参数,判断是注入进程启动或者是自身LoadLibrary启动木马dll程序。

下面看一下与qq.exe同时生成的Bundel.rdb.

这个Bundel.rdb是要对三个地址进行连接,但是由于地址已经失效,所以无法看到与服务器的通信,这个功能并不能实现。三个域名如下:

zone.mizove.com

sin04s10.listpaz.com

active.soariz.com

可以看到如果没有连接成功它会一直循环直到连接成功为止。

 

逆向分析海莲花ATP样本

相关文章: