Cybaze-Yoroi ZLab的研究人员分析了过去一年中在石油和天然气行业运营的意大利组织遭受到的网络钓鱼。恶意电子邮件试图模仿供应商的销售人员发送的发票和装运订单。像往常一样,邮件传播利用流行的CVE-2017-11882 漏洞的恶意Excel文件来从恶意网站下载并执行恶意文件,此前这些网站已被攻陷。
用于传播恶意邮件的域名在12月中旬仅存活了几天,这几天已经足够传播钓鱼邮件
图1.发件人的域名于12月12日至14日有效
Cybaze-Yoroi ZLab详细分析了那段时间钓鱼邮件投递的Payload
技术分析
具体的感染链开始于恶意文档打开后释放的自解压包,样本使用” Kagamine Rin”的图片作为图标,这个图片属于一个叫做VOCALOID的语音合成器软件,图片如下
自解压包是一个WinRAR自解压程序,根据配置文件,这个程序运行后解压到临时文件夹”%TEMP%4505187”,然后静默执行特定的安装程序
图2. SFX自解压程序的配置
压缩文件的时间戳显示攻击者在2018年12月13日22:56制作了这个攻击文档,这个时间处于钓鱼域名存活时间内
图3. SFX自解压程序提取的文件
所有文件都有用于干扰安全分析师的误导性后缀,其中大多数是包含垃圾数据的文本文件,但是其中有三个值得关注的文件:
Xfi.exe : 一个合法的AutoIt解释器,能够执行指定的AutoIt脚本
Hbx=lbl: 一个AutoIt脚本,脚本指令被混淆在大量的无效字符中
Uaf.icm: 恶意代码配置文件,包含了安装目录,解释器名称与下一阶段使用的其他参数,这个配置文件以INI格式存储
图4.第一个AutoIt脚本的片段(称为“hbx-lbl”)
图5. 配置文件uaf.icm
被类似方式打包的AutoIT恶意代码在2016年就已经被Juniper注意到,当时SFX文件格式被滥用于投递第一阶段的脚本恶意代码,如图2中的配置所示,样本会通过如下命令执行第一个AutoIt脚本
$> xfi.exe hbx=lbl
此时,第一个脚本通过读取”uac.icm”文件中”[sData]”与”[esData]”中的编码后数据来创建使用随机文件名(例如”ZZQLZ”)的第二个脚本,并通过”xfi.exe”来运行它。
图6.第二个脚本是二进制编码的,并隐藏在uaf.icm文件中的“[sData]”和“[esData]”之间
第二个脚本使用二进制编码进行了大量混淆。在反混淆之后,它显示了有趣的功能。首先,样本使用了多种不同的检测技术,例如检查当前正在运行的进程:如果存在与某些虚拟机(如Virtualbox)相关的进程,则恶意软件会自行终止。
图7.恶意软件检测运行环境的示例。
第二个脚本的主要功能是解密并执行隐藏在“ uaf.icm ”文件的“[Data]” 和 “[eData]” 分隔符字符串中的最终payload。样本使用“Advapi32.dll!CryptDecrypt”Microsoft函数解密数据,该函数在AutoIt脚本中通过高层API “DllCall”调用。解密密钥从配置文件中获取
有趣的是AutoIt脚本用于执行payload的方式。在第一个实例中,恶意软件在%TEMP%目录中创建并执行一个”Regsvcs.exe”程序的副本。然后他将恶意Payload注入到刚创建的”Regsvcs.exe”进程中。
在下图中,显示了提取,解密和注入存储在“uaf.icm” 配置文件中的恶意二进制代码的过程。
图8.提取,解密与注入的过程(译者注:此处原文标识错误)
恶意程序通过AutoIt提供的API “DllCall”来调用Windows函数 CallWindowProcW来执行进程注入
图9.用于解密和注入恶意payload到合法进程的函数
恶意软件作者使用存储在$ ASM 变量中的自定义shellcode 将payload正确地注入到正在运行的 regsvcs 进程中。
最后,第二个AutoIt脚本通过在受害主机写入注册表项 HKLMSOFTWAREWow6432NodeMicrosoftWindowsCurrentVersionRun. 来实现持久化驻留
图10.恶意软件设置的注册表项
Payload : AVE_MARIA Stealer
注入合法.NET进程的payload有明显的僵尸程序行为:它连接C&C域名angularkeys.warzonedns [.] com并获取下一阶段payload。攻击者的服务器当前已关闭,因此无法获得下一阶段payload.
静态分析显示恶意软件会查找已安装的邮件客户端(比如Microsoft Exchange Client或Outlook)以窃取受害者的凭据。
图11.已安装的电子邮件客户端软件的处理
此外,僵尸程序能够解密Firefox浏览器存储的所有凭据。这些敏感数据使用Mozilla网络安全服务的PK11加密进行保护,因此恶意软件中会有必要的解密函数
恶意软件作者复用了公开代码来实现此功能,下图左侧展示了部分功能代码,右侧展示了公开在github上的KeePass插件的部分代码,两部分代码流程非常相似
图12.恶意程序的代码片段(左侧); KeePass插件的一段代码(右侧)。
此外,恶意程序在资源节中嵌入了一个能绕过UAC的程序,这个程序滥用了名为”pkgmgr.exe”的Windows工具的漏洞,互联网上可以获得关于此漏洞的大量资源
图13. UAC绕过程序的工作流程
除了恶意软件丰富的功能,作者还在恶意代码中留下了开发环境的一些信息
图14.恶意软件作者的开发路径
最后,样本中发现了另一个奇怪的字符串:”AVE_MARIA”,当恶意软件成功连接C2时将其用作Hello消息,InfoSec社区的许多研究员已经将此字符串标记为恶意软件家族名。
图15.恶意软件发送的特征字符串