本文介绍FindMyName攻击活动中出现的Azorult恶意软件变种和使用的混淆技术。
Azorult是通过垃圾邮件活动传播的恶意宏文档中使用的木马家族,同时也是RIG利用套件中的备用payload。2018年10月,研究人员发现一起使用Fallout利用套件将新Azorult变种作为主payload进行传播的正在进行的攻击活动。因为final利用页面的域名是findmyname[.]pw
,因此研究人员将该攻击活动命名为FindMyName。
10月20日,研究人员发现了FindMyName攻击活动。在随后的3天内,研究人员共发现Fallout 利用套件使用的5个不同的URL链。这5个URL链都将受害者重定向到同一个域名:findmyname[.]pw
。
FindMyName攻击活动的第一阶段如图1所示:
图1 攻击的第一阶段
虽然findmyname[.]pw的5个final页面都是不同的,但是内容是相似的。如图2所示:
图2 混淆后的landing page
Fallout利用套件使用了不同的html标签来隐藏真实的利用代码和高度混淆的标签内容,包括span, h3, p
等。解密后,真实的VBScript代码利用了 IE VBScript漏洞CVE-2018-8174
。
图3利用CVE-2018-8174的代码段
漏洞利用成功后,Fallout利用套件会下载一个.tmp
文件到%Temp%
目录,并调用CreateProcess
来执行tmp文件。进一步分析发现.tmp
文件是最新的Azorult变种。这也是研究人员首次发现Azorult恶意软件变种被Fallout利用套件用作主要的payload。
Azorult恶意软件加载是暗网出售的商业化木马。研究人员在FindMyName攻击活动中共发现3个Azorult恶意软件的变种,其中有2个之前没有出现过。研究人员分析获取的样本发现恶意软件有以下特征:
control flow flattening
)混淆技术来逆向恶意软件;process hollowing
进程创建技术构造新的恶意软件镜像;最早的Azorult恶意软件是用Microsoft Visual C++ 7.0编写的。
control flow flattening
混淆来阻碍逆向分析恶意软件,如图4。timer
。如果模拟器模拟上百个time consuming
函数,当模拟器超时时会将文件标记为非恶意的。图4 control flow flatten
图5 API flooding
Azorult会使用process hollowing
技术来构造新的恶意软件镜像。
恶意软件执行如图6所示:
图6 样本process hollowing
从进程中复制出的新木马文件是用Delphi编写的。当样本执行时,会连接到C2服务器接收指令。为了绕过IPS,C2流量也被混淆了。发回C2的数据包括用哈希算法编码的机器GUID、Windows产品名、用户名和计算机名形成的唯一受害者ID。然后恶意软件会解密C2地址,并将加密的受害者IDPOST
到51[.]15[.]196[.]30/1/index.php
。C2流量如图7所示。
图7 C2请求
样本会解密并验证C2响应的有效性。解密的C2内容由三个部分组成。第一个部分在<n></n>
标签中,含有48个合法的DLL,用于信息窃取。第二部分在<d></d>
标签中,含有用于信息窃取的应用信息:包括应用路径、相关的注册表和凭证文件名。第三部分位于<c></c>
标签中,含有样本的C2配置。C2配置文件如图8所示。根据pcap分析,研究人员发现该样本会检查以下字符:
图8 C2配置
C2中说明的恶意软件:
main.db
;metadata
(.vdf
);ip-api[.]com/json
来获取主机IP信息;图9是从Firefox和Thunderbird中窃取敏感信息的C2配置示例:
图9 窃取信息的C2配置
C2流量如图10所示:
图10 C2流量概览
样本会从32中浏览器中窃取凭证和用户数据,包括Chrome, Firefox和Qihoo 360等主流浏览器。为了从浏览器窃取凭证,样本会从C2响应中下载48个合法的dll文件到%AppData%\Local\Temp\2fd
文件夹,如图11所示:
图11合法dll文件
这一动作的目的是加载nss3.dll和下面的函数:
这些函数都用于复制敏感的浏览器信息。比如恶意软件会用sqlite3_*
函数来获取Firefox浏览器历史信息,如图12所示:
图12使用nss3.dll中的APIs窃取Firefox敏感信息
下面是从保存的Chrome数据中窃取用户名和密码。恶意软件样本会在路径%LOCALAPPDATA%\Google\Chrome\User Data\
下搜索Login Data
。绕过搜索到,就复制Login Data
文件到%AppData%\Local\Temp
,并调用nss3.dll
中的sqlite3_prepare_v2
函数来窃取凭证,如图13所示:
SELECT origin_url, username_value, password_value FROM logins
图13 从窃取的浏览器凭证中选择字符串
恶意软件样本也会从前面提到的浏览器中提取cookie、书签和自动填充信息。凭证信息保存在PasswordsList.txt
,cookies保存到CookieList.txt
。
样本还会从窃取以下加密货币钱包:
恶意软件会找到含有加密货币钱包敏感信息的特定文件。比如,图14就是样本尝试在Coins\MultiBitHD
中找到并发送mbhd.wallet.aes
文件。
图14 窃取加密货币钱包
恶意软件样本会从主流应用中窃取凭证和用户数据,包括Thunderbird, FileZilla, Outlook, WinSCP, Skype, Telegram, Steam。样本也会窃取桌面的文件。图15是样本从%appdata%\Telegram Desktop\tdata
目录中找到D877F783D5*.map*
文件来从Telegram中窃取敏感信息。
图15 窃取应用凭证
恶意软件样本会收集用户信息,包括当前进程,安装的软件,系统语言和时区。窃取的凭证和用户信息都会发送给C2。下面是收集的一些系统信息:
scr.jpg
,如图16所示。图16截屏
ip-api[.]com/json
,来获取受害者主机IP信息。保存json
响应到ip.txt
。system.txt
:CreateToolhelp32Snapshot
来获取当前进程列表Software\Microsoft\Windows\CurrentVersion\Uninstall\
)恶意软件收集的信息如图17所示:
图17 恶意软件收集的信息
攻击者可以通过Create Process
或ShellExecute
远程控制受感染的系统执行任意文件,如图18所示。研究人员还发现恶意软件可以访问恶意URLplugin-update[.]space/download/10.17.18.exe
来获取文件。
图18 调用Create Process
或ShellExecute
来执行文件
Azorult新变种还可以以本地系统权限执行恶意软件。通过以下逻辑来检查当前SID
和token
,如图19所示:
local_system
WTSQueryUserToken
和CreateProcessAsUser
来创建一个系统权限的新进程,如图20。图19 检查SID和token
图20 以本地系统权限创建进程
恶意软件会擦除%temp%\2fda
中的所有文件,并根据C2命令删除文件,如图21和图22所示:
图21 擦除感染痕迹
图22 根据C2命令删除文件
研究人员发现一起新的攻击活动findmyname,攻击者使用Fallout利用套件传播Azorult恶意软件的新变种。该新变种增强了许多能力,可以从更多的软件和加密货币钱包中窃取信息。相比而言,最新的Windows系统主机感染率更低。