使用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

相關文章:

翻譯: