Rietspoof恶意软件释放多个恶意有效载荷

栏目: 服务器 · 发布时间: 5年前

内容简介:自2018年8月以来,我们一直在监控名为Rietspoof的新恶意软件。Rietspoof是一种新的多阶段恶意软件,具有一些非常引人注目的特性和功能。当我们刚开始跟踪Rietspoof时,它每月更新一次。但是,在2019年1月,我们注意到其更新节奏更改为了每日。Rietspoof利用多个阶段,结合各种文件格式,分发更多样化的恶意软件。我们的数据表明,第一阶段是通过即时消息客户端(如Skype或Messenger)分发的。它分发了一个高度混淆的Visual Basic脚本,其中包含一个硬编码和加密的第二阶段—

自2018年8月以来,我们一直在监控名为Rietspoof的新恶意软件。Rietspoof是一种新的多阶段恶意软件,具有一些非常引人注目的特性和功能。当我们刚开始跟踪Rietspoof时,它每月更新一次。但是,在2019年1月,我们注意到其更新节奏更改为了每日。

Rietspoof利用多个阶段,结合各种文件格式,分发更多样化的恶意软件。我们的数据表明,第一阶段是通过即时消息客户端(如Skype或Messenger)分发的。它分发了一个高度混淆的Visual Basic脚本,其中包含一个硬编码和加密的第二阶段——一个CAB文件。CAB文件扩展为可执行文件,该文件大多使用Comodo CA颁发的有效证书进行数字签名。在第4阶段.exe安装一个下载程序。

有趣的是,第三阶段使用简单的TCP协议与C&C进行通信,其IP地址在二进制文件中是硬编码的。该协议使用AES-CBC模式加密。在第一版中,我们观察到密钥是从初始握手中获得的,而在第二版中,它是从硬编码的字符串中派生出来的。在第二版中,协议不仅支持自己的TCP协议,而且还尝试利用HTTP/HTTPS请求。考虑到改变通信协议所需的工作量,很少看到C&C通信协议被修改到这种程度。虽然改变混淆方法很常见,但C&C通信在大多数恶意软件中通常保持相对稳定。

此下载程序使用本地协议从硬编码地址获取另一个阶段(阶段4)。虽然Stage 3协议包括bot功能,但Stage 4仅作为指定的下载程序。

此外,C&C服务器仅与设置为USA的IP地址通信,这使得我们认为攻击者正在针对特定目标进行攻击,或者攻击者仅出于测试原因使用USA IP范围。并且,有可能还有更多阶段尚未公布。以下是我们迄今为止的全面分析结果。

一、VBS混淆&释放嵌入文件

Visual Basic脚本的第一部分是用于读取和反混淆嵌入式二进制文件的函数。

Rietspoof恶意软件释放多个恶意有效载荷

从这个代码片段中可以看出,脚本开始以特定的偏移量读取代码,对CAB文件进行反混淆处理并为下一阶段作准备。代码逐字符转换为ANSI值并添加到countervariable。在每一步,计数器与val_01(硬编码为15)进行异或,并附加到已解码的字节。有趣的是,在每一步中,字符串var_str_01也会附加到var_str_02。

Rietspoof恶意软件释放多个恶意有效载荷

在此步骤之后,var_str_02将用作新函数的参数。第二个参数是TempPath加文件名:

Rietspoof恶意软件释放多个恶意有效载荷

Rietspoof恶意软件释放多个恶意有效载荷

在此阶段,CAB文件将以“JSWdhndk.sjk”名称保存到计算机的Temp文件夹中。需要从中提取后续阶段,这通过使用expand.exe来完成:

Rietspoof恶意软件释放多个恶意有效载荷

二、执行PE和掩盖痕迹

该脚本首先通过简单地读取注册表项“HKEY_USERS\S-1-5-19\Environment\TEMP”来检查登录的用户是否为Admin。如果成功,则将func_read_Registry设置为True。

Rietspoof恶意软件释放多个恶意有效载荷

当此标志设置为True时,VBS将日期更改为01-01-2109,从%TEMP%删除CAB文件,运行扩展的可执行文件,并删除原始脚本以掩盖其痕迹。然后,它将日期更改回实际日期。在未释放文件的脚本中不使用具有2109年的日期。一开始,我们认为这只是一个错字,预计的临时日期是01-01-2019,但该假设没有得到证实。

Rietspoof恶意软件释放多个恶意有效载荷

恶意软件作者的一个有趣举措是使用cmd / c从命令行运行命令。看一下这个命令的描述:

Rietspoof恶意软件释放多个恶意有效载荷

这很可能是想通过使用执行的命令生成更多命令来破坏行为检测。

即使跳过上一步,如果当前用户不是admin,则接下来运行扩展的PE文件。首先,该脚本删除计划任务Microsoft Windows DOM对象帮助程序。这是由恶意软件作者完成的,以确保他们可以在计划任务中创建一个新值,该任务指向前一阶段扩展的扩展PE文件;它被设置为在一分钟后执行。然后从%TEMP%目录中删除CAB文件。

Rietspoof恶意软件释放多个恶意有效载荷

三、增加持久性

在新版本的VBS中,恶意软件作者从2019年1月22日开始添加了一个新的持久性功能。该脚本在启动时创建一个名为WindowsUpdate.lnk的新LNK文件。此lnk文件在启动后运行扩展的PE文件,以确保在重新启动计算机时可执行文件。

Rietspoof恶意软件释放多个恶意有效载荷

四、签名

几乎每个版本的VBS文件都包含一个新证书,例如:

Rietspoof恶意软件释放多个恶意有效载荷

简单的将这个代码块从base64转换为十六进制,然后解析这个ASN.1十六进制字符串时,我们获取到该证书的序列号:

Rietspoof恶意软件释放多个恶意有效载荷

Rietspoof恶意软件释放多个恶意有效载荷

大多数证书由COMODO或Sectigo颁发

五、第3阶段 – 释放bot

到目前为止,我们已看到了Rietspoof第三阶段的两个版本,观察发现它们在通信协议方面大不相同。此阶段具有简单bot的功能:它可以下载/上传文件,启动进程或启动自毁功能 C&C服务器也已经实现了基于IP地址的基本地理限制。当我们尝试从实验室网络与它进行通信时,我们没有收到任何“有趣”命令;然而,当我们将假客户端移到美国时,我们收到了包含下一阶段的命令。

我们注意到第三阶段正在迅速发展,有时会同时运行两个不同的分支。在我们的分析过程中,通信协议被多次修改并添加了新功能。例如,早期版本支持字符串混淆,几天后实施,然后在1月23日,我们看到回滚了其中的一些更改。较新的版本还支持命令行开关“/ s”,用于将自己安装成名为“windmhlp”的服务。

(一)时间表

·15.1 混淆占位符,通信协议v1

· 18.1 实现了混淆,服务安装,通信协议v2

· 22.1 混淆报废,通信协议v1

· 23.1 混淆报废,通信协议v1,服务安装

Bot要么被地理围栏阻挡,要么没有进行分发。通信具有简单的结构:

· Req:client_hello(在版本2中已弃用)

· Res:client_hello(在版本2中已弃用)

· Req:ID

· Res:OK或HARDWARE

· Req:HW(如果之前的回复是HARDWARE)

· Res:OK

只有在第一次看到发送的客户端ID时才会发送命令“HARDWARE”。命令“OK”总是导致通信终止。这个简单的协议每隔几分钟定期执行一次。

(二)通信协议v1

第三阶段通信的第一版使用一个相当简单的协议。首先,通过由消息和响应组成的握手生成密钥和初始化向量,包括32个随机字节和4个字节的CRC32校验和。然后,将随机字节一起进行xor-ed,并在结果上使用SHA256得到密钥。类似地,在SHA256摘要上使用MD5会生成初始化向量。从现在开始,这些参数用于AES-CBC加密消息。请注意,填充函数设计奇怪:如果需要,最后一个块填充为16个字节,并且在最后一个块之后总是追加另外16个零字节。

Rietspoof恶意软件释放多个恶意有效载荷

Rietspoof恶意软件释放多个恶意有效载荷

初始握手和随后的密钥生成

Rietspoof恶意软件释放多个恶意有效载荷

字符串“HELLO\n”被混淆并随后被去混淆

通信以client_hello开始,这条消息只包含“HELLO\n”,希望“HELLO \ n”作为响应(实际上响应始终是“HELLO\n\n\n\n\n\n…”)。然后,客户端发送命令“ID:<MD5 of adapter MAC address> 2.10 \ n”。收到响应“OK”,“HARDWARE”或更强大的命令。在前者中,通信结束并且循环休眠两到五分钟。响应“HARDWARE”引发请求“HW:<OS info> CPU <CPU info> RAM:<RAM info> USER:<process privileges>”,进程权限为“admin”(进程具有管理员权限)或“user”(否则)。同样,在该消息之后,接收到响应“OK”,相应地结束通信。

Rietspoof恶意软件释放多个恶意有效载荷

以下六个命令可以取代OK:

Rietspoof恶意软件释放多个恶意有效载荷

(三)通信协议v2

Rietspoof第三阶段的第二版也使用了一个类似的协议,增加了一些新的内容。第二版尝试通过HTTP / HTTPS进行通信,除非设置了代理,在代理情况下,它会转向原始TCP。此新版本也避开了初始握手,因为它使用硬编码字符串“M9h5an8f8zTjnyTwQVh6hYBdYsMqHiAz”而不是对两个随机字符串进行异或。同样,这个字符串通过SHA256,产生一个密钥,SHA256经MD5生成一个初始化向量。这些参数用于AES-CBC加密消息。

Rietspoof恶意软件释放多个恶意有效载荷

混淆“HELLO \ n”字符串

由恶意软件生成的HTTP GET请求是普通的,除了可能三个标头之外。下面是HTTP请求的示例。请注意,Content-MD5标头不是必需的;此外,Content-MD5标头以自定义和标准的不合规方式使用。此外,User-agent字符串在二进制文件中是硬编码的。

GET  /<path>?<GET data> HTTP/1.1
Host:<domain>
Connection:close
Content-MD5:<base64 encoded message>
User-agent:Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1

幸运的是,对于我们来说,旧协议仍然适用于使用HTTP代理的情况。我们相信这在分析恶意软件期间可以起到防止中间人攻击的保护作用。但是,在我们的例子中,它允许我们部署一个只作很少修改的新跟踪脚本,因为只更改了密钥协商协议。

六、第4阶段 – 下载程序

此阶段尝试通过TCP上的NTLM协议建立身份验证的通道,其C&C的IP地址是硬编码的。

Rietspoof恶意软件释放多个恶意有效载荷

启动NTLM身份验证

Rietspoof恶意软件释放多个恶意有效载荷

认证和从C&C服务器接收数据的主循环

之后,它开始通过上述通道与C&C通信,目的是进行下一个阶段或可能的最终有效载荷。

七、总结

如上所述,这个新的恶意软件Rietspoof在2019年1月的活动大幅增加。在此期间,开发人员使用了几个有效的证书来为相关文件签名。此外,有效载荷也经历了开发,即多次改变Stage 3通信协议的实现。虽然Rietspoof的数据很广泛,但动机和运作方式仍然未知,目标也未知。而且,迄今为止,大多数防病毒软件很少检测到此恶意软件。

我们的研究仍无法证实我们是否已发现整个感染链。虽然恶意软件具有bot功能,但它主要设计为dropper。此外,低流行率和地理限制意味着其他可能的未知因素。例如,我们可能错过了仅分发到特定IP地址范围的其他样本。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

C++程序设计原理与实践

C++程序设计原理与实践

(美)Bjarne Stroustrup / 王刚 等 / 机械工业出版社 / 2010.7 / 108.00元

本书是经典程序设计思想与C++开发实践的完美结合,是C++之父回归校园后对C++编程原理和技巧的全新阐述。书中全面地介绍了程序设计基本原理,包括基本概念、设计和编程技术、语言特性以及标准库等,教你学会如何编写具有输入、输出、计算以及简单图形显示等功能的程序。此外,本书通过对C++思想和历史的讨论、对经典实例(如矩阵运算、文本处理、测试以及嵌入式系统程序设计)的展示,以及对C语言的简单描述,为你呈现......一起来看看 《C++程序设计原理与实践》 这本书的介绍吧!

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具