前言
目前越来越多的企业对互联网公开服务的数据报文进行流量加密的方式进行传输。但是不管是Web端还是APP端,只要是采用对称加密算法进行加密的话,那么攻击者在用户端在代码中是一定能够获取密钥的。
因此现在有一些应用采用类似HTTPS的方式对数据报文进行加密处理。即,利用随机数函数生成一个随机数,然后使用随机数作为对称加密的密钥对数据报文进行加密,然后使用非对称加密算法对随机数进行加密,然后将加密过的随机数和加密后的报文一同发送到服务器端。
这样即解决密钥固定的问题,而且攻击者即使获取了密钥也只能保证一次有效。对于Android 端,由于Frida这个外挂的存在,我们可以利用Frida去Hook随机数函数来固定随机数。对于Web端,因为浏览器并不会去验证下载网站的完整性,因此我们可以使用BurpSuite 网站源码进行拦截替换来固定随机数。
然后对于微信小程序来说,一方面很难通过Hook的方式去Hook v8 来达到固定随机数。另外一方面,由于微信对小程序包的加载机制,直接修改也无效。
本文主要提供一种在Windows 平台对使用一次一密加密方式的微信小程序流量破解的解决方案。
抓包
我们使用两种工具对小程序的报文进行抓取
BurpSuite
Proxifier
对于渗透测试人员来说,BurpSuite的干饭的工具,使用的方法就不再介绍。需要注意的是需要在客户端提前安装BurpSuite的证书
对于Proxifier
我们首先添加 ProxyServer 到我们BurpSuite 监听的端口
然后在Proxification Rules 中微信运行小程序的exe 让其走我们的代理。
wechatappex.exe 的路径获取方法如下: