冰蝎发布3.0版本,震惊整个安全圈,蓝队落泪,红队窃喜,今夜谁都别想睡,起来嗨。
和中国菜刀一样,它是一款webshell管理工具,不同的是,它通过动态加密技术,对每次通信内容加密传输,攻击特征完全隐藏在密文中,让基于webshell特征检测的安全防护产品毫无用武之地。
冰蝎
01 旧版本数据流程
-
首次连接服务端时,客户端首先向服务器端发起一个GET请求,服务器端随机产生一串随机密钥,把密钥返回给客户端,并存在服务器端的session中;
-
客户端获取密钥后,在客户端本地将攻击payload进行AES加密,再通过POST方式发送至服务器端;
-
服务器端收到数据后,从session中取出密钥,进行AES解密,解密之后得到客户端的攻击payload数据;
-
服务器端解析攻击payload并执行恶意代码,将执行结果使用密钥进行AES加密后返回。
-
客户端对结果进行AES解密得到服务器端执行结果。
02 新版本特性
不同于2.0时期,客户端收到服务端返回生成的16位密钥后才能对payload语句加密,新版本取消了这一过程,密钥变为md5(“pass”)[0:16],直接用预设密钥进行加密通信。
对比2.0版本php代码,3.0取消get获取pass交互过程直接使用密码md5值前16位作为aes密钥解密。
(md5值计算)
(3.0 php马)
(2.0 php马)
使用burp代理3.0客户端流量,可看到建立连接共发起四个请求,从第一个请求开始内容主体均被加密,全程无明文交互。
03 特征检测
传统WAF如果无法从网络流量中进行特征检测,就无法拦截恶意流量,即使从恶意流量中找到特征,编写专属正则也存在很多问题,粗放的规则容易带来误杀而严厉的规则存在被绕过的风险,这是一个两难的抉择。经过进一步分析发现,beta3之前版本存在一些特征:
- 请求的http中,content-type为application/octet-stream,否则就会出现非预期http编码的情况;
- 每次请求会从16个默认ua中随机选择一个user-Agent;
- 如果请求没有设置accept,Cache-Control,Pragma,User-Agent,则会设置默认为Accept: text/html,image/gif, image/jpeg, *; q=.2, */*; q=.2、Cache-Control:no-cache、Pragma: no-cache、User-Agent:java/1.8;
- 请求包被加密的内容中没有填充,密钥交互、获取基本信息payload都为定长。
瑞数动态防御
01 动态防御理念
WAF目前大多数基于特征识别规则,面对这种新型webshell,无法单纯地编写规则来实现检测和防御了,但是瑞数动态防护技术是非特征匹配方式,不存在规则更新、维护,不存在被绕过等情况。同时瑞数动态防护技术的动态令牌和动态验证机制让这样的JAVA编写的客户端工具无法正常的连接木马后门,从而实现防护。
02 动态防御测试
文件上传
用瑞数动态防护系统防护bwapp漏洞靶机,上传冰蝎3.0后门,返回400状态码,上传失败。
查看管理平台日志,被系统判定为文件上传攻击,实施拦截并返回状态码400。
连接后门
如web应用系统在部署瑞数动态防护系统之前已存在冰蝎后门,在保护状态下连接冰蝎webshell,返回412错误,连接失败。查看管理平台日志,被系统判定为危险行为,实施拦截并返回状态码412。
总结
瑞数动态防护技术提供了完整且全面的端到端动态安全防御解决方案,利用创新的动态安全防御理念对抗各类未知漏洞与自动化威胁,不依赖通信内容中的特征,从根本上识别来自客户端的请求,并对其进行拦截,同时也不需持续更新攻击特征或配置复杂的安全策略,有效避免防护空窗与死角,从访问链条的全过程进行整体防御。
来源:freebuf.com 2020-09-03 14:07:54 by: riversecurity
请登录后发表评论
注册