iT邦幫忙

2022 iThome 鐵人賽

DAY 9
0
Modern Web

mitmproxy 在網路爬蟲上的各種應用系列 第 9

Day 9 在 Linux、iOS 與 Android 處理 SSL 憑證問題,打造本地撈封包環境

  • 分享至 

  • xImage
  •  

插曲

我的作業系統是 Pop!_OS 20.04,在昨天重灌成 Pop!_OS 22.04 了。

由於 Steam 給 Linux 玩遊戲的執行環境 Proton,如果想要使用到最新的功能,也必須要讓顯示卡驅動保持在最新。

之前我又把 APT repository 玩到壞掉,而且修不好,導致我的顯示卡驅動久久不能更新。

於是我就選在昨天,快速的把我的系統給重灌了。顯示卡驅動終於到最新版本了 !

https://ithelp.ithome.com.tw/upload/images/20220924/20150913PJytbwFJ7q.png

危機

重灌後我發現,我的 Pop!_OS 分享 Wi-Fi 的功能和 Apple 系列的產品有衝突。

因為我的 iPhone 和 MacOS 都不能連上 PC 的 Wi-Fi 了,Android 和 Nintendo Switch 則正常。

如果 iPhone 連不回 PC 分享的 Wi-Fi,這樣我要怎麼 demo 中間人攻擊自己的 iPhone ? 這真的是個危機 ...

正題

好吧,總之還是進入今天的正題。

Linux

先建立存放憑證的資料夾

$ sudo mkdir /usr/local/share/ca-certificates/extra

複製一份憑證到剛才建立的資料夾

$ sudo openssl x509 -in ~/.mitmproxy/mitmproxy-ca-cert.pem -inform PEM -out /usr/local/share/ca-certificates/extra/mitmproxy-ca-cert.crt

更新憑證列表

$ sudo update-ca-certificates

把 mitmproxy 開著,然後用 curl 測試看看,你應該會正常的拿到 HTML

$ curl --proxy "localhost:8080" "https://example.com"

補充一下,如果 SSL 憑證沒過,那就會顯示

curl: (60) SSL certificate problem: self-signed certificate in certificate chain
More details here: https://curl.se/docs/sslcerts.html

curl failed to verify the legitimacy of the server and therefore could not
establish a secure connection to it. To learn more about this situation and
how to fix it, please visit the web page mentioned above.

手動讓應用程式通過 mitmproxy

如果你不想在 Linux 安裝憑證,你想每次都手動處理連線的話,你也可以這樣做。

$ HTTP_PROXY="localhost:8080" \
  HTTPS_PROXY="localhost:8080" \
  REQUESTS_CA_BUNDLE="/home/yotsuba/.mitmproxy/mitmproxy-ca.pem" \
  curl "https://example.com"

在 Python code 的話則可以這樣寫。

import os
import requests

os.environ['HTTP_PROXY']         = 'localhost:8080'
os.environ['HTTPS_PROXY']        = 'localhost:8080'
os.environ['REQUESTS_CA_BUNDLE'] = '/home/yotsuba/.mitmproxy/mitmproxy-ca.pem'

response = requests.get('https://example.com')

iOS 和 Android

第一件事情一定是先讓手機連上 mitmproxy。

我的電腦的主機板有 Wi-Fi 模組,所以可以分享 Wi-Fi 給其他裝置,實作起來就很方便。

如果沒有的話,買一個外接式的 Wi-Fi 網卡也是可以。

實際上,無論你的網路架構如何,只要最終有辦法把攻擊和被攻擊節點串接在同一個網路,並且讓被攻擊節點通過 mitmproxy 都是可以的。

https://ithelp.ithome.com.tw/upload/images/20220924/20150913bKvwp3hLcN.png

之後打開瀏覽器,連線到 mitm.it,如果成功發動中間人攻擊,你應該會看到以下的樣子。

https://ithelp.ithome.com.tw/upload/images/20220924/20150913xlHeaW81Vm.jpg

接下來只要下載憑證,並且按照網頁中給的 insturctions 來安裝憑證就可以了。

參考文章


上一篇
Day 8 初探 mitmproxy
下一篇
Day 10 第一個中間人攻擊程式
系列文
mitmproxy 在網路爬蟲上的各種應用18
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言