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

 Part1 前言 

这个小工具的编写源于一个HW蓝队项目,我曾经作为蓝队人员值守了2周,期间发现很多蓝队人员对于反序列化系列漏洞原理不清楚,导致对设备告警的各种反序列化攻击不能有效地研判,也就是说不能底气十足地告诉客户,这个告警是设备误报、是扫描行为、是攻击行为、还是Web应用的用户正常行为。于是在这个项目中,我就慢慢变成了一个攻击流量研判的角色了,帮助客户对这些设备的告警进行研判。

其中对于shiro反序列化攻击告警研判起来尤其困难,原因如下:

1.  攻击行为全过程都是流量加密的,单看数据包看不出啥来,就是一堆脏数据。当时的监控设备只要是数据包出现了rememberMe字段,就会告警,这显然是不准确的。而且告警设备只会把数据包贴出来,都是加密的没法查看。

2.  即便解密出明文数据包,很多蓝队工作人员并不了解java反序列化漏洞,辨别不出明文数据包里是正常的Java类,还是攻击者所用的恶意Java类。

3.  Github上搜索了各种脚本,有的有bug,有的不支持GCM加密模式,有的功能不完善。

 Part2 研究过程 

  • 原理分析

shiro反序列化攻击行为不能有效分析的原因,主要是由于这种攻击行为需要提前知道一个key值,攻击者用这个key值把含有攻击行为代码的数据包进行加密,也就说蓝队人员需要有这个key值才能把数据包解密了。但是我的想法是,常用的key值大概就100多个左右,用这些key去遍历解密数据包,直到解密成功还原出明文文本为止,再通过各种检测规则,去研判解密后的明文数据包中是否真实含有反序列化攻击代码。

  • 工具编写

于是我费了1天的时间各种调试,写了一款小工具,帮助蓝队人员快速研判Shiro反序列化攻击行为。写完了之后,也帮助上家公司天眼团队完成了Shiro解密的小插件,给他们提供了这个解密思路。

  • 工具使用方法

将“rememberMe”的值填入文本框中,点击“使用列表中的Key进行解密”,程序会尝试用“Key值列表”中所有的key对数据包进行解密,一旦解密成功,紧接着对还原出的明文数据包中的java危险类名进行检测,继续判断数据包中是否有反序列化攻击代码。

a1d990339376bc228707846fd74ec419.png

如果想手工分析,本程序还提供了一个“使用指定Key手工分析”的选项卡,填入“rememberMe”值之后,填入“AES Key”,选择CBC加密模式或GCM加密模式,点击“使用指定Key进行解密”按钮,即可看到解密后的文本。

521bad4e4d0285442a74b82e514b2d81.png

关注“网络安全abc123”公众号后,回复数字“1111”,即可得到此蓝队工具的下载地址。后期我会继续维护这个蓝队小工具,大家有什么好的建议或者想法,可以给我留言。

后续打算继续加上冰蝎2、冰蝎3、哥斯拉等流量加密shell的解密功能,暂时也想做到一键解密,这个工作量不小,目前这个功能还在调试过程,等我把工具打磨稳定了,没有太多bug时,很快就会放出来。

 Part3 总结 

1.  各种Java反序列化攻击,需要蓝队工作人员对Java漏洞有一些了解,不然遇到各种变形的payload,很难有效地研判攻击行为。

2.  Shiro反序列化有两种常用的加密模式,分别是CBC和GCM,大家使用的时候注意选择。

a0bedba7c9bb07f7eb4bf0731a9cb35c.png

专注于红队、蓝队技术分享

每周一篇,敬请关注

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

希潭实验室

您的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值