web-dev-qa-db-fra.com

Quel outil puis-je utiliser pour renifler le trafic http / https?

Je recherche un outil de ligne de commande pouvant intercepter les demandes HTTP/HTTPS, extraire des informations telles que: (contenu, destination, etc.), effectuer diverses tâches d'analyse et déterminer enfin si la demande doit être supprimée ou non. Les demandes juridiques doivent être transmises à la demande.

Un outil de nature similaire à tcpdump , Wireshark , ou snort , mais fonctionne au niveau HTTP.

Les références

25
slm

Essayez mitmproxy .

  • mitmProxy est une proxy d'homme-in-the-the-in-the-intermédiaire SSL pour HTTP. Il fournit une interface de console qui permet d'inspecter et de modifier les flux de trafic à la volée.

  • mitmdump est la version de ligne de commande de MitmProxy, avec la même fonctionnalité, mais sans l'interface utilisateur. Pensez tcpdump pour http.

Caractéristiques

  • Intercepter les demandes et les réponses HTTP et les modifier à la volée.
  • Enregistrez des conversations HTTP complètes pour une relecture et une analyse ultérieures.
  • Replayez le côté client d'une conversation HTTP.
  • Replayez les réponses HTTP d'un serveur précédemment enregistré.
  • Mode proxy inversé pour transférer le trafic vers un serveur spécifié.
  • Faites des modifications à script dans le trafic HTTP à l'aide de Python.
  • Les certificats SSL d'interception sont générés à la volée.

Capture d'écran

sample ss

Exemple

I Configurez un exemple JEKYLL BOOTSTRAP application qui écoute sur le port 4000 sur mon localhost. Pour intercepter le trafic, je ferais ce qui suit:

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

Ensuite, connectez-vous à mon mitmproxy sur le port 4001 de mon navigateur Web (http://localhost:4001), en résultant dans cela en mitmproxy:

ss of mitmproxy w/ JB #1

Vous pouvez ensuite sélectionner l'un des résultats GET pour voir les informations d'en-tête associées à ce GET:

ss of mitmproxy w/ JB #2

Les références

20
slm

Pour certaines situations, vous pouvez utiliser un proxy qui accepte les demandes HTTP entrantes et permet aux demandes HTTPS sortantes. À titre d'exemple, je voulais capturer le trafic entre git et github.com. J'ai utilisé mitmproxy :

mitmproxy -s httpser.py

httpser.py est:

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

J'ai ensuite couru git comme si:

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

Maintenant, en utilisant wireshark écoutant sur localhost, on peut capturer le trafic ordinaire. Sans le proxy, GitHub redirierait git pour utiliser HTTPS.

3
Mansour

mitmproxy/mitmdump

Equaltivant à tcpdump pour HTTPS est mitmdump. Voici les étapes:

  1. Installation mitmproxy paquet (MacOS: brew install mitmproxy).
  2. Installation certificat de ca mitmproxy ca par les commandes suivantes:

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

Maintenant, voici le test simple sur la manière de tester le proxy inverse:

  1. Courir: mitmdump --mode reverse:https://example.com/ -p 4433.
  2. Dans une autre coquille, courez: curl https://localhost:4433.

    Maintenant, vous devriez voir la page Source de la page et mitmdump _ doit produire la sortie comme suit:

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

Pour tout le trafic, il suffit de courir: mitmdump ou mitmproxy.

Voir: mitmproxy docs page Pour plus de détails.


Charles Proxy

Si vous êtes sur MacOS, il existe également Charles proxy App (GUI) qui permet de visualiser tout le trafic HTTP et SSL/HTTPS entre les hôtes.

2
kenorb