此前,有报道称捕获到针对乌克兰2019年大选的攻击活动,根据其宏代码的命名方式关联到俄罗斯APT组织APT28,但近期 ZLAB-YOROI研究员发现此类方式的宏利用代码已在githun公开,或许之前的关联有些不可靠。另外,加拿大今日又发布了俄罗斯干扰大选的一些活动。链接在参考中。
3月中旬,一份引用乌克兰选举的可疑办公室文件出现在野外。这个文件不常见,看起来精心准备,并且正在谈论谁在选举民意调查中领先,争论最受欢迎的候选人Volodymyr Zelenskiy的生活。该文件实际上是更复杂的网络攻击的第一步。
恶意文档的第一个特性是受保护的宏,实际上,当用户试图立即读取它时会显示一个要求输入密码的消息框。使用传统的恶意软件分析工具可以轻松绕过此Office密码保护,在代码提取之后,可以按如下方式分析纯文本代码。
乍一看,没有混淆代码的痕迹,但可以在宏中发现异常函数调用:ActiveDocument.BuiltInDocumentProperties.Item(“Company”)。该方法允许恢复属于文档元数据的属性。在特定情况下,代码尝试读取“Company”属性中包含的值,该属性嵌入了base64编码的字符串。
隐藏恶意负载的文档属性部分的使用也被Emotet银行恶意软件使用,这是对全世界公司和用户最具侵略性的恶意软件威胁之一。无论如何,与初始代码不同,解码的有效负载显示了高度混淆的Powershell命令。
经过几次反混淆阶段后,清晰的代码如下:
这个脚本非常有趣,因为它的第一个动作旨在降低其指纹:它禁用Powershell ScriptBlock日志记录和反恶意软件扫描接口(AMSI)。
ScriptBlock日志记录功能是在Powershell v5中引入的,它能够记录PowerShell引擎执行的代码块,包括混淆的代码段和相应的反混淆代码段。相反,AMSI是一种通用的接口标准,允许应用程序和服务与安装在计算机上的任何反恶意软件产品集成,允许它们在执行之前评估代码,可能在有效负载去混淆之后。关于AMSI的更多细节已在先前的分析报告中描述。
因此,恶意软件会检查当前的Powershell版本:如果它大于或等于3,则会禁用上述安全功能。使用几行代码绕过这两个功能。可以通过以下说明禁用ScriptBlock日志记录:
相反,AMSI旁路代码甚至更简单:
该指令能够修改“ amsiInitFailed ”变量的值,将其设置为“ true ”。这样,当“ScanContent”方法使用该变量来确定AMSI是否应该扫描要执行的命令时,它将返回AMSI_RESULT_NOT_DETECTED值并让有效负载运行。调查这些技术,似乎恶意软件作者从本文中获得灵感来实现这些功能。事实上,博客文章解释了AMSI和BlockLogging禁用技术。
此时,powershell代码尝试从“hxxps:// functiondiscovery [。] net:8443 / admin / get.php”下载下一个感染阶段,之后设置InternetExplorer 11 User-Agent以保持在雷达之下。此代码还包括Powershell Empire特征指示器:cookie“session = J + kcj5bWE11g4zBLrjvZjNO296I =”。
网络通信最终成为一个命令和控制地址位于捷克共和国。该IP于2018年10月首次出现,并一直有效至2019年4月
接触C2服务器的脚本部分是使用流行的后期开发工具Empire创建的,其他公司已经分析过的一些Sofacy样本使用Empire生成的脚本作为后期开发模块。此外,根据FireEye 对俄罗斯黑客组织的分析,APT28“ 正在增加对公共代码库的依赖,例如Carberp,PowerShell Empire,PAS webshell,Metasploit模块等,可能会加速其开发周期并提供合理的否定性 ”。
APT28(又名Fancy Bear,Pawn Storm,Sofacy Group,Sednit和STRONTIUM)在2018年9月至12月期间对欧洲的民主机构发起了几次袭击。该集团自2007年以来一直活跃,并且针对政府,军队和安全全球组织。他们还涉及针对2016年总统选举的一系列攻击。
根据赛门铁克10月份发布的一份报告,该组织正在积极开展针对欧洲和南美洲政府和军事组织的网络间谍活动。从2017年开始到2018年,APT28集团重返欧洲和南美洲的秘密情报收集行动。
无论如何,分析样本的能力对归因产生了一些混淆。如前所述,实际上,文档的内容不会以任何方式混淆:用户可以阅读有关乌克兰选举的整篇文章,那么他为什么要启用宏呢?此外,宏代码也是完全可读的,无需使用加密或混淆来逃避检测。唯一的宏保护机制在于通过密码锁定开发项目,但使用传统的恶意软件分析工具很容易绕过它。所有这些元素都不是规范的APT28滴管的特征,其中传统上采用了重度混淆。SecurityArtWork团队,在他们的分析中,由于Vitali Kremez研究的老样本
假设样本属于Sofacy小组。研究人员团队强调了宏代码中使用的函数名称与WMI连接器的使用之间的相似性,以启动新的恶意进程。
但是,在分析这两个文档时,即使某些函数的名称相等,宏也不会显示相同的结构。在右图中,对应于Vitali Kremez分析的样本,代码非常混淆:它包含用于规避AV的“$”字符和用于执行解码的自定义base64例程
但是,在分析这两个文档时,即使某些函数的名称相等,宏也不会显示相同的结构。在右图中,对应于Vitali Kremez分析的样本,代码非常混淆:它包含用于规避AV的“$”字符和用于执行解码的自定义base64例程。
调用WMI的宏部分对应于用于绕过Microsoft ASR(攻击面减少)并从Office应用程序启动新进程的技巧。由于类似的代码片段在Github(https://gist.github.com/infosecn1nja/24a733c5b3f0e5a8b6f0ca2cf75967e3)上公开可用,因此这个技巧和使用过的代码与俄罗斯组没有直接关系。因此,文档之间宏代码的相似性基本上依赖于这种开源代码重用。
我们对此归属并不完全有信心,因此我们正在调查最近与Sofacy小组有关的其他样本,以更好地探讨他们对影响政治选举的兴趣。
e259df89e065c4162b273ebb18b75ea153f9bafe30a8c6610204ccf5e3f4ebcd
rule possible_APT28_ukraine_election_document {
meta:
description = "Yara rule for ukraine_election_document"
author = "Cybaze - Yoroi ZLab"
last_updated = "2019-04-10"
tlp = "white"
category = "informational"
strings:
$a1 = {F6 EC 18 27 58 C5 1E CB 36 B0 79}
$a2 = {50 4B 03 04 14 00 06}
$b = "[Content_Types].xml"
condition:
all of them
}
参考链接:
https://blog.yoroi.company/research/apt28-and-upcoming-elections-possible-interference-signals/
https://cyber.gc.ca/sites/default/files/publications/tdp-2019-report_e.pdf