Окрема сторінка блогу

 

Blog By Merelyigor

mitmproxy у Kali Linux: опис, встановлення та приклади запуску

mitmproxy — це інтерактивний proxy-інструмент для аналізу HTTP/HTTPS-трафіку.
Його використовують для налагодження API, тестування вебзастосунків, аналізу запитів і відповідей,
а також у дозволених pentest-сценаріях.

Важливо: використовуйте mitmproxy тільки у власній мережі, лабораторному середовищі
або в межах аудиту, на який є дозвіл. Перехоплення чужого трафіку без дозволу може бути незаконним.

Що входить до mitmproxy

У сучасному mitmproxy основними інструментами є:

У старих матеріалах також можна зустріти згадки про pathoc і pathod.
Це були старі допоміжні інструменти для створення нестандартних HTTP-запитів і серверних відповідей.
У 2026 році для практичної роботи з mitmproxy краще орієнтуватися на mitmproxy,
mitmdump і mitmweb.

Можливості mitmproxy

Встановлення mitmproxy

У Kali Linux mitmproxy можна встановити з репозиторію:

sudo apt update
sudo apt install mitmproxy

Перевірка версії:

mitmproxy --version
mitmdump --version
mitmweb --version

У Kali Linux mitmproxy доступний як пакет, але якщо потрібна найсвіжіша версія,
краще перевірити офіційну документацію mitmproxy та standalone binaries.
Пакети в репозиторіях Debian/Kali можуть відставати від актуального релізу.

Встановлення у BlackArch

У BlackArch mitmproxy також доступний у репозиторіях. Якщо пакет не встановлений:

sudo pacman -S mitmproxy

Базовий запуск mitmproxy

Найпростіший варіант — запустити mitmproxy як звичайний HTTP/HTTPS proxy на порту 8080:

mitmproxy

Або явно вказати порт:

mitmproxy --listen-port 8080

Для вебінтерфейсу:

mitmweb --listen-port 8080

Для CLI-режиму без інтерактивного інтерфейсу:

mitmdump --listen-port 8080

Після запуску потрібно вказати IP-адресу машини з Kali Linux і порт 8080
у proxy-налаштуваннях тестового пристрою або браузера.

Перевіряємо IP-адресу машини

Спочатку перевіряємо IP-адресу машини, на якій запущений mitmproxy.

ip addr

Старий варіант:

ifconfig

У старих прикладах часто використовується інтерфейс eth0.
Якщо у вас Wi-Fi — це може бути wlan0 або, у сучасних Linux-системах,
щось на кшталт wlp2s0. Для дротового підключення це може бути
eth0, enp0s3, ens33 тощо.

Приклад:

eth0 -> inet 192.168.1.131/24

Тут 192.168.1.131 — IP-адреса машини, а /24 відповідає масці
255.255.255.0. Таблицю масок можна подивитися тут:
networkcenter.info/inform/netmask.

Сертифікат mitmproxy для HTTPS

Для аналізу HTTPS-трафіку потрібно встановити CA-сертифікат mitmproxy на тестовий пристрій.

Запустіть mitmproxy, налаштуйте proxy на тестовому пристрої, а потім відкрийте:

http://mitm.it

На цій сторінці можна завантажити сертифікат для Android, iOS, Windows, macOS або Linux.

Примітка: якщо застосунок використовує certificate pinning,
HTTPS-трафік може не розшифровуватись навіть після встановлення сертифіката.
Це нормальна поведінка сучасних захищених застосунків.

Transparent mode у Linux

Transparent mode використовується тоді, коли неможливо або незручно вручну вказати proxy
на клієнтському пристрої. У цьому режимі Linux-машина з mitmproxy виступає як маршрутизатор,
а трафік перенаправляється firewall-правилами.

Рекомендація на 2026 рік: якщо можна вручну вказати proxy —
використовуйте звичайний proxy mode. Transparent mode складніший у налаштуванні.
Для нових сценаріїв також варто дивитися в бік WireGuard mode або local capture mode.

1. Увімкнути IP forwarding

Увімкніть IP forwarding, оскільки система буде працювати як маршрутизатор:

sudo sysctl -w net.ipv4.ip_forward=1

Старий варіант:

echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward

Також бажано вимкнути ICMP redirects:

sudo sysctl -w net.ipv4.conf.all.send_redirects=0

2. Перенаправити трафік 80 і 443 на mitmproxy

У старій статті використовувався порт 2139. Це нормально:
mitmproxy може слухати будь-який вільний порт.

Замініть eth0 на ваш реальний мережевий інтерфейс.

sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 2139
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 2139

3. Запустити mitmproxy у transparent mode

Актуальний варіант запуску:

sudo mitmproxy --mode transparent --showhost --listen-port 2139

Через вебінтерфейс:

sudo mitmweb --mode transparent --showhost --listen-port 2139

Через mitmdump:

sudo mitmdump --mode transparent --showhost --listen-port 2139

У старих прикладах можна зустріти:

mitmproxy -p 2139

Але для transparent mode краще явно вказувати --mode transparent.

Звичайний proxy mode на порту 2139

Якщо transparent mode не потрібен, а ви просто хочете слухати порт 2139,
використовуйте:

mitmproxy --listen-port 2139

Або:

mitmweb --listen-port 2139

У такому випадку на клієнтському пристрої потрібно вручну вказати proxy:

Збереження і читання потоків

Перед зупинкою mitmproxy переконайтеся, чи потрібно зберегти потоки.

Збереження потоків через mitmdump:

mitmdump -w flows.mitm

Читання збереженого файлу:

mitmproxy -r flows.mitm

Запис потоків через mitmproxy:

mitmproxy -w flows.mitm

mitmdump: коли використовувати

mitmdump зручний, коли потрібен не інтерактивний інтерфейс,
а логування, автоматизація або запуск у скриптах.

Приклад простого запуску:

mitmdump --listen-port 8080

Запис у файл:

mitmdump -w traffic.mitm

Запуск із Python-скриптом:

mitmdump -s script.py

Читання збереженого потоку:

mitmdump -r traffic.mitm

Корисні опції mitmproxy

Повний список опцій краще дивитися через:

mitmproxy --help
mitmdump --help
mitmweb --help

Найчастіше використовуються:

Конфігураційні файли

Налаштування mitmproxy можна передавати через CLI або конфігураційний файл.
Типова директорія:

~/.mitmproxy/

У цій директорії також зберігаються CA-сертифікати mitmproxy.

Приклад запуску з конфігом:

mitmproxy --conf ~/.mitmproxy/config.yaml

Python-скрипти для модифікації трафіку

mitmproxy дозволяє змінювати HTTP-трафік через Python addon-скрипти.
Це корисно для тестування API, заголовків, cookies, mock-відповідей і перевірки поведінки клієнта.

Мінімальний приклад:

from mitmproxy import http

def request(flow: http.HTTPFlow) -> None:
    flow.request.headers["X-Test"] = "mitmproxy"

Запуск:

mitmproxy -s script.py

Очищення правил iptables

Щоб скасувати зроблені раніше NAT-правила:

sudo iptables -t nat -F

Для перевірки:

sudo iptables -t nat -L -n -v

Увага: команда iptables -t nat -F очищає всю NAT-таблицю.
Якщо на цій машині вже були інші NAT/firewall-правила, вони також будуть видалені.

Типові проблеми

Актуальні режими mitmproxy у 2026 році

Висновок

mitmproxy залишається актуальним інструментом для аналізу HTTP/HTTPS-трафіку в Kali Linux,
BlackArch та інших Linux-дистрибутивах.

Для старту найкраще використовувати звичайний proxy mode на порту 8080.
Якщо потрібен старий сценарій із перенаправленням трафіку через iptables, transparent mode усе ще працює,
але його краще використовувати тільки в контрольованому тестовому середовищі.

Для автоматизації краще використовувати mitmdump, для зручного перегляду в браузері —
mitmweb, а для інтерактивного аналізу в терміналі — mitmproxy.

Корисні посилання