我喜欢用 Mitmproxy https://mitmproxy.org/ 来处理手机 App 抓包之类的工作, 本来用它来抓 Https 包是很容易的一件事, 只要设置好代理, 浏览 mitm.it 按提示安装证书即可, 可是当 Android 版本升级到 7 以后, 此方法就失效了, 为什么呢? 因为新版 Android 缺省情况下只信任系统级证书, 而不再信任用户级证书, 问题详细描述可以参考: 听说安卓微信 7.0 不能抓 https? https://testerhome.com/topics/17746
普通的解决方法有很多, 比如说用低版本的 Android 手机, 或者干脆换个苹果手机. 不过那些治标不治本的方法并不是本文关注的重点, 本文我们主要聊聊如何通过 root 来解决问题, 但是 root 本身是有风险的, 所以下面有请重量级嘉宾 网易 MuMu https://mumu.163.com/ 闪亮登场! 它是一个有 root 权限的全功能 Android 模拟器.
mumu
网易 MuMu 使用起来很简单, 不过你需要注意实际抓包的时候, 你需要设置模拟器的网络连接走相应的代理, 设置的方法是找到对应的网络连接「长按」即可:
网络连接
因为我是用 Mitmproxy 来抓包的, 所以要安装的也是 Mitmproxy 的证书. 下面看看如何把 Mitmproxy 证书安装到网易 MuMu 里, 记得安装相关工具, 以 Mac 操作系统为例:
- shell> brew install mitmproxy
- shell> brew install Caskroom/cask/Android-platform-tools
安装好工具之后, 别忘了启动网易 MuMu, 然后通过 Android-platform-tools 中的 adb 命令来连接它, 只需要简单执行「adb shell」即可, 如果遇到连不上的情况, 可以参考 文档 http://mumu.163.com/2017/12/19/25241_730476.html . 连接成功后, 你可以在「/system/etc/security/cacerts/」目录看到现有的系统级证书:
证书
换句话说, 我们只要把 Mitmproxy 证书安装到这里即可. 不过这些证书的文件名都是啥意思, 实际上他们就是证书文件的散列值, 那 Mitmproxy 证书在哪? 如何计算它的散列值? 其实当我们安装好 Mitmproxy 的时候, 相应的证书就已经保存在「~/.mitmproxy」目录里了, 下面看看如何计算证书的散列值:
- shell> openssl x509 \
- -subject_hash_old \
- -inform PEM \
- -in ~/.mitmproxy/mitmproxy-ca-cert.pem | head -1
- c8750f0d
接下来我们把 Mitmproxy 证书推送到模拟器系统证书所在目录:
- shell> adb push \
- ~/.mitmproxy/mitmproxy-ca-cert.pem \
- /system/etc/security/cacerts/c8750f0d.0
最后在模拟器「设置 / 安全 / 信任的凭据 / 系统」里就能看到 Mitmproxy 证书了:
系统证书
通过 root 安装系统证书可以解决大部分 Https 抓包问题, 为什么是大部分? 还有哪些特殊情况不能处理? 答案是「 SSL Pinning https://xz.aliyun.com/t/2440 」, 它是为了应对中间人攻击而出现的一种技术, 简单点说, 就是证书被打包到 App 里, 每次请求都会验证证书一致性. 如此一来, 虽然我们可以安装系统级证书, 但是当 App 验证证书一致性的时候就失败了, 如何突破此限制呢? 答案很简单, 你不是要验证一致性么, 我统统返回 OK 不就行了!
为了达到 hack 的目的, 我们需要安装 Xposed 和 https://github.com/Fuzion24/JustTrustMe , 其中 Xposed 是一个 hack 框架, JustTrustMe 是一个插件. 安装 https://bbs.pediy.com/thread-226435.htm 过程并不复杂, 唯一需要说明的是, 在安装 Xposed 之前, 最好在网易 MuMu 中关闭兼容模式, 路径「设置 / 应用兼容性 / 兼容模式」.
Xposed
JustTrustMe
如果你认认真真从头看到尾, 那么恭喜你, 关于手机 App 的 Https 抓包, 你已经是专家了, 最后你摸着自己的良心扪心自问一下: 是不是应该给作者一个大大的红包!
来源: http://www.tuicool.com/articles/yUre633