PG_MEM:隐藏在 Postgres 进程中的恶意软件

admin 2024年9月29日09:11:55评论24 views字数 4257阅读14分11秒阅读模式

Aqua Nautilus 的研究人员发现了 PG_MEM,这是一种新的 PostgreSQL 恶意软件,它暴力破解 PostgreSQL 数据库,提供有效载荷以隐藏其操作,并挖掘加密货币。在此博客中,我们将解释这种攻击、威胁行为者使用的技术以及如何检测和保护您的环境。

关于 Postgres

PostgreSQL,通常称为 Postgres,是一个功能强大的开源关系数据库管理系统 (RDBMS),以其稳健性和灵活性而闻名。对 Postgres 的暴力攻击包括反复尝试猜测数据库凭据,直到获得访问权限,从而利用弱密码。一旦被访问,攻击者就可以利用 SQL 命令在主机上执行任意 shell 命令,从而允许他们执行恶意活动,例如数据盗窃或部署恶意软件。COPY ... FROM PROGRAM

攻击流程

我们观察到对 PostgreSQL 数据库的成功暴力攻击,该攻击导致利用允许执行命令的功能。接下来,威胁行为者在数据库中创建了一个超级用户角色,并将两个文件放到磁盘上。这些文件用于消除竞争、逃避检测、获得持久性并最终部署加密货币矿工。虽然这是主要影响,但此时攻击者还可以运行命令、查看数据和控制服务器。

 

PG_MEM:隐藏在 Postgres 进程中的恶意软件

图 1:PG_MEM 的攻击流程

蛮力攻击

第一阶段是简单的暴力攻击。我们观察到 PostgreSQL 数据库的多次登录尝试被拒绝,直到暴力攻击成功猜出蜜罐的用户名和密码(故意设置为易于猜测)。

PG_MEM:隐藏在 Postgres 进程中的恶意软件

图 2:来自 Wireshark 的屏幕截图,说明了针对 Postgres 的暴力破解尝试失败

获得持久性

在威胁行为者成功猜出用户和密码后,攻击序列开始。执行了以下一组 SQL 命令:

PG_MEM:隐藏在 Postgres 进程中的恶意软件

图 3:威胁行为者创建新超级用户(后门)的命令

首先,威胁行为者创建一个具有登录能力和高权限的新用户角色。接下来,威胁行为者与最初启用系统访问权限的当前用户进行交互。该命令检索会话中当前数据库用户的名称。以下命令打印用户的名称,并指示他们是否具有超级用户权限。然后,当前用户将被剥夺超级用户权限。这限制了其他威胁行为者的权限,这些威胁行为者可能仍通过弱密码访问系统。SELECT CURRENT_USERpostgres

初始系统发现

威胁行为者正在收集有关系统的信息。

PG_MEM:隐藏在 Postgres 进程中的恶意软件

图 4:旨在发现系统的命令汇编

第一个命令显示文件的路径,该文件是客户端身份验证的配置文件。第二个命令检索 PostgreSQL 服务器的版本。接下来,威胁行为者创建一个临时表来存储临时数据和文件,然后再将其保存到磁盘或内存。威胁行为者使用该功能,该功能在主机上启用 shell 命令。威胁行为者运行数据并将其存储在临时表中。每次使用命令删除临时表,这在 PostgreSQL 中是一种更快、更高效的删除操作。pg_hba.confPROGRAMunamewhoamiTRUNCATE

负载交付

总共从威胁行为者的远程服务器下载了两个文件。在下面的图 5 中,您可以观察到旨在提供第一个有效负载的第一个命令块。

通常,威胁行为者使用临时表来存储各种代码和数据。在每个命令之前和之后,威胁行为者用于清除临时表 (),然后用于执行各种 shell 命令,将其输出捕获到表中。TRUNCATEpg_temp.log_tmpCOPY ... FROM PROGRAM

PG_MEM:隐藏在 Postgres 进程中的恶意软件

图 5:PG_Core恶意软件的传递

威胁行为者使用以下命令打开与端口上 IP 地址的 TCP 连接并获取 。然后将其存储为 file pg_core。128.199.77.963232dqQkiJwLFH

PG_MEM:隐藏在 Postgres 进程中的恶意软件

图 6:从威胁行为者的服务器下载 PG_Core

接下来,使用 chmod 将 pg_core 文件修改为已执行文件,并计算 MD5。pg_core 文件稍后使用特定参数执行。这个字符串是用 base64 编码的,解码后,你可以看到一条与加密挖矿相关的消息,其中可能代表哈希,代表分配的工人。hp

PG_MEM:隐藏在 Postgres 进程中的恶意软件

图 7:从 base64 解码的 PG_Core 执行命令

可执行数据也存储在临时表中,然后保存在 path ./var/lib/postgresql/data/log-tmp

该代码还用于检索当前 PostgreSQL 后端进程的进程 ID。这对于调试或监控目的非常有用。

此外,当前用户的所有 cron 作业都将被删除,并且各种进程(例如 、 等)被杀死。
威胁行为者正在阻止自己和他人的历史攻击,这表明他对竞争对手有一些情报。
kdevtmpfsipg_memkinsingpostgres-kernel

PG_MEM:隐藏在 Postgres 进程中的恶意软件

图 8:用于杀死竞争恶意软件的命令

最后,威胁行为者会删除恶意软件的二进制文件和日志等文件,以逃避防御(例如基于卷的扫描程序)。pg_coreps_stat_good

威胁行为者还部署了第二个有效载荷,名为 ,这是一个包含 xmr cryptominer 的投递器,负责优化加密挖矿操作。下面您可以看到通过 Postgres 执行的操作,这些操作与第一个有效负载的交付非常相似。pg_mem

PG_MEM:隐藏在 Postgres 进程中的恶意软件

图 9:用于传递PG_mem的命令编译

可以看出,威胁行为者在端口 '' 上打开了与 IP 地址 '' 的 TCP 连接并获取了 。然后将其存储为 file pg_mem。128.199.77.963232KfLhjeXuQc

执行 ELF 文件pg_mem后,它会存储名为 memory 的第三个 ELF 二进制文件。此文件是一个 XMRIG 加密挖矿程序,用于挖掘加密货币。

PG_MEM:隐藏在 Postgres 进程中的恶意软件

图 10:XMRIG 的配置

 

PG_MEM:隐藏在 Postgres 进程中的恶意软件

图 11:挖掘加密货币数据

从下面的图 12 中可以看出,cryptominer 是使用参数执行的,此外,威胁行为者正在创建一个执行 pg_mem 的 cron 作业,并在配置文件中插入一个空值。memorydeletedpg_hba

PG_MEM:隐藏在 Postgres 进程中的恶意软件

图 12:旨在在 Postgres 服务器上创建持久性的 cron 作业

在以下路径上有 3 个文件被丢弃到磁盘:/var/lib/postgresql/data/

  • 内存 (MD5: 3f3eae22dd67e741e87a18a2383900a5) 在 VT 中被检测为加密矿工。

  • pg_core (MD5: aacf2146cac9946592f069ef6d94635b) 具有各种检测能力,例如潜在不需要的、加密矿工、木马等。

  • pg_mem (MD5: f705c3bc4e98585357c03feac623356c) 具有各种检测能力,例如潜在不需要的、加密矿工、木马等。

所有 3 个 ELF 二进制文件都经过打包、剥离,字符串也被加密。

在野外暴露的 Postgres 服务器

Shodan 是 Internet 连接设备的搜索引擎,用于识别暴露的 PostgreSQL 数据库。通过查询 Shodan 以获取可公开访问的 Postgres 实例,我们发现了超过 800000 个连接互联网的数据库。这凸显了保护数据库服务器免受暴力攻击和潜在利用的迫切需求。

PG_MEM:隐藏在 Postgres 进程中的恶意软件

图 13:在 Sodan 中搜索面向 Internet 的 Postgres 服务器的结果

将营销活动映射到 MITRE ATT&CK 框架

我们的调查表明,攻击者在整个活动过程中一直在使用一些常见的技术。在这里,我们将攻击的每个组件映射到 MITRE ATT&CK 框架的相应技术:

PG_MEM:隐藏在 Postgres 进程中的恶意软件

所描述的攻击涉及多个阶段,每个阶段根据 MITRE ATT&CK 框架使用不同的技术和子技术。以下是相关技术和子技术的细分:

初始访问

  • T1190 – 利用面向公众的应用程序:攻击者利用 Postgres 数据库中的漏洞来获得初始访问权限。

执行

  • T1059.004 – 命令和脚本解释器:Unix Shell:攻击者执行 SQL 命令,利用该功能在主机系统上运行 shell 命令。PROGRAM

坚持

  • T1136.001 – 创建账户:本地账户:攻击者创建一个具有登录能力和高权限的新用户角色。

  • T1098 – 帐户操纵:攻击者操纵用户角色和权限,剥夺现有用户的超级用户权限以保持访问和控制。postgres

  • T1053.003 – 计划任务/作业:Cron:删除所有 cron 作业以防止来自合法计划任务的干扰,并添加 cron 作业以运行 pg_mem。

权限提升

  • T1068 – 利用权限提升:攻击者通过利用以超级用户身份执行命令的能力来提升权限。

防御闪避

  • T1070.004 – 主机上的指示器删除:文件删除:攻击者删除与其恶意软件相关的文件和日志以逃避检测。

  • T1036.004 – 伪装:伪装任务或服务:攻击者将 pg_core 文件修改为可执行文件,并将其伪装成合法文件。

凭证访问

  • T1110.002 – 暴力破解:密码猜测:攻击者使用暴力破解来猜测 Postgres 数据库的用户和密码。

发现

  • T1082 – 系统信息发现:攻击者使用和 等命令收集系统信息。unamewhoami

  • T1057 – 进程发现:攻击者检索 PostgreSQL 后端进程的进程 ID,以便进一步分析或操纵。

收集

  • T1005 – 来自本地系统的数据:攻击者通过查看和提取数据库和主机系统中的信息来收集数据。

命令和控制

  • T1105 – 入口工具传输:攻击者将文件从远程服务器下载到受感染的系统。

  • T1071.001 – 应用层协议:Web 协议:攻击者使用 Web 协议与远程服务器通信以进行命令和控制。

冲击

  • T1496 – 资源劫持:主要影响是部署加密矿工,利用系统的资源来挖掘加密货币。

使用 Aqua 的 CNAPP 进行检测和修复

该活动正在利用具有弱密码的面向 Internet 的 Postgres 数据库。许多组织将其数据库连接到互联网,弱密码是配置错误和缺乏适当身份控制的结果。这不是一个罕见的问题,许多大型组织都遇到这些问题。Aqua Security 可以提供有关漏洞和错误配置的宝贵信息,但有时员工会选择弱密码或出现零日漏洞。

因此,您应该采用深度防御方法,该方法旨在在云中软件开发生命周期的各个节点部署检测和保护机制。运行时检测和响应工具(如 Aqua 的 Runtime Protection)旨在检测运行时中的恶意或可疑行为。

如果您正在运行的工作负载之一容易受到 Confluence 漏洞的影响,Aqua 的运行时保护将让您看到所有相关的检测结果。例如,我们在下面重点介绍了两个检测:

PG_MEM:隐藏在 Postgres 进程中的恶意软件

图 14:Aqua 的 Runtime Protection 屏幕截图显示了对源自数据库的恶意 shell 命令的检测

在上面的图 14 中,您可以看到检测到数据库程序生成了一个 shell,这表明数据库运行 shell 命令的可疑行为。shell 的执行也被标记为恶意。您可以看到,它说明了 TCP 连接和获取主要有效负载。

PG_MEM:隐藏在 Postgres 进程中的恶意软件

图 15:Aqua 的 Runtime Protection 屏幕截图说明了加密挖矿过程

同样,在上面的图 15 中,您可以看到加密池的 DNS 解析请求以及与加密矿池的通信。


原文始发于微信公众号(菜鸟小新):PG_MEM:隐藏在 Postgres 进程中的恶意软件

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年9月29日09:11:55
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   PG_MEM:隐藏在 Postgres 进程中的恶意软件https://cn-sec.com/archives/3218013.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息