Android 如何捕获/分析 HTTPS 数据包

2020-05-25 898点热度 0条评论

上一篇教程里我向大家介绍了如何在 Windows 下捕获/分析 HTTPS 数据包,这篇就向大家介绍如何捕获 Android 系统的 HTTPS 数据包。

Android 和 Windows 的区别在于,捕获工具的选择和 Andorid 的安全机制。Android 上的 HTTPS 捕获工具数量不多,而且功能简陋,只能作为最基础的捕获工具使用,所以我们这次会用电脑捕获手机的数据包。还有就是 Android 的证书安全机制,从 Android 7.0 开始,如果 App 的目标 API 版本大于等于 24,那么它将不再默认信任用户安装的 SSL 证书,这就造成了即使你有捕获工具且安装了证书也无法成功捕获。

这篇教程我们主要解决这两个问题。

安装捕获工具

由于我们是用电脑捕获手机的数据包,所以捕获工具自然也是安装在电脑上的。捕获工具的原理我在上一篇教程已经讲过了。

捕获工具的选择有很多,比如 Windows 用户最常用的 Fiddler,还有比较专业的 BurpSuite 和 OWASP ZAP

我个人比较偏向 OWASP ZAP,多平台支持且开源,并且具有多语言的支持。

安装证书

这些软件安装之后,需要把他们的 SSL 根证书导入到系统,这样在捕获 HTTPS 流量的时候系统才会信任他们。

拿 OWASP ZAP 举例:OWASP ZAP 安装完成后,打开软件的设置,切换到「Dynamic SSL Certificates」,它默认会自动生成一个根证书,右边会显示证书内容,点击 [保存],将证书保存到本地并复制到手机上,然后打开手机的文件管理器,点击证书文件并安装。

如果你的 Android 系统版本是 6.0 或以下,或者目标 App 的目标 API 版本小于 24,那么你什么都不需要做,如果是 7.0 或更高版本,你需要采取下面其中一种方法。

刚才我们说了 Android 7.0 默认不信任用户添加的证书,所以我们需要解决这个问题,如何解决?

第一种方法是把证书安装到系统级别,这样系统就会信任了,不过这种方法需要 ROOT 权限,而且由于 SELinux 机制,不推荐手动操作。如果你有 Magisk,推荐使用 MoveCert 模块,这个模块在系统每次重启时,会自动把用户证书安装为系统证书。

第二种方法是利用 App 虚拟机,让目标 App 在虚拟机里运行,不过这个虚拟机的目标 API 需要小于 24。什么是 App 虚拟机,就是类似平行空间的应用。我目前发现有两个选择,旧版本平行空间和 VirtualXposed,旧版本平行空间的目标 API 小于 24,但是由于是旧版本,可能存在某些 BUG;VirtualXposed 的目标 API 也小于 24,最新版亦是如此,不过 VirtualXposed 的主要用途是模拟 Xposed 环境,所以如果某些 App 拒绝 Xposed 环境下运行,那就不可以了。

这里附上两个 App 的下载地址,大家可以根据需要选择:

平行空间: https://www.apkmirror.com/apk/lbe-tech/parallel-space-multi-accounts/parallel-space-multi-accounts-4-0-8625-release/

平行空间 64 位支持: https://www.apkmirror.com/apk/lbe-tech/parallel-space-64bit-support/parallel-space-64bit-support-1-0-3037-release/parallel-space-64bit-support-1-0-3037-android-apk-download/

VirtualXposed: https://github.com/android-hacker/VirtualXposed

重定向到代理

接下来就是如何把 App 的数据包重定向到代理

虽然 Android 的 WiFi 设置里有代理选项,但这个选项就跟 Windows 系统的代理选项一样,由 App 决定是否使用。

所以我们就需要可以全局拦截 App 流量的方法:VPN,这里我选择使用 V2ray,就像上篇教程说的那样,因为 V2ray 有流量探测功能,可以正确的把请求转发给捕获工具的代理服务器,而且 V2ray 的 App 可用性非常高。

首先在电脑上运行 V2ray,配置文件参考上一篇教程,然后在手机上使用支持 V2ray 的 APP 连接到电脑,这样就可以开始捕获了。

大部分 V2ray 的 App 都有分应用代理功能,我们可以利用这个功能只捕获指定 App 的数据包,不过需要注意的是,如果你使用了上面的 App 虚拟机,务必开启分应用代理功能且只选中 App 虚拟机,否则会造成其他 App 的网络不正常。


如果有任何不懂的地方,欢迎加入 QQ 群与我讨论。

微信公众号二维码

微信扫描二维码关注我们

如果觉得文章有帮助到你,可以点击下方的打赏按钮赞助下服务器费用。

小山

一个什么都不会但要装作很厉害的人

文章评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据