前言
组织简介
蔓灵花组织是长期针对中国、巴基斯坦等国家进行攻击活动的APT组织。
0x00 宏观行为
首先观察其名字,通过具有迷惑性的命名诱骗用户点击。
双击运行样本,直接看它对电脑做了什么,可以看到点击之后,在C盘根目录创建出了intel
文件夹,让用户错认为是系统的文件夹。
打开创建出的文件夹发现有msdtcv.exe
可执行程序,也就是微软分布式传输协调程序,猜测是释放的病毒文件,伪装成系统程序。
直观上并没有对系统造成什么影响,各种文件都可以使用,接下来进行详细的分析。
0x01 行为流程图
0x02 静态分析
文件 | C:\Update Required Case Enq No 192_2018.docx.com |
大小 | 31232 bytes |
文件版本: | 2534, 417, 23, 232 |
MD5: | 8D42C01180BE7588A2A68AD96DD0CF85 |
SHA1: | 89A7861ACB7983AD712AE9206131C96454A1B3D8 |
CRC32: | 59301824 |
VT多引擎扫描结果如下
木马下载器。
没有带壳,链接器版本9.0。
调用了cmd程序,执行了命令,并在同级目录下创建了intel
文件夹,运行了其中的msdtcv.exe。
文件监控
可以看到利用cmd程序在c:\intel\
下创建了msdtcv.exe
文件。
设置c:\intel\msdtcv.exe
开机自启。
Update Required Case Enq No 192_2018.docx.com运行了cmd程序,之后创建唤醒msdtcv.exe,msdtcv.exe运行了cmd程序,打开了设备\Device\Nsi。
没有捕获到,可能是由于某些函数阻塞。
修改注册表启动项,释放PE文件。
进程查看的时候也是很好的隐藏自己,不仔细看路径根本无法发现。
总结一下,Update Required Case Enq No 192_2018.docx.com调用cmd程序创建了c:\intel\msdtcv.exe文件,路径和文件名很好的隐藏了自己,之后执行msdtcv.exe。
0x03 初始化模块
首先拖入OD中发现有随机基址,为了和IDA统一,去除随机基址。
资源里加载字符串到CString对象,成功返回字符串长度。
缓冲区分别写入。
WinMain函数的总体结构。
设计并注册窗口类。
窗口回调函数中没有动手脚。
之后以隐藏的方式显示窗口,猜测是隐藏自身,不容易被发现。
接下来的重点是分析sub_401330
这个关键函数,一系列初始化后获取当前程序运行的绝对路径。
创建文件夹c:\intel。
得到两个关键字符串。
函数的实现过程。
创建线程,回调函数为StartAddress,地址为404480。
创建线程函数的时候,传入了ThreadParm =
copy "C:\Update Required Case Enq No 192_2018.docx.com" "C:\intel\msdtcv.exe"
猜测是执行了cmd命令,之后将病毒文件复制到C:\intel\msdtcv.exe。
首先获取系统变量C:\Windows\system32\cmd.exe
返回buffer的大小,Buffer = C:\Windows\system32\cmd.exe,VarName = ComSpec。
创建匿名管道,建立与cmd.exe的匿名管道,并创建子进程cmd.exe,之后父进程向管道中写入
copy "C:\Update Required Case Enq No 192_2018.docx.com" "C:\intel\msdtcv.exe"
,猜测目的是让cmd.exe读取并执行这条指令,将样本文件复制到C:\intel\msdtcv.exe。
结果如下:
此时线程回调函数StartAddress就分析完毕,回到主流程,首先获取名为msdtcv
的键值。
如果没有获取到则执行以下操作,创建线程,回调函数为sub_404670,休眠后执行c:\intel\msdtcv.exe(还是自己,因为是直接复制出来的),之后退出当前进程。
接下来分析线程回调函数sub_404670。
打开【Software\Microsoft\Windows\Currentversion\Run】
获取【msdtcv】这个键值。
如果获取不到,打开【msdtcv】这个子键,,写入cmd /c start %AppId% && exit键值,之后关闭注册表。
如果存在则直接退出线程,此线程函数分析完毕。
回到主流程,为了分析的方便强行修改其执行流程,不让样本自己结束。
0x04 下载模块
初始化模块完成之后,msdtcv.exe启动,再次进行初始化模块操作。
获取主机名以及系统版本号信息。
sub_402890
连接c&c并发送上线包:
通过域名获取ip地址。
经查询frameworksupport.net对的ip地址为162.222.215.90。
由于gethostbyname这个函数总是阻塞超时无法解析出ip地址,尝试将其跳过connect的时候手动添加ip地址。
发送上线包。
之后再次连接请求下载的文件。
报文如下:
接收数据并写入文件中。
之后运行下载的文件。
再次发送数据接收指令进行其他操作。
0x05 总结
样本的隐蔽性极高,运用各种手段隐藏自身,并且伪造了系统程序的签名。
日常操作中来源不明的文件可能会对您的计算机造成极大的影响,请谨慎操作。