小程序反编译代码审计出奇迹

2021-09-17 12,174


前言


数据加密或者是业务加签是我们在进行数据包重放或者是修改数据时,不得不遇到的痛点。总体来说对于数据解密或者业务加签破解的难度是:app>web>wxapp。因为api接口都是相同的,因此为了降低挖洞难度,我们可以将目光放到微信小程序上。


抓包


抓包这一块就简略的讲一下,因为主要内容还是代码审计上。目前微信在PC上也是可以使用小程序的,所以小程序的数据包获取上有两种方式,一种还是常规的手机抓包,挂vpn进行数据转发。高版本Android系统不要忘记证书问题。对于PC上的抓包,在座的师傅们都比我懂,我就不多说了。


源码提取


本次重点介绍Android端小程序的源码提取,对于PC上的小程序由于还加了一层加密(当然也有解密脚本),我就不多此一举了。首先需要一台root过的手机或者是模拟器。打开微信。文件夹cd到以下路径

/data/data/com.tencent.mm/MicroMsg/{一串16进制字符}/appbrand/pkg



然后把已经存在的都rm -rf。


此时再打开咱们的目标小程序,此处注意,一定要等小程序完全打开并且再点几个功能,确保将所有包都运行,因为目前的小程序体量逐渐变大,会有多个子包的存在。



此时将咱们的目标小程序包pull出来。利用命令adb pull



然后上工具

https://github.com/xuedingmiaojun/wxappUnpacker。进行解包。


建议还是在linux系统下进行操作。windows下因为windows下命名规范问题,因此在windows环境下反编译会出现文件夹丢失情况,没法导入分析工具。下图就是两种不同的结果。




导出完成就是这样的,可以导入微信开发者工具进行静态调试或者是动态调试了。



静态分析


首先看一下我们要分析什么



由于xxxPhone数据经过了加密,并且我采用原始手机号代替该数据也是无法进行发包,因此就需要了解此处的加密方式,并且进行还原。


此时打开微信开发者工具,将代码导入。



此处使用测试号即可。进入之后点击编译。



我们在搜索框中搜索关键词,可以搜索api,主要的字段都可以。



找到调用函数处,发现数据加密函数为i.encrypt。查看该i函数。



又是引用了532e模块。跟进去。



可以了,此时无声胜有声。


AES的特征都已经显露出来了,所需要的必要参数也是都已经给出,此时去验证一下。




验证成功。


总结


特别感谢303师傅和二哥。

本文作者:火线安全平台

本文为安全脉搏专栏作者发布,转载请注明:https://www.secpulse.com/archives/166419.html

Tags:
评论  (0)
快来写下你的想法吧!

火线安全平台

文章数:20 积分: 120

安全问答社区

安全问答社区

脉搏官方公众号

脉搏公众号