Перехват и модификация HTTP POST (GET) запросов с помощью mitmproxy

archive view archive save

anon-snif.jpg mitmproxy - это interactive HTTPS proxy, который позволяет просто анализировать или захватывать и модифицировать POST (GET) запросы направленные через него по HTTP или HTTPS протоколу (поддерживает HTTP/2.0).

  1. О mitmproxy
  2. Установка mitmproxy в Debian 10
    1. ModuleNotFoundError: No module named mitmproxy.tools
    2. ModuleNotFoundError: No module named pyasn1.type
  3. Первый запуск и создание CA сертификата
    1. Ручное создание CA сертификата
  4. Удаление CA сертификата
  5. Установка mitmproxy CA сертификата в Chrome
    1. Неизвестная ошибка импорта CA сертификата
  6. GUI подсказки по установке CA сертификата
    1. http://mitm.it/#Linux
    2. http://mitm.it/#Android
    3. http://mitm.it/#Firefox
  7. Установка CA сертификата в ОС Debian
  8. Проверка установки CA сертификата
  9. Консольный режим mitmproxy
    1. Keybindings list
      1. Global Keybindings
      2. Common Keybindings
      3. Клавиши контекста списка соединений
      4. Клавиши контекста отдельного соединения
      5. Выражения фильтрации трафика
  10. Альтернативное FOSS для захвата трафика
    1. Wireshark
    2. Tcpdump
    3. PCAPdroid

О mitmproxy

Сайт программы - mitmproxy.org

Доступен в репозиториях Debian по-умолчанию.

$ apt-cache search mitmproxy
mitmproxy - SSL-capable man-in-the-middle HTTP proxy
 
$ apt-cache show mitmproxy
Package: mitmproxy
Version: 4.0.4-5
...
Description-en: SSL-capable man-in-the-middle HTTP proxy
 mitmproxy is an SSL-capable man-in-the-middle HTTP proxy. It provides
 a console interface that allows traffic flows to be inspected and
 edited on the fly.
 .
 Also shipped is mitmdump, the command-line version of mitmproxy, with
 the same functionality but without the frills. Think tcpdump for
 HTTP.
 .
 Features:
 - intercept and modify HTTP traffic on the fly
 - save HTTP conversations for later replay and analysis
 - replay both HTTP clients and servers
 - make scripted changes to HTTP traffic using Python
 - SSL interception certs generated on the fly

Справку по установке и использованию можно черпануть на сайте docs.mitmproxy.org

mitmproxy - штука мега-полезная. Что, к чему, почему, для чего, а главное зачем использовать mitmproxy, - пояснять не будем, кому нужно, тот знает зачем.

Сразу перейдём, как говорят криминалисты, ближе к телу.

Установка mitmproxy в Debian 10

mitmproxy устанавливать будем на х32-битной платформе из офф. репозитория Debian или с помощью pip3.

$ apt-get install mitmproxy

У кого х64 платформа, те могут скачать самую последнюю версию по ссылке: https://mitmproxy.org/downloads/

Для х32-битных платформ компиляций там не лежало и для какой именно платформы компиляция - не указано, определено методом научного «тыка».

$ ./mitmweb --version
bash: ./mitmweb: не удаётся запустить бинарный файл: Ошибка формата выполняемого файла
$ file ./mitmweb
./mitmweb: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=9aa10fdfbf5d72b09b2d97792cbec044e608aabd, for GNU/Linux 2.6.32, stripped

Самая последняя версия в Debian 10 репозитории - mitmproxy 4.0.4

$ mitmweb --version
Mitmproxy: 4.0.4
Python: 3.7.3
OpenSSL: OpenSSL 1.1.1n 15 Mar 2022
Platform: Linux-4.19.0-23-686-i686-with-debian-10.13

При установке из pip3 install mitmproxy в Debian 10 получим:

$ mitmweb --version
Mitmproxy: 5.3.0
Python: 3.7.3
OpenSSL: OpenSSL 1.1.1n 15 Mar 2022
Platform: Linux-4.19.0-23-686-i686-with-debian-10.13

ModuleNotFoundError: No module named mitmproxy.tools

После установки из pip3 install mitmproxy возможны проблемы с запуском под уч.записью простого пользователя:

$ mitmweb --version
Traceback (most recent call last):
  File "/usr/local/bin/mitmweb", line 6, in <module>
    from mitmproxy.tools.main import mitmweb
ModuleNotFoundError: No module named 'mitmproxy.tools'

При том, с root правами запуск проблем не вызывает:

$ sudo mitmweb --version
Mitmproxy: 5.3.0
Python:    3.7.3
OpenSSL:   OpenSSL 1.1.1n  15 Mar 2022
Platform:  Linux-4.19.0-23-686-i686-with-debian-10.13

Проверка прав на каталоги показала, что для обычного пользователя нет доступа к библиотекам:

$ ls -la /usr/local/lib/python3.7/dist-packages/mitmproxy
ls: невозможно открыть каталог '/usr/local/lib/python3.7/dist-packages/mitmproxy': Отказано в доступе
 
$ ls -la /usr/local/lib/python3.7/dist-packages/
итого 9128
drwxrwsr-x 53 root staff    4096 апр 21 14:27 .
drwxrwsr-x  3 root staff    4096 дек 24  2019 ..
...
drwxr-s---  3 root staff    4096 апр 21 14:10 mitmproxy

Так случилось потому, что однажды давным давно в приступе паранои в /root/.bashrc был установлен umask 027.

Потому, при установке некоторых быблиотек обычные пользователи лишились доступа к ним - меняем взад на umask 022:

$ sudo vi /root/.bashrc
 
# http://www.cyberciti.biz/tips/understanding-linux-unix-umask-value-usage.html
# umask value       Security level      Effective permission (directory)
# 022               Permissive          755
# 026               Moderate            751
# 027               Moderate            750
# 077               Severe              700
 
# the default umask is set in /etc/profile; for setting the umask
# for ssh logins, install and configure the libpam-umask package.
#umask 027
umask 022

Даём всем и каждому, налево и направо, права на чтение:

Только после полного отключения блокировщика скриптов и рекламы на этом месте появится полезная подсказка/ссылка/код/пример конфигурации/etc!

Потом на всяк . /root/.bashrc и проверяем арбайтен ли для юзверей:

$ mitmweb --version
Mitmproxy: 5.3.0
Python:    3.7.3
OpenSSL:   OpenSSL 1.1.1n  15 Mar 2022
Platform:  Linux-4.19.0-23-686-i686-with-debian-10.13

Если после всего выше описанного после установки вновь нет прав на запуск mitmweb, значит обслуживающий пакета решил не давать прав на запуск обычным пользователям, хотя и странное поведение.., ведь:

  • установка из apt позволяет обычным юзверям запускать mitmweb, а из pip тебе проблемы с правами на либы;
  • обычно при запуске запрещённого для смертных проверяется и uid/gid.

Был у Дебиана один глюк рогатый, из пакетов апача

Когда после обновления автоматом, постустановочным скриптом, отключался некий модуль и настойчиво подключался иной потому, что так решил обслуживающий пакета...А многим сисьадминам такое поведение мягко говоря не нравилось. Долго то неподобство продолжалось, пока однажды кого-то в усмерть оно не zАеb@ло, и не разгорелся ХолиВар, после которого (Хэроям Слива!) модули перестали отваливаться.., и настала Благодать Божия (ака Пэрэмога Пэрэможная)!

Как ещё вариант юзверь может попробовать сам себе поставить pip3 install mitmproxy, тогда либы встанут в ls ~/.local/lib (python2.7 python3.7) с правами юзверя.., но, потом может ~/.local/bin не оказаться в $PATH, да может и ещё чего-то там ещё...

ModuleNotFoundError: No module named pyasn1.type

Ещё один проблем, но уже с версиями:

mitmproxy 5.3.0 requires blinker<1.5,>=1.4, which is not installed.
mitmproxy 5.3.0 requires Brotli<1.1,>=1.0, which is not installed.
mitmproxy 5.3.0 requires click<8,>=7.0, which is not installed.
mitmproxy 5.3.0 requires kaitaistruct<0.10,>=0.7, which is not installed.
mitmproxy 5.3.0 requires passlib<1.8,>=1.6.5, which is not installed.
mitmproxy 5.3.0 requires pyperclip<1.9,>=1.6.0, which is not installed.
mitmproxy 5.3.0 requires tornado<7,>=4.3, which is not installed.
mitmproxy 5.3.0 has requirement pyasn1<0.5,>=0.3.1, but you'll have pyasn1 0.5.0 which is incompatible.
...
# pip3 install blinker Brotli click kaitaistruct passlib pyperclip tornado
 
# pip3 uninstall mitmproxy
Uninstalling mitmproxy-5.3.0:
  Would remove:
    /usr/local/bin/mitmdump
    /usr/local/bin/mitmproxy
    /usr/local/bin/mitmweb
    /usr/local/bin/pathoc
    /usr/local/bin/pathod
    /usr/local/lib/python3.7/dist-packages/mitmproxy-5.3.0.dist-info/*
    /usr/local/lib/python3.7/dist-packages/mitmproxy/*
    /usr/local/lib/python3.7/dist-packages/pathod/*
Proceed (y/n)? y
  Successfully uninstalled mitmproxy-5.3.0
# pip3 install mitmproxy
...
Successfully built blinker pyperclip kaitaistruct
Installing collected packages: click, pyasn1, Brotli, tornado, blinker, passlib,
 pyperclip, kaitaistruct, mitmproxy, h11
  Found existing installation: pyasn1 0.5.0
    Uninstalling pyasn1-0.5.0:
      Successfully uninstalled pyasn1-0.5.0
Successfully installed Brotli-1.0.9 blinker-1.4 click-7.1.2 h11-0.14.0 kaitaistruct-0.9 mitmproxy-5.3.0 passlib-1.7.4 pyasn1-0.4.8 pyperclip-1.8.2 tornado-6.2
#

Первый запуск и создание CA сертификата

Как гласит документация:

Quick Setup - mitmproxy
https://docs.mitmproxy.org/stable/concepts-certificates/#quick-setup

# Quick Setup

By far the easiest way to install the mitmproxy CA certificate is to use the built-in certificate installation app. To do this, start mitmproxy and configure your target device with the correct proxy settings. Now start a browser on the device, and visit the magic domain mitm.it. You should see something like this:

Click on the relevant icon, follow the setup instructions for the platform you’re on and you are good to go.

The mitmproxy certificate authority

The first time mitmproxy is run, it creates the keys for a certificate authority (CA) in the config directory (~/.mitmproxy by default). This CA is used for on-the-fly generation of dummy certificates for each visited website. Since your browser won’t trust the mitmproxy CA out of the box, you will either need to click through a TLS certificate warning on every domain, or install the CA certificate once so that it is trusted.

The following files are created:
Filename Contents
mitmproxy-ca.pem The certificate and the private key in PEM format.
mitmproxy-ca-cert.pem The certificate in PEM format. Use this to distribute on most non-Windows platforms.
mitmproxy-ca-cert.p12 The certificate in PKCS12 format. For use on Windows.
mitmproxy-ca-cert.cer Same file as .pem, but with an extension expected by some Android devices.

For security reasons, the mitmproxy CA is generated uniquely on the first start and is not shared between mitmproxy installations on different devices. This makes sure that other mitmproxy users cannot intercept your traffic.


Getting Started - mitmproxy
https://docs.mitmproxy.org/stable/overview-getting-started/

Getting Started

We assume you have already installed mitmproxy on your machine.

# Launch the tool you need

You can start any of our three tools from the command line / terminal.

mitmproxy gives you an interactive command-line interface
mitmweb gives you a browser-based GUI
mitmdump gives you non-interactive terminal output

If you use the command-line interface, we highly recommend you to take the tutorial to get started.

# Configure your browser or device

Mitmproxy starts as a regular HTTP proxy by default and listens on http://localhost:8080.

You need to configure your browser or device to route all traffic through mitmproxy. Browser versions and configurations options frequently change, so we recommend to simply search the web on how to configure an HTTP proxy for your system. Some operating system have a global settings, some browser have their own, other applications use environment variables, etc.

You can check that your web traffic is going through mitmproxy by browsing to http://mitm.it - it should present you with a simple page to install the mitmproxy Certificate Authority - which is also the next step. Follow the instructions for your OS / system and install the CA.

# Verifying everything works

At this point your running mitmproxy instance should already show the first HTTP flows from your client. You can test that all TLS-encrypted web traffic is working as expected by browsing to https://mitmproxy.org - it should show up as new flow and you can inspect it.

При первом запуске программы mitmproxy или mitmweb:

$ mitmweb
Web server listening at http://127.0.0.1:8081/
Proxy server listening at http://*:8080
 
...откроется окно браузера по-умолчанию...

Будут созданы сертификаты в директории ~/.mitmproxy/

$ ls -la ~/.mitmproxy/
итого 40
drwxr-x--- 2 yuzver yuzver 4096 апр 21 15:59 .
drwxr-xr-x 101 yuzver yuzver 12288 апр 21 15:59 ..
-rw-r----- 1 yuzver yuzver 1318 апр 21 15:59 mitmproxy-ca-cert.cer
-rw-r----- 1 yuzver yuzver 1140 апр 21 15:59 mitmproxy-ca-cert.p12
-rw-r----- 1 yuzver yuzver 1318 апр 21 15:59 mitmproxy-ca-cert.pem
-rw------- 1 yuzver yuzver 2529 апр 21 15:59 mitmproxy-ca.p12
-rw------- 1 yuzver yuzver 3022 апр 21 15:59 mitmproxy-ca.pem
-rw-r----- 1 yuzver yuzver 770 апр 21 15:59 mitmproxy-dhparam.pem

Если по каким-то причинам после первого запуска mitmproxy или mitmweb сертификатов не появилось,

Sometimes using the quick install app is not an option and you need to install the CA manually. Below is a list of pointers to manual certificate installation documentation for some common platforms. The mitmproxy CA cert is located in ~/.mitmproxy after it has been generated at the first start of mitmproxy.

тогда можно попробовать запросить его ручками.

Ручное создание CA сертификата

Ручное создание CA сертификата выполняется с помощью wget, после успешного запуска mitmproxy или mitmweb разумеется:

$ wget -e https_proxy=127.0.0.1:8080 --ca-certificate ~/.mitmproxy/mitmproxy-ca-cert.pem https://example.com/
--2023-04-21 02:58:57-- https://example.com/
Загружен сертификат CA «/home/yuzver/.mitmproxy/mitmproxy-ca-cert.pem»
Подключение к 127.0.0.1:8080... соединение установлено.
Proxy-запрос отправлен. Ожидание ответа… 200 OK
Длина: 1256 (1,2K) [text/html]
Сохранение в: «index.html»
 
index.html 100%[===================>] 1,23K --.-KB/s за 0s
 
2023-04-21 02:58:58 (11,4 MB/s) - «index.html» сохранён [1256/1256]
 
$ rm -rf index.html && ls ~/.mitmproxy
mitmproxy-ca-cert.cer mitmproxy-ca-cert.pem mitmproxy-ca.pem
mitmproxy-ca-cert.p12 mitmproxy-ca.p12 mitmproxy-dhparam.pem

Удаление CA сертификата

После удаления mitmproxy папка ~/.mitmproxy вместе с сертификатами сохраняется!

При необходимости удаления сертификатов потребуется пошарудить ручками.

Установка mitmproxy CA сертификата в Chrome

Chrome, точнее Chromium, мы запускаем с ограничением на использование CPU и файловой системы, в «обезьяннике» firejail:

$ cgexec -g blkio,cpu:limit1 firejail --name=chromium /usr/bin/chromium --disable-dev-shm-usage --disk-cache-dir=/tmp/chromium --proxy-server="http://127.0.0.1:8080" --password-store=basic %U

После запуска браузера открываем Центры сертификации - Импорт и импортируем mitmproxy-ca-cert.pem.

Настройки - Безопасность
chrome://settings

mitmproxy-ca-cert-in-chrome_1.jpg

Настройки - Безопасность - Настроить сертификаты
Управление настройками и сертификатами HTTPS/SSL
chrome://settings/security

mitmproxy-ca-cert-in-chrome_2.jpg

Настройки - Безопасность - Настроить сертификаты - Центры сертификации - Импорт
chrome://settings/certificates

mitmproxy-ca-cert-in-chrome_3.jpg

mitmproxy-ca-cert-in-chrome_4.jpg

Центр сертификации
Сертификат "mitmproxy" представляет центр сертификации
Настройки доверия
- Доверять этому сертификату при идентификации сайтов
- Доверять этому сертификату при идентификации адресов электронной почты
- Доверять этому сертификату при идентификации производителей ПО

mitmproxy-ca-cert-in-chrome_5.jpg

mitmproxy-ca-cert-in-chrome_6.jpg

Неизвестная ошибка импорта CA сертификата

«обезьянник» firejail дальше не пускает туда, where chrome store import certificates - где chrome хранит импортируемые сертификаты:

$ cgexec -g blkio,cpu:limit1 firejail --name=chromium /usr/bin/chromium --disable-dev-shm-usage --disk-cache-dir=/tmp/chromium --password-store=basic %U
Reading profile /home/yuzver/.config/firejail/chromium.profile
Reading profile /etc/firejail/disable-common.inc
Reading profile /etc/firejail/disable-programs.inc
Warning: networking feature is disabled in Firejail configuration file
Reading profile /etc/firejail/whitelist-common.inc
Reading profile /home/yuzver/.config/firejail/my-blacklist.inc
Warning: cgroup feature is disabled in Firejail configuration file
Parent pid 26207, child pid 26208
Child process initialized in 663.29 ms
...
[8:44:0421/161923.785501:ERROR:nss_util.cc(55)] Failed to create /home/yuzver/.pki/nssdb directory.

Изменяем firejail профиль chromium.profile:

$ vi /home/yuzver/.config/firejail/chromium.profile
# Chromium browser profile
noblacklist ~/.config/chromium
noblacklist ~/.cache/chromium
noblacklist ~/.pki
#noblacklist /usr/lib/
#noblacklist /usr/local/lib/
...
 
netfilter
 
whitelist ${DOWNLOADS}
mkdir ~/.config/chromium
whitelist ~/.config/chromium
mkdir ~/.cache/chromium
whitelist ~/.cache/chromium
mkdir ~/.pki
mkdir ~/.pki/nssdb
whitelist ~/.pki
...

Перезапускаем браузер, повторяем попытку установки mitmproxy CA сертификата в Chrome.

GUI подсказки по установке CA сертификата

mitmweb на локальном адресе 127.0.0.1 запустит два сервиса на портах:

  • 127.0.0.1:8080 - сам прокси, на использование которого должен быть настроен браузер;
  • 127.0.0.1:8081 - веб сервер обслуживающий команды управления запросами и самим mitmproxy.

Вкладка mitmproxy, пункт Install Certificates...

mitmproxy-web-server_1.jpg

mitmproxy-web-server_2.jpg

http://mitm.it/#Linux

mitmproxy-ca-cert-in-linux_1.jpg

Linux
Ubuntu/Debian
mv mitmproxy-ca-cert.pem /usr/local/share/ca-certificates/mitmproxy.crt
sudo update-ca-certificates

http://mitm.it/#Android

mitmproxy-ca-cert-in-android_1.jpg

Android
Android 10+
Open the downloaded CER file.
Enter mitmproxy (or anything else) as the certificate name.
For credential use, select VPN and apps.
Click OK.
Some Android distributions require you to install the certificate via Settings -> Security -> Advanced -> Encryption and credentials -> Install from storage instead.

Warning: Apps that target Android API Level 24 (introduced in 2016) and above only accept certificates from the system trust store (#2054). User-added CAs are not accepted unless the application manually opts in. Except for browsers, you need to patch most apps manually.

http://mitm.it/#Firefox

mitmproxy-ca-cert-in-firefox_1.jpg

Firefox (does not use the OS root certificates)
Firefox
Open Options -> Privacy & Security and click View Certificates... at the bottom of the page.
Click Import... and select the downloaded certificate.
Enable Trust this CA to identify websites and click OK.

Установка CA сертификата в ОС Debian

Установка CA сертификата глобально в саму операционную систему Debian (Installing The mitmproxy Cert on Debian Based Linux Distributions):

$ mkdir /usr/local/share/ca-certificates/extra
$ cp /home/yuzver/.mitmproxy/mitmproxy-ca-cert.cer \
 /usr/local/share/ca-certificates/extra/mitmproxy-ca-cert.crt
$ sudo update-ca-certificates
Updating certificates in /etc/ssl/certs...
1 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d...
 
Adding debian:mitmproxy-ca-cert.pem
done.
Updating Mono key store
Mono Certificate Store Sync - version 5.18.0.240
Populate Mono certificate store from a concatenated list of certificates.
Copyright 2002, 2003 Motus Technologies. Copyright 2004-2008 Novell. BSD licensed.
 
Importing into legacy system store:
I already trust 141, your new list has 138
Certificate added: CN=mitmproxy, O=mitmproxy
1 new root certificates were added to your trust store.
Import process completed.
 
Importing into BTLS system store:
I already trust 137, your new list has 138
Certificate added: CN=mitmproxy, O=mitmproxy
1 new root certificates were added to your trust store.
Import process completed.
Done
done.

Данный способ установки подразумевает, что все браузеры должны будут автоматически доверять mitmproxy сертификату без необходимости ручного импорта в каждый браузер отдельно.

Но, при использовании «обезьянников» и/или «песочниц» типа firejail, могут возникнуть подобные уже упоминавшимся выше проблемы.

Удаление CA сертификата из операционной системы Debian:

$ rm -rf /usr/local/share/ca-certificates/extra
$ sudo update-ca-certificates
Updating certificates in /etc/ssl/certs...
0 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d...
 
done.
Updating Mono key store
Mono Certificate Store Sync - version 5.18.0.240
Populate Mono certificate store from a concatenated list of certificates.
Copyright 2002, 2003 Motus Technologies. Copyright 2004-2008 Novell. BSD licensed.
 
Importing into legacy system store:
I already trust 142, your new list has 137
1 previously trusted certificates were removed.
Certificate removed: CN=mitmproxy, O=mitmproxy
Import process completed.
 
Importing into BTLS system store:
I already trust 138, your new list has 137
1 previously trusted certificates were removed.
Certificate removed: CN=mitmproxy, O=mitmproxy
Import process completed.
Done
done.
$

Проверка установки CA сертификата

mitmproxy-ca-cert-in-chrome_7.jpg

Проверка установки CA сертификата выполняется путём направления SSL/TLS/HTTPS трафика через mitmproxy, запущенного по-умолчанию на порту 8080.

Открыв в браузере https://www.google.com/ тыкаем на значек замка в адресной строке Сведения о сайте - Сертификат (действительный)

mitmproxy-ca-cert-in-chrome_7_1.jpg

Общее имя (CN) mitmproxy
Организация (O) mitmproxy
Подразделение (OU) <Не является частью сертификата>
Дата выдачи среда, 19 апреля 2023 г., 07:19:16
Срок действия воскресенье, 20 апреля 2025 г., 07:19:16

mitmproxy-ca-cert-in-chrome_7_2.jpg

Консольный режим mitmproxy

mitmproxy-intercept-request_1.jpg

Помним, что у нас есть три варианта:

You can start any of our three tools from the command line / terminal.

  • mitmproxy gives you an interactive command-line interface
  • mitmweb gives you a browser-based GUI
  • mitmdump gives you non-interactive terminal output

mitmweb - это браузерная версия.

sad-programmer_lite mitmproxy - это консольная (текстовая) версия, которая будет особо полезной при удалённом использовании, на слабых 32х-битных платформах или сильно нагруженных ПК, для «Велыкых и Лютых Пэрэмог».

Правда нужно будет вместо тупого передвигания мыши по экрану поработать ручками и запомнить с десяток комбинаций клавиш из Keybindings list используемых для управления, захвата и манипулирования GET/POST запросами.

mitmproxy-intercept-request_2.jpg

mitmproxy-intercept-request_3.jpg

hacker-access-granted.gif

Keybindings list

mitmproxy-cmd-help_1.jpg

Для разного контекста просмотра трафика в консольном режиме mitmproxy, существует отдельный набор клавиш управления и делятся на категории:

  • Common Keybindings - общие сочетания клавиш;
  • Global Keybindings - глобальные сочетания клавиш;
  • Keybindings for this view - сочетания клавиш текущего контеста, например листинг списка всех соединений или отдельно выбранного.

Первые две категории содержат общий для всех контекстов набор клавиш управления, например: влево, вправо, вверх, вниз и т.д.

Keybindings for this view содержит список клавиш управления, одни и теже комбинации которых в разных контекстах отображения могут иметь различное назначение.

Справка в консольном режиме mitmproxy в любом контексте вызывается комбинацией Shift+?.

Global Keybindings

Глобальные комбинации клавиш управления консольным режимом mitmproxy:

Global Keybindings
-           Cycle to next layout
:           Command prompt
?           View help
B           Start an attached browser
C           View commands
E           View event log
G           Go to end
I           Toggle whether the filtering via the intercept option is enabled
K           View key bindings
O           View options
P           View flow details
Q           Exit immediately
W           Stream to file
enter       Select
g           Go to start
h           Left
i           Set intercept
j           Down
k           Up
l           Right
q           Exit the current view
space       Page down
tab         Next
ctrl b      Page up
ctrl f      Page down
ctrl right  Focus next layout pane
shift tab   Focus next layout pane

Common Keybindings

Общие комбинации клавиш управления консольным режимом mitmproxy:

Common Keybindings
:      Command prompt
E      View event log
O      View options
enter  Select
q      Exit the current view
tab    Next

Клавиши контекста списка соединений

Этот справка по клавишам управления списком захваченных соединений:

Keybindings for this view
A       Resume all intercepted flows
D       Duplicate flow
F       Set focus follow
L       Load flows from file
M       Toggle viewing marked flows
S       Start server replay
U       Un-set all marks
V       Revert changes to this flow
X       Kill this flow
Z       Purge all flows not showing
a       Resume this intercepted flow
b       Save response body to file
d       Delete flow from view
e       Export this flow to file
f       Set view filter
m       Toggle mark on this flow
n       Create a new flow
o       Set flow list order
r       Replay this flow
v       Reverse flow list order
w       Save listed flows to file
z       Clear flow list
|       Run a script on this flow
ctrl l  Send cuts to clipboard

Клавиши контекста отдельного соединения

Этот справка по клавишам управления отдельно выбранного (клавишей Enter) соединения.

Keybindings for this view
A       Resume all intercepted flows
D       Duplicate flow
V       Revert changes to this flow
a       Resume this intercepted flow
b       Save response body to file
d       Delete flow from view
e       Edit a flow component
f       Toggle viewing full contents on this flow
m       Set flow view mode
p       Go to previous flow
r       Replay this flow
space   Go to next flow
v       View flow body in an external viewer
w       Save flow to file
z       Encode/decode flow body
|       Run a script on this flow
ctrl l  Send cuts to clipboard

Выражения фильтрации трафика

Например: ~m POST ~d example.com - для захвата (клавиша i) и/или фильтрации (клавиша f) соединений методом POST с домена example.com

Этот справка по выражениям для фильтрации перехваченных соединений. Остаются неизменными в любых контекстах просмотра трафика в консоли mitmproxy.

              Filter Expressions
    ~a          Match asset in response: CSS, Javascript, Flash, images.
    ~b regex    Body
    ~bq regex   Request body
    ~bs regex   Response body
    ~c int      HTTP response code
    ~d regex    Domain
    ~dst regex  Match destination address
    ~e          Match error
    ~h regex    Header
    ~hq regex   Request header
    ~hs regex   Response header
    ~http       Match HTTP flows
    ~m regex    Method
    ~marked     Match marked flows
    ~q          Match request with no response
    ~s          Match response
    ~src regex  Match source address
    ~t regex    Content-type header
    ~tcp        Match TCP flows
    ~tq regex   Request Content-Type header
    ~ts regex   Response Content-Type header
    ~u regex    URL
    ~websocket  Match WebSocket flows (and HTTP-WebSocket handshake flows)
    !           unary not
    &           and
    |           or
    (...)       grouping
 
    Regexes are Python-style.
    Regexes can be specified as quoted strings.
    Header matching (~h, ~hq, ~hs) is against a string of the form "name:
value".
    Expressions with no operators are regex matches against URL.
    Default binary operator is &.
 
    Examples:
 
    google\.com               Url containing \"google.com
    ~q ~b test                Requests where body contains \"test\"
    !(~q & ~t \"text/html\")  Anything but requests with a text/html content
                              type.

Подробнее в документации:

Альтернативное FOSS для захвата трафика

Wireshark

Wireshark — это приложение, которое «знает» структуру самых различных сетевых протоколов, и поэтому позволяет разобрать сетевой пакет, отображая значение каждого поля протокола любого уровня. Поскольку для захвата пакетов используется pcap, существует возможность захвата данных только из тех сетей, которые поддерживаются этой библиотекой. Тем не менее, Wireshark умеет работать с множеством форматов входных данных, соответственно, можно открывать файлы данных, захваченных другими программами, что расширяет возможности захвата. Для расширения возможностей программы возможно использование скриптового языка Lua[9].

$ sudo apt-get install wireshark wireshark-common wireshark-doc wireshark-qt

Tcpdump

tcpdump (от TCP и англ. dump — свалка, сбрасывать) — утилита UNIX (есть клон для Windows), позволяющая перехватывать и анализировать сетевой трафик, проходящий через компьютер, на котором запущена данная программа.

Для выполнения программы требуется наличие прав суперпользователя и прямой доступ к устройству (так, например, запуск из Jail во FreeBSD невозможен).

$ sudo tcpdump

PCAPdroid

PCAPdroid is a privacy-friendly open source app which lets you track, analyze and block the connections made by the other apps in your device. It also allows you to export a PCAP dump of the traffic, inspect HTTP, decrypt TLS traffic and much more!

PCAPdroid simulates a VPN in order to capture the network traffic without root. It does not use a remote VPN server, instead data is processed locally on the device.


Об авторе
Иван Шаман
Меня нет ни в Инстаграмме ни в Фейсбуке, я просто хожу по улицам и рассказываю первым встречным: сколько зарабатываю; с кем дружу; где живу и чем дышу. У меня даже появилось несколько подписчиков: ПСИХоЛОХ и участковый полицай!
Ещё статьи автора

Нет комментариев

Вы можете стать первым, кто добавит комментарий к этой записи.

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

АХТУНГ! Все комменты гостей модерасятся модерастом.
  1. Мессаги исключительно рекламного содержания, либо содержащие только одни оценочные суждения типа "круто" ("отлично", "спасибо", "автор дебил" и т.п.) не публикуются;
  2. Злостным спамерам, пранкерам и прочей сетевой нечисти рекомендуем напрасно не тратить своего времени и удовлетворять свои больные фантазии на специализированных Интернет ресурсах!;
  3. Разумная обоснованная критика, замечания, дополнения приветствуются. Поля помеченные символом * обязательны к заполнению.


Защитный код
Обновить

Комментарии в блоге
Новое на форуме