LOADING

加载过慢请开启缓存 浏览器默认开启

流量分析学习之路--冰蝎流量特征分析

2024/8/9

详细总结一下冰蝎4.0的流量

冰蝎简介

冰蝎是一个使用Java语言编写的新型Webshell客户端,区别于中国菜刀它通过动态加密其通信流量,使得传统的网络安全设备,如Web应用防火墙(WAF)和入侵检测系统(IDS),难以对其进行有效检测。这种加密方式大大增加了网络威胁狩猎的难度。冰蝎的一个显著特性是,它对用户交互过程中的数据流量进行对称加密,加密过程使用的密钥是随机生成的,这使得其通信流量很难被检测到。

通讯原理

分为两个阶段:密钥协商,加密传输

第一阶段:密钥协商

1、攻击者首先通过GET或者POST传参的方法对服务器请求密钥,譬如:http://127.0.0.1/webshell.aspx?password=6

2、服务器使用生成的随机数的MD5值的前十六位当作密钥K并且存储在全局变量$_SESSION中,并且发给攻击者

第二阶段:加密传输

1、攻击者得到了密钥K,将K作为密钥进行AES128或者异或加密加密手法将执行命令发送到服务段

2、服务端得到密文之后使用K进行解密

3、将得到的执行结果使用K进行AES加密之后传回攻击者

详细流程如图:

1base64

特征分析

Accept字段

流量特征

Behinder在通信过程中通常会携带accept以下字段;Accept: application/json, text/javascript, /; q=0.01

2base64

监测思路

在这里面他可以接收任何文件,但是倾向于application/json, text/javascript,上图就是冰蝎4.0的一段流量,在这里请求包的第二行的Accept字段会体现这一特征

Content-type字段

流量特征

很固定,Content-type: application/x-www-form-urlencoded

3base64

监测思路

因为Contend-Type字段很固定,但是这个通常不能决定性的说明什么,这个可以作为一个很好的辅助特征验证手段

User-Agent字段

流量特征

Bihinder设置了10种UA头,每次连接会使用其中一个。

"Mozilla/5.0 (Macintosh; Intel Mac OS X 11_2_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:87.0) Gecko/20100101 Firefox/87.0",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.74 Safari/537.36 Edg/99.0.1150.55",
"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:98.0) Gecko/20100101 Firefox/98.0",
"Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:79.0) Gecko/20100101 Firefox/79.0",
"Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko"

下面流量中就使用了Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:79.0) Gecko/20100101 Firefox/79.0这个UA头

4base64

监测思路

nort编写可以用content:“User-Agent”;content:“浏览器版本”。来匹配相应的十个浏览器。发现异常流量的时候去寻找UA头是不是匹配这十个中的一个

Content-Length字段

流量特征

长度一般很大,如:Content-Length: 4248

5base64

监测思路

看请求包如果发现Content-Length字段很大,可以作为弱特征去辅证为冰蝎流量

长连接

在请求包里面会有一个Connection:Keep-Alive字段代表长连接,这个在前文提到过

6base64

监测思路

可以作为辅助认证为冰蝎流量的流量特征,可以与前面Content-Length字段作结合。

固定的请求头与响应头

在这里面介绍一下Default_aes协议加密流量特征

Default_aes协议加密流量特征

请求字节头:m7nCS8n4OZG9akdDlxm6O
响应头:mAUYLzmqn5QPDkyI5lvSp6DmrC24FW39Y4YsJhUqS7

7base64

8base64

加密解密函数如下:

9base64

连接密码

流量特征

默认时所有的冰蝎4.0的webshell都有密钥:“e45e329feb5d925b”,该密钥就是rebeyond的32位MD5的前16位

端口

流量特征

看了一下大佬的文章发现,冰蝎与webshell建立连接的同时,javaw也与目的主机建立tcp连接,每次连接使用本地端口在49700左右,每连接一次,每建立一次新的连接,端口就依次增加,我本地看了一下发现51000左右也有,特征会依次增加。

10base64

参考文章

https://www.freebuf.com/articles/network/345803.html