PGMiner:利用PostgreSQL漏洞的新的加密货币挖矿僵尸网络
2021-01-05 11:30:00 Author: www.4hou.com(查看原文) 阅读量:244 收藏

导语:PGMine是一种通过有争议的PostgreSQL RCE漏洞提供的新的加密货币挖矿僵尸网络,目前还没有被披露,PGMiner正在利用有争议的漏洞这一事实使它一直未被人注意到,直到研究人员最近在Palo Alto Networks上发现了它。

Cryptojacking-r3d3.png

加密货币挖矿是恶意程序开发者通过其运营获利的一种常见方式,尽管基本的挖矿协议和技术仍然相当标准,但恶意攻击者倾向于寻找并找到更聪明的方法来攻击受害者的计算机。最近,Unit 42研究人员发现了一个新的基于Linux的加密货币挖矿僵尸网络,该僵尸网络利用了一个有争议的PostgreSQL远程代码执行(RCE)漏洞,该漏洞会危及数据库服务器进行加密货币挖矿。研究人员根据其攻击行为将其命名为“PGMiner”。 PGMiner的核心是尝试连接到Monero采矿的矿池。PostgreSQL,也称为Postgres,是用于生产环境的最常用的开源关系数据库管理系统(RDBMS)。根据DB-Engines的数据,截至2020年11月,PostgreSQL在所有数据库管理系统(DBMS)中排名第四,自2013年以来,其受欢迎程度稳步上升。特别是,PostgreSQL被DB-Engines评为2017和2018年年度最受欢迎数据库。

PostgreSQL中正在利用的功能是“复制程序”,该功能于2013年9月9日在9.3版中引入。在2018年,CVE-2019-9193与此功能相关联,并将其命名为“漏洞”。但是,PostgreSQL社区对此任务提出了质疑,并且CVE被标记为“有争议的”。

研究人员相信PGMiner是第一个通过PostgreSQL发布的加密货币挖矿僵尸网络。值得注意的是,恶意攻击者不仅已开始对确认的CVE进行武器化,而且还对有争议的CVE进行了武器化。

在撰写本文时,VirusTotal上的所有供应商都未检测到PGMiner。 WildFire是一个基于云的恶意程序分析平台,它通过观察自我删除和过程模拟的动态分析来检测它。除发布渠道外,PGMiner的货币挖掘代码库还重组了SystemdMiner系列及其变体1、2和3的某些特征,但有以下显着变化:

1.在代码启动后立即删除PostgreSQL表,以实现无文件执行;

2.收集系统信息并将其发送到命令和控制(C2)服务器以识别受害者;

3.如果受害者的计算机上没有该命令,请采用传统和新颖的方法来下载curl二进制文件;

4.模拟“tracepath”进程以隐藏其存在;

5.尝试阻拦攻击对手的程序以获得最大的攻击利益。

攻击过程概述

图1概述了PGMiner的执行流程。如前所述,恶意有效载荷是通过PostgreSQL传递的,而PostgreSQL通过SOCKS5代理与后端C2服务器通信。之后,它会根据系统架构下载挖矿有效载荷。

1.png

利用有争议的PostgreSQL RCE漏洞的PGMiner的结构

在分析中,研究人员发现PGMiner通过递归下载某些模块来不断地自我复制。为了更好地说明此过程,图2中显示了有效载荷关系,每个方框都链接到感染链中标识的样本。该记录包含文件名,缩写的SHA256值和文件类型信息。请注意,只要文件名中包含架构信息,研究人员就会遍历所有其他可能的架构,并在成功下载后将示例添加到图中。每个阶段的缩写C2用深绿色标记。另外,在以前的研究工作中(SystemdMiner及其变体1、2和3)对浅蓝色框中的样本进行了广泛的研究。此外,研究人员将重点介绍浅红色框中显示的示例。

2.png

PGMiner有效载荷关系

通过PostgreSQL漏洞进行的初步攻击

触发研究人员调查的根样本是55698654f0fbcf5a6d52f3f44bc0f2257e06835e76fb7142d449a2d1641d7e4b,这是一个静态链接和利用漏洞的AARCH64 ELF文件。在撰写本文时,VirusTotal上的所有供应商都无法检测到此恶意程序,如图3所示。

3.png

VirusTotal上没有一家供应商检测到PGMiner

上面的示例是一个利用工具,试图利用PostgreSQL中有争议的功能,该功能允许在服务器的操作系统(OS)上使用RCE。通过对图4所示的二进制文件进行反向工程,研究人员发现该示例具有静态链接的libpq postgresql客户端库。这用于与目标数据库服务器进行通信,攻击者扫描专用/本地网络(即172.16.0.0、192.168.0.0和10.0.0.0子网)中的主机的PostgreSQLql使用的端口5432(0x1538)。该恶意程序会随机选择一个公共网络范围(例如190.0.0.0、66.0.0.0),以尝试在PostgreSQL服务器上执行RCE。攻击者使用数据库的默认用户“postgres”,对内置的流行密码(例如“112233”和“1q2w3e4r”)的内置列表进行反复的暴力攻击,以破解数据库身份验证。

4.png

PostgreSQL利用PGMiner中的代码流

一旦恶意程序成功攻击了数据库,它将使用PostgreSQL的“复制程序”功能下载并启动挖矿脚本。自“复制程序”功能自PostgreSQL 9.3首次亮相以来一直备受争议,该功能允许本地或远程超级用户直接在服务器上运行Shell脚本,这就引起了广泛的安全漏洞。2019年,CVE-2019-9193被命名为“漏洞”。然而,PostgreSQL社区对这项任务提出了质疑,并且CVE被标记为“有争议的”。反对将功能定义为漏洞的主要论据是,只要不将超级用户特权授予远程或不受信任的用户并且访问控制和身份验证系统运行良好,功能本身就不会带来风险。另一方面,安全研究人员担心,如果攻击者通过暴力破解密码或SQL注入设法拥有超级用户特权,则此功能确实使PostgreSQL成为直接在PostgreSQL程序之外的服务器操作系统上进行远程利用和代码执行的平台。

5.png

PGMiner对PostgreSQL的利用内容

尽管此CVE仍存在争议,但恶意程序开发者显然已开始通过使攻击有效载荷无文件化而将其用于检测雷达。 PGMiner的实际攻击内容如图5所示,可以细分为以下步骤:

6.png

保存在“abroxu”表中的恶意脚本有效载荷重新组合了已知的SystemdMiner恶意程序家族及其变体的某些特征。现在,研究人员仅强调PGMiner从SystemdMiner演变而来的主要方式,以及被忽略的功能。研究人员还在下图所示的脚本中添加了注释,以使这一点更清楚。

下载Curl

如果受害者的计算机上没有curl命令的情况下,则恶意脚本会尝试多种方法(参见图6)下载curl二进制文件并将其添加到执行路径:

· 通过apt-get和yum等官方程序包管理实用程序直接安装;

· 从GitHub下载静态curl二进制文件;

· 如果无法正常使用,请使用/ dev / tcp下载。

7.png

PGMiner多次尝试下载curl二进制文件

尽管前两种方法是众所周知的,但第三个方法却非常独特。更有意思的是目标IP地址:94[.]237[.]85[.]89。它连接到域newt[.]keetup[.]com。虽然其父域keetup[.]com看起来像是合法的商业网站,但此特定子域会将端口80重定向到443,这个端口用于托管一个名为newt的couchdb。尽管端口8080不是对公众开放的,但是研究人员认为它已经被配置为允许跨源资源共享(CORS),如图7所示。

8.png

newt[.]keetup[.]com托管了一个ouchdb,用于curl二进制下载

解析SOCKS5/TOR中继服务器名称

C2主机名已更新为nssnkct6udyyx6zlv4l6jhqr5jdf643shyerk246fs27ksrdehl2z3qd[.]onion,PGMiner还利用SOCKS5代理技术与C2通信,正如在这个SystemdMiner变体中所描述的那样。但是,如图8所示,DNS服务器列表已经扩展。

9.png

更新了在PGMiner中观察到的C2和扩展的DNS服务器列表

从C2获取有效载荷并启动PGMiner

在解析了SOCKS5代理服务器的IP地址之后,PGMiner遍历一个文件夹列表,找到第一个允许创建新文件并更新其属性的文件夹。这确保下载的恶意有效载荷可以在受害者的设备上成功执行。这个功能在以前对SystemdMiner变体的研究中已经观察到了,但是开发者并没有解释它的目的。

该恶意软件家族还发展了客户跟踪功能,它连接所有inet IP范围的IP地址、用户名、架构、主机名和md5,以及crontab内容的base64编码,以制定客户端的唯一标识符,并报告给C2服务器。该代码段在图9中突出显示。

10.png

PGMiner使用来自C2的有效载荷并执行它们

多架构载荷

通过上述提供给C2服务器的不同体系结构,研究人员能够恢复以下有效载荷列表,而其他体系结构的下载则会失败。

· a935d364622ebefbee659caaa9d0af5828952ab9501591c935cf1f919e2a38ff pt .aarch64: Shell脚本;

· a935d364622ebefbee659caaa9d0af5828952ab9501591c935cf1f919e2a38ff pg.armv7l: Shell脚本;

· 6d296648fdbc693e604f6375eaf7e28b87a73b8405dc8cd3147663b5e8b96ff0: ELF 64位LSB可执行文件,x86-64版本1 (SYSV),静态链接,无段标头;

有趣的是,x86_64的有效载荷是一个ELF可执行文件,而对于aarch64和armv7l,有效载荷是相同的Shell脚本。

x86_64 ELF有效载荷

x86_64 ELF有效载荷具有以前的SystemdMiner变体中看到的大多数行为,但是随着其他功能的发展而变化:

1.环境准备:

· 如上所述下载并安装curl二进制文件;

· 安装crontab;

· 删除诸如Aegis等云安全监控工具和Yunjing等Qcloud监控工具;

2.虚拟机检查:PGMiner检查VBoxGuestAdditions的存在,以推断是否在虚拟环境中对其进行了分析。

3.删除竞争对手的挖矿软件:

· 删除其他已知的挖矿脚本、进程和crontab记录;

· 杀死挖矿清理程序;

· 杀死所有其他CPU密集型进程,例如ddg,系统更新等。

· 终止连接到已知挖矿IP地址的进程;

armv7l/aarch64 Shell脚本有效载荷

从x86_64 ELF有效载荷中,研究人员能够从C2 jk5zra7b3yq32timb27n4qj5udk4w2l5kqn5ulhnugdscelttfhtoyd [onion](是PGMiner的挖矿模块)中恢复CPU文件。但是,C2无法使用其他cmd和bot模块。此时,armv7l/aarch64 Shell脚本连接到另一个C2,reambusweduybcp [onion]。它还尝试下载cmd文件,这次成功了。这表明该恶意程序家族的C2服务器正在不断更新,不同的模块分布在不同的C2上。

cmd模块首先尝试终止跟踪路径进程,然后,它从相同的C2地址下载其他有效载荷。下载的恶意程序模拟了tracepath进程以隐藏其存在。在分析了aarch64有效载荷之后,研究人员恢复了最初用于PostgreSQL服务器上运行的shell脚本,从而完成了分析。

缓解措施和建议

建议PostgreSQL用户从不受信任的用户中删除“pg_execute_server_program”特权,这样就不可能利用该特权。此外,研究人员继续建议用户从受信任的来源下载程序,管理安全可靠的密码并及时应用补丁。

为了消除PGMiner对PostgreSQL服务器的影响,用户可以搜索并阻止该恶意程序模拟的“tracepath”进程,并阻止被恶意软件在" /tmp/. x11 -unix/ "中跟踪进程id的进程。

总结

PGMine是一种通过有争议的PostgreSQL RCE漏洞提供的新的加密货币挖矿僵尸网络,目前还没有被披露,PGMiner正在利用有争议的漏洞这一事实使它一直未被人注意到,直到研究人员最近在Palo Alto Networks上发现了它。

由于PostgreSQL在PDMS中被广泛采用,因此PGMiner可能具有广泛攻击性。通过额外的努力,该恶意程序可以针对所有主要操作系统。例如,PostgreSQL适用于所有主要平台,包括macOS,Windows和Linux。从理论上讲,恶意攻击者可以通过针对新平台(例如Windows)来实现另一个版本的PGMiner,并使用PostgreSQL发布它。

在研究人员的分析过程中,他们观察到了新技术,例如在请求中嵌入受害者标识,模拟受信任的进程名称,通过多种方法下载curl二进制文件以及阻止所有竞争对手的挖掘程序。研究人员还分析了该恶意程序如何更好地跟踪受害者,执行、隐藏自身并获利。

IOCs

63.1.png

63.2.png

本文翻译自:https://unit42.paloaltonetworks.com/pgminer-postgresql-cryptocurrency-mining-botnet/如若转载,请注明原文地址:


文章来源: https://www.4hou.com/posts/g8YG
如有侵权请联系:admin#unsafe.sh