查看原文
其他

第25篇:冰蝎2.x过流量检测改造的全过程

abc123info 网络安全abc123 2022-11-05

 Part1 前言 

冰蝎是一款动态二进制加密网站管理客户端,其特点是流量AES加密,JSP文件很小,做红队或者攻防比赛的人,几乎人手一份。使用的人多了,必然被各种流量监控设备识别,所以需要手工对其魔改,去掉或者改掉一些流量特征。自己魔改冰蝎或者哥斯拉优势也明显,代码完全掌握在自己手里,可随时根据各种流量监控设备的规则,与时俱进地编写绕过代码。

这篇文章的核心内容主要基于我在2020年山东首届“明湖论剑”网络安全技术沙龙上分享的一个PPT,今天重新整理总结一下,感觉也不错


 Part2 思考3个问题 

在进行冰蝎改造工作之前,首先思考3个问题,同时也借助这3个问题,分享几个迷惑管理员及蓝队分析人员的小技巧。


 1   在流量监控设备的记录里,或者在Web访问日志中,显示了一系列404响应码的/admin.jsp访问,这些是不是webshell攻击行为呢?


这些都是webshell攻击行为!如下图所示,每条/admin.jsp访问记录的响应码都是404,但是webshell却是真实存在的,而且已经完成执行命令操作了。


具体是怎么实现的呢?其实非常简单,我只是加了一行代码而已。因为response对象在我们控制之下,意味着返回的response的属性我们是可以控制和修改的!


 2   浏览器访问一个webshell地址,网页返回提示“HTTP ERROR 404”或者“找不到XXX的网页”,这个webshell就一定不存在吗?


其实这个webshell是存在的!404响应码也只是一个伪装而已。如下所示,我也只是加了一行代码而已,当使用GET方法去请求webshell时,返回404响应码。


 3   一个webshell删除.jsp文件及.class文件就真的就完全删除了吗?

答案是不一定。请看如下这个jsp型shell,只要攻击者浏览器访问一下,就可以向tomcat中间件注入一个内存马,即使把jsp文件删除也没用。


 Part3 冰蝎逆向修改过程 

下面开始讲讲正式的冰蝎改造过程,我把详细的代码截图都贴出来了,大家到时候照着改就行。改造好的冰蝎就不放出来了,流传开了必然失效,因为始终敌不过流量监控设备的,这个道理就和免杀一样,一旦流传开免杀必然失效。


  • 两次秘钥交互过程去除

如下图所示,冰蝎2.0在秘钥交互过程中会发两次请求,这个两次请求的特征非常明显,很容易被识别,所以想办法去掉。至于秘钥,我们自己魔改的话,完全可以换成静态秘钥的,然后再把流量数据包修改一下即可,比如添加一些额外字符进行混淆等等。


如下所示,这两次请求由Utils类控制,将url的相关代码注释掉即可。


  • 更改为固定秘钥

在Utils类中的getRawKey方法的最后,向result对象写入秘钥。只要我们的秘钥不被知道,加密流量就解不开。


为了解耦合,方便随时更改秘钥,于是附带写了一个小工具,自动对冰蝎客户端的配置文件及附带的ASP、PHP、JSP马进行修改。


  • 客户端屏幕不居中

冰蝎客户端打开之后,界面不居中,我比较喜欢居中格式的。在Main.java类中,添加如下代码即可,通过setLocation方法使冰蝎界面屏幕居中。


  • 添加设置超时时间功能

冰蝎2.0如果访问一个不存在的url时,由于默认超时时间过长,会造成界面长时间卡死。经过分析,它的发包基本上都是基于HttpURLConnection类实现的,所以可以直接设置各种超时时间解决这个问题。


  • 文件管理功能无法排序

冰蝎2.0的“文件管理”功能无法排序。我们在获取webshell之后,经常需要按照时间、文件大小对文件进行排序,以便找到有价值的配置文件或者敏感文件。这里改动幅度大一些,我添加了一个按钮,然后在按钮事件中加入了一段排序代码。


实现方法是,在MainShell类中添加一个按钮,并将排序功能代码写入按钮事件中。


排序功能代码如下:


  • 无socks5代理设置功能

这里我原本也想加入一个按钮去实现的,但是弄出来界面不美观,索性就添加一个“载入配置文件”的功能,在配置文件中实现设置socks5代理吧。


配置文件内容如下:


  • 请求数据包中Accept字段固定

这个好改,全局搜索setRequestProperty方法进行修改即可,修改成自己想要的http消息头:



  • Content-Type固定

这个好改,全局搜索setRequestProperty方法进行修改即可,修改成自己想要的http消息头:


和上述修改一样,全局搜索setRequestProperty方法进行修改即可:



  • User-Agent伪随机修正

这里需要强调一下,冰蝎2.0的User-Agent并不是完全随机的,点开webshell之前冰蝎客户端会随机选择一个user-agent,但是点开这个webshell之后,在当前的打开状态下,其User-Agent始终是这一个。

修正这个问题同样需要在Utils类中进行修改,然后把冰蝎中的User-Agent列表换成自己的,原版冰蝎中的User-Agent列表比较旧。


  • 绕过OpenRASP

具体原理可以看以下这篇文章http://weishi.baidu.com/article/855


如下图所示,将冰蝎的包名全部改掉,记得RunCMD方法名也需要改掉。当然冰蝎3.0的包名已经没有这些特征了。


改造后的冰蝎几乎无特征可寻


 Part4 总结 

1.  随着流量监控设备的不断升级,很多团队都研发了属于自己的Webshell管理平台,然后小范围流传,很多红队人员也都自己魔改了一个冰蝎或者哥斯拉webshell管理工具。

2.  上述魔改过程,只是给大家开阔一下思路,有什么好的建议,欢迎公众号后台给我留言,一起讨论。


专注于网络安全技术分享,包括红队、蓝队、日常渗透测试、安全体系建设等

每周一篇,99%原创,敬请关注

往期精彩回顾
第24篇:记2011年实战外网ARP欺骗拿权限的过程
第23篇:XSS绕过防护盲打某SRC官网后台

第22篇:一次艰难的PostgreSQL不出网提权过程

第21篇:判断Weblogic详细版本号的方法总结

第20篇:改造冰蝎客户端适配JNDIExploit的内存马

第19篇:关于近期cs服务端被反打的原因分析

第18篇:fastjson反序列化漏洞区分版本号的方法总结

第17篇:Shiro反序列化在Weblogic下无利用链的拿权限方法

第16篇:Weblogic 2019-2729反序列化漏洞绕防护拿权限的实战过程

第15篇:内网横向中windows各端口远程登录哈希传递的方法总结

第14篇:Struts2框架下Log4j2漏洞检测方法分析与总结

第13篇:coldfusion反序列化过waf改exp拿靶标的艰难过程

第12篇:给任意java程序挂Socks5代理方法

第11篇:盲猜包体对上传漏洞的艰难利用过程

第10篇:IIS短文件名猜解在拿权限中的巧用

第9篇:Shiro反序列化数据包解密及蓝队分析工具,提供下载

第8篇:Oracle注入漏洞绕waf的新语句

第7篇:MS12-020蓝屏漏洞在实战中的巧用

第6篇:Weblogic反序列化攻击不依赖日志溯源攻击时间

第5篇:Shiro Padding Oracle无key的艰难实战利用过程

第4篇:jsp型webshell被删情况下如何溯源攻击时间

第3篇:银行Java站SSRF"组合洞"打法造成的严重危害

第2篇:区分Spring与Struts2框架的几种新方法

第1篇:weblogic9.x在JDK1.5下T3反序列化漏洞利用方法

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存