小程序抓包&反编译测试从0到1
0x00. 小程序抓包测试1.1 抓包前言
先说说问题微信小程序无法抓包主要的原因。在 Android7.0 及以上的系统中,每个应用可以定义自己的可信 CA 证书。默认情况下,应用只会信任系统预装的 CA 证书,而不会信任用户安装的 CA 证书。在配置抓包过程中,无论是BurpSuite还是fiddler/Charles安装的证书都属于用户自己安装的证书。安卓系统抓包(微信小程序)的解决方式如下:
- 将证书安装到系统证书中(需要root)
- 苹果手机(苹果手机不受此影响)
- 采用安卓系统低于7.0的模拟器
1.2 模拟器抓包测试
环境:
- BurpSuite配置代理IP及端口
- 模拟器配置网络代理手动配置,配置为BurpSuite的代理IP及端口
- 生成一个cer证书安装在模拟器中,这里用burpsuite直接导出来,选择第一个选项,生成为.cer后缀
- 传入到模拟器的共享文件夹中直接双击安装即可
- 访问一个小程序拦截个包
1.3 Windows PC微信抓包测试
- 微信PC端配置代理
- 配置为burpsuite的抓包代理
- 抓包拦截测试,点击确定,看看burpsuite是不是有一个测试连接的请求包
0x01. 微信小程序客户端功能模块安全
微信官方API使用说明:微信小程序客户端功能模块安全大致可以分为以下 6 个部分:
2.1 网络传输安全
微信小程序传输虽然使用 HTTPS,并对访问域名进行校验控制,但如果后端服务器未做 SSL 双向认证,仍无法抵御攻击者在本地安装代理证书实施中间人攻击的威胁。
2.2 数据存储安全
本地数据存储采用(KEY,VALUE)形式存放在 DB,数据的保护继承了微信的数据库加密防护策略。
2.3 文件存储安全
本地文件存储采用 HASH 映射机制进行文件定位,文件存储在外部存储,本身通过自定义算法实现完整性校验。
2.4 框架本身安全
框架上继承了微信成熟的 JSAPI 框架和底层的 TBS 浏览器内核,因此在未出现新的 0DAY 漏洞之前,整体的框架安全还是十分可靠。
2.5 伪造小程序二维码安全
扫码功能依赖微信 APP 的原生的扫码功能;生成小程序特定页面的直达二维码,依赖于 ACCESSTOKEN,而 ACCESSTOKEN 是通过小程序私有的APPID 和 APPsecret 请求得到,攻击者无法获知到 APPsecret 信息伪造生成二维码。
2.6 数据泄露安全
小程序登录体系可以依赖微信接口和公众号平台,也可以由小程序自行实现。前者根据微信平台的安全规范实施,由微信进行整体的安全维护,因此安全性较高。后者则由小程序自行控制安全性。
从上述的客户端功能模块安全分析中来看,小程序客户端本身的安全继承了微信 APP 整体的安全建设。因此无需像传统的移动端测试对客户端本身进行测试,测试的重点还是在于服务端,即小程序与后端进行交互过程中存在的安全风险,基本上跟测 WEB 没有区别。但是跟传统黑盒测试 WEB 的区别是,在目前为止,可以非常简单的提取到小程序的源码信息。如小程序在传输过程中进行了数据的加密传输,那么我们就可以通过源码的分析来得出整个加密算法的技术流程。
0x02. 小程序反编译
3.1 准备环境 3.2 反编译过程
- 连接模拟器adb,网易mumu模拟器的adb在emulator\nemu\vmonitor\bin处,名字:adb_server.exe
- 列出设备
- 进入shell,adb常用命令
- 提取小程序,小程序保存路径,安卓保存路径,iOS保存路径,提取小程序
- 这里一长串就是用户id了,我们切到小程序目录看看。
这里可以看见,有很多小程序(.wxapkg结尾),我们全给删除了。这里随便搜索一个小程序,然后添加上,然后一边列出小程序目录的详细信息。这里可以看见一下出现四个包。微信小程序的程序包后缀是wxapkg,真正的小程序包大小实则只有1-3M左右,依赖包则会较大一些。把这里只有两个 2MB的导出来看看,切到adb_server.exe目录下,直接执行命令导出来,这里导到d盘。接下来用wuWxapkg反编译下,抛出异常了,这是我这里工具依赖包没安装全,安装下,再反编译下,这里结果显示是一个子包(子包需要指定一个目录)。
这里就不解子包了,直奔主包去。(子包一定要记住指定目录不然会报错)把另外