Mit welchem ​​Tool kann ich HTTP / HTTPS-Datenverkehr aufspüren?

23

Ich bin auf der Suche nach einem Befehlszeilentool, das HTTP / HTTPS-Anforderungen abfangen, Informationen wie z. B .: (Inhalt, Ziel usw.) extrahieren, verschiedene Analyseaufgaben ausführen und schließlich bestimmen kann, ob die Anforderung gelöscht werden soll oder nicht. Rechtliche Anfragen müssen dann an die Bewerbung weitergeleitet werden.

Ein Tool tcpdump, das Wireshark oder Snort ähnelt , jedoch auf HTTP-Ebene ausgeführt wird.

Verweise

slm
quelle

Antworten:

20

Versuchen Sie es mitmproxy .

  • mitmproxy ist ein SSL-fähiger Man-in-the-Middle-Proxy für HTTP. Es bietet eine Konsolenschnittstelle, über die Verkehrsströme im laufenden Betrieb überprüft und bearbeitet werden können.

  • mitmdump ist die Befehlszeilenversion von mitmproxy mit derselben Funktionalität, jedoch ohne Benutzeroberfläche. Denken Sie an tcpdump für HTTP.

Eigenschaften

  • Fangen Sie HTTP-Anforderungen und -Antworten ab und ändern Sie sie im laufenden Betrieb.
  • Speichern Sie vollständige HTTP-Konversationen für eine spätere Wiedergabe und Analyse.
  • Wiederholen Sie die clientseitige HTTP-Konversation.
  • Wiederholen Sie die HTTP-Antworten eines zuvor aufgezeichneten Servers.
  • Reverse-Proxy-Modus, um Datenverkehr an einen bestimmten Server weiterzuleiten.
  • Nehmen Sie mithilfe von Python Skriptänderungen am HTTP-Datenverkehr vor.
  • SSL-Zertifikate zum Abfangen werden im laufenden Betrieb generiert.

Bildschirmfoto

   Probe ss

Beispiel

Ich habe eine Beispiel- Jekyll Bootstrap- App eingerichtet, die auf meinem lokalen Host Port 4000 überwacht. Um den Datenverkehr abzufangen, mache ich Folgendes:

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

Stellen Sie dann über meinen Webbrowser ( http://localhost:4001) eine Verbindung zu meinem Mitmproxy über Port 4001 her. Dies führt zu Mitmproxy:

   ss von mitmproxy w / JB # 1

Sie können dann eines der GETErgebnisse auswählen , um die dazugehörigen Header-Informationen anzuzeigen GET:

   ss von mitmproxy w / JB # 2

Verweise

slm
quelle
3

In einigen Situationen können Sie einen Proxy verwenden, der eingehende HTTP-Anforderungen akzeptiert und ausgehende HTTPS-Anforderungen ausführt. Als Beispiel wollte ich den Verkehr zwischen gitund github.com erfassen . Ich habe mitmproxy benutzt :

mitmproxy -s httpser.py

wo httpser.pyist

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

Ich lief dann gitso:

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

Wenn Sie jetzt wiresharkAbhören verwenden localhost, können Sie den normalen Verkehr erfassen. Ohne den Proxy würde github gitzur Verwendung von HTTPS umleiten .

Mansour
quelle
2

mitmproxy/mitmdump

Entspricht tcpdumpfür HTTPS mitmdump. Hier sind die Schritte:

  1. mitmproxyPaket installieren (macOS :) brew install mitmproxy.
  2. Installieren Sie das mitmproxy CA-Zertifikat mit den folgenden Befehlen:

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

Hier ist der einfache Test zum Testen von Reverse Proxy:

  1. Run: mitmdump --mode reverse:https://example.com/ -p 4433.
  2. In einer anderen Shell laufen: curl https://localhost:4433.

    Jetzt sollten Sie die Seitenquelle sehen und der mitmdumpBefehl sollte die Ausgabe wie folgt erzeugen:

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

Führen Sie für den gesamten Datenverkehr einfach Folgendes aus: mitmdumpoder mitmproxy.

Weitere Informationen finden Sie auf der mitmproxySeite : docs .


Charles Proxy

Unter MacOS gibt es auch die Charles Proxy- App (GUI), mit der Sie den gesamten HTTP- und SSL / HTTPS-Verkehr zwischen den Hosts anzeigen können.

Kenorb
quelle