一、概述
近日,安天CERT监测到一起乌克兰针对俄罗斯的窃密行动,该起攻击行动在TTP(战术、技术&程序)中以多种方式对抗杀毒软件和防火墙设备等安全设备。本次行动中攻击手法简单,载荷尚未成熟,注册域名数量较少,并且夜莺是乌克兰的标志性动物之一,因此安天将这次攻击活动命名为“雏莺行动”。
该起攻击行动主要通过钓鱼邮件进行传播,将邮件伪装为俄罗斯联邦储蓄银行(Sberbank)官方通知,诱导受害者下载附件中的带有宏的Office文档,并诱使受害者执行恶意宏代码。一旦文档中的恶意宏被执行,会在多层下载解码后运行此次攻击行动的有效载荷,对除乌克兰以外国家的设备进行攻击。该样本会窃取浏览器的Cookies、登录信息和支付信息回传给攻击者Telegram服务器,造成受害者财产损失和机密信息泄露。
此次行动,攻击者将窃密功能隐藏在最终的载荷里并且在内存中加载一段ShellCode与远程服务器保持通信,窃密载荷一旦发现目标系统有沙箱系统、调试行为,以及目标系统属于乌克兰的设备,便立即自删除。通过对该起行动时间、域名(攻击者使用的域名为usamyforever.com,译为“我永远的美国”)等背景关联,推测是乌克兰针对俄罗斯的一起窃密行动。
二、事件对应的ATT&CK映射图谱
该起攻击行动样本技术特点分布图:
图 2-1 技术特点对应ATT&CK的映射
具体ATT&CK技术行为描述表:
表 2-1 ATT&CK技术行为描述表
三、样本概览
3.1 攻击流程
攻击者首先通过精心构造的钓鱼邮件诱使受害者执行邮件附件文档中的宏代码,宏代码一旦执行,会下载名为“excel.txt”的脚本,该脚本中有两部分功能:第一部分功能为使用PowerShell下载名为“pow.ps1”的脚本并执行;第二部分为下载名为“pork.txt”的脚本并运行。“pow.ps1”脚本中包含一串Base64编码的字符串,解码后是一个.NET可执行程序,该可执行程序主要功能为窃取浏览器的Cookies、登录信息、支付信息等,并将其通过Telegram bot接口(该接口为聊天软件Telegram提供给用户的自定义消息发送接口)发送给攻击者。近年来,由于Telegram信道具备隐蔽性、难溯源等特点,越来越多的窃密软件使用Telegram信道代替了传统的命令和控制服务器。将“pork.txt”功能为下载名为“pay.txt”的脚本,使用FromBase64String解码并执行。“pay.txt”解码异或后加载ShellCode,与远程服务器通信。
图 3-1 攻击流程图
3.2 攻击流程分析
此次攻击行动中包含众多前导文件,其功能大体为下载下一阶段载荷,主要包括带有宏病毒的名为“scan-100218.docm”的文档、excel.txt、pow.ps1、pork.txt、pay.txt。
该文档中的内容伪装成俄罗斯联邦储蓄银行(Sberbank)做诱饵,该银行成立于1814年,是俄罗斯最大的国有商业银行,占有四分之一以上的国内银行资产,与俄罗斯经济和社会发展息息相关。
图 3-2 文档内容
该文档中包含宏代码,通过分析发现恶意宏会读取excel.txt中的内容,与服务器建立连接。在分析时该服务器已经失效。
图 3-3 部分宏代码内容
excel.txt的内容中包含了很多俄罗斯著名运动员的信息作为混淆,并在末尾处夹杂了一段PowerShell代码,其功能为下载“pow.ps1”、“pork.txt”等后续载荷并执行。
图 3-4 excel.txt内容
pow.ps1脚本中包含一个名为$load_string的变量,该变量使用Base64进行编码,解码后加载该变量,将解码后的内容命名为“random_user”。
图 3-5 pow.ps1脚本
$load_string解码后是一个.NET可执行程序,经过分析为开源窃密程序修改而成。
图 3-6 .NET可执行程序
pork.txt中功能主要为下载pay.txt脚本,并使用FromBase64String解码该脚本。
图 3-7 pork.txt脚本
解码后的pay.txt,其中$var_code变量依旧是一段Base64编码的字符串,并且该变量是经过异或加密的,解密密钥为十进制的35。
图 3-8 pay.txt脚本
解码异或$var_code变量,最后是一段ShellCode代码,可以看到LoadLibraryA、VirtualAlloc等函数。
图 3-9 ShellCode代码
四、窃密载荷分析
4.1 .NET样本分析
表 4-1 样本标签
.NET可执行程序样本总体功能包含四个模块,分别为运行环境检测模块、搜集用户信息模块、搜集谷歌浏览器信息模块和搜集火狐浏览器信息模块。
图 4-1 样本总体功能代码
运行环境检测包含反分析部分及受害者身份校验部分。
其中,反分析部分包含反调试、反分析工具、反沙箱、反虚拟机、系统时间检测等。
表 4-2 反分析汇总
受害者身份校验部分会通过访问http://ip-api.com/xml获取IP地址信息,检测受害者所在国家是否为乌克兰。
图 4-2 校验受害者国家
样本如果满足反分析中的任一条件,或受害者国家为乌克兰,则会释放一个bat文件到临时目录,该bat功能为删除自身所有相关文件,不再继续攻击。
图 4-3 释放bat文件,删除自身
如果样本通过反分析测试,首先根据PowerShell下发的user参数发送Telegram bot消息,告知攻击者已经启动。
图 4-4 发送Telegram bot消息
搜集Chrome和Firefox的Cookie、登录信息和支付信息,同样上传到相同的Telegram bot接口。api key为:
Token = “1655355999:AAGhgS_Fna0x1kr5HuAKo0I9B8mAaDjfCh8”;
ID = “1197196256”;
图 4-5 搜集浏览器信息
4.2 ShellCode分析
pay.txt通过PowerShell脚本执行,功能为解密并加载ShellCode。其中ShellCode执行前嵌入了实时获取的GetModuleHandleA和GetProcAddress函数地址。
图 4-6 动态执行ShellCode
ShellCode执行后,会反复尝试连接https://usamyforever.azureedge.net/RE4rzV2t和https://usamyforever.com/RE4rzV2t,以接收下一步指令。
五、关联分析
通过对本次攻击活动中使用的文件、域名等信息进行关联分析发现:
本次攻击活动中攻击者将钓鱼邮件伪装为俄罗斯联邦储蓄银行官方通知,判断本次攻击活动的目标为俄罗斯。
根据使用的诱饵文档创建时间,推测本次攻击活动时间大概为三月末,这个时间点刚好是俄罗斯调动装甲军队前往俄罗斯与乌克兰的边境,俄乌冲突升级。
本次攻击活动使用了开源的窃密木马,攻击者在其中加入了规避乌克兰地区的模块。
攻击者使用的域名为usamyforever.com,译为“我永远的美国”。美国与乌克兰一直保持着亲切友好的战略关系。
综合以上因素,推测本次事件可能为乌克兰针对俄罗斯的一次窃密行动。