在 Linux 下使用 mitmproxy 抓取安卓手机上的 HTTPS 流量

在 Linux 下使用 mitmproxy 抓取安卓手机上的 HTTPS 流量

💡 原文中文,约2000字,阅读约需5分钟。
📝

内容提要

安卓抓包神器HttpCanary在PC上分析流量更方便。安卓7以下版本安装ssl证书即可被信任,7以上版本需要root权限。安卓设备也可使用eCapture抓包软件。本文讨论安卓7以上版本中安全性较低的应用。

🔎

延伸解读

安卓版本决定抓包难度

文章指出,安卓7以下安装SSL证书即可被信任,而安卓7以上需要root权限将证书移至系统目录。对于安全性较高的应用,还需绕过SSL Pinning,通常借助justTrustMe或frida。本文仅针对安全性较低的应用,因此操作相对简单,但读者需先确认目标应用的防护级别。

系统证书安装的两种路径

若手机system分区可写,用root文件管理器直接移动证书即可;若不可写,则需通过ADB和临时挂载tmpfs,复制系统证书、移入新证书并设置权限与SELinux标签。后者步骤繁琐,适合出厂版本较高的设备,操作前建议备份,避免系统异常。

分应用代理避免流量干扰

mitmproxy默认在PC的8080端口开启HTTP代理。若直接在手机WiFi设置全局代理,非目标应用流量也会经过代理,导致抓包目标不明确。使用Nekobox等支持分应用代理的工具,可只让待抓包应用走代理,提高分析效率,同时减少无关流量。

❓

Q&A

如何在安卓7以上版本安装ssl证书以抓取HTTPS流量?

在安卓7以上版本,安全性较低的应用需要root权限,将证书移动至/system/etc/security/cacerts以被系统信任。

HttpCanary在安卓设备上有什么局限性?

HttpCanary在小屏幕上分析流量不方便,尤其是在PC上处理流量信息更为得心应手。

如何使用mitmproxy抓取安卓手机的HTTPS流量?

需要在PC端开启mitmproxy的http代理服务器,并确保待抓包应用的流量经过该代理。

安卓7以上版本的安全性较高的应用如何处理ssl证书?

需要在满足证书移动条件的情况下,阻止第三方应用使用自带的ssl证书信任范围,通常需要额外手段进行篡改。

eCapture软件在安卓设备上有什么特点?

eCapture是基于eBPF Linux内核模块的抓包软件,适用于Linux版本>=5.5的安卓设备。

如何避免非目标应用流量经过代理服务器?

可以使用Nekobox等代理软件实现分应用代理,确保只有目标应用的流量经过代理。

🏷️

标签

➡️

继续阅读