导语:卡巴斯基安全人员发现最新Olympic Destroyer背后的攻击者针对的目标是俄罗斯的金融机构以及欧洲和乌克兰的生物和化学威胁预防实验室。他们继续使用非二进制可执行感染向量和混淆脚本来逃避检测。
2018年3月,我们发表了关于Olympic Destroyer的研究,Olympic Destroyer是攻击韩国平昌2018年冬奥会的组织者、供应商和合作伙伴的高级威胁攻击者。Olympic Destroyer是基于蠕虫传播的破坏性网络攻击。在破坏之前,需要侦察和渗透到目标网络中,以选择用于自我复制和自我修改的破坏性恶意软件的最佳启动版本。
我们之前强调过,Olympic Destroyer与其他威胁攻击者不同,因为整个攻击是一场欺骗行为。尽管如此,攻击者犯下了严重的错误,这帮助我们发现并证实罕见的伪造的溯源证据。Olympic Destroyer背后的攻击者伪造自动生成的签名(称为Rich Header),使恶意软件看起来像是由与朝鲜有关的APT组织Lazarus生成。如果读者不了解此伪造技术,建议阅读这篇文章。
Olympic Destroyer的欺骗行为,以及过度使用各种假标志,欺骗了信息安全行业的许多研究人员,引起了我们的关注。根据恶意软件的相似性,一些研究人员认为Olympic Destroyer恶意软件与三名讲中文的APT攻击者和朝鲜APT组织Lazarus联系在一起;一些代码提及了EternalRomance漏洞利用,而其他代码与Netya(Expetr/NotPetya)和BadRabbit勒索软件类似。卡巴斯基实验室设法找到横向移动工具和最初的感染后门,并且控制了一个Olympic Destroyer用于控制韩国受害者的基础设施。
Olympic Destroyer使用的一些TTP和操作安全性与Sofacy APT组织的行为Sofacy APT group activity有一定的相似性。说到假标志,模仿TTP比篡改技术产品要困难得多。这意味着攻击者要对被模仿的操作以及对这些新TTP的操作有着深刻的了解。然而,重要的是要记住,Olympic Destroyer可以被视为使用虚假标的主人:现在我们评估这种连接的可信度为低度和中度。
我们决定继续追踪该组织并设置我们的虚拟“网”捕获Olympic Destroyer再次出现类似的武器库。令我们惊讶的是,它最近又有了新的行动。
在2018年5月至6月,我们发现了新的鱼叉式钓鱼文件,这些文件与Olympic Destroyer过去使用的武器文件非常相似。这一点以及其他TTP让我们相信我们又一次看到了同一个攻击者。但是,这次攻击者有新的目标。根据我们的遥测以及鱼叉式网络钓鱼文件的特征,我们认为此次Olympic Destroyer背后的攻击者针对的目标是俄罗斯的金融机构以及欧洲和乌克兰的生物和化学威胁预防实验室。他们继续使用非二进制可执行感染向量和混淆脚本来逃避检测。
简化的感染流程
一、感染分析
实际上,感染过程稍微复杂一些,它依赖于多种不同的技术,混合了VBA代码,Powershell,MS HTA,JScript。仔细甄别,可以让事件响应者和安全研究人员在任何时候都能识别出这样的攻击。
我们发现的一个新文件的属性如下:
· MD5: 0e7b32d23fbd6d62a593c234bafa2311
· SHA1: ff59cb2b4a198d1e6438e020bb11602bd7d2510d
· File Type: Microsoft Office Word
· Last saved date: 2018-05-14 15:32:17 (GMT)
· Known file name: Spiez CONVERGENCE.doc
嵌入式宏被严重混淆。它有一个随机生成的变量和函数名。
混淆后的VBA 宏
其目的是执行Powershell命令。这个VBA代码使用了与Olympic Destroyer在以前的鱼叉式网络钓鱼攻击中使用的相同的混淆技术。
它通过命令行启动一个新的混淆的Powershell脚本。混淆器使用基于数组的重新排列来改变原始代码,并保护所有命令和字符串,如命令和控制(C2)服务器地址。
有一种已知的混淆工具可以产生这样的效果:Invoke-Obfuscation。
混淆后的命令行Powershell scriptlet
此脚本禁用Powershell脚本日志记录以免留下痕迹:
它具有内联实现的Powershell中的RC4例程,该例程用于解密从Microsoft OneDrive下载的其他payload。解密依赖于硬编码的32字节的ASCII十六进制字母密钥。这是在之前Olympic Destroyer的其他鱼叉式网络钓鱼文件和平昌Olympic Destroyer受害者基础设施中发现的Powershell后门中使用过的熟悉的技术。
下载的第二阶段payload是一个HTA文件,它也执行Powershell脚本。
下载的access.log.txt
该文件具有与由鱼叉式钓鱼附件中的宏执行的Powershell脚本类似的结构。在对其进行反混淆后,我们可以看到该脚本还禁用了Powershell日志记录,并从相同的服务器地址下载了下一阶段的payload。它还使用RC4和预定义的密钥:
最终的payload是Powershell Empire agent。下面我们提供了部分下载Empire agent的http stager scriptlet。
Powershell Empire是一个利用Python和Powershell编写的免费开源利用框架,允许对受感染主机进行无文件控制,具有模块化体系结构并依赖于加密通信。渗透测试公司在横向移动和信息收集的合法安全测试中广泛使用该框架。
二、基础设施
我们认为攻击者使用受感染的合法Web服务器来托管和控制恶意软件。根据我们的分析,发现的C2服务器的URI路径如下:
· /components/com_tags/views
· /components/com_tags/views/admin
· /components/com_tags/controllers
· /components/com_finder/helpers
· /components/com_finder/views/
· /components/com_j2xml/
· /components/com_contact/controllers/
这些是流行的开源内容管理系统Joomla使用的已知目录结构:
Github中Joomla组件的路径
不幸的是,我们不知道在Joomla CMS中究竟利用了哪些漏洞。众所周知的是,其中一个有payload托管服务器使用Joomla v1.7.3,这是该软件的一个非常老的版本,于2011年11月发布。
一台使用Joomla的受感染的服务器
三、受害者及目标
根据多个目标的概况和若干受害者报告,我们认为Olympic Destroyer最近的行动针对俄罗斯,乌克兰和其他几个欧洲国家。根据我们的遥测数据,一些受害者来自俄罗斯金融部门。此外,我们发现的几乎所有样本都由多扫瞄服务从欧洲国家(如荷兰,德国和法国)以及乌克兰和俄罗斯上传。
最新Olympic Destroyer攻击中的目标分布
由于视角有限,因此我们只能根据诱饵文档的内容,电子邮件主题或攻击者挑选的文件名这些配置文件推测潜在目标。
一个这样的诱饵文件引起了我们的注意。它提到了Spiez Convergence,由SPIEZ LABORATORY组织在瑞士举办的生物化学威胁研究会议,该组织不久前参与了Salisbury中毒事件调查。
使用Spiez Convergence 为标题的诱饵文档
在攻击中观察到的另一个诱饵文档(Investigation_file.doc)引用了用于毒害Sergey Skripal和他女儿的神经毒剂:
其他一些鱼叉式钓鱼文件的名称中包括俄文和德文文字:
· 9bc365a16c63f25dfddcbe11da042974 Korporativ.doc
· da93e6651c5ba3e3e96f4ae2dd763d94 Korporativ_2018.doc
· e2e102291d259f054625cc85318b7ef5 E-Mail-Adressliste_2018.doc
其中一份文件包括一张带有完美的俄语的诱饵图片。
俄语版诱惑用户启用宏的消息 (54b06b05b6b92a8f2ff02fdf47baad0e)
其中一份最新的武器文件从乌克兰上传到恶意软件扫描服务中,文件名为nakaz.zip,其中包含nakaz.doc(从乌语翻译为order.doc')。
另一个诱惑消息鼓励用户启用宏
根据元数据,该文件于6月14日进行了编辑。此文档和以前的文档中的西里尔文信息都是完美的俄文,表明它可能是在母语人士的帮助下编写的,而不是自动翻译软件。
一旦用户启用宏,就会显示最近从乌克兰国家机构获取的诱饵文件(日期为2018年6月11日)。该文件的文本与乌克兰卫生部官方网站上的相同。
nakaz.doc中的诱饵文档
对其他相关文件的进一步分析表明,本文档的目标生物和流行威胁预防领域。
四、归因溯源
虽然不全面,但以下发现可以作为这一行动与以往Olympic Destroyer行动之间更好联系的提示。有关Olympic Destroyer重叠和跟踪攻击的更多信息参见卡巴斯基智能报告服务(参见下文)。
类似的混淆宏结构
从上面的文档可以看出明显的结构相似性,好像它们是由同一个工具和混淆器生成的一样。新一波攻击中突出显示的函数名实际上并不新鲜。虽然不常见,但在Olympic Destroyer鱼叉钓鱼文件(MD5:5ba7ec869c7157efc1e52f5157705867)中也找到了名为MultiPage1_Layout的函数。
之前的攻击中使用了相同MultiPage1_Layout函数名
五、总结
尽管最初的Olympic Destroyer攻击保持在低水平甚至消失,但它已经在欧洲、俄罗斯和乌克兰的新攻击中重新出现。2017年底,类似的侦察阶段发生在一个较大的网络破坏阶段之前,意味着摧毁和瘫痪冬季奥运会的基础设施以及相关供应链,合作伙伴甚至场馆。在本次攻击中,我们已经观察到了一个侦察阶段,接下来是一系列具有新动机的破坏性攻击。这就是为什么欧洲所有生物化学威胁预防和研究公司和组织都必须加强其安全性并开展不定期安全审计原因所在。
各种各样的金融和非金融目标可能表明同一恶意软件被不同利益群体使用——即一个组织主要通过网络经济收益而另一个或多个组织开展间谍活动。这也可能是网络攻击外包的结果,在国家行为体中并不罕见。另一方面,财务目标可能是另一个在平昌奥运期间已经擅长这一点的攻击者的虚假标志操作,以引开研究人员的注意力。
根据动机和本次目标的选择可以得出某些结论。然而从所看到的这些片段,试图回答这个行动背后推手时,研究人员很容易犯一个错误。今年年初,Olympic Destroyer以其复杂的欺骗行为出现,永远改变了归属游戏。我们认为,不可能根据定期调查中发现的少数归因媒介得出结论。对Olympic Destroyer等威胁的抵制和威慑应以私营部门与跨国界政府之间的合作为基础。不幸的是,目前世界上的地缘政治局势只会推动互联网的全球分化,并为研究人员和调查人员带来许多障碍。这将鼓励APT攻击者继续进入外国政府和商业公司的受保护网络。
作为研究人员,我们可以做的最好的事情就是继续跟踪这样的威胁。我们将继续对Olympic Destroyer进行监测,并报告该组织的新活动。
IOCs
File Hashes
9bc365a16c63f25dfddcbe11da042974 Korporativ .doc
da93e6651c5ba3e3e96f4ae2dd763d94 Korporativ_2018.doc
6ccd8133f250d4babefbd66b898739b9 corporativ_2018.doc
abe771f280cdea6e7eaf19a26b1a9488 Scan-2018-03-13.doc.bin
b60da65b8d3627a89481efb23d59713a Corporativ_2018.doc
b94bdb63f0703d32c20f4b2e5500dbbe
bb5e8733a940fedfb1ef6b0e0ec3635c recommandation.doc
97ddc336d7d92b7db17d098ec2ee6092 recommandation.doc
1d0cf431e623b21aeae8f2b8414d2a73 Investigation_file.doc
0e7b32d23fbd6d62a593c234bafa2311 Spiez CONVERGENCE.doc
e2e102291d259f054625cc85318b7ef5 E-Mail-Adressliste_2018.doc
0c6ddc3a722b865cc2d1185e27cef9b8
54b06b05b6b92a8f2ff02fdf47baad0e
4247901eca6d87f5f3af7df8249ea825 nakaz.doc
Domains and IPs
79.142.76[.]40:80/news.php
79.142.76[.]40:8989/login/process.php
79.142.76[.]40:8989/admin/get.php
159.148.186[.]116:80/admin/get.php
159.148.186[.]116:80/login/process.php
159.148.186[.]116:80/news.php
ppgca.ufob.edu[.]br/components/com_finder/helpers/access.log
ppgca.ufob.edu[.]br/components/com_finder/views/default.php
narpaninew.linuxuatwebspiders[.]com/components/com_j2xml/error.log
narpaninew.linuxuatwebspiders[.]com/components/com_contact/controllers/main.php
mysent[.]org/access.log.txt
mysent[.]org/modules/admin.php
5.133.12[.]224:333/admin/get.php