Какой инструмент можно использовать для прослушивания трафика HTTP / HTTPS?

23

Я ищу инструмент командной строки, который может перехватывать запросы HTTP / HTTPS, извлекать такую ​​информацию, как: (содержимое, место назначения и т. Д.), Выполнять различные задачи анализа и, наконец, определить, следует ли отбросить запрос. Юридические запросы должны быть направлены в приложение.

Инструмент , который аналогичен по своей природе tcpdump, Wireshark или Snort , но работает на уровне HTTP.

Ссылки

SLM
источник

Ответы:

20

Попробуйте mitmproxy .

  • mitmproxy - это поддерживающий SSL посредник для посредника для HTTP. Он предоставляет консольный интерфейс, который позволяет проверять и редактировать потоки трафика на лету.

  • mitmdump - это версия mitmproxy для командной строки, с той же функциональностью, но без пользовательского интерфейса. Подумайте tcpdump для HTTP.

особенности

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

Скриншот

   образец сс

пример

Я установил пример приложения Jekyll Bootstrap , которое прослушивает порт 4000 на моем локальном хосте. Чтобы перехватить его трафик, я бы сделал следующее:

% mitmproxy --mode reverse:http://localhost:4000 -p 4001

Затем подключитесь к моему mitmproxy через порт 4001 из моего веб-браузера ( http://localhost:4001), в результате чего получится следующее:

   сс Mitmproxy W / JB # 1

Затем вы можете выбрать любой из GETрезультатов, чтобы увидеть информацию заголовка, связанную с этим GET:

   сс Mitmproxy W / JB # 2

Ссылки

SLM
источник
3

В некоторых ситуациях вы можете использовать прокси-сервер, который принимает входящие HTTP-запросы и отправляет исходящие HTTPS-запросы. В качестве примера я хотел бы захватить трафик между gitgithub.com. Я использовал mitmproxy :

mitmproxy -s httpser.py

где httpser.pyнаходится:

def request(context, flow):
  flow.request.scheme = 'https'
  flow.request.port = 443

Я тогда побежал gitтак:

export http_proxy="http://127.0.0.1:8080/"
git clone http://github.com/oxplot/difftr

Теперь, используя wiresharkпрослушивание localhost, можно захватить обычный трафик. Без прокси-сервера github перенаправил gitбы использовать HTTPS.

Mansour
источник
2

mitmproxy/mitmdump

Эквивалент tcpdumpдля HTTPS есть mitmdump. Вот шаги:

  1. Установить mitmproxyпакет (macOS:) brew install mitmproxy.
  2. Установите сертификат CA mitmproxy с помощью следующих команд:

    $ mitmdump --mode reverse:http://mitm.it/ -p 8080
    $ wget --content-disposition http://localhost:8080/cert/pem
    $ open mitmproxy-ca-cert.pem
    # Open, install and mark the certificate as trusted.
    

Теперь вот простой тест о том, как проверить обратный прокси:

  1. Run: mitmdump --mode reverse:https://example.com/ -p 4433.
  2. В другой оболочки, выполните следующую команду: curl https://localhost:4433.

    Теперь вы должны увидеть исходный код страницы, а mitmdumpкоманда должна выдать вывод наподобие:

    Proxy server listening at http://*:4433
    [::1]:49446: clientconnect
    [::1]:49446: GET https://example.com/ HTTP/2.0
              << 200  1.24k
    [::1]:49446: clientdisconnect
    

Для всего трафика просто запустите: mitmdumpили mitmproxy.

Смотрите mitmproxyстраницу документации для более подробной информации.


Чарльз Прокси

Если вы работаете в macOS, есть также приложение Charles Proxy (GUI), которое позволяет просматривать весь трафик HTTP и SSL / HTTPS между хостами.

kenorb
источник