这个是四年前披露的样本,某公司将其攻击组织命名为海莲花(OceanLotus)。我这次分析主要目的是学习分析ATP样本的方法。
样本MD5:41bced8c65c5822d43cadad7d1dc49fd
首先使用工具peid进行查壳工作,发现这个样本并没有加壳。如果有加壳的话需要进行脱壳操作。
使用ida结合OD进行分析,使用火绒剑进行监控。
木马样本入口分析:
我觉得这是main函数最主要的部分,首先检查参数是开始部分是否含有字符串“--ping”,如果没有会创建一个临时文件并且启动这个临时文件,若有就会调用函数sub_419B40来执行一些操作。
先是获取主机名
转换成小写
调用函数CoInitialize,Windows以单线程的方式创建com对象。
检查字符串“--ping”
解密然后开启Schedule服务
获取路径以及文件名,
获取已加载模块的名称
生成字符串
对源文件进行解密,然后创建新的文件,将其写入
新生成的文件和源文件大小一样,但是MD5值不一样
将参数进行拼接
启动
释放一个安装界面用来迷惑用户
在CreateProcess处加入刚刚拼接的参数,重新运行,进入sub_419B40继续分析
先是可以看到有反虚拟机的操作
在执行完反虚拟机时将返回值eax改为0即可过掉反虚拟机
然后进行解密
遍历循环
通过火绒剑监控可以看到释放了qq.exe和Bundel.rdb。
计划
QQ为国际版的
提权操作
判断注册表是否存在,若不存在则退出
比较"rundll32.exe /safemode"是否相同,由于是手动启动QQ没有任何参数所以比较不会成功。
如果比较参数成功就会进入循环休眠。
参数比较不成功就会遍历进程。
“qq.exe”的功能主要是提权后从注册表读取木马dll的路径,通过判断传递过来的命令行参数,判断是注入进程启动或者是自身LoadLibrary启动木马dll程序。
下面看一下与qq.exe同时生成的Bundel.rdb.
这个Bundel.rdb是要对三个地址进行连接,但是由于地址已经失效,所以无法看到与服务器的通信,这个功能并不能实现。三个域名如下:
zone.mizove.com
sin04s10.listpaz.com
active.soariz.com
可以看到如果没有连接成功它会一直循环直到连接成功为止。