专栏首页数据库安全冰蝎3.0绕过HIDS原理分析|美创安全实验室
原创

冰蝎3.0绕过HIDS原理分析|美创安全实验室

最流行的WebShell客户端—冰蝎,于近日发布了最新版3.0。最新版一经发出便火速在安全圈广泛传播,究其原因是因为新版冰蝎较之前版本进行了大量修改,一举绕过了国内大部分HIDS等安全设备的检测。本期美创安全实验室将为大家深度分析新版冰蝎绕过HIDS的原理,同时探寻新环境下的防御方案。

HIDS防御老版冰蝎原理

在弄清为什么新版冰蝎可以绕过HIDS之前,我们首先要了解HIDS防御老版冰蝎的原理。而这就要从冰蝎的工作原理讲起了。

冰蝎采用对称加密算法,工作过程一共分为3步:

❖ 密钥传递阶段:在这一阶段中冰蝎向服务端发送请求密钥,其密钥以明文形式存储,如下图;

密钥传递阶段

❖ 算法协商阶段:在SSL握手时,冰蝎将一段Payload用不同的算法加密发送给服务器,如果服务器成功解密,那么接下来的通讯就都采用这种算法,如果算法不对那么冰蝎将换另一种加密算法进行尝试,直至成功。加密算法一般为AES128和异或;

算法协商阶段

❖ 正是通讯阶段:冰蝎使用①阶段的密钥和②阶段的加密算法加密通讯Payload,使用POST方法提交给服务端,服务端又以同样的加密方法将应答传回冰蝎。

正是通讯阶段

从冰蝎的工作原理我们可以发现以下的特征点:

❖ 密钥传递时URL参数时只有一个参数,且值一般为2~3位随机纯数字;

❖ 特殊的Accept字段:Accept: text/html, image/gif, image/jpeg,*; q=.2,*/*; q=.2;

❖ 可穷举的UserAgent字段,冰蝎内置了十余种UserAgent,每次连接时会随机选择一个;

❖ 密钥协商时密钥以明文形式传输。

而这也恰恰是如今市面上绝大多数HIDS设备的工作原理,采用静态检测与动态监测相结合的方式来鉴别是否有类似WebShell的攻击流量,如下:

❖ 通过密钥协商的过程中的一些特征来检测:

老版冰蝎工具在连接Webshell的时候会存在一个密钥协商的过程,这个过程是纯明文的数据交换,冰蝎存在这样的特征:发起一共两次的密钥协商,通过比较两次密钥协商的返回包中内容的不同部分来获取其中的密钥。

❖ 通过Shell交互过程中的HTTP请求特征来检测:

冰蝎在发送HTTP请求时存在一些特征,例如其工具中内置了17个User-Agent头,在用户没有自定义的情况下会随机选择一个发送。但是这些User-Agent头大部分是一些老版本的浏览器或设备。

❖ 通过WebShell上传时的流量特征来检测:

在真实的攻击场景下,攻击者通常是通过文件上传、文件写入等方式来写入冰蝎的Webshell,所以流量设备也可以通过检测攻击场景的数据包来发现冰蝎的存在。

检测警告列表

冰蝎3.0绕过HIDS原理

通过冰蝎3.0与冰蝎2.0的对比我们能很清晰的看出HIDS为什么拦不住冰蝎3.0.

根据官方的说法,本次改动较大,主要体现在以下几个方面上:

❖ 去除动态密钥协商机制,采用预共享密钥,全程无明文交互,密钥格式为md5("admin")[0:16];

❖ 增加了插件机制,可开发安装自定义扩展插件;

❖ UI框架由awt改为javafx,重写了大量逻辑;

❖ 增强了内网穿透功能,在原有的基于HTTP的socks5隧道的基础上,增加了单端口转发功能,可一键将内网端口映射至VPS或本机端口。

从上面的描述我们可以看到,HIDS用来防御冰蝎最重要的一点,也就是密钥协商阶段被取消了。新版本的冰蝎不再有密钥协商过程了,这从原理上就直接绕过了大量的流量监测设备,如下图。但是虽然新版本移除了老版冰蝎的密钥协商逻辑,老版本的WebShell依然可以应用在新版本上。

新旧版本WebShell对比

可能因为冰蝎自己也知道,以前版本的密钥协商过程全程明文传输,所有的HIDS都紧盯着这点不放,所以这次干脆直接放弃了密钥协商过程,采用一个写死的密钥在WebShell中,并且全程加密,这样总不会有人能检测的到我了吧。

最后我们再拿新老版本的WebShell做一下对比:

老版本的JSP-WebShell:

老版本JSP-WebShell

新版本的JSP-Webshell:

新版本JSP-Webshell

通过对比两个文件,我们可以看到:

❖ 新版WebShell在代码外新增了AAAAA、bbbb两个字符串,但这两个字符串并不影响冰蝎正常使用;

❖ 新版本WebShell去除了密钥协商过程,直接将一个字符串写死在WebShell中,作为AES密钥用来解密流量包;

❖ 实际执行代码的逻辑并没有修改,均采用defineClass的方式执行Java字节码。

冰蝎3.0流量特征分析

虽然新版冰蝎大幅度减少了流量中的特征,但仍然存在一些特征可以被检测:

1. JSP-WebShell返回包首部和尾部会回显的AAAAA和bbbb字符串

2.固定大小的数据包:

在冰蝎3.0的连接过程中,会存在几个大小固定的数据包,可以作为弱特征进行检测,如下,每次链接总共会发送5个数据包,其中第一个固定为531,接着的两个包大小虽然不固定但也就在1000+和12000+左右,最后的两个数据包固定为1789.

数据包

3. User-Agent字段:

跟冰蝎2.0类似,冰蝎3.0同样也是内置了16个UserAgent,每次连接前会随机选择一个,该特征属于弱特征,用户可以很轻易的修改,以下列举了冰蝎当中所有16个UserAgent头。

Mozilla/5.0(Windows NT 6.1; WOW64)AppleWebKit/535.1(KHTML, like Gecko) Chrome/14.0.835.163 Safari/535.1

Mozilla/5.0(Windows NT 6.1; WOW64;rv:6.0) Gecko/20100101 Firefox/6.0

Mozilla/5.0(Windows NT 6.1; WOW64)AppleWebKit/534.50(KHTML, like Gecko) Version/5.1 Safari/534.50

Opera/9.80(Windows NT 6.1; U; zh-cn)Presto/2.9.168 Version/11.50

Mozilla/5.0(compatible; MSIE 9.0;Windows NT 6.1; Win64; x64; Trident/5.0;.NET CLR 2.0.50727; SLCC2;.NET CLR3.5.30729;.NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3;.NET4.0C;Tablet PC 2.0;.NET4.0E)

Mozilla/4.0(compatible; MSIE 8.0;Windows NT 6.1; WOW64; Trident/4.0; SLCC2;.NET CLR 2.0.50727;.NET CLR3.5.30729;.NET CLR 3.0.30729; Media Center PC 6.0;.NET4.0C; InfoPath.3)

Mozilla/4.0(compatible; MSIE 8.0;Windows NT 5.1; Trident/4.0; GTB7.0)

Mozilla/4.0(compatible; MSIE 7.0;Windows NT 5.1)

Mozilla/4.0(compatible; MSIE 6.0;Windows NT 5.1; SV1)

Mozilla/5.0(Windows; U; Windows NT 6.1;) AppleWebKit/534.12(KHTML, like Gecko) Maxthon/3.0 Safari/534.12

Mozilla/4.0(compatible; MSIE 7.0;Windows NT 6.1; WOW64; Trident/5.0; SLCC2;.NET CLR 2.0.50727;.NET CLR3.5.30729;.NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3;.NET4.0C;.NET4.0E)

Mozilla/4.0(compatible; MSIE 7.0;Windows NT 6.1; WOW64; Trident/5.0; SLCC2;.NET CLR 2.0.50727;.NET CLR3.5.30729;.NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3;.NET4.0C;.NET4.0E; SE 2.X MetaSr 1.0)

Mozilla/5.0(Windows;U;Windows NT 6.1;en-US) AppleWebKit/534.3(KHTML,like Gecko) Chrome/6.0.472.33 Safari/534.3 SE2.X MetaSr 1.0

Mozilla/5.0(compatible; MSIE 9.0;Windows NT 6.1; WOW64;Trident/5.0;SLCC2;.NET CLR 2.0.50727;.NET CLR3.5.30729;.NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3;.NET4.0C;.NET4.0E)

Mozilla/5.0(Windows NT 6.1) AppleWebKit/535.1(KHTML, like Gecko) Chrome/13.0.782.41 Safari/535.1 QQBrowser/6.9.11079.201

Mozilla/4.0(compatible; MSIE 7.0;Windows NT 6.1; WOW64; Trident/5.0; SLCC2;.NET CLR 2.0.50727;.NET CLR3.5.30729;.NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3;.NET4.0C;.NET4.0E) QQBrowser/6.9.11079.201

Mozilla/5.0(compatible; MSIE 9.0;Windows NT 6.1; WOW64; Trident/5.0)

新环境下针对WebShell的检测手段

对于新版冰蝎来说,由于密钥协商过程的去除,进一步降低了攻击者的特征。对于甲方来说,检测冰蝎最重要的一个动态特征消失了,意味着以后要很大程度上依赖于静态检测,而静态检测则由会带来大量的误报告警。

为了尽可能降低误报带来的影响,未来针对WebShell的检测重点可能需要转移到以下几个方面:

❖ 加强流量监测设备对文件上传、文件写入等漏洞的检测;

❖ 加强服务端对于兼容冰蝎的WebShell检测;

❖ 加强对攻击者拿到WebShell以后的操作进行检测,比如命令执行、反弹shell等。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 数据库防火墙:数据库防火墙商业化的前提条件

    数据库防火墙和一般的传统数据库安全设备不同,它部署在应用服务器和数据库服务器之间。业务系统巨大的流量将穿越数据库防火墙,数据库防火墙任何的风吹草动都会影响业务系...

    数据安全
  • 数据库防火墙:数据库防火墙应具备哪些能力

    互联网时代,由数据库引发的安全事件越来越多,数据库防火墙作为保护数据库安全必不可少的防御工事,也越来越受到企业关注。

    数据安全
  • 数据库防火墙

    数据库防火墙仿佛是近几年来出现的一款新的安全设备,但事实上历史已经很长。2010年,Oracle公司在收购了Secerno公司,在2011年2月份正式发布了其数...

    数据安全
  • Jupyter NoteBook 系列之 安装启动和常用设置

    Jupyter Notebook(此前被称为 IPython notebook)是一个交互式笔记本,目前支持运行 40 多种编程语言。

    程序员小高
  • 各种浏览器的userAgent

    各浏览器的userAgent很乱,具体可参看cnbeta上文章译稿:UserAgent的历史变迁。 IE   而IE各个版本典型的userAgent如下: ...

    张善友
  • 重学 Java 设计模式:实战单例模式「7种单例模式案例例模式」

    在设计模式中按照不同的处理方式共包含三大类;创建型模式、结构型模式和行为模式,其中创建型模式目前已经介绍了其中的四个;工厂方法模式、抽象工厂模式、生成器模式和原...

    小傅哥
  • Mac UT实践小结

    开发UT实现:朱浩禹 测试UT实现:韩小晴、余轶斐 FT其他参与者:陈智、熊琦楠 (名字均按首字母排序) 一、为何要做单元测试? 腾讯视频Mac项目研发质量较...

    腾讯移动品质中心TMQ
  • 初探精益运维体系|多图

    在之前,我用过价值化运维来概括过运维,我也多次在文章中或公开演讲中提到运维应该关注“面向用户的价值“,但我依然觉得还是不够精炼。直到后来想到了“精益“这个词,把...

    用户1593318
  • 如何去掉列表中重复的元素

    TalkPython
  • Web前端知识体系精简——CSS 篇

    css是用来对html进行修饰的一门语言。 1、选择器 css的选择器有很多种,常用的有类选择器、标签选择器、ID选择器、后代选择器、群组选择器、伪类选择器(b...

    企鹅号小编

扫码关注云+社区

领取腾讯云代金券