You are here: Home » Sniffing и Spoofing » mitmproxy

mitmproxy

Описание mitmproxy

mitmproxy – это интерактивная консольная программа, которая позволяет перехватывать, инспектировать, модифицировать и повторно воспроизводить поток трафика.

Пакет mitmproxy включает в себя три программы:

  • Mitmproxy – это интерактивный, SSL-совместимый, человек-посередине прокси для HTTP с консольным интерфейсом.
  • mitmdump – это версия командной строки mitmproxy. Вспомните tcpdump для HTTP.
  • pathoc и pathod – это коварные приложения HTTP клиента и сервера, созданные чтобы позволить вам сконструировать практически любой мыслимый HTTP запрос, включая те, которые творчески нарушают стандарты.

Функции:

  • Перехват HTTP запросов и ответов и их модификация на лету.
  • Сохранение полной HTTP беседы для последующего воспроизведения и анализа.
  • Воспроизведение HTTP беседы со стороны клиента.
  • Воспроизведение ранее записанных HTTP ответов сервера.
  • Режим обратного прокси для перенаправления трафика на указанный сервер.
  • Режим прозрачного прокси на OSX и Linux.
  • Изменение HTTP трафика используя скрипты Python.
  • генерируемы на лету SSL сертификаты для перехвата.
  • И многое-многое другое.

Домашняя страница: https://mitmproxy.org/

Автор: Aldo Cortesi

Лицензия: GPLv3

Справка по mitmproxy

использование:

mitmproxy [опции]

Аргументы, которые начинаются с '--' (например, --version) могут быть также установлены в конфигурационном файле (~/.mitmproxy/common.conf или ~/.mitmproxy/mitmproxy.conf или указаны через --conf). Распознаваемый синтаксис пар настроек (ключ, значение) основывается на форматах INI и YAML (например, key=value или foo=TRUE). Если аргумент встречается более чем в одном месте, то значения командной строки переписывает значения конфигурационного файла, который, в свою очередь, переписывает значения по умолчанию.

опциональные аргументы:
  -h, --help            показать справку и выйти
  --conf CONFIG_FILE    путь до конфигурационного файла
  --version             показать номер версии программы и выйти
  --shortversion        показать короткий номер версии программы и выйти
  --anticache           Сдирать заголовки запросов, которые могут 
                        привести сервер к возвращению статуса 304-not-modified.
  --cadir CADIR         Расположение дефолтных mitmproxy CA файлов.
                        (~/.mitmproxy)
  --host                Использовать заголовок хоста для конструирования URL для показа.
  -q, --quiet           Тишина.
  -r RFILE, --read-flows RFILE
                        Читать поток из файла.
  -s "script.py --bar", --script "script.py --bar"
                        Запустить скрипт. Поместите в кавычки, чтобы передать
                        скрипту аргументы. Можно указывать много раз.
  -t FILTER, --stickycookie ФИЛЬТР
                        Установить фильтр sticky cookie. Сопоставляется с запросами.
  -u FILTER, --stickyauth ФИЛЬТР
                        Установить фильтр sticky auth filter. Сопоставляется с запросами.
  -v, --verbose         Увеличить вербальность записей событий.
  -w OUTFILE, --wfile OUTFILE
                        Записывать поток в файл.
  -a OUTFILE, --afile OUTFILE
                        Добавить поток к файлу.
  -z, --anticomp        Попробовать убедить сервер отправлять нам несжатые данные.
  -Z РАЗМЕР, --body-size-limit РАЗМЕР
                        Лимит размера в байтах тел HTTP запроса и ответа.
                        Понимает суффиксы k/m/g, к примеру, 3m для 3 мегабайт.
  --stream РАЗМЕР       Поток данных клиенту, если тело ответа 
                        превышает данный порог. В потоковом режиме тело
                        не будет храниться в любом случае. Понимает k/m/g 
                        суффиксы, например, 3m для 3 мегабайт.
  --upstream-auth UPSTREAM_AUTH
                        Прокси аутентификация: username:password
  --palette {dark,light,lowdark,lowlight,solarized_dark,solarized_light}
                        Выбрать цветовую палитру: solarized_light, light, lowdark,
                        dark, lowlight, solarized_dark
  --palette-transparent
                        Установить прозрачный фон для палитры.
  -e, --eventlog        Показать лог событий.
  -f, --follow          Следовать списку потока.
  --no-mouse            Отключить взаимодействие с мышью.

Режимы прокси:
  -R REVERSE_PROXY, --reverse REVERSE_PROXY
                        Переправить все запросы на вышестоящий HTTP сервер:
                        http[s][2http[s]]://хост[:порт]
  --socks               Установить режим прокси SOCKS5.
  -T, --transparent     Установить режим прозрачного прокси.
  -U UPSTREAM_PROXY, --upstream UPSTREAM_PROXY
                        Переправлять все запросы вышестоящему прокси серверу:
                        http://хост[:порт]

Опции прокси:
  -b ADDR, --bind-address ADDR
                        Адрес для привязки к прокси (по умолчанию все интерфейсы)
  -I HOST, --ignore HOST
                        Игнорировать хост и переправлять весь трафик без его
                        Обработки. В прозрачном режиме это рекомендуется 
                        использовать для (диапазона) IP адресов, а не имён хоста. 
                        В обычном режиме, только SSL игнорируется и должно 
                        использоваться имя хоста. Переданные значения 
                        интерпретируются как регулярное выражение и 
                        сопоставляется с IP или имени хоста. Можно передать 
                        несколько раз.
  --tcp ХОСТ            Универсальный TCP SSL прокси режим для всех 
                        хостов, которые соответствуют образцу. Похоже на 
                        --ignore, но SSL подключения перехватываются. 
                        Содержимое коммуникации печатается в журнале 
                        событий в вербальном режиме.
  -n, --no-server       Не запускать прокси сервер.
  -p ПОРТ, --port ПОРТ  Порт прокси сервера.
  --no-http2            Явно отключить поддержку HTTP/2. Если ваша 
                        версия OpenSSL поддерживает ALPN, HTTP/2 по 
                        умолчанию включён.
  --raw-tcp
  --no-raw-tcp          Явно включить/отключить экспериментальную 
                        поддержку сырых tcp. По умолчанию отключена. Значение 
                        по умолчанию будет изменено в будущих версиях.

SSL:
  --cert SPEC           Добавить сертификат SSL. SPEC имеет вид
                        "[domain=]path". Домен может включать подстановочные символы,
                        и если не указан, то эквивалентен "*". Файл в path -
                        это сертификат в формате PEM. Если приватный ключ
                        включён в PEM, он используется, в противном случае 
                        используется ключ по умолчанию в conf dir. Файл PEM 
                        должен содержать полную цель сертификатов, с leaf 
                        сертификатом в качестве первой записи. Можно 
                        передать множество раз.
  --ciphers-client CIPHERS_CLIENT
                        Установить поддерживаемые шифры для клиентских 
                        подключений. (Синтаксис OpenSSL)
  --ciphers-server CIPHERS_SERVER
                        Установить поддерживаемые шифры для серверных 
                        подключений. (Синтаксис OpenSSL)
  --client-certs CLIENTCERTS
                        Файл или директория с клиентским сертификатом.
  --no-upstream-cert    Не подключаться к вышестоящему серверу
                        для запроса подробностей по сертификату.
  --add-upstream-certs-to-client-chain
                        Добавить все сертификаты вышестоящего сервера в
                        цепочку сертификации, которые будут обслуживаться
                        в качестве статистов.
  --verify-upstream-cert
                        Проверить SSL/TLS сертификаты вышестоящего сервера и
                        потерпеть неудачу если недействительный или не представлен.
  --upstream-trusted-cadir SSL_VERIFY_UPSTREAM_TRUSTED_CADIR
                        Путь до директории доверенных CA сертификатов
                        для верификации вышестоящего сервера, 
                        подготовленных утилитой c_rehash.
  --upstream-trusted-ca SSL_VERIFY_UPSTREAM_TRUSTED_CA
                        Путь до доверенных CA сертификатов в формате PEM.
  --ssl-version-client {all,TLSv1_2,secure,TLSv1_1,TLSv1,SSLv3,SSLv2}
                        Установить поддерживаемые версии SSL/TLS для 
                        клиентских подключений. SSLv2, SSLv3 и 'all' являются 
                        НЕБЕЗОПАСНЫМИ. По умолчанию безопасные, 
                        которые TLS1.0+.
  --ssl-version-server {all,TLSv1_2,secure,TLSv1_1,TLSv1,SSLv3,SSLv2}
                        Установить поддерживаемые версии SSL/TLS для 
                        подключений сервера. SSLv2, SSLv3 и 'all' являются 
                        НЕБЕЗОПАСНЫМИ. По умолчанию безопасные, 
                        которые TLS1.0+.

Встроенные приложения:
  --noapp               Отключить встроенные приложения mitmproxy.
  --app-host host       Домен с которого обслуживать встроенные 
                        приложения. Для прозрачного режима используйте IP 
                        когда DNS запись для домена приложения отсутствует. По 
                        умолчанию: mitm.it
  --app-port 80         Порт с которого обслуживать встроенное приложение.

Клиентское воспроизведение:
  -c ПУТЬ, --client-replay ПУТЬ
                        Воспроизведение клиентских запросов из сохранённого файла

Серверное воспроизведение:
  -S ПУТЬ, --server-replay ПУТЬ
                        Воспроизведение серверных запросов из сохранённого файла.
  -k, --kill            Убить дополнительные запросы во время воспроизведения.
  --rheader RHEADERS    Заголовки запросов, которые нужно учитывать 
                        при воспроизведении. Можно указывать множество раз.
  --norefresh           Отключить обновления ответов, которые 
                        обновляют время в кукиз и заголовках 
                        для воспроизведённых ответов.
  --no-pop              Отключить pop ответа из потока ответа. Это делает
                        Возможным воспроизвести один и тот же ответ несколько раз.
  --replay-ignore-content
                        Игнорировать содержимое запроса при поиске
                        сохранённого потока для воспроизведения.
  --replay-ignore-payload-param REPLAY_IGNORE_PAYLOAD_PARAMS
                        Параметры полезной нагрузки запроса (application/x-www-form-
                        urlencoded или multipart/form-data) которые будут 
                        игнорироваться при поиске сохранённого потока 
                        для воспроизведения. Можно указать множество раз.
  --replay-ignore-param REPLAY_IGNORE_PARAMS
                        Параметры запроса для игнорирования во время поиска  
                        по сохранённому потоку для воспроизведения. 
                        Можно указать несколько раз.
  --replay-ignore-host  Игнорировать запросы хоста назначения 
                        во время поиска по сохранённому потоку
                        для воспроизведения. 


Замены:
  Замены имеют вид "/шаблон/регулярное выражение/замена", где
  разделителем может быть любой символ. 
  Подробности смотрите в документации.

  --replace ШАБЛОН     Замена по шаблону.
  --replace-from-file ПУТЬ
                        Замена по шаблону, когда заменитель 
                        расположен в указанном файле.

Установить заголовки:
  Заголовок указывается в формате "/шаблон/заголовок/значение"
  , где разделителем может быть любой символ. 
  Подробности смотрите в документации.

  --setheader ШАБЛОН   Установить шаблон заголовка.

Прокси аутентификация:
  Указание, каким пользователям позволено иметь доступ к 
  прокси и используемый для них метод аутентификации.

  --nonanonymous        Позволять доступ любому пользователю, пока 
                        указаны данные аутентификации.
  --singleuser ПОЛЬЗОВАТЕЛЬ     Позволять доступ единичному 
                        пользователю, указанному в username:password.
  --htpasswd ПУТЬ       Позволять доступ пользователям, указанным 
                        в файле Apache htpasswd.

Фильтры:
  По синтаксису выражений фильтров дополнительно смотрите
   справку mitmproxy.

  -i INTERCEPT, --intercept INTERCEPT
                        Выражение фильтра перехвата.
  -l LIMIT, --limit LIMIT
                        Выражение ограничительного фильтра.

Справка по mitmdump

использование:

mitmdump [опции] [фильтр]

Аргументы, которые начинаются с '--' (например, --version) могут быть также установлены в конфигурационном файле (~/.mitmproxy/common.conf или ~/.mitmproxy/mitmdump.conf или указаны через --conf). Распознаваемый синтаксис пар настроек (ключ, значение) основывается на форматах INI и YAML (например, key=value или foo=TRUE). Если аргумент встречается более чем в одном месте, то значения командной строки переписывает значения конфигурационного файла, который, в свою очередь, переписывает значения по умолчанию.

позиционные аргументы:
  args

опциональные аргументы:
  -h, --help            показать справку и выйти
  --conf CONFIG_FILE    путь до конфигурационного файла
  --version             показать номер версии программы и выйти
  --shortversion        показать короткий номер версии программы и выйти
  --anticache           Сдирать заголовки запросов, которые могут 
                        привести сервер к возвращению статуса 304-not-modified.
  --cadir CADIR         Расположение дефолтных mitmproxy CA файлов.
                        (~/.mitmproxy)
  --host                Использовать заголовок хоста для конструирования URL для показа.
  -q, --quiet           Тишина.
  -r RFILE, --read-flows RFILE
                        Читать поток из файла.
  -s "script.py --bar", --script "script.py --bar"
                        Запустить скрипт. Поместите в кавычки, чтобы передать
                        скрипту аргументы. Можно указывать много раз.
  -t FILTER, --stickycookie ФИЛЬТР
                        Установить фильтр sticky cookie. Сопоставляется с запросами.
  -u FILTER, --stickyauth ФИЛЬТР
                        Установить фильтр sticky auth filter. Сопоставляется с запросами.
  -v, --verbose         Увеличить вербальность записей событий.
  -w OUTFILE, --wfile OUTFILE
                        Записывать поток в файл.
  -a OUTFILE, --afile OUTFILE
                        Добавить поток к файлу.
  -z, --anticomp        Попробовать убедить сервер отправлять нам несжатые данные.
  -Z РАЗМЕР, --body-size-limit РАЗМЕР
                        Лимит размера в байтах тел HTTP запроса и ответа.
                        Понимает суффиксы k/m/g, к примеру, 3m для 3 мегабайт.
  --stream РАЗМЕР       Поток данных клиенту, если тело ответа 
                        превышает данный порог. В потоковом режиме тело
                        не будет храниться в любом случае. Понимает k/m/g 
                        суффиксы, например, 3m для 3 мегабайт.
  --upstream-auth UPSTREAM_AUTH
                        Прокси аутентификация: username:password
  --keepserving         Продолжать службу после 
                        клиентского воспроизведения или чтения 
                        файла. По умолчанию мы выходим.
  -d, --detail          Увеличить уровень отображения подробностей 
                        потока. Можно указать несколько раз.  

Режимы прокси:
  -R REVERSE_PROXY, --reverse REVERSE_PROXY
                        Переправить все запросы на вышестоящий HTTP сервер:
                        http[s][2http[s]]:// хост [:порт]
  --socks               Установить режим прокси SOCKS5.
  -T, --transparent     Установить режим прозрачного прокси.
  -U UPSTREAM_PROXY, --upstream UPSTREAM_PROXY
                        Переправлять все запросы вышестоящему прокси серверу:
                        http://хост[:порт]

Опции прокси:
  -b ADDR, --bind-address ADDR
                        Адрес для привязки к прокси (по умолчанию все интерфейсы)
  -I HOST, --ignore HOST
                        Игнорировать хост и переправлять весь трафик без его
                        Обработки. В прозрачном режиме это рекомендуется 
                        использовать для (диапазона) IP адресов, а не имён хоста. 
                        В обычном режиме, только SSL игнорируется и должно 
                        использоваться имя хоста. Переданные значения 
                        интерпретируются как регулярное выражение и 
                        сопоставляется с IP или имени хоста. Можно передать 
                        несколько раз.
  --tcp ХОСТ            Универсальный TCP SSL прокси режим для всех 
                        хостов, которые соответствуют образцу. Похоже на 
                        --ignore, но SSL подключения перехватываются. 
                        Содержимое коммуникации печатается в журнале 
                        событий в вербальном режиме.
  -n, --no-server       Не запускать прокси сервер.
  -p ПОРТ, --port ПОРТ  Порт прокси сервера.
  --no-http2            Явно отключить поддержку HTTP/2. Если ваша 
                        версия OpenSSL поддерживает ALPN, HTTP/2 по 
                        умолчанию включён.
  --raw-tcp
  --no-raw-tcp          Явно включить/отключить экспериментальную 
                        поддержку сырых tcp. По умолчанию отключена. Значение 
                        по умолчанию будет изменено в будущих версиях.

SSL:
  --cert SPEC           Добавить сертификат SSL. SPEC имеет вид
                        "[domain=]path". Домен может включать подстановочные символы,
                        и если не указан, то эквивалентен "*". Файл в path -
                        это сертификат в формате PEM. Если приватный ключ
                        включён в PEM, он используется, в противном случае 
                        используется ключ по умолчанию в conf dir. Файл PEM 
                        должен содержать полную цель сертификатов, с leaf 
                        сертификатом в качестве первой записи. Можно 
                        передать множество раз.
  --ciphers-client CIPHERS_CLIENT
                        Установить поддерживаемые шифры для клиентских 
                        подключений. (Синтаксис OpenSSL)
  --ciphers-server CIPHERS_SERVER
                        Установить поддерживаемые шифры для серверных 
                        подключений. (Синтаксис OpenSSL)
  --client-certs CLIENTCERTS
                        Файл или директория с клиентским сертификатом.
  --no-upstream-cert    Не подключаться к вышестоящему серверу
                        для запроса подробностей по сертификату.
  --add-upstream-certs-to-client-chain
                        Добавить все сертификаты вышестоящего сервера в
                        цепочку сертификации, которые будут обслуживаться
                        в качестве статистов.
  --verify-upstream-cert
                        Проверить SSL/TLS сертификаты вышестоящего сервера и
                        потерпеть неудачу если недействительный или не представлен.
  --upstream-trusted-cadir SSL_VERIFY_UPSTREAM_TRUSTED_CADIR
                        Путь до директории доверенных CA сертификатов
                        для верификации вышестоящего сервера, 
                        подготовленных утилитой c_rehash.
  --upstream-trusted-ca SSL_VERIFY_UPSTREAM_TRUSTED_CA
                        Путь до доверенных CA сертификатов в формате PEM.
  --ssl-version-client {all,TLSv1_2,secure,TLSv1_1,TLSv1,SSLv3,SSLv2}
                        Установить поддерживаемые версии SSL/TLS для 
                        клиентских подключений. SSLv2, SSLv3 и 'all' являются 
                        НЕБЕЗОПАСНЫМИ. По умолчанию безопасные, 
                        которые TLS1.0+.
  --ssl-version-server {all,TLSv1_2,secure,TLSv1_1,TLSv1,SSLv3,SSLv2}
                        Установить поддерживаемые версии SSL/TLS для 
                        подключений сервера. SSLv2, SSLv3 и 'all' являются 
                        НЕБЕЗОПАСНЫМИ. По умолчанию безопасные, 
                        которые TLS1.0+.

Встроенные приложения:
  --noapp               Отключить встроенные приложения mitmproxy.
  --app-host host       Домен с которого обслуживать встроенные 
                        приложения. Для прозрачного режима используйте IP 
                        когда DNS запись для домена приложения отсутствует. По 
                        умолчанию: mitm.it
  --app-port 80         Порт с которого обслуживать встроенное приложение.
 
Клиентское воспроизведение:
  -c ПУТЬ, --client-replay ПУТЬ
                        Воспроизведение клиентских запросов из сохранённого файла
 
Серверное воспроизведение:
  -S ПУТЬ, --server-replay ПУТЬ
                        Воспроизведение серверных запросов из сохранённого файла.
  -k, --kill            Убить дополнительные запросы во время воспроизведения.
  --rheader RHEADERS    Заголовки запросов, которые нужно учитывать 
                        при воспроизведении. Можно указывать множество раз.
  --norefresh           Отключить обновления ответов, которые 
                        обновляют время в кукиз и заголовках 
                        для воспроизведённых ответов.
  --no-pop              Отключить pop ответа из потока ответа. Это делает
                        Возможным воспроизвести один и тот же ответ несколько раз.
  --replay-ignore-content
                        Игнорировать содержимое запроса при поиске
                        сохранённого потока для воспроизведения.
  --replay-ignore-payload-param REPLAY_IGNORE_PAYLOAD_PARAMS
                        Параметры полезной нагрузки запроса (application/x-www-form-
                        urlencoded или multipart/form-data) которые будут 
                        игнорироваться при поиске сохранённого потока 
                        для воспроизведения. Можно указать множество раз.
  --replay-ignore-param REPLAY_IGNORE_PARAMS
                        Параметры запроса для игнорирования во время поиска  
                        по сохранённому потоку для воспроизведения. 
                        Можно указать несколько раз.
  --replay-ignore-host  Игнорировать запросы хоста назначения 
                        во время поиска по сохранённому потоку
                        для воспроизведения.

Замены:
  Замены имеют вид "/шаблон/регулярное выражение/замена", где
  разделителем может быть любой символ. 
  Подробности смотрите в документации.
 
  --replace ШАБЛОН     Замена по шаблону.
  --replace-from-file ПУТЬ
                        Замена по шаблону, когда заменитель 
                        расположен в указанном файле.
 
Установить заголовки:
  Заголовок указывается в формате "/шаблон/заголовок/значение"
  , где разделителем может быть любой символ. 
  Подробности смотрите в документации.
 
  --setheader ШАБЛОН   Установить шаблон заголовка.

Прокси аутентификация:
  Указание, каким пользователям позволено иметь доступ к 
  прокси и используемый для них метод аутентификации.
 
  --nonanonymous        Позволять доступ любому пользователю, пока 
                        указаны данные аутентификации.
  --singleuser ПОЛЬЗОВАТЕЛЬ     Позволять доступ единичному 
                        пользователю, указанному в username:password.
  --htpasswd ПУТЬ       Позволять доступ пользователям, указанным 
                        в файле Apache htpasswd.

Справка по pathoc

использование:

       pathoc [-h] [--show-uas] [--version] [-c HOST:PORT] [--memo-limit N]
              [-m] [-n N] [-w N] [-r] [-t TIMEOUT] [--http2]
              [--http2-skip-connection-preface] [-s] [-C CLIENTCERT] [-i SNI]
              [--ciphers CIPHERS]
              [--ssl-version {all,TLSv1_2,secure,TLSv1_1,TLSv1,SSLv3,SSLv2}]
              [-I IGNORECODES] [-S] [-e] [-o] [-q] [-p] [-T] [-x]
              [--http2-framedump]
              host[:port] requests [requests ...]

Коварный HTTP клиент.

Позиционные аргументы:
  host[:port]           Хост и порт для подключения
  requests              Спецификация запроса или путь до
                        файла со спецификациями запроса

опциональные аргументы:
  -h, --help            показать справку и выйти
  --show-uas            Напечатать сокращённый user agent и выйти.
  --version             показать номер версии программы и выйти
  -c HOST:PORT          Составить HTTP CONNECT для
                        подключения к заданному узлу.
  --memo-limit N        Остановиться, если мы не нашли 
                        действительный запрос после N попыток.
  -m                    Помнить спецификации и никогда не проигрывать одну 
                        и ту же дважды. Обратите внимание, что это означает, что 
                        запросы должны быть отображены в памяти, что означает 
                        большую генерацию данных, которые могут 
                        вызвать проблему.
  -n N                  Повторить N раз. Если 0 повторять бесконечно.
  -w N                  Ждать N секунд между каждым запросом.
  -r                    Выбрать случайный запрос из тех, которые указаны. 
                        Если они не указаны, то последовательно 
                        воспроизводить все запросы.
  -t TIMEOUT            Таймаут соединения
  --http2               Выполнять все запросы через единичное 
                        HTTP/2 соединение.
  --http2-skip-connection-preface
                        Пропустить предисловия HTTP/2 перед 
                        отправкой запроса.

SSL:
  -s                    Подключиться с SSL
  -C CLIENTCERT         Путь до файла, содержащего клиентский
                        сертификат и приватный ключ
  -i SNI                Индикация сервера имён SSL 
  --ciphers CIPHERS     Спецификация шифров SSL 
  --ssl-version {all,TLSv1_2,secure,TLSv1_1,TLSv1,SSLv3,SSLv2}
                        Установить поддерживаемые SSL/TLS версии. SSLv2, 
                        SSLv3 и 'all' являются НЕБЕЗОПАСНЫМИ. 
                        По умолчанию безопасные, которые TLS1.0+.

Контролирование вывода:
  Некоторые из этих опций увеличивают количество генерируемых 
  значений для записи – если вы генерируете большие объёмы 
  данных, то используйте их с осторожностью.

  -I IGNORECODES        Разделённый запятой список кодов ответов для игнорирования
  -S                    Показать информацию по SSL подключению
  -e                    Объяснить запросы
  -o                    Один выстрел – выйти после первого не игнорируемого запроса
  -q                    Печатать полный запрос
  -p                    Печатать полный ответ
  -T                    Игнорировать таймауты
  -x                    Вывод в формате hexdump 
  --http2-framedump     Выводить все полученные и отправленные фреймы HTTP/2 

Справка по pathod

использование:

       pathod [-h] [--version] [-p PORT] [-l ADDRESS] [-a ANCHOR]
              [-c CRAFTANCHOR] [--confdir CONFDIR] [-d STATICDIR] [-D]
              [-t TIMEOUT] [--limit-size SIZELIMIT] [--noapi] [--nohang]
              [--noweb] [--nocraft] [--webdebug] [-s] [--cn CN] [-C]
              [--cert SPEC] [--ciphers CIPHERS] [--san SAN]
              [--ssl-version {all,TLSv1_2,secure,TLSv1_1,TLSv1,SSLv3,SSLv2}]
              [-e] [-f LOGFILE] [-q] [-r] [-x] [--http2-framedump]

Паталогический HTTP/S демон.

опциональные аргументы:
  -h, --help            показать справку и выйти
  --version             показать номер версии программы и выйти
  -p ПОРТ               Порт. Укажите 0 для выбора произвольного пустого порта.
                        (9999)
  -l АДРЕС            Прослушиваемый адрес. (127.0.0.1)
  -a ANCHOR             Добавить якорь. Указывается как строка в формате
                        шаблон=спецификация или шаблон =путь_до_файла, где 
                        образец – это регулярное выражение.
  -c CRAFTANCHOR        Путь URL определяющий префикс для 
                        создания URL команд. (/p/)
  --confdir CONFDIR     Директория конфигурации. (~/.mitmproxy)
  -d STATICDIR          Директория для статичных файлов.
  -D                    Перевести в фон.
  -t TIMEOUT            Таймаут соединения
  --limit-size SIZELIMIT
                        Придел размера обсуживающегося ответа. 
                        Понимает суффиксы размеров, например, 100k.
  --noapi               Отключить API.
  --nohang              Отключить паузы во время генерирования составленных ответов.
  --noweb               Отключить и веб-интерфейс и API.
  --nocraft             Отключить составление ответов. Если указаны,
                        якоря, они всё равно продолжают работу.
  --webdebug            Режим отладки для веб-приложения (только разработка).

SSL:
  -s                    Запустить в режиме HTTPS.
  --cn CN               CN для сгенерированных SSL сертификатов.
                        По умолчанию: pathod.net
  -C                    Не ожидать SSL после запроса CONNECT.
  --cert SPEC           Добавить SSL сертификат. SPEC в формате
                        "[домен=]путь". Домен может включать подстановочные символы,
                        и эквивалентен "*" если не указан. Путь до файла
                        сертификата в формате PEM. Если приватный ключ
                        включён в PEM, то он используется, иначе используется
                        ключ по умолчанию из conf dir d. Можно указать множество раз.
  --ciphers CIPHERS     Спецификация шифров SSL 
  --san SAN             Альтернативное имя субъекта, для добавления 
                        к сертификату сервера. Можно указать много раз.
  --ssl-version {all,TLSv1_2,secure,TLSv1_1,TLSv1,SSLv3,SSLv2}
                        Установить поддерживаемые SSL/TLS версии. SSLv2, 
                        SSLv3 и 'all' являются НЕБЕЗОПАСНЫМИ. 
                        По умолчанию безопасные, которые TLS1.0+.

Контролирование вывода:
  Некоторые из этих опций увеличивают количество генерируемых 
  значений для записи – если вы генерируете большие объёмы 
  данных, то используйте их с осторожностью.

  -e                    Объяснить ответы
  -f LOGFILE            Журнал в файле.
  -q                    Записывать в журнал полные запросы
  -r                    Записывать в журнал полные ответы
  -x                    Вывод в формате hexdump 
  --http2-framedump     Выводить все полученные и отправленные фреймы HTTP/2

Руководство по mitmproxy

Страница man отсутствует.

Примеры запуска mitmproxy

Включаем IP форвардинг, поскольку система будет выступать в роли роутера:

echo 1 > /proc/sys/net/ipv4/ip_forward

Перенаправляем трафик с портов 80 и 443 интерфейса eth0 на порт 2139

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

Запускаем mitmproxy для прослушивания порта 2139.

mitmproxy -p 2139

Перед остановкой mitmproxy убедитесь, что вы не хотите сохранить какие-либо потоки. Если хотите, то w сделает это. Для выхода нажмите q и затем y.

Чтобы обратить сделанные ранее изменения iptables просто наберите:

iptables -t nat -F

(стереть/удалить таблицу целиком).

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

iptables -t nat -L

Установка mitmproxy

Программа предустановлена в Kali Linux.

Установка в BlackArch

Программа предустановлена в BlackArch.

Информация об установке в другие операционные системы будет добавлена позже.

Скриншоты mitmproxy

mitmproxy

mitmproxy-intercept-options 

Инструкции по mitmproxy

Ссылки на инструкции будут добавлены позже.

Близкие программы:

Рекомендуемые статьи: