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

admin 2024年8月23日23:04:35评论19 views字数 3616阅读12分3秒阅读模式

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

Aqua Nautilus 研究人员发现了一种新的 PostgreSQL 恶意软件 PG_MEM,该恶意软件会强行入侵 PostgreSQL 数据库,传送有效载荷以隐藏其操作并挖掘加密货币。在本篇博文中,我们将介绍这种攻击、威胁行为者使用的技术以及如何检测和保护您的环境。

关于 Postgres

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

攻击流

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

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

图1:PG_MEM攻击流程

暴力攻击

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

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

图 2:Wireshark 的屏幕截图,显示对 Postgres 的暴力破解尝试失败

获得毅力

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

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

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

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

初始系统发现

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

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

图 4:用于发现系统的命令汇编

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

有效载荷投递

总共有两个文件从威胁行为者的远程服务器下载。在下面的图 5 中,您可以看到旨在传递第一个有效载荷的第一组命令。

一般来说,威胁行为者使用临时表来存储各种代码和数据。在执行每条命令之前和之后,威胁行为者使用TRUNCATE清除临时表 ( pg_temp.log_tmp),然后使用COPY ... FROM PROGRAM 执行各种 shell 命令,将其输出捕获到表中。

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

图 5:PG_Core 恶意软件的交付

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

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

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

接下来使用 chmod 修改 pg_core 文件以执行并计算 MD5。稍后使用特定参数执行 pg_core 文件。此字符串使用 base64 编码,解码后,您可以看到与加密挖掘相关的消息,其中h可能代表哈希,p代表分配的工作者。

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

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

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

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

此外,当前用户的所有 cron 作业都已删除,各种进程(例如、、、、kdevtmpfsi)也已终止。威胁 行为者正在阻止自己和他人的历史攻击,这表明他掌握了一些竞争对手的情报。pg_memkinsingpostgres-kernel

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

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

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

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

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

图 9:传递 PG_mem 的命令汇编

从中可以看出,威胁行为者打开与 IP 地址 ` 128.199.77.96` 端口 ` 3232` 的 TCP 连接并获取KfLhjeXuQc。然后将其存储为文件 pg_mem。

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

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

图 10:XMRIG 的配置

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

图 11:挖掘加密货币数据

从下面的图 12 可以看出,加密矿工memory使用参数执行deleted,此外,威胁行为者还通过执行 pg_mem 创建 cron 作业,并在pg_hba 配置文件中插入一个空值。

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

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

有 3 个文件被放到以下路径的磁盘上/var/lib/postgresql/data/

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

  • pg_core(MD5:aacf2146cac9946592f069ef6d94635b)具有各种检测功能,例如潜在有害程序、加密矿工、木马等。

  • pg_mem(MD5:f705c3bc4e98585357c03feac623356c)具有各种检测,例如潜在有害程序、加密矿工、木马等。

所有 3 个 ELF 二进制文件都已打包和剥离,并且字符串已加密。

暴露在外的 Postgres 服务器

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

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

图 13:Sodan 中搜索面向互联网的 Postgres 服务器的结果

将攻击活动映射到 MITRE ATT&CK 框架

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

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

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

初始访问

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

执行

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

持久性

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

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

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

权限提升

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

防御规避

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

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

凭证访问

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

发现

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

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

收藏

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

指挥与控制

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

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

影响

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

原文始发于微信公众号(独眼情报):隐藏在 Postgres 进程中的恶意软件:PG_MEM

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年8月23日23:04:35
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   隐藏在 Postgres 进程中的恶意软件:PG_MEMhttps://cn-sec.com/archives/3088959.html

发表评论

匿名网友 填写信息