Quale strumento posso usare per annusare il traffico HTTP / HTTPS?


23

Sto cercando uno strumento da riga di comando in grado di intercettare le richieste HTTP / HTTPS, estrarre informazioni come: (contenuto, destinazione, ecc.), Eseguire varie attività di analisi e infine determinare se la richiesta deve essere eliminata o meno. Le richieste legali devono essere inoltrate alla domanda.

Uno strumento di natura simile a tcpdump, Wireshark o Snort , ma che opera a livello HTTP.

Riferimenti

Risposte:


20

Prova mitmproxy .

  • mitmproxy è un proxy man-in-the-middle abilitato per SSL per HTTP. Fornisce un'interfaccia console che consente di ispezionare e modificare i flussi di traffico al volo.

  • mitmdump è la versione da riga di comando di mitmproxy, con le stesse funzionalità ma senza l'interfaccia utente. Pensa a tcpdump per HTTP.

Caratteristiche

  • Intercetta le richieste e le risposte HTTP e modificale al volo.
  • Salva conversazioni HTTP complete per la riproduzione e l'analisi successive.
  • Riproduci il lato client delle conversazioni HTTP.
  • Riproduci le risposte HTTP di un server precedentemente registrato.
  • Modalità proxy inversa per inoltrare il traffico a un server specificato.
  • Apporta modifiche tramite script al traffico HTTP utilizzando Python.
  • I certificati SSL per l'intercettazione vengono generati al volo.

Immagine dello schermo

   campione ss

Esempio

Ho installato un'app Jekyll Bootstrap di esempio che è in ascolto sulla porta 4000 sul mio localhost. Per intercettare il traffico, farei quanto segue:

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

Quindi connettiti al mio mitmproxy sulla porta 4001 dal mio browser web ( http://localhost:4001), risultando in questo mitmproxy:

   ss di mitmproxy w / JB # 1

È quindi possibile selezionare uno qualsiasi dei GETrisultati per visualizzare le informazioni di intestazione associate a quello GET:

   ss di mitmproxy w / JB # 2

Riferimenti


3

Per alcune situazioni, è possibile utilizzare un proxy che accetta richieste HTTP in entrata ed effettua richieste HTTPS in uscita. Ad esempio, volevo catturare il traffico tra gite github.com. Ho usato mitmproxy :

mitmproxy -s httpser.py

dove si httpser.pytrova:

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

Ho quindi corso in questo gitmodo:

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

Ora usando l' wiresharkascolto localhost, si può catturare il traffico normale. Senza il proxy, github reindirizzerebbe gitper usare HTTPS.


2

mitmproxy/mitmdump

Equivalente a tcpdumpper HTTPS è mitmdump. Ecco i passaggi:

  1. Installa mitmproxypacchetto (macOS:) brew install mitmproxy.
  2. Installare il certificato CA mitmproxy con i seguenti comandi:

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

Ora, ecco il semplice test su come testare il proxy inverso:

  1. Run: mitmdump --mode reverse:https://example.com/ -p 4433.
  2. In un'altra shell, eseguire: curl https://localhost:4433.

    Ora, dovresti vedere l'origine della pagina e il mitmdumpcomando dovrebbe produrre l'output come:

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

Per tutto il traffico, esegui semplicemente: mitmdumpo mitmproxy.

Vedi: mitmproxypagina dei documenti per maggiori dettagli.


Charles Proxy

Se usi macOS, c'è anche l' app Charles Proxy (GUI) che consente di visualizzare tutto il traffico HTTP e SSL / HTTPS tra gli host.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.