MuddyWaterAPT之宏病毒分析
一、样本IOC指标
样本名 | NETA_-T_bitak Siber G_venlik birli_i Protokolv5.doc |
---|---|
Md5 | 21aebece73549b3c4355a6060df410e9 |
Sha1 | dbab599d65a65976e68764b421320ab5af60236f |
样本大小 | 314368 bytes |
样本类型 | Composite Document File V2 Document Little Endian Os: Windows Version 6.1 Code page: 1252 Template: Normal.dotm Last Saved By: Babak Amiri Revision Number: 240 Name of Creating Application: Microsoft Office Word Total Editing Time: 12:01:00 Create Time/Date: Mon Feb 18 06:17:00 2019 Last Saved Time/Date: Thu Feb 28 18:20:00 2019 Number of Pages: 1 Number of Words: 296 Number of Characters: 1691 Security: 0 |
二、线上沙箱:
三、样本分析:
打开文件查看宏代码发现已加密
使用工具将密码删除
再次打开doc查看宏代码
同时在窗体中发现部分嵌入的代码
通过属性找到对应的代码如Form1中
Form2
宏代码在自启动文件夹下创建Win32ApiSyncTskSchdlr.bat
并写入start /MIN schtasks /Create /F /SC HOURLY /MO 1 /TN Win32ApiSyncTask /TR "C:\ProgramData\Win32ApiSync.bat"
同时创建C:\ProgramData\Win32ApiSync.bat
并写入一段powershell代码
写入的内容为
该代码做了如下3件事
- 获取Win32ApiSyncLog.txt中的内容
- 将内容进行解码
- 运行解码后的内容
同时创建C:\ProgramData\Win32ApiSyncLog.txt并将宏代码中的ep内容写入到文件中
至此该病毒流程分析完毕流程图如下
下面对Win32ApiSyncLog.txt内容进行解密首先使用64将ep解码发现解码后的内容为嵌套powershell代码
使用如下代码将powershell中FromBase64String中的内容转换为string
import 64 import zlib # [Convert]::FromBase64String decoded = 64.b64decode(encoded) # IO.Compression.DeflateStream # 15 is the default parameter negative makes it ignore the gzip header decompressed = zlib.decompress(decoded -15) print(str(decompressed encoding = "utf-8").lower())
运行后得到混淆的powershell代码
使用https://github.com/pan-unit42/public_tools/tree/master/powershellprofiler
中的脚本对代码进行初步反混淆然后再手动调整代码还原的powershell代码如下
后门分析
首先是main函数while循环下分别运行了三个函数helloserverloop getcommandloop和executecommandandsetcommandresultloop
对于helloserverloop函数该函数循环向c2发送请求调用了helloserverrequest函数
跟进helloserverrequest如下函数调用了assembler并为请求设置了代理
跟进assembler函数如下该函数调用了getbasicinfo函数又继而调用了basicinfocollector函数
继续跟进basicinfocollector函数该函数为基础信息收集函数收集了用户名系统版本内网地址等信息
接下来我们分析getcommandloop函数该函数循环向c2发送请求并将response包解析结果保存到全局变量getcmdresult中
我们继续分析executecommandandsetcommandresultloop函数若全局变量getcmdresult为空改函数则运行ping -n 1 127.0.0.1
指令否则就运行getcmdresult变量中的指令并使用64编码保存结果最后将结果发送到c2中
IOC
C2: 94.23.148.194
样本md5: 21aebece73549b3c4355a6060df410e9
四、查杀建议:
经分析该后门并没有高深的隐藏技术分别删除启动项计划任务源文件即可
删除启动项中的文件
删除计划任务
删除病毒源文件