冰蝎4.0特征分析及流量检测思路

零基础学白帽黑客

搜公众号:白帽子左一  

冰蝎4.0介绍

冰蝎是一款基于Java开发的动态加密通信流量的新型Webshell客户端。老牌Webshell管理神器——中国菜刀的攻击流量特征明显,容易被各类安全设备检测,实际场景中越来越少使用,加密 Webshell 正变得日趋流行。

由于通信流量被加密,传统的 WAF、IDS 设备难以检测,给威胁狩猎带来较大挑战。冰蝎其最大特点就是对交互流量进行对称加密,且加密密钥是由随机数函数动态生成,因此该客户端的流量几乎无法检测。

1、新版本

修复问题:1.修复了在zimbra环境下的兼容性问题;2.修复了在exchange环境下的兼容性问题;3.修复了Linux环境下打开文件失败的问题;4.修复了命令执行中输入反斜杠导致后续无法输入新命令的问题;5.修复了列目录时目录跳动的问题;6.修复JDK18+执行命令乱码的问题;7.修复内网穿透模块的几个影响隧道稳定性的几个问题;8.修复了代码编辑框的复制粘贴问题;9.其他一些优化。

新增功能:

1.新增支持多线程超大文件上传、下载;2.新增文件打包压缩;3.新增数据库连接配置可保存;4.取消硬编码通信协议,传输协议完全自定义,并支持即时在线校验测试。5.新增平行世界模块,可对目标内网资产进行管理;6.新增主机扫描、端口扫描、服务识别模块;7.新增支持Java9~java15+版本Agent内存马一键注入;8.新增支持Java Agent无文件落地注入内存马;9.新增多层网络子Shell穿透模块,实现多层”蝎中蝎”;10.新增离线模式,自动缓存数据,如shell丢失,可离线查看已缓存内容;11.开放插件开发模块,可开发自定义插件,内置多款插件;12.支持二进制服务端,服务端不再依赖web。

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加密后返回给攻击者。

在这里插入图片描述

02、特征检测

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时会随机选择一个进行使用。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

检测思路

在较短较简单的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
在这里插入图片描述

响应字节头:

TxcWR1NNExZAD0ZaAWMIPAZjH1BFBFtHThcJSlUXWEd
在这里插入图片描述

解密报文:
在这里插入图片描述

通过webshell脚本,逆向分析揭秘算法:

在这里插入图片描述
在这里插入图片描述

得到报文内容:在这里插入图片描述

将报文base64解密得到:

在这里插入图片描述
在这里插入图片描述

可以获取到目录信息。

8、连接密码
流量特征:

默认时,所有冰蝎4.0 webshell都有“e45e329feb5d925b” 一串密钥。该密钥为连接密码32位md5值的前16位,默认连接密码rebeyond

9、webshell特征
JSP webshell代码特征

在这里插入图片描述

PHP webshell代码特征
在这里插入图片描述

10、请求和响应

在这里插入图片描述
在这里插入图片描述

冰蝎连接时不用输入密码,根据对冰蝎的使用分析,冰蝎4.0可以在初始时自定义连接密码。
在这里插入图片描述

要设置自定义密码,需要在本地和远程加解密函数中都保存$key。

这样的话,如果对方更换密码,初始字符串经过密钥加密,那么它的请求头和响应头都会发生变化,这就需要针对webshell中的$key动态改变解密函数才能得到解密后固定的请求头和响应头

另外,每次发起连接时都会发出两次http请求,默认连接密钥下,所有响应头都相同,第二次请求头比较特殊,初次之外,所有的请求头都相同。

第一次请求解密

dFAXQV1LORcHRQtLRlwMAhwFTAg/M

@error_reporting(0);\r
在这里插入图片描述

第二次请求解密

OT8AQUBWFDoQUBRWQEELC1MdVRoJNGwDF1sHTVtaDEVZVAxdGh0RDQNBAU9X

error_reporting(0);\r

参考文章:
https://cloud.tencent.com/developer/article/1621021

作者:6cloud

转载自:https://www.freebuf.com/articles/network/345803.html

在这里插入图片描述
在这里插入图片描述

### 冰蝎4.0流量特征及强特征分析 #### 一、冰蝎4.0的主要传输协议及其加密方式 冰蝎4.0支持多种传输协议,这些协议定义了其通信过程中使用的加密方法。主要的传输协议包括 `default_xor`(默认异或加密)、`xor_base64`(异或后再进行Base64编码)以及 `aes`(高级加密标准)。其中,默认的 `default_xor` 协议通过对原始数据进行简单的异或操作完成加密过程[^2]。 #### 二、冰蝎4.0的请求与响应结构 当不使用任何加解密函数时,冰蝎4.0的请求体实际上直接传递的是Java字节码,而响应体则是一个固定的JSON格式字符串,形如: ```json { "msg": "执行结果base64编码", "status": "c3VjY2Vzcw==" } ``` 这里的 `"status"` 是一个经过Base64编码的状态信息,在实际应用中通常表示成功与否的结果状态[^2]。 #### 三、冰蝎4.0的强流量特征分析 以下是冰蝎4.0的一些显著流量特征,可作为检测中的强特征依据: 1. **特定的HTTP头字段** 冰蝎4.0在发送请求时可能会携带特殊的自定义HTTP头部字段,例如 `User-Agent` 或者其他非标准化的字段名称。这类字段可能具有一定的规律性或者固定模式,能够成为识别的关键点之一[^1]。 2. **POST请求的数据包大小分布异常** 鉴于冰蝎4.0采用的加密机制相对简单,因此在其生成的网络流量中,某些情况下会出现较为一致的数据包长度分布现象。这可能是由于内部缓冲区设置或者其他实现细节所决定的特性[^3]。 3. **固定的响应格式** 如前所述,即使启用了不同的加密算法,最终返回给客户端的内容仍然遵循一种高度统一化的模板化设计——即包含两个键值对形式的消息描述和状态指示器。这一特点使得即便面对复杂的加密层处理,也依然可以从高层逻辑层面捕捉到蛛丝马迹[^2]。 4. **TLS握手阶段的行为差异** 对于未被完全解析出来的TLS连接而言,通过观察初始建立安全通道期间双方交换证书链路参数等方面是否存在偏离常规的现象,则有可能进一步缩小目标范围并提升命中率。 5. **魔改版本特有的标志符** 当攻击者尝试修改原有程序代码以规避现有防御体系监控的时候,“魔改版”的冰蝎往往会在不经意间留下新的痕迹,比如新增的功能选项开关变量名约定俗成前缀等等[^2]。 #### 四、总结说明 综上所述,尽管冰蝎4.0引入了更加灵活多样的加密手段试图掩盖自身踪迹,但从多个维度综合考量仍能提炼出不少有价值的线索用于辅助判断是否遭遇此类威胁入侵活动的发生。同时值得注意的是随着技术不断进步迭代更新频率加快,持续跟踪最新动态调整策略显得尤为重要。 ```python import base64 def decode_status(encoded_status): """ 解码 status 的 Base64 编码 """ try: decoded = base64.b64decode(encoded_status).decode('utf-8') return decoded except Exception as e: return f"Error decoding: {e}" example_encoded_status = "c3VjY2Vzcw==" print(decode_status(example_encoded_status)) # 输出 'success' ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值