深入分析Spark后门的多个版本,逐步揭秘Molerats恶意组织活动轨迹

来源:岁月联盟 编辑:猪蛋儿 时间:2020-03-16
我们分析了2019年恶意活动中使用的投递文档,发现该文档是启用宏的Word文档(SHA-256:40b7a1e8c00deb6d26f28bbdd3e9abe0a483873a4a530742bb65faace89ffd11)。该宏通过将文档中的文本框设置为“Shapes(“textbox1”).Visible = True”的方式来使诱导内容可见,而我们在本文前面所分析的攻击活动中没有使用这样的诱饵内容。另一个明显的区别在于,尽管2019年1月和2019年10月的投递文件中都分别写入了第二个VBScript %userprofile%/wmsetup.vbs和programdata/Micorsoft/Microsoft.vbs,但wmsetup.vbs脚本中包含二进制Payload,而Microsoft.vbs会尝试下载另一个VBScript,下载的VBScript将负责下载二进制Payload。wmsetup.vbs脚本将会解码嵌入式Base64编码的Payload(SHA-256:9511940ed52775aef969fba004678f4c142b33e2dd631a0e8f4e536ab0b811db),并将其保存到%temp%/ihelp.exe,通过运行以下命令来创建持久性:
schtasks /create /f /sc minute /mo 1 /tn ihelp /tr %temp%/ihelp.exe
2019年1月投递的Spark Payload包含一些显著特征,包括使用与其他已知样本不同的免费可用库,例如使用msgpackv1库而非JSON来构建其配置和C2通信,以及使用SFML库而非cURL。此外,与2019年11月投递的Spark Payload有所不同,该Payload使用AES密码解密其配置和其他相关字符串,并加密和解密其C2的网络通信。它使用提供的密钥字符串的完整SHA-256哈希值,而无需在密钥和密文上使用自定义XOR解密。使用msgpack构造Payload的解密配置如下所示:
/x88/xa4jevG/xadsmartweb9[.]com/xa3JRk/xa1//xa3ufRP/xa4qNxp/x00/xa4kfds/xa0/xa4WjaS/x01/xa3WnF/xb8OMfX5GiCmOICUvhunB2lWQ==/xa3sRF/xcd’/x10
我们还分析了2020年Spark恶意活动的投递文档(SHA-256:8c0966c9518a7ec5bd1ed969222b2bcf9420295450b7ed2f45972e766d26ded8),发现它与2019年1月和10月的投递文档有所不同。首先,初始投递文档不包含宏,而是尝试从Google Drive加载远程模板,其URL如下:
hxxps://drive.google.com/uc?export=download&d=1NbCEnL-jA89PWBEhLWwHmBM5nmUKNRS8
远程模板(SHA-256:a0ae5cc0659693e4c49d3597d5191923fcfb54040b9b5c8229e4c46b9330c367)包含一个可以从下面的URL下载可执行文件的宏:
hxxs://drive.google.com/uc?export=download&id=1yiDnuLRfQTBdak6S8gKnJLEzMk3yvepH
在Google Drive链接(SHA-256:7bb719f1c64d627ecb1f13c97dc050a7bb1441497f26578f7b2a9302adbbb128)中托管的可执行文件是一个经过编译的AutoIt脚本,该脚本尝试将Spark后门安装到%userprofile%/runawy.exe,这与我们在attachment.doc看到的安装程序完全相同。
下表中比较了Spark Payload之间的功能区别。遗憾的是,我们无法获得2019年10月攻击中传递的Payload。如果我们将2019年1月和2020年的投递文件中安装的Spark样本与2019年11月Pictures.pdf投递文件中安装的Spark样本进行比较,我们会看到明显的差异,可以说明该恶意组织正在不断开发这个后门程序。
2019年1月Spark样本:
Dropper:无
HTTP库:SFML
配置结构:msgpack version 1
Payload加壳:Enigma Virtual Box
加密方式:AES加密密文
加密数据:配置、C2通信的名称、收集系统信息的命令
持久性:任务计划
2019年11月Spark样本(Pictures.pdf):
Dropper:编译的AutoIt脚本
HTTP库:cURL 7.56.0-DEV
配置结构:JSON for Modern C++ v2.1.1
Payload加壳:Enigma (5.X)
加密方式:滚动XOR加密密钥+3DES加密密文
加密数据:配置、C2通信的名称、收集系统信息的命令
持久性:@StartupDir中的LNK快捷方式
2019年10-11月Spark样本(attachment.doc)和2020年1月恶意活动中使用的样本:
Dropper:编译的AutoIt脚本
HTTP库:elnormous' HTTPRequest
配置结构:JSON for Modern C++ v3.7.0
Payload加壳:Enigma (5.X)
加密方式:滚动XOR加密密钥+自定义AES解密16字节的密文块
加密数据:配置、C2通信的名称、收集系统信息的命令
持久性:任务计划、@StartupDir中复制的可执行文件
十一、Spark与Downeks的关联
在卡巴斯基的报告中提到,Molerats子集团(Gaza Cybergang)开展了Operation Parliament恶意活动,并在该恶意活动中使用了Spark Payload,而我们观察到该恶意组织在DustySky恶意活动中还传递了Downeks。从开发和安装的角度来看,我们注意到Spark和Downeks之间存在一些相似之处。
例如,我们发现相同binder的木马,这是一种用于打开诱饵文档并安装Payload的恶意应用程序,其中一个安装了Downeks Payload,另外两个安装了Spark。
从开发的角度来看,Downeks和Spark Payload都使用了GitHub上几个开源库和代码来进行C2通信,并使用JSON构造数据。首先,Spark使用cURL库进行C2通信,其使用的版本是7.56.0-DEV版本,其源代码可以在GitHub上找到。而Downeks使用cURL与C2服务器进行通信,但使用的是早期版本7.39.0。其次,Spark Payload使用JSON解析其配置并构造发送到C2服务器和从C2服务器发送的消息,它使用的JSON Modern C++ Version 2.1.1可以在GitHub上找到。Downeks同样适用JSON解析其配置并构造从C2服务器发送和接收的数据,但它使用的是腾讯的RapidJSON,也能从GitHub上免费获得。上述事实与我们此前观察到的在不同版本Spark中使用了不同JSON库的特征相符。
十二、总结
在2019年10月至12月期间,Molerats恶意组织将目标瞄准了六个国家中的八个不同组织。该恶意组织使用鱼叉式网络钓鱼邮件发送恶意的Word和PDF文档,并尝试对受害者进行社会工程以使其感染病毒,而没有使用漏洞利用的方式。该恶意组织在攻击中使用Spark后门,但在此过程中使用了其他免费可用的库来不断开发该后门工具,以构造重要数据并进行C2通信。
 

上一页  [1] [2] [3] [4] [5] [6] [7]