冰蝎动态二进制加密WebShell特征分析

2019 年 9 月 20 日 FreeBuf

概述

冰蝎一款新型加密网站管理客户端,在实际的渗透测试过程中有非常不错的效果,能绕过目前市场上的大部分WAF、探针设备。本文将通过在虚拟环境中使用冰蝎,通过wireshark抓取冰蝎通信流量,结合平时在授权渗透中使用冰蝎马经验分析并总结特征。

版本介绍

目前冰蝎已经迭代6个版本下载地址,从最初的v1.0版本到目前最新的版本v2.0.1,其中v1.0版本可以从此处下载到。

冰蝎最初的版本对于环境的要求较为苛刻,仅支持部分环境,绝大部分环境中都无法连接成功,目前最新版本可使用范围有了较大的提升,PHP 5-PHP 7全版本支持,Java最低支持至1.6,.NET最低支持至2.0。

冰蝎最初版本User-Agent头为客户端JDK版本,v1.1开始新增随机UserAgent支持,每次会话会从17种常见UserAgent中随机选取。

由于冰蝎在通信过程中使用AES加密,Java和.Net默认支持AES加密,php环境中需要开启openssl扩展,v2.0更新以后,PHP环境加密方式根据服务器端支持情况动态选择,不再依赖openssl,使得冰蝎有了更大的发挥空间。

JSP冰蝎马,此处不作冰蝎马分析。

PHP冰蝎马

通信流量分析

在本地搭建环境抓取冰蝎流量来进行简单的特征分析,主要测试冰蝎最初版本和最新版本,v1.0和v2.0.1,提取通信关键特征。

服务端虚拟机win7、客户端本地主机win10、Tomcat8,客户端服务端Java环境均为1.8。

V1.0版本冰蝎连接

抓取到的通信流量如下:

从Wireshark中抓到的数据包中可以看出,冰蝎与传统的管理工具一样,操作请求均为POST。从流量包中可以清楚看到请求头中携带的User-Agent: Java/1.8.0_181为客户端Java环境的版本且会随着客户端的Java环境而变化,Content-Type: application/octet-stream表示以二进制流传输数据,响应体的数据被加密,无法看出响应的内容是什么,Content-Type: application/octet-stream代表二进制流也不能作为判定的依据,暂时无法提取的有效的特征,但是注意到冰蝎在建立之前会有一个GET请求,咱们在最新版本中看一下会不会有这个GET请求。

V2.0.1版本冰蝎连接

冰蝎v2.0.1连接成功,抓取到流量包如下:

我们通过查看POST数据包发现除上述提到冰蝎增加了随机的User-Agent和v1.0并无其它本质上的区别。

但是我们注意到依然会有GET请求,冰蝎检测的难点在于在通信过程中数据通过加密传输,难以提取特征,下面我们比较一下两个版本之间在连接过程中发起的GET请求。

V1.0请求包详情如下:

V2.0.1请求包详情如下:

通过比较发现,冰蝎在连接之前会发送一个GET请求,服务端如果正常会响应一个16位的字符串。其实冰蝎每一次连接请求都会向服务端发送一次GET请求获取16位的密钥,这16位的字符串就是密钥,在客户端和服务端的通信过程中使用密钥进行加密以达到免杀的目的,因此只要我们能在流量中发现这样特征的流量,便可以发现隐藏在流量中的冰蝎webshell。

冰蝎特征总结

检测请求方式:Request.method= GET

检测请求资源:Request.url= /[\w.]*.[a-zA-Z]{3,4}\?\w{0,20}=\d{0,10}

检测服务端响应(仅16位密钥):Response.body.startwith =\w{16}

上述正则仅供参考,实际过程中需要防止规则被绕过,例如:shell的名字、后缀(可能利用解析漏洞等)、密码的长度等等。本次仅从v1.0和v2.0.1中去分析,实际在目前的版本中都存在获取密钥这个请求,由于篇幅有限,只举例说明了这个两个版本。

文末总结

与检测传统的网站管理工具不同的,中国菜刀、中国蚁剑、c刀等都从POST请求中去提取特征,而冰蝎在通信过程中使用加密传输无法获取明文,因此,利用冰蝎在和服务端通信过程中会获取密钥的特性去检测也许会是一种可行的方法。

参考链接

基于流量侧检测冰蝎webshell交互通讯(点击底部阅读原文查看)

*本文作者:lowliness,转载请注明来自FreeBuf.COM

精彩推荐


登录查看更多
0

相关内容

PHP 是英文超级文本预处理语言(PHP:Hypertext Preprocessor)的缩写。PHP 是一种 HTML 内嵌式的语言,是一种在服务器端执行的嵌入 HTML 文档的脚本语言,语言的风格有类似于 C 语言,被广泛的运用。PHP 具有非常强大的功能,所有的 CGI 的功能 PHP 都能实现,而且支持几乎所有流行的数据库以及操作系统。
【实用书】学习用Python编写代码进行数据分析,103页pdf
专知会员服务
192+阅读 · 2020年6月29日
【实用书】Python技术手册,第三版767页pdf
专知会员服务
234+阅读 · 2020年5月21日
Python导论,476页pdf,现代Python计算
专知会员服务
259+阅读 · 2020年5月17日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
117+阅读 · 2020年5月10日
【实用书】流数据处理,Streaming Data,219页pdf
专知会员服务
76+阅读 · 2020年4月24日
【图神经网络(GNN)结构化数据分析】
专知会员服务
115+阅读 · 2020年3月22日
【经典书】Python数据数据分析第二版,541页pdf
专知会员服务
192+阅读 · 2020年3月12日
专知会员服务
27+阅读 · 2020年3月6日
【电子书】C++ Primer Plus 第6版,附PDF
专知会员服务
87+阅读 · 2019年11月25日
云游戏行业发展趋势分析报告
行业研究报告
13+阅读 · 2019年3月24日
文本分析与可视化
Python程序员
9+阅读 · 2019年2月28日
威胁情报驱动:F3EAD 之利用
计算机与网络安全
4+阅读 · 2018年12月28日
基于R语言进行Box-Cox变换
R语言中文社区
45+阅读 · 2018年11月19日
基于 Storm 的实时数据处理方案
开源中国
4+阅读 · 2018年3月15日
RCNN算法分析
统计学习与视觉计算组
10+阅读 · 2018年1月12日
文本识别 OCR 浅析:特征篇
开源中国
16+阅读 · 2018年1月6日
文本分析 | 常用距离/相似度 一览
数说工作室
26+阅读 · 2017年10月12日
深度判别和共享特征学习的图像分类
计算机视觉战队
6+阅读 · 2017年9月27日
Factor Graph Attention
Arxiv
6+阅读 · 2019年4月11日
Arxiv
4+阅读 · 2018年5月4日
Arxiv
6+阅读 · 2018年1月14日
VIP会员
相关VIP内容
【实用书】学习用Python编写代码进行数据分析,103页pdf
专知会员服务
192+阅读 · 2020年6月29日
【实用书】Python技术手册,第三版767页pdf
专知会员服务
234+阅读 · 2020年5月21日
Python导论,476页pdf,现代Python计算
专知会员服务
259+阅读 · 2020年5月17日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
117+阅读 · 2020年5月10日
【实用书】流数据处理,Streaming Data,219页pdf
专知会员服务
76+阅读 · 2020年4月24日
【图神经网络(GNN)结构化数据分析】
专知会员服务
115+阅读 · 2020年3月22日
【经典书】Python数据数据分析第二版,541页pdf
专知会员服务
192+阅读 · 2020年3月12日
专知会员服务
27+阅读 · 2020年3月6日
【电子书】C++ Primer Plus 第6版,附PDF
专知会员服务
87+阅读 · 2019年11月25日
相关资讯
云游戏行业发展趋势分析报告
行业研究报告
13+阅读 · 2019年3月24日
文本分析与可视化
Python程序员
9+阅读 · 2019年2月28日
威胁情报驱动:F3EAD 之利用
计算机与网络安全
4+阅读 · 2018年12月28日
基于R语言进行Box-Cox变换
R语言中文社区
45+阅读 · 2018年11月19日
基于 Storm 的实时数据处理方案
开源中国
4+阅读 · 2018年3月15日
RCNN算法分析
统计学习与视觉计算组
10+阅读 · 2018年1月12日
文本识别 OCR 浅析:特征篇
开源中国
16+阅读 · 2018年1月6日
文本分析 | 常用距离/相似度 一览
数说工作室
26+阅读 · 2017年10月12日
深度判别和共享特征学习的图像分类
计算机视觉战队
6+阅读 · 2017年9月27日
相关论文
Top
微信扫码咨询专知VIP会员