冰蝎3.0 Beta 2今天发布,和v2.1相比,最重要的变化就是“去除动态密钥协商机制,采用预共享密钥,全程无明文交互,密钥格式为md5("admin")[0:16];”。 ? 以php版本的shell为例,默认的秘钥为“e45e329feb5d925b”,通过md5("rebeyond")[0:16]得到,其中“rebeyond”是冰蝎3.0的默认密码。 ? ? 由于key是攻击者预置,无法像2.0版本那样通过返回包获取,所以对加密流量无法解密,需要定位到冰蝎webshell后门才能获得。 而冰蝎v3.0版本的webshell免杀也做了加强,webdir和d盾对冰蝎3.0自带的5个webshell后门的检出率都只有20%: ? ? 以RASP应用层检测方案为例,目前OpenRASP技术仍然可以很好的检测到冰蝎3.0的攻击行为,防守方可以尝试。 ? 祝大伙好运。
前言 这里简单学习一下冰蝎是怎么运行的,如何通过加密解密来绕过一些常见的waf设备 工作流程 冰蝎准备一个经过加密的字节码,放入请求体中 服务端通过jsp中的密钥解密,然后调用equals方法,来获取此次执行的结果 将获取到的结果通过设置的密钥加密,返回给客户端 客户端通过密钥解密 由此可以知道密钥在流程中非常的重要,冰蝎的默认的密码为rebeyond,其加密之后得到的前16位密钥为e45e329feb5d925b DigestUtils.md5DigestAsHex(key.getBytes()); return md5Key; } } 这里使用的jsp木马如下 我这里做了一些便于学习的东西,将冰蝎发送过来的字节码保存成类文件 } } 可以看见这里获取了环境变量以及jar系统信息 在这里也是同样的,处理返回的信息 这里不一样的地方就是在于返回的basicInfoObj对象,需要设置到gui窗口中 总结 在看完了冰蝎是怎么连接之后 ,对于冰蝎的工作原理也有了一定的理解,本地和服务器端都做加密和解密的操作,以此来绕过流量检测设备以及一些waf,而且通过动态的加载class字节码,也可以绕过一些普通的webshell查杀设备,后续的一些绕过
现市场已存在可解密冰蝎密文的IDS,由于我所在部门,三家厂商的安全设备均不可判断为冰蝎 webshell 和解密冰蝎,于是客户要求想办法做密文解密。下载pcap包截图如下: ? 注:本文以冰蝎v2.0.1版本PHP语言为阐述。 一、冰蝎-动态加密算法 (一) 冰蝎简介 冰蝎是一款基于Java开发的动态加密通信流量的新型Webshell客户端。 图1-1 冰蝎webshell (二) 冰蝎工具通信原理 冰蝎的通信过程可以分为两个阶段: 密钥协商 加密传输 1. 图 1‑2 冰蝎执行流程图 Wireshark下抓取冰蝎(v2.0.1)数据包详情如下图1-3、1-4: ? ? 二、冰蝎特征检测 总结冰蝎在流量交互中的特征,这些特征可分为两类。 Accept字段 Accept是HTTP协议常用的字段,但冰蝎默认 Accept 字段的值却很特殊,这个特征存在于冰蝎的任何一个通讯阶段。
冰蝎是一款很好用的webshell管理工具,流量加密和可高度自定义的各类木马使得它成为很多师傅们的心头爱,那么这期就来和大家探讨一下有关冰蝎php木马的静态免杀,目前设立的目标当然是尽可能多的过杀软的免杀嘛 ~(这里以冰蝎V4.1为例) 冰蝎php木马解读 <? 测试连接 ①经典phpstudy上线 ②手动挂马(滑稽黑客) ③直接访问没有报错(下面的utf-8是我写在php<>之外的) ④冰蝎上线,ok,no趴笨! 上实战! 先放上一张冰蝎php原马在vt上的情况做对照: 免杀马查杀结果直接上截图: ①vt全过 ②360沙箱云(非专业版)未检测出 ③微步云沙箱,险胜! 开始骄傲 我觉得自己又行了 ④大圣云沙箱 Damn! 其实还有小马哥的腾讯哈勃,但是那个不支持上传webshell,上传压缩包虽然行,但是如果压缩一遍了连冰蝎原马都查杀不出来,就当图一乐了,就不放出来了.....大部分云沙箱和在线查杀我都基本试过了,基本除了安恒云沙箱都能稳过
哈哈,有点标题党了,看到冰蝎更新到了4.0.6,修复了:asp内置传输协议问题;新增“默认”连接模式,兼容冰蝎3默认服务端,所以一起测试了下,可正常连接。 https://github.com/rebeyond/Behinder/releases 0x01 工具简介 冰蝎WebShell免杀生成工具作者:Tas9er@A.E.0.S Security Team 0x04 冰蝎4.0.6连接 下载地址 点击下方名片进入公众号 回复关键字【230117】获取下载链接
前言 时代在发展,大家用后门的姿势也在不断的变化,从菜刀,到蚁剑,再到如今的冰蝎,这也是攻防相互作用的结果,今天头发奇想,如何用python来实现流量的加密。 function __construct($p) {eval($p."");}} @new C($params); 这一部分也比较简单 先使用|拆解 然后执行第二部分的代码 以上三个方面就是对冰蝎服务端的分析了 : 获取密钥 获取代码 加密传输 代码构造 所以按照如上分析的三个步骤一步一步的展开: 获取密钥 直接在页面上就可以获取:类似这样 key = s.get(url).text 获取代码 还是想直接按照冰蝎的数据格式来构造代码毕竟人简单的处理了一下 ; $arr=explode('|',$post); $func=$arr[0]; $params=$arr[1]; 于是给冰蝎上了代理,简单的抓了个包,将密钥和密文都抓了下来 使用php写了写解密的代码
文章目录 前言 一、使用木马getshell 1.搭建环境 二、冰蝎配置 三、kali监听 总结 前言 好久没碰美少妇(MSF)了,恰巧昨天在群里水群,有个表哥问为什么msf监听不到数据。 其中的坑还是不少的,希望这篇文章对初识冰蝎的表哥们有点用处。 一、使用木马getshell 冰蝎之所以强还是在于他的动态二进制加密。这里呢,在冰蝎下载的包中给出了官方的webshell。 后来看了一篇关于冰蝎反弹shell的文章。文章中介绍的是本地环境问题,将PHP的版本改到7.0以上就可以执行了。尝试无果。经过尝试发现冰蝎的脚本得使用对应版本的shell。 二、冰蝎配置 新建shell,点击保存 进入反弹shell配置界面 选择Meterpreter功能 根据冰蝎的温馨提示,使用kali进行监听就行了。 只不过这里的冰蝎代替了exe来执行。文中有几处不太坚定的答案。还希望好心的大佬给出确定的解答。初级工具使用,仅用于基础信息防御交流,请勿用于其他用途。
这其中最出名就是“冰蝎”,“冰蝎”是一款动态二进制加密网站管理客户端,演练中给防守方造成很大困扰,本文将对“冰蝎”的加密原理、流量特征、检测方案进行探讨。 0x01 “冰蝎”介绍&加密原理 “冰蝎”项目地址:https://github.com/rebeyond/Behinder “冰蝎”目前最新版本为v2.1,兼容性已经日益完善,加密不再依赖PHP 思路一:流量侧 (1)虽然冰蝎的通讯流量都是加密的,但是在第一步,冰蝎必须需要获得密钥,具体流量特征: 1、是一个get请求,url中带上参数?pass(参数名称可变) ? 而对于冰蝎v2.1的webshell,D盾、河马都完全没有检测出来,检出比为0。 ? 只有webdir+检测出了冰蝎v2.1的3个webshell文件,检出比为60%,可见冰蝎的免杀做得很不错。 (2)Linux audit日志检测 虽然冰蝎通讯流量是加密的,但落到主机侧,还是会调用系统命令,所以可以在主机审计日志层面定制检测规则,监控冰蝎对系统命令的调用。
phpshell 与冰蝎2.0在建立连接时随机生成AES密钥同时明文交换不同是,冰蝎3.0的AES密钥为连接密码32位md5值的前16位,默认连接密码rebeyond。 以下为冰蝎3.0webshell <? 总结: 遇到冰蝎3的时候不要过于慌张,这时候我们找到webshell 何时被部署、通过很么洞打进来的,找到webshell的存放位置,通过我们的全流量进行回溯,了解攻击者后续做了那些行为。
openssl_encrypt($data, "AES128", $key); } }$content="68a4d447-ad80-41fe-863f-b2efe0b91fb1"; main($content); 冰蝎
项目介绍 ByPassBehinder / 冰蝎WebShell免杀生成 文件:ByPassBehinder.exe MD5 HASH:04caea5648786157fb65dd51d2bc061e
冰蝎2 冰蝎是一款基于Java开发的动态加密通信流量的新型Webshell客户端。 冰蝎工具通信原理 冰蝎的通信过程可以分为两个阶段: 密钥协商 加密传输 1)第一阶段-密钥协商 a.php 攻击者通过GET方式请求服务器密钥; GET /hackable/uploads/shell.php c.Content-Length Content-Length: 16, 16就是冰蝎2连接的特征 冰蝎3 对比冰蝎2,冰蝎3取消动态密钥获取,目前很多waf等设备都做了冰蝎2的流量特征分析,所以3取消了动态密钥获取 通过burp可以修改,冰蝎3.0内置的默认16个userAgent都比较老。现实生活中很少有人使用,所以这个也可以作为waf规则特征。 在这里我选择上传一个冰蝎马。 ? 然后在冰蝎连接,成功连接。 ? 内存shell 无日志,会在tomcat重启后消失。 ?
0X01 "冰蝎" 获取密钥过程 冰蝎执行流程 (图片来自红蓝对抗——加密Webshell“冰蝎”攻防) 冰蝎在连接webshell的时,会对webshell进行两次请求访问 为什么进行两次访问? 我在别的文章没有看到关于这个问题的答案,于是我去反编译冰蝎源码 通过对代码阅读,我发现冰蝎为了实现可以在webshell内添加任意内容 (比如gif89a子类的文件头或者其它标示字符) 冰蝎在初始化密钥时会对 8开始到(数据包总长度-4) Waf可以针对于返回类型为 "text/html" 的数据包中加一些空格或者换行,来扰乱冰蝎的数据包,导致冰蝎无法运行 (为什么要对返回类型为 "text/html" 的扰乱 答案:jsp默认返回类型就是 "text/html" html添加一些空格或者换行,并不会影响网页的正常运行) 0X02 "冰蝎" 解析Cookie流程 我们可以看到请求协议头中的Cookie字段,冰蝎在合并处理 正常的请求是不会携带Cookie属性的,这可是识别冰蝎流量最直接的一种办法 0X03 "冰蝎" 动态加载 冰蝎动态加载的原理就是每次都发送一个class字节码(其它语言也一样) 冰蝎通过asm动态修改
WebShell的时候会有一些固定的特征,容易被waf或者IPS检测到,最近1年出来了个动态加密的WebShell管理工具,给检测带来了一定的困难,所以写个文章简单解剖一下 注:本文只针对当前的最新版冰蝎 (Behinder) v2.0.1,以php webshell为例,其他webshell只是有细微的差别,有兴趣可以自行研究 实验环境 客户端: windows 7 + 冰蝎(Behinder) v2.0.1 main($cmd); 可以看到考虑了编码问题,还有一些执行命令的函数被禁用的问题 最后输出结构也是AES128加密的 工具每次只需倒数第二行的$cmd即可更换要执行的命令 总结 攻防是不断对抗升级的,冰蝎虽然通信过程加密
使用在线反编译网站来反编译jar包 在线反编译网站地址:https://www.decompiler.com/ 2、配置IDEA环境 创建项目 添加解压的反编译源码 新建lib目录,添加从github上下载的冰蝎项目 项目地址:https://github.com/rebeyond/Behinder/releases 配置项目结构 添加Behinder.jar包 勾选点击应用 工件添加主类 选择第一个 配置完成 3、修改冰蝎流量的请求头 观察冰蝎流量特征 Accept: application/json, text/javascript, */*; q=0.01 Accept-Language: zh-CN,zh;q=0.9,en-US default_xor.config 新增协议 填入对应的加解密算法 保存成功 点击分享保存到项目中 重构项目生成jar包重新运行,点击生成服务端 选择对应的传输协议,测试连接 成功使用 同理配置了其他协议,重构项目,获得魔改后的冰蝎 5、总结 免杀思路有修改webshell代码,修改调用逻辑改变操作行为的方式、修改工具指纹,本文从修改请求头和替换传输协议的加解密算法两方面来魔改冰蝎。
本文将通过在虚拟环境中使用冰蝎,通过wireshark抓取冰蝎通信流量,结合平时在授权渗透中使用冰蝎马经验分析并总结特征。 ,使得冰蝎有了更大的发挥空间。 JSP冰蝎马,此处不作冰蝎马分析。 ? PHP冰蝎马 ? 通信流量分析 在本地搭建环境抓取冰蝎流量来进行简单的特征分析,主要测试冰蝎最初版本和最新版本,v1.0和v2.0.1,提取通信关键特征。 V1.0版本冰蝎连接 抓取到的通信流量如下: ? ? ? 从Wireshark中抓到的数据包中可以看出,冰蝎与传统的管理工具一样,操作请求均为POST。 V2.0.1版本冰蝎连接 ? 冰蝎v2.0.1连接成功,抓取到流量包如下: ? 我们通过查看POST数据包发现除上述提到冰蝎增加了随机的User-Agent和v1.0并无其它本质上的区别。 ?
冰蝎4.1下载: https://github.com/rebeyond/Behinder/releases 问题简述:8月24日 @rebeyond 师傅更新了冰蝎4.1,但很多师傅说这个版本在启动时会出现下图报错
17日刚分析出特征:冰蝎v3.0 Beta 2(Behinder_v3.0 Beta 2)Webshell分析与检测 19号就迅速更新了,下面是更新日志: ###2020.8.18 v3.0 Beta
前言: 冰蝎简单说就是利用动态二进制加密实现新型一句话木马的客户端 , 相对于菜刀和蚁剑他的数据是加密传输的,所以不容易被一些防火墙发现。 Linux环境下: 注意切换jdk版本6-8,对应javac版本也要和java版本相同,同理打 开冰蝎目录输入命令 正文: 首先我们拿免杀的webshell 源码: <? 首先我们启动冰蝎,这里我将它放到了我的工具包中,文章末尾会给大家提供软件。 reverse_tcp Show option 查看需要配置的选项 我们这里设置一个IP就好,就是你监听机的IP set lhost 192.168.0.107 然后run 启动监听就好 我们回到冰蝎图形界面 软件关注公众号:白安全组 发送:冰蝎 即可获得软件 网站:www.wangehacker.cn
,避免中间件实现包装的Request方法而导致request.getReader().readLine();失效,这里获取请求来的内容时,先获取InputStream,然后转为字符串 然而当我尝试将冰蝎的 skywalking中没有session的对象信息 于是尝试构建一个新的sessionHandler之类的对象,来初始化session信息,失败的Demo如下 为了排除掉session的影响,使用改版过的冰蝎 发现这里对路径有特殊要求,如果不是/graphql/*这种路径,返回的就是个静态页面 所以将路径注入为/graphql/*,最后的完整Demo如下: 恶意ServletDemo如下: 冰蝎连接 : 改版后的冰蝎Demo链接: https://github.com/shuimuLiu/Behinder-Base65