配置信息

小程序,app过强校验抓包

在https的建立连接过程中,如果客户端是浏览器,则使用浏览器内置的根证书去校验服务器CA证书的合法性,此时burp作为中间人在真正的服务器面前伪装成浏览器的角色。
App默认是信任系统(Android or IOS)用户第三方安装的的CA证书的,有一些App能够通过软件抓到包的原因是因为:我们可以在系统的用户CA证书集中添加软件的证书。这样App就能信任证书是安全的。
 开发者预先把证书相关信息预置到App中再打包,这样在https通讯过程中App本地可以与服务器返回的CA证书可以做合法性校验,如果发现不一致,那么可能就是由于中间人攻击(比如Fiddler/bp抓包工具),App客户端可以终止https链接。而在新版本的系统规则中,应用只信任系统默认预置的CA证书,如果是第三方安装的证书(比如bp安装的)则不会信任。APP中封装了客户端的证书,APP收到用户伪造的证书后,对该证书进行强校验,验证该证书是不是自己承认的证书,如果不是,则断开连接。
   APP通过进行证书验证,判断当前手机是否开启了代理端口,判断当前网络环境是否是证书所允许;如果开启了代理,APP中的数据流量就不会通过代理端口,我们就抓取不到数据包了。这时我们可以使用一个框架组合来解决此问题:Xposed框架+justTrustme。

正常顺序我们应该在bp里面先生成证书,然后导入到手机,由于手机识别不了der的证书,所以将cacert.der改为cacert.cer

bbZ4Vf.png

比如我的是华为mate20,设置中搜索 证书

bbZxaT.jpgbbZvZV.jpg

NAT-模拟器-浏览器

这里重述一下,如果我们是通过电脑下的模拟器来抓包,模拟器本身就是root权限,所以我们无论是抓浏览器或者app等都能抓得到,如图配置

bbeYo8.png

这里的IP地址是你本机的IP地址,上面那个填写的是你监听端口,比如你填写8888

bbeDLq.png

这里8888就是你监听的端口,代理服务器IP就是你本机的IP

NAT-模拟器-app

bbmSmt.png

桥接-真实机-浏览器

同样的,和上面一样先配置好代理IP和端口,在手机wifi网络设置中设置你的代理,如图

bbe2YF.jpg

bbejld.png

桥接-PC机-小程序(曲线救国)

在登录微信时,点击右上角设置代理为本地ip地址和监听端口,这样也可以抓包,如图

bbsk6J.png

bbsw9S.png

总结:

如果我们抓浏览器的包,可以用模拟器或者手机;如果抓app的包,推荐用手机,因为模拟器速度慢;如果抓微信小程序的包,建议用PC机微信代理。

反编译

app反编译

直接把app的安装包放在result目录下,运行apkanalyser.exe进行反编译得到源码

bb6YJf.png

bb6tW8.pngbb6dyQ.png

微信小程序反编译

直接在模拟器中安装微信,选择对应的微信小程序,然后在windows上安装adb调试工具,输入adb shell进入adb模式,然后找到微信小程序对应的目录,把文件拷贝走,然后用wxappUnpacker工具进行反编译得到源码之后仔细分析逻辑层的相关JS文件

ONEo0f.png

从下述的架构图、文件组成部分来看,重点分析的就是小程序的逻辑层。而逻辑层主要的组成部分是由APP.js、APP.json、JS文件、JSON配置文件等组成,因此测试过程中主要分析的对象就是这一些。

ONVNHf.png

微信小程序在手机中存放的目录如下:

安卓: /data/data/com.tencent.mm/MicroMsg/不同微信号的值不同/appbrand/pkg

苹果: /var/mobile/Containers/Data/Application/不同微信号的值不同/WechatPrivate/c15d9cced65acecd30d2d6522df2f973/WeApp/LocalCache/release
果手机上打开了很多微信小程序,那么目录中就会存在多个小程序pkg文件。第一种区分方法是按照修改时间来进行区分。第二种方法是在微信页面中删除所有浏览过的小程序,重新打开需要进行测试的小程序,那么目录中只会存在一个pkg文件。
文件夹中的HTML、WXSS等文件主要是存放了页面结构、小程序页面样式等内容,重点分析的还是文件中JS文件,如小程序在与后端服务器进行了加密传输,可以根据传输中的加密参数值进行跟踪,逐步分析参数是进行如何加密方式。
示例
1.下载夜神模拟器,adb工具(),wxappUnpacker工具,github上有
2.然后把adb调试工具的路径添加到环境变量path中
3.然后把我们的adb.exe重命名为nox_adb.exe,替换夜神自带的nox_adb.exe

ONMmzF.png

4.然后打开终端,输入adb shell进入adb调试

ONM0eA.png

5.在模拟器中安装微信

ONMoF0.png

6.打开对应的微信小程序

ONQTHA.png

7.在adb中进入对应的目录,找到微信小程序文件
这里的路径就是上面提示的,至于微信号的值可以自己挨个去试一试,然后进入对应根目录,wxapkg就是小程序文件

ONl1C6.png

8.拿出wxapkg文件
这里直接找到wxapkg文件然后拿出来
adb pull /data/data/com.tencent.mm/MicroMsg/f0862c54fcd48cdbf9554bc76eafe1e6/appbrand/pkg/_-1296306114_20.wxapkg

ON3vjO.png

9.用反编译工具进行反编译
遇到了一个错误,我们需要升级node版本进行修复
npm install -g n
n latest
npm update -g

npm install uglify-es --save
npm install esprima --save
npm install css-tree --save
npm install cssbeautify --save
npm install vm2 --save
npm install uglify-es --save
npm install js-beautify --save
npm install escodegen --save
npm install cheerio --save

ONGkdJ.png

10.反编译成功
node wuWxapkg.js –o –d 123.wxapkg

ONtSzt.png

ONtVij.png

10.接下来分析JS文件就好了

results matching ""

    No results matching ""