当前位置:网站首页 > 黑客培训 > 正文

改造冰蝎对抗waf&OpenRASP计划-初探

freebuffreebuf 2020-02-19 296 0

本文来源:改造冰蝎对抗waf&OpenRASP计划-初探

原创AgeloVito合天智汇

0x01 前言

​ 在参考了各家waf对于多种姿势检测“冰蝎”的文章之后,产生了改造冰蝎的想法,目前主要的检测手段为针对冰蝎的流量特征进行匹配,所以我们的反侦探手段为改变冰蝎的流量特征以达到绕过的目的,由于@rebeyond大佬没有开源冰蝎代码,所以得反编译。那么思路来了,第一:反编译冰蝎,得到大概的源代码。第二:重新构建项目,让我们反编译后得到的代码跑起来。第三:针对检测规则进行绕过。

0x02 反编译冰蝎

​ 目前反编译java应用的相关工具主要有三种 JD-GUI、luyten、jadx。

一、jd-gui

​ JD-GUI是一个独立的图形实用程序,用于显示“ .class”文件的Java源代码。您可以使用JD-GUI浏览重建的源代码,以立即访问方法和字段。

​ 相关介绍:

v2-a4b6f8baa1503d0171d536cc9cc8e0f2_hd.p

v2-5ff9ec3cda1b725d5ade6848fdabfae0_hd.p

​ 下载地址:http://java-decompiler.github.io/

​ 目前最新的版本为:jd-gui-1.6.6.jar

二、luyten

​ 相关介绍:Luyten是一款很强大的反编译工具包,是一款github的开源工具,软件功能非常强大,界面简洁明晰、操作方便快捷,设计得很人性化。且能够反编译有些jd-gui无法反编译的文件。

v2-1e095e0d0045706019573cdc0a94f49b_hd.p

​ 下载地址:https://github.com/deathmarine/Luyten/releases

三、jadx

​ 相关介绍:jadx是一款深受Android开发人员喜爱的反编译利器,同时支持命令行和图形界面,能以最简便的方式完成apk的反编译操作。工具支持apk、dex、jar、aar等格式的文件,可以通过File - Open file选择文件或者直接将文件拖进窗口中,可以算得上一键反编译了,非常简单易用。

v2-8a3c2cc26462da04465eff38122a59c8_hd.p

​ 下载地址:https://github.com/skylot/jadx/releases

四、Import Jar As Project

​ Import Jar As Project 是一款eclipse插件,用于将.jar或.war作为项目导入到Eclipse IDE中,即使您没有通过反编译jar来获取源代码。

​ 官网地址:https://github.com/helospark/import-jar-as-project

v2-a8312c293728b1bbf678a72cb5f446b4_hd.p

​ 对于具体如何反编译Behinder.jar到在eclipse中运行起来Behinder的详细过程本文不累述,因为这是耗时的体力活,我们要解决很多问题,很多没有java基础的童鞋也看不懂。这里只讲大概思路,首先我们可以通过Import Jar As Project插件将Behinder.jar导入eclipse,这样在ecplise中就创建了一个存在一堆报错的Behinder项目,然后再利用上文提到的三款反编译软件对Behinder.jar进行反编译,将每个文件以及每个java类中的方法进行对比,修改eclipse项目中的对应代码,在运用eclipse的相关报错信息进行有关反编译代码的排错,修改。这里解释一下为什么要用三款反编译软件,因为各自的优缺点不一样,反编译出来的代码也是不一样的,所以得综合尝试。

​ 在没有进行任何修改的情况下导入eclipse后的情况如图所示:

v2-7be0b17440a56da4c0df04a0338c6115_hd.p

​ 可以看到,基本每个java文件都存在错误。

五、最终效果

​ 在长达两个工作日的不断排错后,终于成功的跑起来了我们反编译后的代码

v2-e7c4ccce6833a80940b511f9550064ac_hd.p

​ 出于对原作者的尊重,这里不放出项目文件。

复制下方链接做实验,反编译工具的使用:

实验:反编译工具的使用(合天网安实验室)

0x03 对抗分析

​ 网上对冰蝎流量检测的文章主要是以下三篇:

第一:“基于流量侧检测冰蝎webshell交互通讯”

链接:https://blog.csdn.net/qq_36334464/article/details/99978193

第二:“流量加密又怎样? 多种姿势检测“冰蝎””

链接:https://www.freebuf.com/articles/web/216133.html

第三:“那些年我们堵住的洞 – OpenRASP纪实”

链接:https://anquan.baidu.com/article/855

​ 检测手段:按照“静态特征”编写两类规则:1.密钥传递规则。2.加密通讯规则。

如果同一个url或者源IP在数秒内内同时命中了这两种规则,那么可以非常肯定的确认是冰蝎了。注意,此处是同一个URL或者源IP,而不是同一个TCP会话,密钥传递和加密通讯未必是同一个TCP会话(源端口会变化)。

​ 对抗思路:既然是同时命中两种规则,是 ”与" 的关系,那么我们只需要让第一个条件 “密钥传递规则” 不被waf匹配到就行了。

​ 密钥传递规则主要包括如下几个方面:

弱特征1:密钥传递时URL参数

v2-6ea6218dcf06a78a305c8b7da95c5ef5_hd.p

​ 对抗思路:增加随机数量的随机参数和随机值,修改冰蝎的随机数规则

v2-9f74b3830d8ca3f03dc738085ae01c1d_hd.p

弱特征2:加密时的URL参数

​ 在加密通讯过程中,没有URL参数。是的,没有参数本身也是一种特征。

​ 对抗思路:在加密通讯的请求上增加 随机数量的随机参数和随机值 的URL参数

v2-96375dfc594aca8db34351a09c27fab0_hd.p

强特征3:Accept字段(可绕过)

​ Accept是HTTP协议常用的字段,但冰蝎默认Accept字段的值却很特殊,我也没有想明白为什么要设置这么一个奇怪的值。这个特征存在于冰蝎的任何一个通讯阶段。

Accept: text/html,image/gif, image/jpeg, *; q=.2, */*; q=.2

​ 这里对于原作者的(没有想明白),我给出一下解释,冰蝎可以自定义请求头,如果在没有自定义请求头的情况下,Accept的值是使用java代码发送请求时没有设置Accept时自带的。

setRequestProperty("Accept", "*/*");

v2-c9896146367c935211c1d0b5d912d695_hd.p

​ 对抗思路:虽然这个强特征用户是可以通过自定义绕过的,我还是在代码里面改了

v2-8413ce8d97799011f03e0850093f118a_hd.p

强特征4:UserAgent字段(可绕过)

​ UserAgent也是可以自定义的

v2-5f3bb526b039bec3bb59c639***f57f8_hd.p

​ 对抗思路:虽然可以自定义,我还是修改了自带的,因为我平时自己使用的时候也没有填写的习惯......

v2-66b0824a84286e7e336777b30010d07e_hd.p

强特征5:传递的密钥

​ 加密所用密钥是长度为16的随机字符串,小写字母+数字组成。密钥传递阶段,密钥存在于Response Body中,如图。

v2-ce79a519835e89f89f19b7189f96925c_hd.p

v2-8a1e393a93420e882a6d94fa8bb3dea8_hd.p

​ 对抗思路:其实最稳妥的方式就是 删减传递秘钥 的过程,将秘钥硬编码在客户端和服务器端,具体的做法有,一、每次打开冰蝎的时候生成一个秘钥,然后生成带密钥硬编码的服务器端(jsp、asp、php...)。二、将秘钥存放在某个文件中如(key.ini)由用户自定义,Behinder.jar去读取key,服务器端中的秘钥让用户手动修改。

但是,我不喜欢这种模式,或者说我懒,因为这样的话,需要修改的代码就太多了,包括java代码,jsp,jspx,php,aspx,asp脚本文件。不仅耗时而且对冰蝎的侵入式修改较大。

转变思路,我们可以看到冰蝎原来的请求顺序是一:客户端请求秘钥,服务器端返回秘钥,第二,客户端拿到秘钥然后发送POST请求。waf也是针对这个顺序进行匹配的。所以我们只需要打乱这个顺序让waf无法匹配到这个规律从而不会去进行下一步的探测就行了。基于这个想法我加入了在每次客户端get请求秘钥的中间插入 随机数量的get 请求http://xxx.xxx.xxx/。当然请求的当然是当前域名或者ip

​ 原请求顺序:

v2-a3d7349ad1aed266bd0086bbca78a925_hd.p

​ 打乱请求顺序:

v2-b764a00abcaca66c99306b4bda991a91_hd.p

到这里,基本上waf也认识不了啥了,更别说后续的会去拿到密钥去动态分析。

实验推荐:应用防火墙WAF

转载请注明来自网盾网络安全培训,本文标题:《改造冰蝎对抗waf&OpenRASP计划-初探》

标签:合天智汇

关于我

欢迎关注微信公众号

关于我们

网络安全培训,黑客培训,渗透培训,ctf,攻防

标签列表