iT邦幫忙

2022 iThome 鐵人賽

DAY 10
1
Modern Web

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

Day 10 第一個中間人攻擊程式

  • 分享至 

  • xImage
  •  

第一個中間人攻擊程式,在安裝憑證的時候就已經發生

如果你平常連上 mitm.it,你會看到以下畫面。

If you can see this, traffic is not passing through mitmproxy.

如字面上的意思,如果你看到這個頁面,代表你的連線沒有通過 mitmproxy。

https://ithelp.ithome.com.tw/upload/images/20220925/20150913WWh7tlLLgs.jpg

反之,如果有讓連線通過 mitmproxy,那麼就能看到這個頁面。

https://ithelp.ithome.com.tw/upload/images/20220925/201509134qnblP9J4N.jpg

當中間人攻擊發生的時候,其中間人可以對封包進行一切的竄改。

mitm.it 可以理解成一個保留字,當你想要連線到 mitm.it 的時候,mitmproxy 就會自動劫持這個連線,回傳自己準備好的頁面給你。

這是為什麼可以連線到 mitm.it 的時候,下載的憑證卻是自己準備好的。

注入 Python script

平常我們連線到 Steam 商店頁面可能會像是這樣。

https://ithelp.ithome.com.tw/upload/images/20220925/20150913PcasSOASnx.jpg

mitmproxy 允許我們注入一段 Python 的程式碼,我們可以根據前面的例子,做出一個一模一樣的中間人攻擊。

讓我們把想要前往 Steam 商店頁面的封包都回傳我的名字。

import mitmproxy


def request(flow: mitmproxy.http.HTTPFlow):
    if flow.request.host == 'store.steampowered.com':
        flow.response = mitmproxy.http.HTTPResponse.make(
            content = 'Yotsuba'
        )

執行的時候加入 -s 參數。

$ mitmproxy -s your_script.py

再次連線,畫面應該會變成這樣。

https://ithelp.ithome.com.tw/upload/images/20220925/20150913fsUNG7n0xu.jpg

mitmproxy 的不向下兼容

上面的範例取自我以前在巴哈小屋發表的 教你如何分辨釣魚網站

當時我的 mitmproxy 是版本 7,現在的範例則是版本 8。

撰寫今天的範例的時候,我發現 mitmproxy.http.Response 會報錯,版本 8 應該使用 mitmproxy.http.HTTPResponse 才可以。

參考文章


上一篇
Day 9 在 Linux、iOS 與 Android 處理 SSL 憑證問題,打造本地撈封包環境
下一篇
Day 11 mitmproxy 針對封包的各種操作
系列文
mitmproxy 在網路爬蟲上的各種應用18
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言