使用安卓模拟器+Xposed+JustTrustMe+burp suite抓取app的https流量

安全测试工具 专栏收录该内容
17 篇文章 0 订阅

前言

有时候测试APP需要抓取数据包,当手机开启代理时,就显示离线或无网络,关闭代理就正常了;这可能是APP做了证书验证,也就是SSL Pining。这时我们可以使用一个框架组合来解决此问题:Xposed框架+JustTrustme。
为什么https的网站使用伪证书可以抓到,而在app里面同样的方法就抓不到?答案是:app启用了SSL Pinning(又叫“ssl证书绑定“).
在建立ssl通道的过程中,当客户端向服务端发送了连接请求后,服务器会发送自己的证书(包括公钥、证书有效期、服务器信息等)给客户端,如果客户端是普通的浏览器,比如IE浏览器,则:

  1. 使用内置的CA证书去校验服务器证书是否被信任,如果不被信任,则会弹出https的告警提示信息,由用户自己决定是否要继续。
  2. 同样,用户也可以主动的将服务器证书导入到浏览器的受信任区,下次打开时该服务器证书将会自动被信任。

为啥中间人可以劫持https流量,以及在浏览器上我们为什么可以使用burp伪造证书,正是因为上面的2点,即:

  1. 浏览器允许用户自行忽略证书告警,用户在无足够的信息安全意识时,可能会直接忽略刘浏览器的安全提示,在这篇文章的前2天以太坊钱包MyEtherWallet 就因为黑客使用“BGP流量劫持+HTTPS证书伪造“导致被干的鼻青脸肿。
  2. 浏览器允许“导入证书到浏览器信任区“这个操作让浏览器信任burp伪造的证书。

SSLPinning

客户端在收到服务器的证书后,对该证书进行强校验,验证该证书是不是客户端承认的证书,如果不是,则直接断开连接。

浏览器其实已经这样做了,但是如“前面”所说,选择权交给了用户,且浏览器由于其开放性允许让用户自导入自己的证书到受信任区域。

但是在APP里面就不一样,APP是HTTPS的服务提供方自己开发的客户端,开发者可以先将自己服务器的证书打包内置到自己的APP中,或者将证书签名内置到APP中,当客户端在请求服务器建立连接期间收到服务器证书后,先使用内置的证书信息校验一下服务器证书是否合法,如果不合法,直接断开。

当然攻击者也可以通过把这个APP源码给逆出来,然后找到证书校验这段逻辑,给他干掉,或者干脆把证书信息换成自己的服务器证书信息,然后重新打包签名,但是一旦APP做了代码加密和混淆,这个操作也会变得比较难搞。

补充:
不要将ssl pinning和https双向认证搞混了,HTTPS协议本身是支持双向认证的,既除了客户端对服务器证书进行验证外,服务器也可以要求客户端提供自己的证书信息并对其进行验证,在APP上,HTTPS双向认真的方案也可以防止中间人劫持,但这种双向认证开销较大,且安全性与”ssl pinning”一致,因此目前大多数APP都采用SSL Pinning这种方案。

使用Xposed + JustTruestMe来突破SSL pinning

Xposed是一个框架,它可以改变系统和应用程序的行为,而不接触任何APK。
它支持很多模块,每个模块可以用来帮助实现不同的功能。
JustTrustMe 是一个用来禁用、绕过 SSL 证书检查的基于 Xposed 模块。JustTrustMe 是将 APK 中所有用于校验 SSL 证书的 API 都进行了 Hook,从而绕过证书检查。

步骤:

1.电脑安装andorid模拟器
我使用的是逍遥模拟器,因为可以开多个Android版本:
https://www.xyaz.cn/
在这里插入图片描述

2.安装Xposed框架
官网下载apk:https://repo.xposed.info/module/de.robv.android.xposed.installer
注意选择适配的Android版本
在这里插入图片描述
点击模拟器主界面的APK+图标,选择下载好的Xposed installer的apk包,即可开始安装,安装完成后,桌面会生成对应的图标,打开
在这里插入图片描述
不要管,点击框架,进去,点击“安装更新”,更新完成后,会提示重启,重启后打开就显示激活成功了。
在这里插入图片描述
可能会出现***Xposed无法载入可用的ZIP文件***(Could not found ZIP files)的情况,采用下面的方法可以解决:
https://blog.csdn.net/fanhenghao/article/details/117441230

3.安装JustTrustMe
官网下载:https://github.com/Fuzion24/JustTrustMe/releases/tag/v.2
先进入xposed,点击“模块”,此时还没有可用的模块,同样的方法点击apk+导入之前下载好的JustTrustMe的apk安装包,系统会自动安装,安装完成后,在模块里面点击“软重启”,再次打开“模块”界面,即可看到JustTrustMe,勾选一下,启用这个模块:
在这里插入图片描述
到这里就安装成功了!!!可以开始使用了

4.安装app
同样的方法点击apk+导入要测试的app

5.设置代理
在你的模拟器所在的主机上打开burpsuite,并启用代理,使用实际的IP地址作为监听地址;
在模拟器中找到设置-wlan(找到wifi名长按鼠标左键出现高级设置)-然后进行代理配置-把代理的ip和端口配置成burp监听的一样,就可以开始抓包了~~
来源:
https://blog.csdn.net/xiangshangbashaonian/article/details/80230664

  • 0
    点赞
  • 0
    评论
  • 2
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

参与评论 您还未登录,请先 登录 后发表或查看评论
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

Dejavu_^_^

你的鼓励将是我创作的最大动力~

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值