Дешифровка HTTPS с помощью MITMPROXY
В заметке будет описано как установить mitmproxy на Linux чтобы дешифровать HTTPS трафик. Это может понадобиться для отладки веб приложений, которые зашифровывают свой трафик с помощью сертификатов.
mitmproxy уже рассматривался ранее в статье про TLS 1.3.
Мы будем дешифровать приложение, запущенное на Linux.
Последовательность действий:
- Установка mitmproxy
- Добавление mitmproxy сертификата в доверенные
- Запуск mitmproxy
- Просмотр расшифрованного трафика
Установка mitmproxy
Можно установить mitmproxy как Python модуль
pip3 install mitmproxy
Добавление mitmproxy сертификата в доверенные
mitmproxy использует самоподписанный сертификат. Поэтому приложение не сможет создать подключение из-за ошибки проверки сертификата.
Для того чтобы приложение запустилось нужно добавить mitmproxy сертификат в доверенные на стороне приложения.
Для этого следует сначала запустить mitmproxy первый раз и выйти.
mitmproxy
Это создаст сертификаты в домашнем каталоге пользователя.
-
Скопировать
~/.mitmproxy/mitmproxy-ca-cert.pem
сертификат файл:-
На CentOS:
- в /etc/pki/ca-trust/source/anchors/
-
На Debian и Ubuntu:
- в /usr/local/share/ca-certificates/
-
-
Запустить команду:
-
На CentOS:
update-ca-trust extract
-
На Debian и Ubuntu:
update-ca-certificates
-
Заметка: CA файл должен быть PEM формата и иметь CRT расширение (mycert.pem - не пойдёт, mycert.pem.crt - не пойдёт, mycert.crt - заработает).
Запуск mitmproxy
Прокси для приложения на той же машине
Чтобы пропустить соединение приложения через mitmproxy можно использовать переменную окружения. Допустим, что приложение и mitmproxy запускаются оба на одной машине, тогда можно задать прокси сервер в текущей сессии.
export HTTPS_PROXY="http://127.0.0.1:8080"
Дальше можно запустить mitmproxy в режиме веб сервера в фоновом режиме:
mitmweb &
Прокси для приложения на другой машине в сети
Запустим mitmproxy на другом порту и привяжем ко всем интерфейсам:
mitmweb --server --listen-host 0.0.0.0 --listen-port 8123 --web-host 0.0.0.0 --web-port 8456 --ssl-insecure
После этого в настройках браузера укажем IP адрес машины с mitmproxy и порт 8123.
Например, если для прокси подключения к 172.30.90.122 по порту 8123 в Firefox настройки могут выгладить так:
А для открытия веб консоли mitmproxy запустим другой браузер и подключимся к адресу mitmproxy сервера и порту 8456.
Просмотр расшифрованного трафика
Запустить приложение в той же сессии:
curl https://2ip.ru
Узать curl адрес прокси сервера:
curl --proxy https://127.0.0.1:8000 https://ifconfig.me
Открыть веб браузер mitmproxy:
http://127.0.0.1:8081/
Закрыть mitmweb
:
killall mitmweb