Ave Maria恶意软件在2018年12月底对意大利某能源企业发起网络钓鱼攻击。
Cybaze-Yoroi ZLab的研究人员分析了黑客发起这场钓鱼攻击的意图。该恶意邮件以供应商销售部的名义发出发票与装运订单确认函。和一般的钓鱼攻击类似,它也利用CVE-2017-11882漏洞发送恶意Excel文件,从而运行从恶意网站(网站已被攻击者入侵)检索到的可执行文件。
用于传播恶意邮件的域名仅在12月中旬保留了几天,确保恶意软件在这段时间中发送完毕。
图1 发件人域名活跃时间:12月12日至14日
Cybaze-Yoroi ZLab分析了这三天传输的payload。
图2 图标
实际的感染链开始于恶意Office文档打开后丢弃的自解压存档(SFX)。该样本中含有Kagamine Rin(镜音双子,一个被称为“VOCALOID”的语音合成软件)的图标。
该文件是WinRAR自解压程序,配置为将内容解压到临时文件夹“%TEMP%\ 04505187”,然后以静默方式运行特定的安装程序:
图3 SFX解压程序的配置
压缩文件的时间戳显示攻击者在域名激活的时间跨度内,在2018年12月13日22:56实现了存档的“武器化”。
图4 SFX可执行文件提取的文件
所有文件的扩展名都是虚假的,大多数都是包含大量垃圾数据的文本文件。但是其中三个文件引起了分析师的注意:
xfi.exe:一个合法的、能够执行指定AutoIt脚本的解释器。
hbx = lbl:第一个AutoIt脚本(将指令隐藏在大量注解中来迷惑分析人员)。
uaf.icm:一个包含所有恶意软件设置信息的文件,例如安装文件夹、解释器名称和下一阶段使用的其它参数;根据“INI文件格式”构建。
图5 第一个AutoIt脚本出现(被称为“hbx-lbl”)
图6 uaf.icm的结构
Juniper安全公司早在2016年发现了类似的AutoIT代码包,SFX文件以这样的方式被滥用,并发送脚本用于恶意软件第一阶段的攻击。如图3中的配置所示,该样本能够使用以下命令运行第一个脚本:
$> xfi.exe hbx=lbl
此时,使用字符串模式“[sData]”和“[esData]”之间的“uaf.icm”中包含的编码数据,由第一个脚本创建第二个脚本,形成随机名称(例如“ZZQLZ”),并使用“xfi.exe”引擎运行。
图7 第二个脚本通过二进制编码,并隐藏在“[sData]”和“[esData]”之间的uaf.icm文件中。
第二个脚本通过二进制编码的方式产生了极大的迷惑性。分析师利用“反混淆技术”发现了其中很多有趣的功能。该脚本中含有不同的防御绕过技术,例如检查当前正在运行的进程,如果存在与某些虚拟化软件(如Virtualbox)相关的进程,恶意软件则自行终止。
图8 恶意软件的躲避示例
第二个脚本的主要目的是解密并执行隐藏在“uaf.icm”文件的“[Data]”和“[eData]”分隔符字符串中的最终有效负载。使用“Advapi32.dll!CryptDecrypt”Microsoft函数解密数据,该函数通过高级API“DllCall”动态调用到AutoIt脚本中。解密密钥从常见的设置文件中检索。
AutoIt脚本用于运行刚提取的payload的方式也很有意思。在第一个实例中,恶意软件将%Regsvcs.exe(.NET服务安装工具)的副本创建到%TEMP%文件夹中并运行。然后执行进程注入,从而启动Regsvcs进程后面的恶意负载。
下图展示了存储在“uaf.icm”设置文件中恶意二进制文件提取、解密和注入的例程。
图9
恶意软件通过DllCall AutoIt API,使用CallWindowProcW Windows函数作为进程注入技术。
图10 解密并将恶意负载注入合法进程
该恶意软件作者利用存储在图11 恶意软件设置的注册表项$ ASM变量中的自定义shellcode将二进制有效负载正确地注入到正在运行的regsvcs进程中。
最后,第二个AutoIt脚本通过编写注册表项HKLM \ SOFTWARE \ Wow6432Node \ Microsoft \ Windows \ CurrentVersion \ Run,获得对受害计算机的永久控制。
图11 恶意软件设置的注册表项
注册表项的名称与从“密钥”部分的“uaf.icm”设置文件中所提取的值相对应。
该有效负载注入合法的.NET进程是一种典型的僵尸行为:它与angularkeys.warzonedns [.] com上托管的C2联系,并检索要执行的下一个操作。攻击者的服务器目前已关闭,因此无法获得命令的其它阶段。
有调查显示该恶意软件会查找已安装的电子邮件客户端(如Microsoft Exchange Client或Outlook),获取并泄露受害者的登录凭证。
图12 对已安装的邮件客户端的研究分析
此外,僵尸程序能够解密Firefox浏览器存储的所有用户名和密码。这些敏感数据使用Mozilla网络安全服务的PK11加密来保护,该恶意软件具备解密所需的所有功能条件。
恶意软件编写者重复使用公开可用的代码来实现此功能。下图显示了部分执行流程(左侧)和一段代码,该代码属于github上发布的KeePass插件(右侧),两者非常相似。
图13 恶意软件的一段代码(左侧);KeePass插件的一段代码(右侧)
此外,恶意软件嵌入了能够绕过资源部分用户访问控制的程序。该程序滥用“pkgmgr.exe”Windows工具中的漏洞;很多与此漏洞相关的资源在互联网上都是公开的。
图14 UAC旁路程序的工作流程
尽管该恶意软件功能强大,但作者还是留下了一些与代码环境相关的蛛丝马迹。
图15 编写恶意软件的可能路径
最后,可执行文件中出现了另一个奇怪的字符串:“AVE_MARIA”,这是当恶意软件正确联系到C2时打招呼的“暗号”。InfoSec社区的许多研究人员已将此特定字符串选为该恶意软件的名称。
图16 恶意软件发送的特殊字符串
恶意软件的第一阶段,包括AutoIt脚本,与几年前由第三方安全研究人员分析的另一个恶意软件波非常相似:恶意软件逻辑基于INI设置文件,其中一些AutoIt代码也相同,但是最终的有效负载是不同的。
这些恶意软件可能是同一个作者编写的,复杂性不断增加,也有可能是该恶意软件的第一阶段在暗网上被售卖,而“AVE_MARIA”恶意软件的作者利用公开可获得的代码组成了一个新的窃取软件,并且未将与自己身份信息有关的痕迹清除干净。
*参考来源:securityaffairs, 柚子编译,转载请注明来自FreeBuf.COM