HW防守 | 基于冰蝎的特征检测

  • A+
所属分类:安全文章

前言

临近HW,作为萌新的我在网上找了许多大佬们关于“冰蝎”流量特征的文章,以此作为分享,在我们正式HW时,可能会有所帮助,当监控设备发现这些流量,作为防守方也能做出准确的判断。避免丢分甚至服务器被端HW防守 | 基于冰蝎的特征检测

本文内容大多来自网络收集出处会标在下文如有问题还望各位大佬指正。

莫要喷俺

HW防守 | 基于冰蝎的特征检测

0x00 简介

“冰蝎”是一款基于Java开发的动态加密通信流量的新型Webshell客户端。

老牌 Webshell 管理神器——中国菜刀的攻击流量特征明显,容易被各类安全设备检测,实际场景中越来越少使用,加密 Webshell 正变得日趋流行。由于通信流量被加密,传统的 WAF、IDS 设备难以检测,给威胁狩猎带来较大挑战。冰蝎其最大特点就是对交互流量进行对称加密,且加密秘钥是由随机数函数动态生成,因此该客户端的流量几乎无法检测。冰蝎目前最新版本为v2.0.1,兼容性已经日益完善,包括虚拟终端、Socks代理、文件管理、反弹shell、数据库管理等强大的功能,方便部署使用。

HW防守 | 基于冰蝎的特征检测


0x01 “冰蝎”获取秘钥的过程

图片来自红蓝对抗——加密Webshell“冰蝎”攻防

HW防守 | 基于冰蝎的特征检测


冰蝎在连接webshell的时,会对webshell进行两次请求访问


HW防守 | 基于冰蝎的特征检测

HW防守 | 基于冰蝎的特征检测

HW防守 | 基于冰蝎的特征检测

HW防守 | 基于冰蝎的特征检测

为什么进行两次访问?在别的文章没有看到关于这个问题的答案,于是去反编译冰蝎源码
HW防守 | 基于冰蝎的特征检测

HW防守 | 基于冰蝎的特征检测
  通过对代码阅读,可以发现冰蝎为了实现可以在webshell内添加任意内容 (比如gif89a子类的文件头或者其它标示字符) 冰蝎在初始化密钥时会对webshell进行两次访问,然后比较两次页面返回的差异,把两次请求都相同的字符记录一个位置,后续加密会用到这两个位置(beginIndex,endIndex)
HW防守 | 基于冰蝎的特征检测
HW防守 | 基于冰蝎的特征检测
HW防守 | 基于冰蝎的特征检测
HW防守 | 基于冰蝎的特征检测)
  如图,根据数据包,beginIndex:8 endIndex:4 (含换行),冰蝎开始从数据流中截取被加密的数据从下标8开始到(数据包总长度-4) 

  Waf可以针对于返回类型为 "text/html" 的数据包中加一些空格或者换行,来扰乱冰蝎的数据包,导致冰蝎无法运行。 

(为什么要对返回类型为 "text/html" 的扰乱,别的格式不可以吗?

 答案:jsp默认返回类型就是 "text/html" html添加一些空格或者换行,并不会影响网页的正常运行)


0x02 "冰蝎" 解析Cookie流程


HW防守 | 基于冰蝎的特征检测

HW防守 | 基于冰蝎的特征检测

HW防守 | 基于冰蝎的特征检测  我们可以看到请求协议头中的Cookie字段,冰蝎在合并处理Cookie的时候没有考虑到,Cookie的一些属性 (比如 Path 或者 HttpOnly 之类或者其它的) 冰蝎直接把返回协议头中的Set-Cookie字段直接添加到下一个请求包的Cookie字段中
HW防守 | 基于冰蝎的特征检测正常的请求是不会携带Cookie属性的,这可是识别冰蝎流量最直接的一种办法


0X03 "冰蝎" 动态加载


HW防守 | 基于冰蝎的特征检测HW防守 | 基于冰蝎的特征检测
  冰蝎动态加载的原理就是每次都发送一个class字节码(其它语言也一样) 冰蝎通过asm动态修改class字节码变量内容,实现携带参数动态执行,冰蝎在获取完密钥之后(2个请求),第三个请求就是获取BasicInfo(服务器的一些信息),冰蝎的BasicInfo功能并没有动态修改参数(一个获取服务器信息的能有啥参数),这会导致每次获取BasicInfo的数据包都是固定的大小。


0x04 UserAgent字段(可绕过

冰蝎内置了十余种UserAgent,每次连接shell会随机选择一个进行使用。

以下UserAgent列表是从冰蝎的jar包中提取的,可见大多是比较早的浏览器,现在很少有人使用。而且有些国产浏览器甚至精确到了小版本,众所周知,很多国产浏览器是默认自动更新,正常用户很少用过早的版本,因此可以作为强特征使用。

如果发现历史流量中同一个源IP访问某个URL时,命中了以下列表中多个UserAgent,那基本确认就是冰蝎了。

HW防守 | 基于冰蝎的特征检测


    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 ” BOpera/9.80 (Windows NT6.1; U; zh-cn) Presto/2.9.168 Version/11.5
Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64;x64; Trident/5.0; .NET CLR 2.0.50727; SLCC2; .NET CLR 3.5.30729; .NET CLR3.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 CLR 3.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) , 7
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 CLR 3.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 CLR 3.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 SE 2.XMetaSr
Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64;Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.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.20
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64;Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729;Media Center PC 6.0; InfoPath.3; .NET4.0C; .NET4.0E) QQBrowser/6.9.11079
Mozilla/5.0 (compatible; MSIE 9.0; WindowsNT 6.1; WOW64; Trident/5.0)

同样,UserAgent可由黑客自定义,因此该特征可能会被绕过。

0x05 总结

  WAF可以对一个ip连续访问2次的数据包进行截取,比对相同字符,比对之后,截取两次不同的数据,如果剩下的是16位的key,就可以证明这两个数据包就是冰蝎发出的,第三个数据包通过“冰蝎”解析cookie流程“冰蝎”动态加载中的一些bug,可以100%的匹配到冰蝎流量,不会误报。

0x06 参考链接

https://mp.weixin.qq.com/s/ZD34UQ0gP5cvDctVoIatIA // HACK学习呀 BeichenDreamhttps://www.freebuf.com/articles/web/216133.htmlhttps://zhuanlan.zhihu.com/p/135227454https://blog.csdn.net/dianzhongsou2379/article/details/100599116https://www.cnblogs.com/guojia000/p/11641023.htmlhttps://blog.csdn.net/qq_36334464/article/details/99978193

这里推荐一位大佬的文章聚合平台

所有资料应有尽有HW防守 | 基于冰蝎的特征检测

http://wechat.doonsec.com 


HW防守 | 基于冰蝎的特征检测


一如既往的学习,一如既往的整理,一如即往的分享。感谢支持HW防守 | 基于冰蝎的特征检测

“如侵权请私聊公众号删文”



扫描关注LemonSec

HW防守 | 基于冰蝎的特征检测

觉得不错点个“赞”、“在看”哦HW防守 | 基于冰蝎的特征检测

本文始发于微信公众号(LemonSec):HW防守 | 基于冰蝎的特征检测

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: