冰蝎是一款基于Java开发的动态加密通信流量的新型Webshell客户端。老牌Webshell管理神器——中国菜刀的攻击流量特征明显,容易被各类安全设备检测,实际场景中越来越少使用,加密 Webshell 正变得日趋流行。
由于通信流量被加密,传统的 WAF、IDS 设备难以检测,给威胁狩猎带来较大挑战。冰蝎其最大特点就是对交互流量进行对称加密,且加密密钥是由随机数函数动态生成,因此该客户端的流量几乎无法检测。
1、新版本
4.修复了命令执行中输入反斜杠导致后续无法输入新命令的问题;7.修复内网穿透模块的几个影响隧道稳定性的几个问题;
新增功能:
4.取消硬编码通信协议,传输协议完全自定义,并支持即时在线校验测试。7.新增支持Java9~java15+版本Agent内存马一键注入;8.新增支持Java Agent无文件落地注入内存马;9.新增多层网络子Shell穿透模块,实现多层”蝎中蝎”;10.新增离线模式,自动缓存数据,如shell丢失,可离线查看已缓存内容;11.开放插件开发模块,可开发自定义插件,内置多款插件;
2、工具通信原理
冰蝎的通信过程可以分为两个阶段:密钥协商和加密传输
第一阶段-密钥协商
1.攻击者通过 GET 或者 POST 方法,形如 http://127.0.0.1/shell.aspx?pass=645的请求服务器密钥;
2.服务器使用随机数 MD5 的高16位作为密钥,存储到会话的 $_SESSION 变量中,并返回密钥给攻击者。
第二阶段-加密传输
1)客户端把待执行命令作为输入,利用 AES 算法或 XOR 运算进行加密,并发送至服务端;
2)服务端接受密文后进行 AES 或 XOR 运算解密,执行相应的命令;
3)执行结果通过AES加密后返回给攻击者。
![1.png 1.png](https://www.6cloudtech.com/upload/default/20220928/7a18321d1c666d098eb5813938635617.png)
1、Accept字段
流量特征
Accept: application/json, text/javascript, */*; q=0.01
检测思路
浏览器可接受任何文件,但最倾向application/json和 text/javascript
规则
file_data的作用和http_server_body差不多,都是使content匹配response body中的内容,唯一不同的是使用了file_data关键字的规则,其在file_data之后的content都会受到它的影响。file_data之后的content都必须在response body里匹配。。
2、Content-Type
流量特征
Content-type: Application/x-www-form-urlencoded
检测思路
可以把这个字段作为一个弱特征,辅助其他特征来检测
3、User-agent 字段
流量特征
冰蝎设置了10种User-Agent,每次连接shell时会随机选择一个进行使用。
![4.jpg 4.jpg](https://www.6cloudtech.com/upload/default/20220928/8b596922d16bbfa4dfa30c7d6805aad2.jpg)
![5.jpg 5.jpg](https://www.6cloudtech.com/upload/default/20220928/60f5bd2ee4a1f627cf6997b2d19f1190.jpg)
检测思路
在较短较简单的content字段后加上fast_pattern关键字则会优先匹配这个content。避免浪费太长时间在匹配user-agent上。
snort编写可以用content:“User-Agent”;content:“浏览器版本”。来匹配相应的十个浏览器。
4、端口
流量特征
冰蝎与webshell建立连接的同时,javaw也与目的主机建立tcp连接,每次连接使用本地端口在49700左右,每连接一次,每建立一次新的连接,端口就依次增加。
检测思路
可以对符合该范围内的端口告警。
5、PHP webshell 中存在固定代码
流量特征
$post=Decrypt(file_get_contents("php://input"));
eval($post);
检测思路
content字段中,将eval($post)作为流量特征纳入。
6、长连接
流量特征
冰蝎通讯默认使用长连接,避免了频繁的握手造成的资源开销。默认情况下,请求头和响应头里会带有 Connection。
Connection: Keep-Alive
可以作为辅助的流量特征。
7、固定的请求头和响应头
流量特征
请求字节头:
dFAXQV1LORcHRQtLRlwMAhwFTAg/M
![7.jpg 7.jpg](https://www.6cloudtech.com/upload/default/20220928/caa9c2b1b9d202c5ab11fdeac2cfc3e3.jpg)
响应字节头:
TxcWR1NNExZAD0ZaAWMIPAZjH1BFBFtHThcJSlUXWEd
![8.jpg 8.jpg](https://www.6cloudtech.com/upload/default/20220928/f81f4776a34b065a52652d221170f84b.jpg)
解密报文:
![9.jpg 9.jpg](https://www.6cloudtech.com/upload/default/20220928/c9229d7f4613579d22ff4bc1b97a14c7.jpg)
![10.jpg 10.jpg](https://www.6cloudtech.com/upload/default/20220928/b738dbe1f173813684905395216b82bb.jpg)
![11.png 11.png](https://www.6cloudtech.com/upload/default/20220928/2f53e8ee434a7b1cf4776661bc759a50.png)
得到报文内容:
![12.png 12.png](https://www.6cloudtech.com/upload/default/20220928/5ea75db6a57551d01f6c431acc0ebd97.png)
将报文base64解密得到:
![13.png 13.png](https://www.6cloudtech.com/upload/default/20220928/022478e86ce067ca9a6efe775c39a57a.png)
![14.png 14.png](https://www.6cloudtech.com/upload/default/20220928/b2aa0de58681b69e5315b4e2822c40c4.png)
可以获取到目录信息
8、连接密码
流量特征:
默认时,所有冰蝎4.0 webshell都有“e45e329feb5d925b” 一串密钥。该密钥为连接密码32位md5值的前16位,默认连接密码rebeyond
9、webshell特征
![15.png 15.png](https://www.6cloudtech.com/upload/default/20220928/b8b42fe7ddbaa821d03a5985df12ee0b.png)
![16.png 16.png](https://www.6cloudtech.com/upload/default/20220928/e7040f003dff8de9e53565f2710d532c.png)
10、请求和响应
![17.png 17.png](https://www.6cloudtech.com/upload/default/20220928/b1c27e462109ae08ce8f384edaf6d574.png)
![18.jpg 18.jpg](https://www.6cloudtech.com/upload/default/20220928/2c14ec51e934d9b4435aa30cfd8eb665.jpg)
冰蝎连接时不用输入密码,根据对冰蝎的使用分析,冰蝎4.0可以在初始时自定义连接密码。
![19.jpg 19.jpg](https://www.6cloudtech.com/upload/default/20220928/3ff6e400906ea4201758fcc76a36a7bd.jpg)
要设置自定义密码,需要在本地和远程加解密函数中都保存$key。
这样的话,如果对方更换密码,初始字符串经过密钥加密,那么它的请求头和响应头都会发生变化,这就需要针对webshell中的$key动态改变解密函数才能得到解密后固定的请求头和响应头
另外,每次发起连接时都会发出两次http请求,默认连接密钥下,所有响应头都相同,第二次请求头比较特殊,初次之外,所有的请求头都相同。
第一次请求解密
dFAXQV1LORcHRQtLRlwMAhwFTAg/M
@error_reporting(0);\r
![20.jpg 20.jpg](https://www.6cloudtech.com/upload/default/20220928/560e0bd34b9cd83e6ef31d7fb5e9f9c2.jpg)
第二次请求解密
OT8AQUBWFDoQUBRWQEELC1MdVRoJNGwDF1sHTVtaDEVZVAxdGh0RDQNBAU9X
error_reporting(0);\r
![21.jpg 21.jpg](https://www.6cloudtech.com/upload/default/20220928/b1a66d4d5b33b91c2fd3e74fad6d4dcd.jpg)
1、网络出口位置部署六方云防火墙,并及时更新特征库;
2、部署六方云神探产品,及时发现未知威胁。
参考文章:
https://cloud.tencent.com/developer/article/1621021