[话题]聊一聊如何更优雅的实现自动化加解密?

2026年01月19日/ 浏览 8

随着安全的日益发展,对抗的花样也越来越多,比如很常见的数据包加密加签名等等,一旦在渗透过程中遇到了这种情况,很多师傅应该都会头大,加密以后的数据包不能改包,加签名以后还不能重放数据包,这个时候就需要通过逆向来获取密钥相关信息对数据包解密,不管是Web、APP还是小程序,网上都有很多逆向的文章,主要都是围绕如何逆向扣出来算法或者rpc调用实现算法,但是很少有文章介绍扣出来算法以后应该如何更优雅的使用实现自动化加解密呢?这个就是我们今天主要探讨的话题。

假设现在有一个场景,你在挖一个src的时候遇到一个站点请求包返回包都是加密的而且请求头还有签名,这个时候可能会想到逆向js拿到算法,但是在拿到算法以后呢,相信大部分师傅用插件比较多一点,比 如autodecode r、 CloudX、 Galaxy来实现对数据包进行解密或者加密,但是用过的师傅可能会发现一个问题,首先就是工具的使用相对来说是比较麻烦的,而且有的插件还是需要转换数据包,不太方便,当然,这些工具也是很优秀的。只不过在考虑如何降低更多的人工和时间成本,能把更多的时间用在挖漏洞上,毕竟大多数的众测或者攻防项目时间都是有限的,如果把时间都用在研究加解密上是没有任何意义的。

先来说说我是如何实现自动化加解密的,在日常的项目中我基本都是通过mitmproxy实现的,不管是APP还是Web端,都可以轻松实现对称和非对称加密的自动化,实现非对称的自动化还是需要一点特殊手段的,不过基本也都可以实现了,这里不作为重点探讨,所以就拿对称加密的场景举一个例子。再来假设一个场景,请求包和返回包都用了对称加密,比如AES加密,现在要做的操作就是拿到AES的key和iv值,然后编写脚本对数据包进行解密和加密,如果直接使用burp对浏览器进行抓包,那么burp中的数据包肯定是加密的,所以就需要在burp的下游先对数据包进行解密,然后在上游发送数据包的时候进行加密,此时就已经实现了请求包的自动化加解密,接下来就是返回包的处理,首先在burp上游对返回包进行加密,现在burp中显示的就是明文了,但是如果直接把明文返回给浏览器,浏览器可能会处理错误导致前端无法显示,因为js的逻辑可能是先要对密文进行解密再展示到前端,由于已经在burp上游已经把数据包解密成明文了,所以还需要在burp的下游对返回包再次进行加密返回给浏览器,这样就可以完美实现自动化加解密了,在burp中看到的就是明文,可以丝滑改包重放。 用 师傅的一张图帮助大家理解上面的过程。

看到这里想必你心里应该有疑问了,这不都已经实现自动化加解密了,那还有什么可说的。没错,这就是我们今天要讨 论 如何更优雅的实现自动化加 密。 其实大多数站点的加密都是用的对称加密,比如AES、SM4,只不过可能会用非对称对密钥进行加密,当然也遇到过一些非对称直接加密的,不过这些占少数。如果通过上面我的思路是很轻松就能实现自动化的,但是每次都要编写脚本然后执行命令开启服务,这些冗余的工作实在没有必要每次都做一遍,有这个时间说不定都能挖到一个高危了。所以 来 收集一下大家在逆向或者实现自动化过程中遇到的难点或者冗余的操作。

各位师傅可以在评论区留言,包括不限于这些问题:

1. 逆向过程中遇到的难点

2. 具体的冗余操作

3. 开发插件还是独立工具

等等

不管是APP、Web、微信小程序、企微小程序等等都可以提出问题或者发表自己的见解,后面也会针对各位师傅提出的问题写相关的文章或者添加在工具中,如果开发工具也会开源免费给大家使用,只不过可能需要一点时间,毕竟重复造轮子没有任何意义,这也是为什么写本篇文章的原因,尽可能收集更多的需求和问题然后解决, 还是做点有意义的事情比较好。

picture loss