PHP大马分析实战
2023-6-27 09:12:16 Author: 编码安全研究(查看原文) 阅读量:21 收藏

PHP大马,用php写的木马文件,一般自带提权,操作数据库,反弹shell,文件下载,端口扫描等功能。网上很多地方都能下载到这些木马,但是大部门大马都会自带有后门,也就是当你上传木马到别人的服务器上的时候,该大马的制作者同样会通过后门获得服务器的权限。今天就来分析一波该大马中的后门。

PHP大马分析思路

  1. 将PHP大马代码中的核心部分提权出来。

  2. 由于大马代码都是使用Base64加密过的,需要进行解密,甚至需要解密多层。

  3. 获得PHP源代码,搜索关键词,在解密后的代码中寻找后门。

PHP大马分析实战

从网上下载一个PHP免杀大马,一般网上下载的大马,都带有后门。

(下载大马)

搭建测试环境,发现大马可以正常使用。

(登录界面)

(功能界面)

查看php大马文件,发现好乱,慢慢分析吧。

(PHP大马)

发现第五行第六行定义的变量,可能是加密过程,将代码分段之后,输出代码中定义的变量的值。

php

$O00OO0=urldecode("%6E1%7A%62%2F%6D%615%5C%76%740%6928%2D%70%78%75%71%79%2A6%6C%72%6B%64%679%5F%65%68%63%73%77%6F4%2B%6637%6A");
echo '$O00O0O='.$O00O0O=$O00OO0{3}.$O00OO0{6}.$O00OO0{33}.$O00OO0{30};
echo "<br>";
echo '$O0OO00='.$O0OO00=$O00OO0&#123;33&#125;.$O00OO0&#123;10&#125;.$O00OO0&#123;24&#125;.$O00OO0&#123;10&#125;.$O00OO0&#123;24&#125;;
echo "<br>";
echo '$OO0O00='.$OO0O00=$O0OO00&#123;0&#125;.$O00OO0&#123;18&#125;.$O00OO0&#123;3&#125;.$O0OO00&#123;0&#125;.$O0OO00&#123;1&#125;.$O00OO0&#123;24&#125;;
echo "<br>";
echo '$OO0000='.$OO0000=$O00OO0&#123;7&#125;.$O00OO0&#123;13&#125;;
echo "<br>";
echo '$O00O0O='.$O00O0O.=$O00OO0&#123;22&#125;.$O00OO0&#123;36&#125;.$O00OO0&#123;29&#125;.$O00OO0&#123;26&#125;.$O00OO0&#123;30&#125;.$O00OO0&#123;32&#125;.$O00OO0&#123;35&#125;.$O00OO0&#123;26&#125;.$O00OO0&#123;30&#125;;
echo "<br>";

(变量值)

得到第一层加密过程,将eval执行的那一大段进行base64解码,将解码后的代码替换原位置的代码,可以正常执行,发现最后一行eval有些猫腻,将其拿出单独看。

(第一层解密)

将第二步得到的变量的值,在代码中进行一一替换。

php

eval('?>'.$O00O0O($O0OO00($OO0O00($O0O000,$OO0000*2),$OO0O00($O0O000,$OO0000,$OO0000),$OO0O00($O0O000,0,$OO0000))));
//$O00O0O=base
//$O0OO00=strtr
//$OO0O00=substr
//$OO0000=52
//$O00O0O=base64_decode

得到第二层加密过程。

php

base64_decode(strtr(substr($O0O000,52*2),substr($O0O000,52,52),substr($O0O000,0,$OO0000)));

  • $O0O000:是第一层解密后的得到的加密代码。

  • strtr():替换字符串中特定的字符。

  • substr():截取字符串,并返回截取的字符串。

根据加密过程,将php代码解密,并将解密后的代码保存在target.php文件中。

php

$a = base64_decode(strtr(substr($O0O000,52*2),substr($O0O000,52,52),substr($O0O000,0,$OO0000)));
$myfile = fopen("target.php", "w") or die("Unable to open file!");
fwrite($myfile, $a);

(第二层解密)

搜索关键词,比如:http,https,base64_decode,寻找可疑的url或者Base64加密处,发现两处可疑的base64加密处(加密后的字符串相同)。

(Base64加密处)

将该字符串解密,发现是一个url地址,也是箱子。

(箱子)

访问该地址,并查看页面源代码,使用iframe标签加载了阿里云页面。

(页面源代码)

在微步中查看该url解析到哪个ip,发现ip是位于新加坡的阿里云。

(url)

(ip)

作者:Wangfly作者博客:https://www.hui-blog.cool/

声明:本公众号所分享内容仅用于网安爱好者之间的技术讨论,禁止用于违法途径,所有渗透都需获取授权!否则需自行承担,本公众号及原作者不承担相应的后果。

侵权请私聊公众号删文

   学习更多技术,关注我:   

觉得文章不错给点个‘再看’吧

文章来源: http://mp.weixin.qq.com/s?__biz=Mzg2NDY1MDc2Mg==&mid=2247503370&idx=1&sn=8cecfa3a8f04729a62cefd97ef4a6b2d&chksm=ce649d6ff913147999ccb2502225dbc258028270cc39a9e0c69b0bf88ae976a88c993e4cf138#rd
如有侵权请联系:admin#unsafe.sh