MuddyWaterAPT之宏病毒分析

释放双眼,带上耳机,听听看~!

一、样本IOC指标

样本名NETA_-T_bitak Siber G_venlik birli_i Protokolv5.doc
Md521aebece73549b3c4355a6060df410e9
Sha1dbab599d65a65976e68764b421320ab5af60236f
样本大小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内容进行解密,首先使用base64将ep解码,发现解码后的内容为嵌套powershell代码


使用如下代码将powershell中FromBase64String中的内容转换为string

import base64
import zlib

# [Convert]::FromBase64String
decoded = base64.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变量中的指令,并使用base64编码保存结果,最后将结果发送到c2中

IOC

C2: 94.23.148.194

样本md5: 21aebece73549b3c4355a6060df410e9

四、查杀建议:

经分析该后门并没有高深的隐藏技术,分别删除启动项,计划任务,源文件即可

删除启动项中的文件


删除计划任务


删除病毒源文件

本文来自先知社区

相关文章

人已赞赏
安全教程

漏洞分析学习之某ActiveX控件imageMan.dll栈溢出

2020-3-23 1:17:57

安全教程

CVE-2017-13089 wget 栈溢出漏洞复现

2020-3-23 1:18:06

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
有新消息 消息中心
搜索