使用mitmproxy给手机app抓包

工作中经常需要抓取手机app的网络报文,比方说某个图片无法访问的问题,只在手机app端出现,web端正常。这个时候你需要抓包快速定位问题原因,通常的操作都是在电脑上面安装个抓包软件用作代理,手机设置连接这个代理,这样手机的网络报文会经过抓包软件,自然就可抓取解析报文细节了。掌握了网络报文细节,就好象chrome的调试工具一样,一切无所遁形。

常见的抓包软件为 Charles、Fiddler、Wireshark等,Charles和Fiddler都是收费软件,Wireshark适合较底层的网络报文分析,本文推荐 mitmproxy 是个开软件(MIT License), 不用花钱也够用,看github的贡献记录这软件是2016年才活跃发力。

有必要介绍下名字,mitm 表示 Man-in-the-middle attack(中间人攻击),proxy 即代理,组合起来mitmproxy,这样更加便于记住。

1. 安装

Linux用户可以直接去官网下载压缩包,解压即可。

2. 简介

安装完成后,包含三个工具

  • mitmproxy gives you an interactive command-line interface

    命令行界面(CUI?),可以在终端上面完成各种操作。

  • mitmweb gives you a browser-based GUI

    Web图形界面,类似chrome的调试界面,不喜欢命令行的个人建议使用这个

  • mitmdump gives you non-interactive terminal output

    命令行工具,可以简单理解为tcpdump类似的工具

3. 搭建抓包环境

环境图示:

how mitmproxy works

电脑上启动 mitmproxy 或者 mitmweb,直接输入命令启动,默认8080全网卡监听:

1    ➜  ~ ss -lnt |grep 8080
2    LISTEN 0      100          0.0.0.0:8080       0.0.0.0:*
3    LISTEN 0      100             [::]:8080          [::]:*

手机端连接WiFi,找到代理设置的地方,填上电脑ip和port,意思就是手机访问网络的时候,流量会走代理(即电脑上的ip:port服务),这样代理软件才能解析处理。

要点

现在手机app大部分都使用https了,这涉及到信任证书的问题。 以iOS为例,WiFi设置好代理后,浏览器访问 mitm.it,这个网址 http://mitm.it/,根据页面上面的指引下载对应平台的证书。

CA certificate

安装好证书后(不会安装网上搜下),一定要注意,新版的iOS系统还要选择完全信任(这一步很关键,Settings > General > About > Certificate Trust Settings 这样设置)。英文说明如下:

On recent iOS versions you also need to enable full trust for the mitmproxy root certificate:

Go to Settings > General > About > Certificate Trust Settings. Under “Enable full trust for root certificates”, turn on trust for the mitmproxy certificate.

不这样的设置的话,部分https流量可能无法分析,握手阶段证书校验不会成功,连接断开。

设置好环境后,即可开始抓包了,手机上开启目标App,点击后抓包软件就会刷新报文列。

三种方式示例如下:

1). mitmproxy

启动,直接输入命令:

mitmproxy

命令行界面如图所示,抓取的B站。

mitmproxy cui

上方为报文信息,下方为命令指引,报文列移动貌似支持vim快捷键(gg G等),按Enter进入详情页,q退出,也支持鼠标点击,稍微摸索下就会用了,不多解释。

2). mitmweb

启动,直接输入命令:

mitmweb

会直接开启个浏览器tab页,抓取的手机微信。

mitmweb gui

点击报文列,右侧界面会显示请求头、反回头等信息。

mitmweb detail

3). mitmdump

这个感觉有tcpdump,暂时用不到,需要使用的可以去翻看下官方文档。

最后修改于: Monday, August 28, 2023

相关文章:

翻译: