如何使用Xposed+JustTrustMe来突破SSL Pinning

 本文由看雪论坛 etlpom 原创,原文链接:https://bbs.pediy.com/thread-226435.htm
0x00 前面
如果你是一干Web安全的,当你在测试目前大多数的手机APP应用程序时,你一定遇到过burpsuite无法抓到数据包的情况,开始你以为只是https的问题,但是当你使用了burpsuite伪证书也无法抓取到时,你心里除了有句“MMP……”外,你一定也在思考这其中的蹊跷。
为什么https的网站使用伪证书可以抓到,而在app里面同样的方法就抓不到?答案是:app启用了SSL Pinning(又叫“ssl证书绑定“).
HTTPS的原理你必然懂,在建立ssl通道的过程中,当客户端向服务端发送了连接请求后,服务器会发送自己的证书(包括公钥、证书有效期、服务器信息等)给客户端,如果客户端是普通的浏览器,比如IE浏览器,则:
1. 使用内置的CA证书去校验服务器证书是否被信任,如果不被信任,则会弹出https的告警提示信息,由用户自己决定是否要继续。
2. 同样,用户也可以主动的将服务器证书导入到浏览器的受信任区,下次打开时该服务器证书将会自动被信任。
为啥中间人可以劫持https流量,以及在浏览器上我们为什么可以使用burp伪造证书,正是因为上面的2点,即:
1. 浏览器允许用户自行忽略证书告警,用户在无足够的信息安全意识时,可能会直接忽略刘浏览器的安全提示,在这篇文章的前2天以太坊钱包MyEtherWallet 就因为黑客使用“BGP流量劫持+HTTPS证书伪造“导致被干的鼻青脸肿。
2. 浏览器允许“导入证书到浏览器信任区“这个操作让浏览器信任burp伪造的证书。
这种伪造证书的中间人攻击给HTTPS带来了很大的威胁。
0x01 SSLPinning了解一下
如果能够这样做,是不是就可以解决这种“中间人劫持+伪造证书“攻击的问题:
客户端在收到服务器的证书后,对该证书进行强校验,验证该证书是不是客户端承认的证书,如果不是,则直接断开连接。
浏览器其实已经这样做了,但是如“前面”所说,选择权交给了用户,且浏览器由于其开放性允许让用户自导入自己的证书到受信任区域。
但是在APP里面就不一样,APP是HTTPS的服务提供方自己开发的客户端,开发者可以先将自己服务器的证书打包内置到自己的APP中,或者将证书签名内置到APP中,当客户端在请求服务器建立连接期间收到服务器证书后,先使用内置的证书信息校验一下服务器证书是否合法,如果不合法,直接断开。
当然攻击者也可以通过把这个APP源码给逆出来,然后找到证书校验这段逻辑,给他干掉,或者干脆把证书信息换成自己的服务器证书信息,然后重新打包签名,但是一旦APP做了代码加密和混淆,这个操作也会变得比较难搞。
因此这样看来,通过预先把服务器的证书信息“绑定“在APP的native端,然后建立连接时使用预先内置的绑定信息进行服务器证书校验,同时使用足够的代码加密或混淆,是比较合适的解决办法, 这个搞法就是“ssl pinning”.
补充:
不要将ssl pinning和https双向认证搞混了,HTTPS协议本身是支持双向认真的,既除了客户端对服务器证书进行验证外,服务器也可以要求客户端提供自己的证书信息并对其进行验证,在APP上,HTTPS双向认真的方案也可以防止中间人劫持,但这种双向认证开销较大,且安全性与”ssl pinning”一致,因此目前大多数APP都采用SSL Pinning这种方案。
0x02 使用Xposed + JustTruestMe来突破SSL pinning
如果你逆向比较在行,你就自己逆源码,然后过加密混淆,然后干掉SSL pinning。不过使用Xposed + JustTruestMe应该也不丢人。
Xposed是一个框架,它可以改变系统和应用程序的行为,而不接触任何APK。
它支持很多模块,每个模块可以用来帮助实现不同的功能。
JustTrustMe 是一个用来禁用、绕过 SSL 证书检查的基于 Xposed 模块。JustTrustMe 是将 APK 中所有用于校验 SSL 证书的 API 都进行了 Hook,从而绕过证书检查。
准备工作:
1. 准备一个有root权限的andorid手机或者andorid模拟器
使用手机装Xposed容易变砖,刷来刷去,很麻烦。个人习惯也推荐直接用andorid模拟器,现在很多andorid模拟器长又好看,广告又少,各个是人才。
本文使用网易的MUMU模拟器,下载地址:http://mumu.163.com/baidu/  对应的andorid版本为4.4。
2.  下载Xposed的apk安装包,下载地址:
http://repo.xposed.info/module/de.robv.android.xposed.installer
在改页面找到点击下载即可,默认的版本支持Android 4.0.3 up to Android 4.4. 版本
Download:de.robv.android.xposed.installer_v33_36570c.apk (770.28 KB)
注意官方的说明,如果你的模拟器andorid版本为5.0以上,请按照如下说明操作:
For Android 5.0 or higher (Lollipop/Marshmallow), these versions don't work! Use this instead:http://forum.xda-developers.com/showthread.php?t=3034811
3. 下载JustTrustMe模块
https://github.com/Fuzion24/JustTrustMe/releases/tag/v.2
注意下载 JustTrustMe.apk版本
安装mumu模拟器
双击安装即可,自己看着办,安装完开机,就是这个样子的:
安装Xposed
点击MUMU主界面由下角的APK+图标,选择下载好的Xposed installer的apk包,即可开始安装,安装完成后,桌面会生成对应的图标,打开
第一次打开时,“框架”下面会有红色字体提示更新
不要管,点击框架,进去,点击“安装更新”,更新完成后,会提示重启,注意这个时候可能会卡死。
如果不卡死,说明你你比较厉害,点击下面的重启按钮重启。
如果卡死了,直接关闭模拟器,重新打开即可,再次进入框架页面,可以看到如下信息,则说明更新完成。
安装JustTrustMe
点击“模块”,此时还没有可用的模块,     同样的方法点击apk+导入之前下载好的JustTrustMe的apk安装包,系统会自动安装,安装完成后,在模块里面点击“软重启”,再次打开“模块”界面,即可看到JustTrustMe,勾选一下,启用这个模块:
到这里Xposed+JustTrustMe就安装和启动了。
接下来就是常规流程了:
1. 在你的MUMU模拟器所在的宿主机上打开burpsuite,并启用代理,主要使用实际的IP地址作为监听地址
2. 给你的MUMU模拟器设置一个代理,因为MUMU模拟器做了很多裁剪,默认不提供wifi配置选项,这里可以下载一个wifi万能钥匙,然后通过它呼唤出wifi设置界面:打开wifi万能钥匙---未登录---设置---设置为wifi管理器---立即设置,即可看到如下选项,选择wlan,进入wifi设置选项
鼠标左键长安“WiredSSID”这个ssid名词,会弹出如下选项,选择修改网络,进入代理配置页面
把代理选项配置成burp监听的代理地址,保存即可。
到这里你一定会想,这个MUMU模拟器到底用的的是什么方式与你的宿主机进行通信的,你可以使用adb shell来看一下,adb是一个连接andorid的命令行工具,windows下的安装和使用请自行GOOGLE。Mac下的安装和使用:
1. brew cask install android-platform-tools  //安装adb工具
brew类似linux下的yum,不会用的自己google.
安装完成后,运行:adb shell  即可连接到mumu虚拟机
$ adb shell
cancro:/ # 
cancro:/ # 
cancro:/ # 
在这里可以使用大多数的linux命令,必然ls,vi等,查看IP地址使用:netcfg
通过查看ip地址以及ping命令测试,可以发现mumu虚拟机是通过127.0.0.1进行桥接到宿主机的,因此可以直接使用宿主机的IP地址进行代理。
3. Xposed+JustTrustMe只是解决了SSLpinning的问题,因为通讯本身是HTTPS的因此我们还是需要安装burp伪证书,直接导出burp的证书,因为默认格式是.cer的,andorid不支持,需要将这个证书先导入到浏览器在导出成.pem(x509)格式,然后在MUMU模拟器的设置---安全—从SD卡安装证书,通过MUMU的提供的共享文件夹将证书选择到安装即可,中间需要提示开启PIN码认真,开启一下即可。
到这里,你必然可以抓到启用了SSL pinning的APP的HTTPS的数据包了。
#在网上找了一些资料,都写的不够完整,昨晚自己折腾了一下,算是一个笔记。劳动节快乐#

如何使用Xposed+JustTrustMe来突破SSL Pinning相关推荐

  1. Fiddler利用Edxposed框架+TrustMeAlready来突破SSL pinning抓取手机APP数据

    一.背景 在使用fiddler做代理抓取应用数据包时,如果要抓取到HTTPS数据,需要将fiddler证书导入到浏览器或手机. 浏览器或手机设置好fiddler的代理地址,即可抓取到https数据包. ...

  2. 用frida突破SSL pinning抓包

    python任意版本安装frida,手机端使用的mumu模拟器,其他的也可以 pip install frida adb 连接 mumu模拟器 查看内核 adb shell su cat /proc/ ...

  3. 某音短视频APP 最新版(21.8)SSL PINNING 绕过

    本文主要讲解在短视频APP上逆向抓包遇到的坑,通过本文方法可以顺利使用抓包工具抓到数据包,也可以通过文中介绍的获取proto文件的方法,使用编程语言解析数据包中的内容. 文末还会提供编译好的proto ...

  4. 手机app抓包https请求信息,解决SSL Pinning验证

    抓包工具: Charles,fiddler,wireshark 其中,前两个用于抓取https请求,wireshark则是包含tcp/udp在内的所有请求,本文中以Charles为例 或者移动端(An ...

  5. 关于代理抓包,ssl pinning解决方案

    ** 详情见我的博客小生博客 ** 抓包 代理抓包 Fiddler, charles能抓http/https/websocket属于应用层 优点:配置简单,抓取解析ssl方便 缺点:app对代理抓包的 ...

  6. 如何使用SSL pinning来使你的iOS APP更加安全

    SSL pinning在构建一个高度安全的移动APP上扮演了一个十分重要的角色.然而如今好多用户在使用无线移动设备去访问无数不安全的无线网络. 这篇文章主要覆盖了SSL pinning 技术,来帮助我 ...

  7. 利用Frida绕过Android App(途牛apk)的SSL Pinning

    0x00 前言 做APP测试过程中,使用burp无法抓到数据包或提示网络错误可能是因为APP启用了SSL Pinning,刚好最近接触到途牛apk就是这种情况,于是便有了本文. 0x01 SSL Pi ...

  8. How to bypass Instagram SSL Pinning on Android

    How to bypass Instagram SSL Pinning on Android http://www.ifind.cc/view/115

  9. 抖音SSL Pinning绕过

    问题背景 解决方法 总结 问题背景 用Charles(Mac版)抓包iPhone中的https请求,出现unknown.以前遇到过这种问题,是通过Charles抓包https中出现unknown这篇文 ...

  10. iOS 防止抓包(SSL Pinning)

    1.判断是否有网络代理(不推荐) 当进行网络请求的时候,客户端判断当前是否设置了代理,如果设置了代理,不允许进行访问,附带判断是否设置代理的代码: + (BOOL)getProxyStatus {NS ...

最新文章

  1. 控制台打印列未定义错误
  2. 向量几何在游戏编程中的使用系列二之2-D物体间的碰撞响应
  3. Java堆、栈、内存分析
  4. java 抽象类_java中的抽象类
  5. 挖漏经验:在密码重置请求包中添加X-Forwarded-Host实现受害者账户完全劫持
  6. 标签选择器与字体连写
  7. Lync Server 2013企业版部署系列之一:部署环境介绍
  8. 深度学习(Deep Learning)综述
  9. 关于区块链的一些特有技术
  10. 黑莓BlackBerry 模拟器上浏览网页
  11. WES2009创建开发
  12. 2021国赛参赛经验与感悟
  13. 风云防火“强”为你打造出坚实系统(转)
  14. iphone开发中的手势操作:Multiple Taps
  15. FILE NAME(filename)文件名的理解
  16. 推导Beta分布公式
  17. Android平台使用-谷歌广告联盟AdMob-赚取收益的编程方法
  18. E-PUCK机器人-FAQ
  19. CSS3 matrix矩阵
  20. 怎么入驻亚马逊跨境电商平台?

热门文章

  1. 基于三极管的电平转换电路
  2. 数学建模overleaf模板_数学建模论文模板及套路
  3. Oracle12c CDB和PDB数据库的启动与关闭说明
  4. 做后期必备!500组HDR贴图分享与使用方法讲解
  5. pdf转word思路和方法
  6. 软媒魔方 6.0 正式绿色版
  7. 组件上传之AspUpload使用方法
  8. resin 配置java_resin安装与配置
  9. 这10个免费电子书网站合集赶紧收藏了!
  10. 工作说明书(SOW)