安全矩阵

 找回密码
 立即注册
搜索
查看: 2481|回复: 0

小程序抓包&反编译测试从0到1

[复制链接]

141

主题

153

帖子

517

积分

高级会员

Rank: 4

积分
517
发表于 2022-2-14 20:14:07 | 显示全部楼层 |阅读模式
小程序抓包&反编译测试从0到1原创 Michael [url=]米瑞尔信息安全[/url] 2022-02-13 20:00
收录于话题
#小程序测试1个
#小程序1个
#微信1个

点击上方“蓝字”,发现更多精彩。

0x00. 小程序抓包测试1.1 抓包前言先说说问题微信小程序无法抓包主要的原因
在 Android7.0 及以上的系统中,每个应用可以定义自己的可信 CA 证书。
默认情况下:应用只会信任系统预装的 CA 证书,而不会信任用户安装的 CA 证书。
在配置抓包过程中,无论是BurpSuite还是fiddler/Charles安装的证书都属于用户自己安装的证书。

安卓系统抓包(微信小程序):

           
  •         安卓系统 7.0 以下版本,不管微信任意版本,都会信任系统提供的证书

           
  •         安卓系统 7.0 以上版本,微信 7.0 以下版本,微信会信任系统提供的证书

           
  •         安卓系统 7.0 以上版本,微信 7.0 以上版本,微信只信任它自己配置的证书列表


基于上述我们解决的方式如下:
1、将证书安装到系统证书中(需要root)
2、苹果手机(苹果手机不受此影响)
3、采用安卓系统低于7.0的模拟器

1.2 模拟器抓包测试环境:

           
  •         mumu模拟器(也可以用其他的模拟器都行)

           
  •         BurpSuite v2021.9


1、BurpSuite配置代理IP及端口


2、模拟器配置网络代理手动配置,配置为BurpSuite的代理IP及端口


3、生成一个cer证书安装在模拟器中
这里用burpsuite直接导出来


选择第一个选项


生成为.cer后缀

4、传入到模拟器的共享文件夹中直接双击安装即可


5、访问一个小程序拦截个包


1.3 Windows PC微信抓包测试1、微信PC端配置代理


2、配置为burpsuite的抓包代理


3、抓包拦截测试
点击确定,看看burpsuite是不是有一个测试连接的请求包




0x01. 微信小程序客户端功能模块安全微信官方API使用说明:https://developers.weixin.qq.com ... requestPayment.html
微信小程序客户端功能模块安全大致可以分为以下 6 个部分(摘抄大佬的PDF的):
2.1 网络传输安全微信小程序传输虽然使用 HTTPS,并对访问域名进行校验控制,但如果后端
服务器未做 SSL 双向认证,仍无法抵御攻击者在本地安装代理证书实施中间
人攻击的威胁。

2.2 数据存储安全本地数据存储采用(KEY,VALUE)形式存放在 DB,数据的保护继承了微信
的数据库加密防护策略。

2.3 文件存储安全本地文件存储采用 HASH 映射机制进行文件定位,文件存储在外部存储,本身通过自定义算法实现完整性校验。

2.4 框架本身安全框架上继承了微信成熟的 JSAPI 框架和底层的 TBS 浏览器内核,因此在未出现新的 0DAY 漏洞之前,整体的框架安全还是十分可靠;

2.5 伪造小程序二维码安全扫码功能依赖微信 APP 的原生的扫码功能;生成小程序特定页面的直达二维码,依赖于 ACCESS_TOKEN,而 ACCESS_TOKEN 是通过小程序私有的APPID 和 APPsecret 请求得到,攻击者无法获知到 APPsecret 信息伪造生成二维码;

2.6 数据泄露安全小程序登录体系可以依赖微信接口和公众号平台,也可以由小程序自行实现。前者根据微信平台的安全规范实施,由微信进行整体的安全维护,因此安全性较高。后者则由小程序自行控制安全性。从上述的客户端功能模块安全分析中来看,小程序客户端本身的安全继承了微信 APP 整体的安全建设。因此无需像传统的移动端测试对客户端本身进行测试,测试的重点还是在于服务端,即小程序与后端进行交互过程中存在的安全风险,基本上跟测 WEB 没有区别。但是跟传统黑盒测试 WEB 的区别是,在目前为止,可以非常简单的提取到小程序的源码信息。如小程序在传输过程中进行了数据的加密传输,那么我们就可以通过源码的分析来得出整个加密算法的技术流程。

0x02. 小程序反编译3.1. 准备环境
3.2. 反编译过程1、连接模拟器adb
网易mumu模拟器的adb在emulator\nemu\vmonitor\bin处,名字:adb_server.exe
adb_server.exe connect 127.0.0.1:7555

2、列出设备
adb_server.exe devices

3、进入shell
adb_server.exe shell

adb常用命令:
1、adb devices 查看手机设备2、adb install packsge(包路径)安装包3、adb install -r packages(保留数据及缓存文件安装新包)4、adb uninstall package (卸载包)5、adb kill-server 关闭adb服务6、adb start-server 启动adb服务7、adb shell pm list packages 查看手机里面所有包名8、adb shell pm list packages -3查看手机里面所有第三方包名9、adb shell /system/bin/screencap -p /sdcard/xx.png 截频并保存文件在手机上为xx.Png10、adb pull /sdcard/xx.png D:/xx.png 将手机xx.png文件保存到D盘文件下11、adb push D:/xx.text /adcard/xx.text 将电脑文件导入手机12、adb shell pm clear com.ablesky.ui.activity 清除缓存数据13、adb shell am start -n com.ablesky.ui.activity/com.ablesky.activity.SplashActivity 启动程序14、adb shell am force-stop com.ablesky.simpleness.activity 强制停止运行程序15、adb logcat 查看日志16、adb logcat > D:\log.txt 将日志打印到电脑上17、netstat -aon|findstr "5037" 查看被占用端口对应的PID18、 tasklist /fi “PID eq PID号” 查看端口号对应的进程19、 taskkill /pid 2027 /f 杀掉某进程20、adb shell monkey -p 包名 100   指定APP产生随机事件100次21、adb shell monkey -p 包名 -v -v 100   指定APP产生随机事件100次并发送详细的activity信息  
4、提取小程序
小程序保存路径
安卓保存路径:
/data/data/com.tencent.mm/MicroMsg/{⽤户ID}/appbrand/pkg/  iOS保存路径:
/var/mobile/Containers/Data/Application/{程序 UUID}/Library/WechatPrivate/{⽤户ID}/WeApp/LocalCache/release/{⼩程序ID}/ )
提取小程序:
cd /data/data/com.tencent.mm/MicroMsg/

ls

这里一长串就是用户id了

我们切到小程序目录看看。
cd {⽤户ID}/appbrand/pkg/ls -l
这里可以看见,有很多小程序(.wxapkg结尾),我们全给删除了。


这里随便搜索一个小程序,然后添加上

然后一边列出小程序目录的详细信息。
ls -l

这里可以看见一下出现四个包。微信小程序的程序包后缀是wxapkg,真正的小程序包大小实则只有1-3M左右,依赖包则会较大一些。
把这里只有两个 2MB的:
_-2081596990_19.wxapkg_1126639314_133.wxapkg
我们导出来看看,切到adb_server.exe目录下,直接执行命令导出来,这里导到d盘
adb_server.exe pull /data/data/com.tencent.mm/MicroMsg/768fc02b4401547d7d7527866399f346/appbrand/pkg/-2081596990_19.wxapkg d:/adb_server.exe pull /data/data/com.tencent.mm/MicroMsg/768fc02b4401547d7d7527866399f346/appbrand/pkg/_1126639314_133.wxapkg d:/

接下来用wuWxapkg反编译下


node wuWxapkg.js 文件名.wxapkg
抛出异常了,这是我这里工具 依赖包没安装全,安装下
npm install esprima    npm install css-tree    npm install cssbeautify    npm install vm2    npm install uglify-es    npm install js-beautify
再反编译下,这里结果显示是一个子包(子包需要指定一个目录)。

node wuWxapkg.js -s=C:/Users/Michael/Desktop/安全/小程序测试/wxappUnpacker-master/testpkg/ _-2081596990_19.wxapkg这里就不解子包了,直奔主包去。(子包一定要记住指定目录不然会报错)

把另外一个包解了看看,估计就是主包了
node wuWxapkg.js _1126639314_133.wxapkg

解出来了,去看看



拿IDE工具打开就可以了 可以批量搜索如下关键字
user、username、password、passwd、app_key、Appid、http、conf、config、AppSecret、Secret、key、server_key、session_key、access key、secret key
再是去分析其中逻辑,包括一些加解密算法,实战中测试有问题可以一起交流。

我知道你在看哦

喜欢此内容的人还喜欢
Django+微信小程序开发待办清单:完善登录机制
杜赛说编程
不喜欢
不看的原因
确定

           
  • 内容质量低
           

  •        
  • 不看此公众号
重磅~数据处理ss开发语言前后端开源!
Sumslack团队
不喜欢
不看的原因
确定

           
  • 内容质量低
           

  •        
  • 不看此公众号
8个Python数据清洗代码,拿来即用
Python教学
不喜欢
不看的原因
确定

           
  • 内容质量低
           

  •        
  • 不看此公众号
转存失败重新上传取消
微信扫一扫
关注该公众号






回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2025-5-17 20:04 , Processed in 0.012655 second(s), 18 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表