|
近来,一种新的难以捉摸的严峻威胁已经出现了,自2021年9月以来,它一直在渗透并驻留在全球的服务器上。这种被称为HeadCrab的高级威胁利用了一种最先进的定制恶意软件方式,使得该恶意软件无法被无代理和传统的防病毒解决方案检测到,会危害大量 Redis 服务器。HeadCrab僵尸网络已经控制了至少 1,200 台服务器。
什么是 Redis? Redis是一种开源的内存数据结构存储,可用作数据库、缓存或消息代理。默认情况下,Redis服务器不启用身份验证,旨在运行在安全、封闭的网络上,而非暴露在互联网上。这使得可从Internet访问的默认Redis服务器容易受到未经授权的访问和命令执行的攻击。
Redis模块是可执行的共享对象文件,可用于以各种方式增强服务器的功能。通过上传模块并通过Redis端口使用MODULE LOAD命令将模块加载到服务器上。Redis 模块使用Redis API执行与服务器管理和控制相关的各种任务,例如使用RedisModule_CreateCommand API 定义自定义命令。
在对加载的模块进行逆向工程后,我们发现了一种复杂的、长期开发的恶意软件。它为攻击者提供了许多高级功能,并最终完全控制目标服务器。该模块引入了 8 个自定义命令,以模式rds*命名,攻击者使用这些命令在受感染的服务器上执行操作。HeadCrab 恶意软件的技术分析部分讨论了恶意软件功能和命令的完整列表。
我们不仅发现了HeadCrab恶意软件,还发现了一种在Redis服务器中检测其感染的独特方法。当这一方法应用于暴露在外的服务器时,发现了大约 1,200 台活跃的受感染服务器。受害者似乎没有什么共同点,但攻击者似乎主要针对Redis服务器,并且对Redis模块和API有深刻的理解和专业知识,正如恶意软件所展示的那样。
HeadCrab 恶意软件的技术分析 HeadCrab 恶意软件是一种高度复杂且先进的威胁。作为恶意Redis模块框架构件,它拥有众多选项和功能。本节将概述通过我们的静态和动态分析确定的恶意软件的主要功能。
验证它在执行时只运行一次 在初始执行时,恶意软件利用RedisModule_OnLoad函数,该函数在Redis服务器加载模块时触发。然后,恶意软件会保存相关Redis API函数的地址以备后用,并检查是否已加载名为rds的模块,如果已加载,则立即退出而不计划进行任何可能会恶意失败的操作。
准备工作 恶意软件会进行一些检查以确定操作过程。我们不会详细介绍这些检查,但会检查testing路径和执行日期,并根据某些功能是否正在执行来进行检查。信号处理函数被替换并被恶意软件用来与其子进程通信。
隐藏代码执行 恶意软件找到动态加载程序的路径,以便它可以执行进程。通过简单地提供所需可执行文件的路径作为参数,动态加载程序可用于以其名称执行进程。这可用于绕过基于检查进程执行来检测恶意文件的安全解决方案。由于动态加载器是一个合法的二进制文件,它不会被标记为恶意的,并且恶意软件可以在这些安全解决方案中隐藏自己。
从内存中执行 该恶意软件试图在memfd_create系统调用的帮助下创建无文件文件。如果成功,它会创建10个memfd临时文件并保存它们供以后使用。
强调在容器中执行 恶意软件检查进程ID是否低于31。我们推测这样做是为了检测服务是否在容器中运行。如果恶意软件不在容器上运行,则会检查几个服务管理程序,如systemd、initd、upstart等。如果安装了它们中的任何一个,它们将被标记,稍后将用于将持久化的服务和脚本放置在适当的位置。我们假设恶意软件在容器上跳过了这一步,因为它是无效的。
创建新的Redis命令 然后恶意软件创建新的 Redis 命令,用于使攻击者能够操作恶意软件:
rdsa该命令接受两个参数。一个是 Redis 配置文件的路径,第二个是恶意 Redis 模块的路径。此函数在 Redis 配置中添加一行,用于加载带有幻数的恶意模块。为了获得恶意软件的进一步持久性,它隐藏了loadmodule命令输出。此命令用于加载恶意模块,并通过向打印到屏幕的输出添加填充来隐藏其活动。 rdss执行带有popen并返回进程输出作为命令输出 rdsp将默认命令替换为恶意函数以逃避检测。 rdsi通过截断更新加密中使用的幻数和空日志。 rdsmMONITOR是一个 Redis 调试命令,它流回 Redis 服务器处理的每个命令。它也被 rdsp 命令或使用 2 个参数加载模块所取代。这个新命令负责恢复对MONITOR命令的更改——重新启用服务器调试。 rdsc侦听所需端口上的传入连接,并启用与 C2 服务器建立加密通信通道。下面的附录部分详细描述了可用的命令。为了强调它的一些强大功能,恶意软件可以创建一个新套接字并将其连接到 C2 命令套接字,将网络隧道连接到另一个 IP 地址和端口对,执行 shell 命令,将文件内容发送到 C2,将数据写入打开 memfd 文件,读取保存的 memfd 文件的内容并发送回 C2,加载无文件内核模块,以及许多其他强大的功能。 rdsr与 C2 服务器建立加密通信通道。与上面的 rdsc 相同。 rdsx恢复被覆盖的命令并将它们恢复为默认的 Redis 命令。
谁是HeadCrab?或者,什么是 HeadCrab? 这个攻击者和恶意软件为什么被称为HeadCrab。答案很简单。攻击者在攻击过的机器中留下了如下信息。
攻击者被识别为HeadCrab,这是游戏《半条命》中的一种怪物,它会附着在人类身上并将他们变成僵尸。这很合理,因为我们已经看到这种威胁使 Redis服务器僵尸化并使用它们横向移动到其他服务器。
此外,攻击者还创建了一个专门针对Nautilus团队的博客条目。此参考适用于有关Redigo的博客。Redigo是一种针对Redis服务器的新型恶意软件,攻击者利用了一个允许从LUA沙箱中逃逸的漏洞,并导致目标服务器上的远程代码执行 (CVE-2022-0543)。在进一步审查新发现的恶意软件并在恶意软件中发表个人专用评论后,我们认为到Redigo恶意软件也在利用主从技术,而不是 LUA 沙箱逃逸。
这个攻击组织是高度离散的,因此无法在开源中找到其活动的许多迹象。我们确实找到了上图中出现的“pamdicks”。在Trend Micro的博客中,提到了一个名为netlink的rootkit用于更改与CPU相关的统计信息(可以隐藏pamdicks进程和 CPU 负载)来隐藏加密挖矿。但很可能是攻击者所指的内容。
运行时检测 HeadCrab恶意软件旨在偷偷攻击Redis服务器,无论它们是在容器中还是在VM上运行。企业都需要使用容器安全或主机安全类解决方案进行实时检测,我并使用实时恶意行为指标来识别 HeadCrab 恶意软件等隐秘攻击。
将攻击映射到 MITRE ATT&CK 框架 这里我们将上述攻击中的组件映射到MITRE ATT&CK框架的相应攻击技术:
总结、补救和缓解 在此报告中,我们揭示了负责创建高级恶意Redis框架的攻击者 HeadCrab 的威胁。我们深入研究恶意软件的内部工作原理并展示其丰富的功能。调查显示,HeadCrab 的僵尸网络已经控制了 1,200 多台服务器,所有服务器都感染了该恶意软件。我们有理由相信,HeadCrab 将坚持使用尖端技术渗透服务器,无论是通过利用错误配置还是漏洞。 (编辑:汽车网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|