需要云计算吗? 即刻开始体验

调查 Mexals 活动的死灰复燃

Stiv Kupchik

寫於

Stiv Kupchik

April 12, 2023

Stiv Kupchik

寫於

Stiv Kupchik

Stiv Kupchik 是 Akamai 安全研究员团队的负责人。他的研究项目主要涉及操作系统内核、漏洞研究和恶意软件分析等领域。他曾在 Black Hat、Hexacon 和 44CON 等会议上展示过他的研究成果。除了是一名网络安全专业人士外,Stiv 还拥有物理学学士学位。

Akamai 的安全研究人员一直在研究一个活跃的加密劫持活动,我们认为这是 Bitdefender 于 2021 年报告的一项攻击活动在死灰复燃。

执行摘要

编辑和备注补充:Tricia Howard

  • Akamai 安全研究部门一直在跟踪和分析 Mexals的死灰复燃,Mexals 一个可能从罗马尼亚发起的加密劫持活动。

  • 该攻击活动至少从 2020 年就开始活跃, Bitdefender 曾在 2021 年 7 月的一份报告中提到过该活动。

  • 最新的一波攻击和恶意软件改进似乎是在 2022 年 10 月开始的。他们现在称自己为 Diicot,这也是罗马尼亚反恐怖主义和有组织犯罪机构的名称。

  • 在 Akamai 客户那里进行了一次恶意 DNS 检测后,Akamai 安全研究人员开始分析该攻击活动。 所有受影响的 Akamai 客户都迅速收到了通知,并采取了适当的应对措施

  • 在最终投放 Monero 加密挖矿程序之前,攻击者使用一条冗长的攻击负载链。

  • 新的功能包括使用 Secure Shell 协议 (SSH) 蠕虫模块、增加的报告、更出色的攻击负载混淆和新的 LAN 传播程序模块。

  • 通过分析该挖矿程序的矿池,我们估计攻击者已经开采了价值约 10000 美元的 XMR 币。

  • 我们提供 抵御策略检测工具 和完整的 入侵迹象 (IOC) 存储库。在本博文发布之前,我们也使用这些工具联系了受害者。

简介

Akamai 的安全研究人员一直在研究一个活跃的加密劫持活动,我们认为这是 Bitdefender 于 2021 年报告的 一项攻击活动在死灰复燃。虽然与原始报告有一些关联,但该恶意软件自那时起已经 有所进化

这两个攻击活动之间的变化之一在于它们的名称:以前称为 Mexals 的团体(参见图 1 中他们的网页)现在自称 Diicot,他们的一个工具也采用同样的名称。 Diicot 也是 罗马尼亚反恐怖主义机构的名称;为了避免混淆,我们将把这个威胁团体称为 Mexals。在分析作案手法、攻击负载链和 IOC 的过程中,明显发现,尽管名称有变化,但这两个攻击活动是有关联的。

攻击者的恶意域的网页。该网页的标题是“Haceru #DIICOT”,具有一张罗马尼亚警察或特警队的图片 图 1:攻击者的域上显示的默认网页(也托管了他们的攻击负载)

在此攻击活动中,我们看到了改进的混淆、更不明显的文件名以及自定义矿池代理, 这在以前的迭代中是不存在的。攻击链首先会暴力破解 SSH 凭据。然后是一条冗长的混淆攻击负载链,攻击负载最终会投放一个 XMRig 加密挖矿程序。其中一个投放的攻击负载是一个蠕虫传播模块,我们认为,此模块在这次死灰复燃的攻击中一直十分活跃。

我们还认为,他们 自己的攻击服务器 托管在一个位于荷兰的 VPS 中,而他们的受害者遍布全球。我们估计,攻击者已经成功开采了超过 1 万美元的 XMR 币。

一些黑客有一个工具包。这些人似乎有一条攻击链

我们在分析攻击者的感染链时,发现了八个可执行文件。这些可执行文件似乎与 Bitdefender 看到的大致相同,不同之处在于文件名和路径以及一些 新功能 (图 2)。

攻击负载名称

用途

History

一个 bash 脚本。检查是否 Update 正在运行。如果没有,则运行它。

Update

一个 经过编译的 bash 脚本。通过 Discord webhook 通知攻击者,并在一个随机的 B 类 IP 网络上运行网络扫描,以寻找打开了 SSH 的机器。将结果提供给 aliases

Chrome/ps

一个网络扫描程序。接受 B 类网络范围 (255.255.0.0) 和端口。扫描该网络范围内打开了该端口的机器,并将结果保存到一个文件中。

aliases

一个用 Golang 编写的 SSH 蠕虫模块。运行 攻击负载

攻击负载

主要的入侵后模块。根据受害者可用的资源,它会安装一个后门、一个加密挖矿程序或一个 LAN SSH 蠕虫病毒。

.diicot

经过编译的 bash 脚本。下载 Opera,一个加密挖矿程序。还会以新用户和 SSH 密钥的形式安装另一个后门。

Opera

一个 XMRig 加密挖矿程序。

retea

经过编译的 bash 脚本。是 LAN 传播程序模块的开始。在内部 LAN IP 范围内运行一个 SSH 端口扫描程序,然后调用 Network,试图用 SSH 入侵机器。

Network

这是 aliases 的另一个变体,功能更少。在本地 LAN 上执行 SSH 字典攻击,将遭到破解的机器的信息(和有效凭据)保存到一个文本文件中。

图 2:攻击者采用的不同攻击负载的摘要

二进制文件的生成和混淆

我们看到的最显著的变化是在攻击负载混淆方面。以前,大多数可执行的攻击负载实际上是用 shc编译的 bash 脚本,但现在,这些经过编译的 bash 脚本也用 UPX打包,并且 UPX 标头遭到剥离,以阻碍分析和解包(图 3)。

在其中一个恶意攻击负载上运行 upx unpack 的 Windows 命令行的屏幕截图。该命令返回一个错误“not packed by UPX”(未被 UPX 打包) 图 3:一个打包的可执行文件无法被 UPX 解包,因为标头已被剥离

幸运的是,我们可以依赖于一个 工具 ,该工具由 Akamai 研究员 Larry Cashdollar 构建,作为 之前的 SIRT 警报的一部分。这使我们能够轻松地恢复 UPX 标头,解包 ELF 可执行文件,并提取其中的 bash 脚本。

然后,我们获得了一个完全剥离、静态编译的二进制文件,没有办法区分恶意软件的代码和 glibc 的代码(图 4)。

从 UPX 解包后,剥离的二进制文件的入口点(开始)。在调用另一个未命名的函数前,有三个未命名的函数加载到寄存器 r8、rcx 和 rdi 中。 图 4:剥离的二进制文件的入口点

我们可以依靠 glibc 的源代码来了解入口点的形态。实际的主函数是加载到 rdi中的函数。仔细研究,我们可以发现一个相当具体的错误字符串: E: neither argv[0] nor $_ works.,我们可以在 Web 上对此进行搜索。因此可以发现 shc。遗憾的是,目前还没有可以轻松获取的反编译器。我们可以调试攻击负载,并在一秒钟后暂停执行,而不是进行逆向工程并创建一个解密程序(这太麻烦了)。解密的 shell 脚本将驻留在恶意软件的内存中,然后我们可以进行转储和分析。

感染链

每个攻击负载相对简单地链接在一起,具有各种方法来设置下一个链接。  图 5:完整的攻击负载链

每个攻击负载相对简单地链接在一起,具有各种方法来设置下一个链接。例如,终止竞争对手的挖矿程序或 CPU 密集型进程,清理 bash 历史记录或安装持久性组件,然后下载并执行下一个攻击负载(图 5)。

主要攻击负载技术分析

aliases

这是一个 Golang 二进制文件,它没有被剥离,因此我们可以很容易找到所有恶意软件的逻辑。恶意软件读取两个文件(在之前的步骤中创建): 协议Update投放的用户密码词列表)和 bios.txt (由 Chrome创建的、打开了 SSH 的机器的目标 IP 列表)。然后,它继续对每个目标进行字典攻击,并在成功进行身份验证后,运行 攻击负载 和其他命令,以对遭到入侵的系统进行剖析。

最后要执行的命令是 uname -s -v -n -r -m,并对其输出进行解析。具体来说,它在该输出里寻找特定的操作系统名称(可以指明耐人寻味的攻击目标)。对于它查找的大多数操作系统名称,它不执行任何操作,但如果目标机器运行 OpenWrt,它就会在上面运行另一个 bash 命令,以从 107.182.129.219 下载并执行另一个 shell 脚本,该脚本将投放一些 Mirai 变体。我们认为这种对于 OpenWrt 的关注是因为它安装在嵌入式设备上,并且可以作为访问企业网络的初始媒介。 通过这一点,攻击者表明,他们感兴趣的不仅仅是开展另一次加密挖矿活动,还在积极寻找新的攻击目标

恶意软件完成入侵尝试后,它通过 Discord webhook(一种越来越流行的攻击做法)向攻击者报告。有四个不同的 webhook,各自有着不同的用途(图 6)。

恶意软件的 Discord webhook 报告的拦截日志。对应三个不同的 webhook URI 的三个 POST 请求,以及恶意软件发送的 json 数据 图 6:拦截恶意软件调用的 Discord webhook

第一个 webhook 来自一个叫做 toDiscord的函数,它可以传递在目标机器上运行的各种剖析命令的结果。接下来的两个 webhook 从 toAPIlogstoDisc函数调用,它们均传递相同的信息:目标的 IP 和可以向其进行身份验证的用户和密码。

最后,如果受害者正在运行 OpenWrt,将调用另一个叫做 toMirai的函数,它可将相同的信息发送到另一个 webhook。这里存在一些冗余,我们认为这是为了让攻击者更容易跟踪不同的指标,或者,这可能用于分离攻击活动的不同部分(Mirai 作为僵尸网络/IAB,而不是按正常做法将 Mirai 用作加密挖矿程序)。

攻击负载

虽然它“只是”一个经过编译的 bash 脚本,但 攻击负载 很有趣,因为它充满了备注和进度消息,这可以让我们了解恶意软件操作者的思维过程。

备注和进度消息是用罗马尼亚语编写的,这加强了 “攻击者是罗马尼亚人”这一推测 (该恶意软件的命令和控制/下载域字面翻译为“黑客档案”)。

该脚本还检查是否存在其他已知的加密挖矿程序,并终止它们的进程:其中包括 dhpcdksmdx这表明,攻击者意识到了他们所在的生态系统, 而不只是在加密挖矿的世界里碰运气。

在终止竞争对手和其他 CPU 密集型进程后,该脚本会检查机器有多少个 CPU 核心——如果少于 4 个,它只会为它们安装 History 和 Update 以及一个 cron job。(这两个可执行文件负责下载 aliases 攻击负载,并计划在受害者机器重新启动时运行)。如果有四个或更多的核心,该脚本也会下载和执行 .diicot,这是一个经过编译的 bash 脚本,可以下载和执行 XMRig 加密挖矿程序。

最后,如果有八个或更多的 CPU 核心,则该脚本会下载并执行 retea(LAN 传播程序)。

retea

LAN 传播程序模块在攻击者的攻击链中提供了一种新功能。这是另一个经过编译的 shell 脚本,它可提取系统中配置的所有用户,并创建一个名为 .usrs的文件。该文件用于 SSH 字典攻击,并使用提取的用户和硬编码的默认密码列表进行填充。然后,它在 LAN 网络中下载并执行一个网络扫描程序,该扫描程序检测具有开放 SSH 端口的机器,并将输出写入一个文件中。接下来,它会下载并执行 Network,这是一个精简的 aliases版本,功能较少。它没有安装恶意攻击负载,也没有向 Discord webhook 报告,而只是将入侵的机器的输出保存到一个文件中,以后攻击者可以拾取该文件。

认识一下受害者

他们真的是受害者吗?

由于攻击者具有蠕虫传播攻击负载,因此,很难区分我们的威胁传感器中捕捉到的哪些源 IP 是攻击者基础架构,哪些是受害者。在本节中,我们将尝试剖析攻击者的基础架构并找到实际的受害者。

我们提取了我们检测到的所有攻击 IP(50 个唯一 IP 地址),并将它们映射到它们在全球的地理位置。除了攻击 IP,我们还在 Akamai 的一些客户那里发现了遭受感染的证据,因此,也将他们列入了我们的受害者清单。图 7 显示了受害者/基础架构的地理分布。

标有攻击者地理位置的世界地图,按照每个 IP 记录的活动量绘制颜色(从 1 个事件到最多约 80 个事件)。我们看到,在亚太及日本地区、东欧和北美,有多批 IP 发生了少量事件。在西欧有几个高活动点。 图 7:带有攻击 IP 的地理位置的世界地图

虽然大多数地方显示了很少的攻击活动,但我们在西欧发现了几个热点。那里的活动高峰(图 8)使得我们推测, 热点实际上是攻击者控制的机器,而其余的则是被蠕虫传播模块接管的受害者机器。似乎蠕虫传播模块不是特别活跃,因为我们看到很少有机器在同一时间保持活跃。这是说得通的,因为 aliases 在每个 cron job 执行中只运行一次(在一个随机的 B 类上)。cron 安排在机器重启时运行,考虑到受害者机器的性质(即对互联网开放的 Linux 服务器),这种重启操作可能不会经常发生。

图中显示了随着时间推移,在同一时间攻击我们的基础架构的不同 IP 的数量。我们看到,在 2022 年开始之前有一个很大的活动高峰(14 个并发 IP),在这一年的其余时间有几个较小的高峰。 图 8:随着时间的推移,在同一时间攻击我们的威胁传感器的 IP 数量

看看在我们的蜜罐中注册最多的 IP 地址,我们认为这些地址是攻击者基础架构,我们可以看到清晰的主机分布(图 9)。较旧的 IP 地址通过 DigitalOcean 进行托管。较新的地址(来自最近死灰复燃的攻击)似乎是在 Serverion 进行托管,这是一家来自荷兰的 VPS 和 Web 托管供应商(他们的 ASN 实际上是在他们的母公司 Des Capital B.V.名下注册,后者是一家房地产机构,这在最初让我们感到困惑)。

攻击日期

攻击数

攻击者 IP

托管企业名称

2023/2/1 星期三

14

185.225.74.231

Des Capital B.V.

2022/10/1 星期六

72

45.139.105.222

Des Capital B.V.

2022/10/1 星期六

62

212.193.30.11

Des Capital B.V.

2022/3/1 星期二

22

195.133.40.157

Des Capital B.V.

2021/12/1 星期三

43

134.209.95.47

DigitalOcean, LLC (DO-13)

2021/12/1 星期三

37

134.209.195.231

DigitalOcean, LLC (DO-13)

2021/12/1 星期三

34

104.248.85.104

DigitalOcean, LLC (DO-13)

2021/12/1 星期三

27

134.209.198.229

DigitalOcean, LLC (DO-13)

2021/12/1 星期三

27

167.71.48.128

DigitalOcean, LLC (DO-13)

2021/12/1 星期三

74

188.166.60.8

DigitalOcean, LLC

图 9:主要攻击 IP,我们假设这些 IP 是攻击者基础架构,而不仅仅是受害者

在这篇博文发布之前,我们向受影响的 Akamai 客户提供了有关攻击的信息,并联系了每个攻击 IP 地址所注册的、遭到滥用的电子邮件。

攻击者的挑衅

似乎攻击者自上一次攻击活动以来更改了他们的挖矿配置。过去,他们指示挖矿程序直接使用 supportxmr.com ,但我们最近分析的挖矿程序与可能受攻击者控制的 IP 地址通信。我们担心这些地址是私人矿池,这意味着我们无法追踪付款,但我们的担心是没有根据的—— supportxmr 仍然可以追踪指向钱包的挖矿付款,因此,我们认为,他们的服务器只是由 supportxmr托管的矿池的代理。 这可能是一种规避 DNS 封锁和检测的方法,因为不会直接访问矿池

在调查该攻击活动时,我们设法从发现的 XMRig 攻击负载中提取了两个不同的钱包地址。这些钱包地址与 Bitdefender 看到的不同,但根据它们的付款历史记录,它们似乎在那段时间也很活跃。

我们可以看到,在 2021 年 11 月之前,付款金额变化很大(甚至有两次达到一个完整的 XMR),但之后变得更加频繁和一致(图 10)。这可能是由于支付方案的变化,或者是由于增加了更多的挖矿工作程序——时机与我们检测到的恶意软件活动的其他高峰相吻合。

指向攻击者钱包的 XMR 付款。在 2021 年 11 月之前,付款零零星星,金额也不同(从几乎 0 XMR,到 1 XMR)。2021 年 11 月之后,付款在金额 (0.1 XMR) 和时间方面都变得更加一致 图 10:从 supportxmr 中提取的、指向攻击者钱包的挖矿付款历史记录

总而言之,我们估计攻击者在整个攻击活动期间设法开采了价值超过 10000 美元的 XMR, 其中超过 75% 是在此类攻击死灰复燃后开采的。真正的开采量可能比我们的估计还要高——根据 supportxmr报告的唯一工作程序数量,我们只看到了一半的 XMRig 攻击负载和配置(图 11)。

supportxmr.com 的屏幕截图,显示了与挖矿程序配置中提取的钱包地址关联的挖矿程序。总共有 8 个(唯一)工作程序,它们成功开采了 58 个 XMR 图 11:与其中一个攻击者钱包关联的挖矿程序

总结

攻击者采用的攻击负载链无疑令人印象深刻,并勾勒出一个相当复杂的攻击者形象。我们通常也不会看到这么长的攻击负载链,我们认为,攻击者出于几个原因选择使用这么多的攻击负载。

  • 混淆 ——系统中的活动部件越多,就越难进行分析和跟踪。“二进制文件遭到混淆”这一事实只会加强这种假设。

  • 威胁团体的背后有多名人员。虽然我们没有该攻击活动背后的攻击者的实际信息,但我们已经看到,相同脚本的不同样本之间存在惊人的代码差异,我们只能将其归结为,这些代码由不同的人员开发。

  • 恶意软件活动旨在随时间的推移不断发展。我们通过添加的新功能、进一步的混淆以及代码中的一些冗余看到了证据,这些冗余旨在充当未来用途的基础。

根据先前的行动做出的改进和新增的功能
  • UPX 打包和剥离 UPX 标头。

  • 自动更新功能从攻击负载内部移至脚本外部(History 和 Update。)

  • 更加不明显的文件名(ChromeOpera ——模仿浏览器)

  • 通过 Discord 进行的附加恶意软件报告

  • OpenWRT 特定行为 (可能还会有更多行为出现)

  • 使用 自定义矿池代理 ,而不是公共矿池

防御者的档案

保护您的边界和网络

该恶意软件没有通过任何新颖或复杂的技术来传播自身。它只是在 SSH 上使用字典攻击。因此,只有允许从互联网进行 SSH 连接的机器才面临风险。在网络边界阻止 SSH,或将其移至 VPN 之后,可以大大减少这种攻击带来的风险。

此外,通过使用非默认凭据或复杂的密码,可以大大减少字典攻击(例如该恶意软件使用的这种字典攻击)所造成的风险。我们还建议使用 SSH 密钥进行身份验证,因为这些密钥甚至比密码更安全(它们不可能被猜到,而且“密钥”绝不会在连接中传输)。

最后,我们还需要考虑 LAN 传播程序模块。由于它也在使用 SSH 进行横向移动, 因此对您的网络进行分段 可以安全地抵御这种风险。如果我们把对互联网开放的服务器视为非军事区 (DMZ),那么,合乎逻辑的做法是:防止 SSH 流量(以及其他一般可用于横向移动的流量,比如 RDP、MS-RPC 或 WinRM)从 DMZ 移到网络的其他部分。如果由于某种原因,您确实需要这些服务器中的某一台通过 SSH 访问内部网络(例如,因为它是一个跳板),那么,首选方法应该是把它移到 DMZ 之外,并通过 VPN 进行管理。避免把服务器暴露在互联网上并允许攻击者从服务器进行内部跳转——减少爆炸半径和传播路径。

检测感染

我们已经创建了一个 Github 存储库 ,其中提供的工具可以帮助您检测此恶意活动造成的感染。在那里,您会发现一个 bash 脚本、一个完整的 IOC 列表和 Akamai Guardicore Segmentation 客户可以使用的 osquery 查询。您也可以在这篇文章的末尾找到检测脚本和 IOC 的部分列表

除了这些工具外,我们还想推荐一种可能适用于这种情况的、用于检测加密挖矿程序的一般方法:通过查看目标端口来检测通往矿池的出站流量。矿池的默认端口有时唯一性特别突出,因此,留意这些端口可能最终会带来好处。例如:

当然,挖矿程序也可以通过 HTTP 和 HTTPS 与它们的矿池通信,在这种情况下,检测就会困难很多。不过,还是有必要留意这些端口。

检测脚本

该检测脚本可寻找各种 IoC,这些 IoC 可以表明过去或当前存在的攻击活动。它可寻找 crontab 中的攻击迹象,寻找它们的文件路径以及运行的进程,还可寻找恶意 SSH 密钥后门。要运行它,只需将它下载到您想检查的机器上,并执行。它将扫描机器并输出判定内容:

一个 Linux 终端,显示了检测脚本的执行情况。首先使用 wget 从 github 下载它,然后使用 chmod 向其赋予执行权限,最后执行。它向终端输出信息,表明它检测到恶意软件的持久性 cron、它的二进制路径和 SSH 密钥。 图 12:执行检测脚本,以寻找 Mexals 的攻击痕迹。
攻击迹象

这是 IOC 的部分列表。有关完整列表,请查看我们的 Github 存储库

路径
  • /var/tmp/.update-logs/

  • /var/tmp/Documents/

  • /var/tmp/.ladyg0g0/

  • /dev/shm/.x/

  • /dev/shm/.magic/

文件名
  • 协议

  • bios.txt

  • Update

  • History

  • aliases

  • 攻击负载

  • retea

  • .usrs

IP
  • 107.182.129.219 年

  • 45.139.105.222

  • 185.225.74.231

  • 212.193.30.11

域和 URI
  • arhivehaceru[.]com

  • discord[.]com/api/webhooks/954295081765072926/Zu7Vu-LpfgRqSmCyFvz3BCkR1Lt7clYOJeayCFzZwtPmZlVn9og_6mPS_BJY-374m5Y3

  • discord[.]com/api/webhooks/1036206037373571082/9bs01KrT-TrcbSAPI_i-adV1Bhn56A4X4fxzCYEw3zMq95H1mFvlKWb6-KYzvEoVfTnS

  • discord[.]com/api/webhooks/1036205058456563722/1_saZM0fE7nLgYG668LmDfNmSvrWpD-6Z8nIXljm0qlm6YyMxAyYuZIu4LhN2gHsgSQy

  • discord[.]com/api/webhooks/965651135102865479/PFdU4u8yZrn0XhzIKShcaxL3_IaBjsstYmFEXlThF2_1XCnwXSAjKos3ptwKYpPyGqvI

  • discord[.]com/api/webhooks/848592916951203860/WeWBGYSVreTlE0aO_6alVN3Qrj6_aRxnaDpq4_6wD04V2aHlMFvgik2Z2h78Dstg9fZY

  • discord[.]com/api/webhooks/1036225255049531422/qyOrT3SxHaOC-9yS2NQiPxlSMYmRFFIpU-rMKzmcDv9pQyP4uaZEiZXDXioUtf0DJLUB



Stiv Kupchik

寫於

Stiv Kupchik

April 12, 2023

Stiv Kupchik

寫於

Stiv Kupchik

Stiv Kupchik 是 Akamai 安全研究员团队的负责人。他的研究项目主要涉及操作系统内核、漏洞研究和恶意软件分析等领域。他曾在 Black Hat、Hexacon 和 44CON 等会议上展示过他的研究成果。除了是一名网络安全专业人士外,Stiv 还拥有物理学学士学位。