- A+
Palo Alto Networks Unit 42 的安全研究员发现了一种基于 Linux 平台的加密货币挖掘僵尸网络,该僵尸网络利用 PostgreSQL 远程代码执行(RCE)漏洞来攻陷数据库。
据 Palo Alto Networks Unit 42 研究人员的描述,PGMiner 利用 PostgreSQL(也被称为 Postgres)中的 CVE-2019-9193 漏洞发起攻击。这可能是有史以来第一个针对 PostgreSQL 的加密货币挖掘僵尸网络。
利用漏洞
Unit 42 研究人员在文章中表示:“攻击者正在利用的 PostgreSQL 功能是'copy from program',该功能于 2013 年 9 月 9 日在 9.3 版中引入的”,“早在 2018 年,针对 CVE-2019-9193 漏洞 PostgreSQL 社区就存在极大的质疑,该漏洞也被标记为“有争议的”。
他们补充说道:“值得注意的是,恶意软件攻击者不仅已开始对确认的漏洞进行武器化,而且还开始对有争议的漏洞进行武器化”。
该功能允许从本地或远程在服务器上运行 Shell 脚本。但是,只要超级用户或不受信任的用户都不具有远程权限,并且访问控制和身份验证系统已进行了正确配置,就不会有风险。另一方面,如果配置不正确,PostgreSQL 也会被通过暴力破解或 SQL 注入等方式获取超级用户权限,这也可以在 PostgreSQL 以外的服务器上进行远程代码执行。
攻击细节
研究人员表示:“攻击者会扫描 PostgreSQL 使用的端口 5432(0x1538)”, “恶意软件会随机选择一个网络地址段(例如 190.0.0.0、66.0.0.0)开始扫描,以尝试在 PostgreSQL 服务器上执行远程代码。与此同时,会使用数据库的默认用户 postgres 对内置密码列表(例如 112233 和 1q2w3e4r)进行暴力破解,以攻破数据库身份验证”。
该报告称,在以超级用户身份入侵服务器后,该恶意软件会使用“copy from program”功能的 CVE-2019-9193 漏洞下载并启动挖矿。挖矿程序采用无文件方法,在启动后立即删除了 PostgreSQL 的 abroxu 表,重新创建 abroxu 表将 Payload 填充进去,执行后清除创建的表。
安装后,该恶意软件使用 curl 来执行任务。curl 是用于向服务器或从服务器传输数据的命令行工具。如果受害者的机器上没有 curl,恶意软件会尝试通过多种方法来下载 curl 二进制文件并将其添加到执行路径。
更有趣的是目标 C&C 地址:94.237.85.89。该地址绑定到域名 newt.keetup.com 上。虽然其上级域名 keepup.com 看起来像是一个合法的网站,但该特定子域名会将端口 80 重定向到 443,该端口用于承载名为 newt 的 couchdb。尽管 8080 端口不对外开放,但我们认为它已配置为允许跨域资源共享(CORS)”。
下一步是通过 SOCKS5 代理连接到命令和控制服务器(C&C)。然后,PGMiner 会收集系统信息,并将其发送给 C&C 服务器以识别受害者,以确定应下载哪个版本的挖矿程序。
解析了 SOCKS5 代理服务器的 IP 地址之后,PGMiner 循环遍历文件夹列表,找到一个拥有创建新文件并更新其属性权限的位置”,“以确保下载的 Payload 可以在失陷服务器上成功执行”。
最后会删除诸如 Aegis 之类的云安全监视工具以及诸如 Yunjing 之类的 Qcloud 监视器程序。检查虚拟机、终止所有其他 CPU 密集型进程与竞争对手的挖矿程序。
PGMiner 的 C&C 服务器正在不断更新。不同的模块分布在不同的 C&C 服务器上,这一切都表明 PGMiner 仍然在快速迭代发展。目前攻击针对 Linux 平台,但也可以轻松修改为针对 Windows 和 macOS 平台。
检查与清除
PostgreSQL 用户可以从不受信任的用户中删除 pg_execute_server_program 权限,这就使攻击者无法利用该漏洞。此外,还可以终止 tracepath 进程。
参考来源