导语:Yoroi-Cybaze Zlab研究人员分析总结了MuddyWater感染链的技术细节。
一、简介
11月的最后几天,部分中东国家成为伊朗APT组织“MuddyWater”新一轮攻击的目标。他们的第一次行动是在2017年观察到的,而最近的Unit42研究人员报告了在中东地区中的攻击。在这段时间内,MuddyWater的TTP固定不变:继续使用包含模糊文档的鱼叉式网络钓鱼电子邮件,诱导目标启用VB宏代码执行,以使用POWERSTAT恶意软件感染主机。
图1.恶意文档
根据ClearSky Research Team和TrendMicro 研究人员的分析,11月底MuddyWater小组在攻击土耳其后不久袭击了黎巴嫩和阿曼。攻击向量和最终有效载荷是相同的:常见的宏嵌入文档和POWERSTAT后门。
然而,中间阶段与平常略有不同。
Yoroi-Cybaze Zlab研究人员分析了“Cv.doc”文件,这是MuddyWater在黎巴嫩/阿曼竞选期间使用的模糊简历。
二、技术分析
当受害者启用宏时,恶意代码会创建一个Excel文档,其中包含下载下一阶段恶意植入程序所需的代码。同时,它显示一个假的错误弹出窗口,通知Office版本不兼容。
图2.假错误消息
使用以下自定义例程在执行之前解密宏代码:
图3.宏解密例程
在对代码进行反混淆处理后,在“x1”变量中可以识别出用于创建隐藏Excel文档的函数:
图4.隐藏文档的创建
嵌入在新Excel的宏从URL下载powershell代码,引用了PNG图像文件“http://pazazta[.]com/app/icon.png”。下载的有效载荷创建三个新的本地文件:
· C:\Windows\Temp\temp.jpg, 包含Javascript代码;
· C:\Windows\Temp\Windows.vbe, 包含编码的Visual Basic脚本;
· C:\ProgramData\Microsoft.db, 包含加密的最终有效载荷。
图5.下载的Powershell代码
如上图所示,执行的第一个文件是“Windows.vbe”,它使用CSCRIPT引擎运行包含在temp.jpg中的Javascript代码。解密之后,可以注意到JS的目的:延迟执行另一个PowerShell有效载荷。
图6.“temp.jpg”中的Javascript代码
实际上,只有满足“Math.round(ss)%20 == 19”条件时才会执行下一个恶意阶段,否则它会不断重新执行。 “ss”变量存储自1970年1月1日00:00:00以来的秒数。
最后阶段包括执行包含在“Microsoft.db”文件中的POWERSTATS后门程序。后门与域名:“hxxp://amphira[.]com”和“hxxps://amorenvena [.]com”通联,所有域名都指向相同的IP地址139.162.245.200(EU-LINODE-20141229 US) 。
图7. POWERSTAT旗标请求
一旦执行,POWERSTAT恶意软件通过编码的HTTP POST请求将受害者机器的通用信息发送到远程服务器:
图8.包含受害者计算机信息的post请求
然后,它启动与C2的通信协议,请求在受感染主机上执行的命令。
HTTP参数“type”对恶意植入程序执行的请求进行分类,在分析过程中观察到以下值:
· info: 在POST请求中用于发送有关受害者的信息;
· live: 在POST请求中用作ping机制;
· cmd: 在POST和GET请求中都使用了它们。在第一种情况下,它发送最后执行的命令,在第二种情况下,它从服务器获取新命令;
· res: 在POST请求中用于发送恶意软件已执行的最后一个命令的结果。
参数“id”唯一的标识受害者机器,并使用本地系统信息计算它,TrendMicro仅使用硬盘驱动器序列号分析了样本。此标识符还用于在“C:\ProgramData\”文件夹中创建文件,用于存储临时信息。
图9.创建受害者ID
分析从“Microsoft.db”文件中提取和反混淆的代码,可以调查POWERSTATS后门的真实功能,识别恶意植入程序所支持的功能,例如:
· upload: 恶意软件从指定的URL下载新文件;
· cmd: 恶意软件执行指定的命令;
· b64: 恶意软件解码并执行base64 PowerShell脚本;
· muddy: 恶意软件在“C:\ProgramData\LSASS”中创建一个包含powershell脚本的新的加密文件并运行它。
图10.经过反混淆的POWERSTATS代码片段
恶意软件实现了多个持久性机制。一旦执行POWERSTATS后门,这些机制仅在感染的最后阶段触发。持久性功能使用简单且已知的技术,例如“Microsoft\Windows\CurrentVerison\Run”中的注册表项:
图11.基于注册表项的持久性机制
并创建了一个名为“MicrosoftEdge”的计划任务,每天12点开始执行。
图12.恶意软件安装的计划任务
三、总结
伊朗ATP组织“MuddyWater”的最近一次行动是一个典型案例,说明黑客组织如何利用系统工具和脚本语言来达成目标,在目标主机中保持立足点并传输数据。这些攻击还利用嵌入宏的文档作为初始向量,展示了这种众所周知的技术如何仍能形成威胁,特别是经过精心准备和情景化来吸引特定受害者。
图13. MuddyWaters的感染链
IoC
Dropurl:
· hxxp://pazazta[.com/app/icon.png
C2:
· hxxp://amphira[.com
· hxxps://amorenvena[.com
· 139.162.245.200
Hash:
· 294a907c27d622380727496cd7c53bf908af7a88657302ebd0a9ecdd30d2ec9d
· 79f2d06834a75981af8784c2542e286f1ee757f7a3281d3462590a89e8e86b5a
· ae2c0de026d0df8093f4a4e2e2e4d297405f943c42e86d3fdd0ddea656c5483d
· 077bff76abc54edabda6b7b86aa1258fca73db041c53f4ec9c699c55a0913424
· ccfdfcee9f073430cd288522383ee30a7d6d3373b968f040f89ae81d4772a7d0
Yara规则
rule MuddyWater_doc_dropper { meta: description = "Yara Rule for MuddyWater document dropper" author = "Yoroi ZLab - Cybaze" last_updated = "2018-12-05" tlp = "white" category = "informational" strings: $header ={D0 CF 11 E0 A1 B1 1A E1} $a = {D3 60 25 12 C4 C1 41 B1 65 E3 39 08 8B} $b = {B1 B8 22 60 2B 2E 62 59 58 11} condition: all of them} rule MuddyWater_fake_pgn_dropper { meta: description = "Yara Rule for MuddyWater fake image dropper" author = "Yoroi ZLab - Cybaze" last_updated = "2018-12-05" tlp = "white" category = "informational" strings: $a = "I0B+XlhBQUFBQT09L00rQ0QrfTRMf21EY0pxL15EYndPIFV0K15zSipSSSFVfkoxL" $b = "1mdW5jdGlvbihzLGQpe3ZhciB1PVtdLHY9MHgwLHcseD0nJyx5PScn" condition: all of them} rule MuddyWater_encrypted_POWERSTATS { meta: description = "Yara Rule for MuddyWater encrypted backdoor" author = "Yoroi ZLab - Cybaze" last_updated = "2018-12-05" tlp = "white" category = "informational" strings: $a = "256/8Z2S63F,17P1P?20N,-(1AR38(.E/,Y7/VB->V0E,.1J1L*0?H-" $b = "0E-13./)F/[-/L)/.I-*U/.F/*@3AM37M2?T-=I3-J/BU-=?/GP,JN1Z<05I-)V/C-" condition: all of them}