Мониторинг http и https трафика в linux. Установка и настройка mitmproxy в ubuntu

Установка и настройка mitmproxy в ubuntuПривет! Не так давно мне понадобилось прослушать http трафик одного
ресурса в linux. Сначала я хотел использовать tcpdump, но трафик передавался через https. Мне нужно было что то простое, легкое в установке, но в тоже время подходящее под мои задачи. Перерыв интернет в поиске доступного решения я наконец нашел то что мне нужно — это mitmproxy. Аббревиатура «mitm» означает «человек посередине» — это вид атаки, когда все запросы между клиентом и сервером проходят через стороннее ПО, которое встраивается между клиентом и сервером и прослушивает весь проходящий трафик. Mitmproxy умеет прослушивать http и https трафик в linux, а так же обладает различными полезными функциями.

Установка mitmproxy в ubuntu

sudo apt-get install mitmproxy

Настройка mitmproxy в ubuntu

Перед запуском mitmproxy необходимо настроить браузер, или систему, указав в их настройках порт mitmproxy. Объяснять как это сделать в этой статье считаю лишним, но по браузеру chromium кое что поясню, когда я зашел в настройки прокси в браузере, я увидел это:

Ошибка при настройке прокси для chromium в ubuntu

Пришлось править конфиг файл chromium. Для этого пришлось отредактировать файл /etc/chromium-browser/default, добавив туда параметр:

CHROMIUM_FLAGS="-proxy-server=адрес:порт"

и после перезапустить браузер.

В моем случае mitmproxy установлен на локальный компьютер, то есть в поле «адрес» нужно будет прописать адрес локального хоста 127.0.0.1.

Как указать прокси сервер для некоторых других приложений в ubuntu, описано здесь.

Всё, можно приступать к запуску mitmproxy. Запускается он из терминала:

mitmproxy

По умолчанию mitmproxy запускается на 8080 порту. Для запуска на другом порту нужно указать параметр -p:

mitmproxy -p 3000

Мониторинг http трафика

После запуска mitmproxy попробуйте открыть какой нибудь сайт в браузере, например webistore.ru. Если вы все правильно настроили, то в терминале вы должны увидеть это:

Пример работы mitmproxy

После запроса к сайту, в mitmproxy отобразится список всех загруженных с сайта данных, т. е. html код страницы сайта, картинки, java скрипты и другое. Для перемещения между элементами списка используйте стрелки на клавиатуре вверх и вниз. Например, на скриншоте выше выбран первый элемент списка, это видно по желтой стрелке слева от элемента. Каждый элемент списка — это отдельный http поток. У каждого http потока отображается его url, код статуса и тип контента, по которому можно определить его содержимое, например у первого http потока тип контента text/html, это означает, что он отображает html код страницы. Каждый http поток можно просматривать подробно. Для этого нужно нажать enter.

Давайте на примере просмотрим подробные сведения о первом http потоке — главной странице сайта webistore.ru. Нажав enter мы увидим данные об http запросе:

Mitmproxy - подробные сведение об http потоке

В этом окне отображены http заголовки запроса, а так же тело запроса, если оно есть. Для того, чтобы посмотреть данные http ответа, нужно нажать клавишу tab. Отобразится все содержимое http ответа — http заголовки и тело ответа.

Все данные об http потоке (http заголовки, тело запроса/ответа) прямо оттуда можно сохранить в файл, нажав комбинацию shift+w, но есть один ньюанс — если http ответ пришел в gzip, то он и сохраниться в gzip. Чтобы сохранить http поток как обычный текст, во вкладке http ответа — response, нажмите клавишу z, тогда строка content-encoding исчезнет из списка http заголовков ответа, и поток можно будет сохранить в обычном текстовом формате:

Mitmproxy - сведения об http ответе от сервера

При сохранении, в файл записываются все данные об http потоке, то есть заголовки http запроса, заголовки http ответа, тело запроса и тело ответа. Если путь к файлу не указан явно, по умолчанию файл сохраняется в домашний каталог пользователя. Чтобы вернуться обратно к списку всех http потоков, нужно нажать клавишу q, для очистки списка http потоков нужно нажать комбинацию клавиш shift+c. Для просмотра других горячих клавиш в mitmproxy нажмите клавишу «?».

Мониторинг https трафика с помощью mitmproxy

С мониторингом http трафика через mitmproxy мы разобрались, но как быть с https трафиком, ведь для того чтобы прослушать https трафик, mitmproxy использует свой https сертификат. Плохо это тем, что при обращении к сайту по https, браузер будет выдавать предупреждение безопасности, и при этом не все сайты можно будет открыть. Это можно исправить, добавив сертификат mitmproxy в список доверенных сертификатов браузера. Сертификат mitmproxy находится в папке .mitmproxy в домашнем каталоге.

Я расскажу, как добавить сертификат mitmproxy в браузер chromium. Открываем настройки, дополнительные настройки, настроить сертификаты:

Добавление сертификата mitmproxy в браузер chromium - шаг 1

 

Далее открываем вкладку «Центры сертификации»:

Добавление сертификата mitmproxy в браузер chromim - шаг 2

Внизу в этой же вкладке нажимаем кнопку «импорт»:

Добавление сертификата mitmproxy в браузер chromim - шаг 2.2

Во вновь открывшемся окне выбираем домашний каталог, в нем открываем папку .mitmproxy и выбираем файл «mitmproxy-ca.pem»:

Добавление сертификата mitmproxy в браузер chromim - шаг 3

Папка .mitmproxy по умолчанию не видна, если вы не можете ее найти в домашнем каталоге, нажмите комбинацию клавиш ctrl h для отображения всех скрытых файлов и папок.

После выбора сертификата должно появиться окно, поставьте галочку напротив фразы «доверять этому сертификату при идентификации сайтов» и нажмите «ОК»:

Добавление сертификата mitmproxy в браузер chromim - шаг 4

Теперь попробуйте зайти на https сайт, предупреждение должно исчезнуть. Все, на этом настройка mitmproxy для https завершена.

В заключение хочу сказать, что mitmproxy может не только мониторить http и https трафик, но и модифицировать http запросы, посылать их серверу и получать ответы. Подробнее об этой и других функциях вы можете узнать нажав на клавишу «?» в главном окне программы, либо в окне подробной информации о http потоке.

Мониторинг http и https трафика в linux. Установка и настройка mitmproxy в ubuntu: 1 комментарий

  1. Отличная статья)
    Как мне настроить автоматические ответы на запросы?

    То есть чтобы каждый раз одни и те же не редактировать

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *