MuddyWater
MuddyWater 样本分析
样本信息
MuddyWater
是一个伊朗威胁组织,主要针对中东国家,也针对欧洲和北美国家。该组织的受害者主要集中在电信、政府(IT 服务)和石油部门。该组织的活动以前与FIN7
有关联,但据信该组织是一个独特的组织,可能受到间谍活动的驱使。
文档内容如下:
ioc
类别 | 特征值 |
---|---|
MD5 | c9ab403bd43649b5fd57efac4bf83b7c |
SHA1 | d3d98b066011fea2f4f1b9eaab97b28591d50fbe |
SHA256 | ea24c5a8b976919d4c8c4779dc0b7ef887373f126c4732edf9023b827b4e4dc4 |
C2 | 192.227.147.152107.174.68.60 |
样本分析
文档宏分析
doc
文档中包含了一个VBA
脚本,该脚本中存在一些加解密过程,然后会生成C:\ProgramData\Temp_WZW4.txt
和%AppData%\Microsoft\Windows\Start Menu\Programs\Startup\Temp_WZW4.vbs
,当然了两者的内容是一致的:
释放宏分析
上述宏可以通过python
脚本来还原,获取释放的文件内容(string.txt
中存放的是解密密钥和密文):
strfile=open(r"string.txt","r")
strlist = []
for line in strfile:
strlist.append(line)
keys = strlist[0]
tempValue = strlist[1]
appdatapath = strlist[2]
startpath = strlist[3]
def clearText(value):
key = keys.split(',')
for i in key:
value = value.replace(i,'')
return value
modifyText = clearText(tempValue)
pathSave1 = clearText(appdatapath)
pathSave2 = clearText(startpath)
print(modifyText)
print(pathSave1)
print(pathSave2)
现在我们获得了一个新的VBScript
脚本缓存,根据原始文档宏的要求,替换**
为换行符,然后美化一下格式,我们就得到了一个漂亮的Temp_WZW4.vbs
,从代码上可以看出字符内容是经过加密的,不过我们可以直接应用作者的代码进行还原:
通过WScript.Echo
输出显示,这样我们就能知道C2
是:192.227.147.152,107.174.68.60
;&l8x8ml=
对应的是:&status=
;{""61uuxiwR3lms8"":
对应的是:{"commandResult":
尽管Temp_WZW4.vbs
已经很美观了,但为了阅读方便,我对它的函数名和变量名做了重定义,让我们从第一个函数开始看:
这里会和C2
进行交互,执行explorer.exe
命令,发出以下请求:
Get :/getCommand?guid=[uid]
POST:/getTargetInfo?guid=[uid]&status=[statusID]{"commandResult":[CMD(responseGET)]}
命令执行函数会创建一个新的文档用于暂存执行结果c:\ProgramData\AvoU.txt
,并在函数结束时返回内容:
由于C2
的IP
地址有两个,所以存在一个设置C2
地址的函数:
随机休眠函数则是如下实现的:
GET
请求函数如下:
POST
请求函数如下:
当状态码是126
时,会存在一个交互处理函数,当输入1
时,会获取OS
的相关信息:
获取OS
信息的函数如下:
参考资料
https://attack.mitre.org/groups/G0069/
https://app.any.run/tasks/39a7ba74-e232-42d0-98fe-9063a5be417b/
https://www.virustotal.com/gui/file/ea24c5a8b976919d4c8c4779dc0b7ef887373f126c4732edf9023b827b4e4dc4
https://twitter.com/ShadowChasing1/status/1475819281648553986