Jakiego narzędzia mogę użyć do wąchania ruchu HTTP / HTTPS?

23

Szukam narzędzia wiersza polecenia, które może przechwytywać żądania HTTP / HTTPS, wyodrębniać informacje, takie jak: (treść, miejsce docelowe itp.), Wykonywać różne zadania analityczne i wreszcie określić, czy żądanie powinno zostać odrzucone, czy nie. Wnioski prawne należy następnie przesłać do aplikacji.

Narzędzie, które ma podobny charakter do tcpdump, Wireshark lub Snort , ale działa na poziomie HTTP.

Referencje

slm
źródło

Odpowiedzi:

20

Wypróbuj mitmproxy .

  • mitmproxy jest pośrednim pośrednikiem proxy obsługującym protokół SSL dla HTTP. Zapewnia interfejs konsoli, który umożliwia kontrolę i edycję przepływów ruchu na bieżąco.

  • mitmdump to wersja mitmproxy z linii poleceń, z tą samą funkcjonalnością, ale bez interfejsu użytkownika. Pomyśl o tcpdump dla HTTP.

cechy

  • Przechwytuj żądania HTTP i odpowiedzi i modyfikuj je w locie.
  • Zapisz pełne rozmowy HTTP do późniejszego odtworzenia i analizy.
  • Odtwórz po stronie klienta rozmowy HTTP.
  • Odtwórz odpowiedzi HTTP z wcześniej zarejestrowanego serwera.
  • Tryb odwrotnego proxy do przekazywania ruchu do określonego serwera.
  • Wprowadź skrypty do ruchu HTTP za pomocą Pythona.
  • Certyfikaty SSL do przechwytywania są generowane na bieżąco.

Zrzut ekranu

   próbka ss

Przykład

Instaluję przykładową aplikację Jekyll Bootstrap, która nasłuchuje na porcie 4000 na moim hoście lokalnym. Aby przechwycić ruch, wykonaj następujące czynności:

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

Następnie połącz się z moim mitmproxy na porcie 4001 z mojej przeglądarki internetowej ( http://localhost:4001), co skutkuje tym w mitmproxy:

   ss mitmproxy w / JB # 1

Następnie możesz wybrać dowolny z GETwyników, aby wyświetlić powiązane z nim informacje w nagłówku GET:

   ss mitmproxy w / JB # 2

Referencje

slm
źródło
3

W niektórych sytuacjach można użyć serwera proxy, który przyjmuje przychodzące żądania HTTP i wysyła wychodzące żądania HTTPS. Jako przykład chciałem uchwycić ruch pomiędzy giti github.com. Użyłem mitmproxy :

mitmproxy -s httpser.py

gdzie httpser.pyjest:

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

Następnie pobiegłem gittak:

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

Teraz przy wiresharkwłączonym nasłuchu localhostmożna uchwycić zwykły ruch. Bez proxy github przekierowałby gitna HTTPS.

Mansour
źródło
2

mitmproxy/mitmdump

Odpowiednikiem tcpdumpdla HTTPS jest mitmdump. Oto kroki:

  1. Zainstaluj mitmproxypakiet (macOS:) brew install mitmproxy.
  2. Zainstaluj certyfikat mitmproxy CA, wykonując następujące polecenia:

    $ 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.
    

Oto prosty test testowania odwrotnego proxy:

  1. Run: mitmdump --mode reverse:https://example.com/ -p 4433.
  2. W innej powłoki, uruchom: curl https://localhost:4433.

    Teraz powinieneś zobaczyć źródło strony, a mitmdumppolecenie powinno wygenerować dane wyjściowe takie jak:

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

Dla całego ruchu po prostu uruchom: mitmdumplub mitmproxy.

Zobacz: mitmproxystrona z dokumentami, aby uzyskać więcej informacji.


Charles Proxy

Jeśli korzystasz z systemu macOS, istnieje również aplikacja Charles Proxy (GUI), która umożliwia przeglądanie całego ruchu HTTP i SSL / HTTPS między hostami.

kenorb
źródło