¿Qué herramienta puedo usar para detectar el tráfico HTTP / HTTPS?

23

Estoy buscando una herramienta de línea de comandos que pueda interceptar solicitudes HTTP / HTTPS, extraer información como: (contenido, destino, etc.), realizar diversas tareas de análisis y finalmente determinar si la solicitud debe descartarse o no. Las solicitudes legales deben ser enviadas a la aplicación.

Una herramienta que es de naturaleza similar a tcpdump, Wireshark , o Snort , pero opera en el nivel HTTP.

Referencias

slm
fuente

Respuestas:

20

Prueba mitmproxy .

  • mitmproxy es un proxy man-in-the-middle con capacidad SSL para HTTP. Proporciona una interfaz de consola que permite que los flujos de tráfico sean inspeccionados y editados sobre la marcha.

  • mitmdump es la versión de línea de comandos de mitmproxy, con la misma funcionalidad pero sin la interfaz de usuario. Piense en tcpdump para HTTP.

Caracteristicas

  • Intercepte las solicitudes y respuestas HTTP y modifíquelas sobre la marcha.
  • Guarde conversaciones HTTP completas para su posterior reproducción y análisis.
  • Reproduzca el lado del cliente de las conversaciones HTTP.
  • Reproduzca las respuestas HTTP de un servidor previamente grabado.
  • Invierta el modo proxy para reenviar el tráfico a un servidor específico.
  • Realice cambios con secuencia de comandos en el tráfico HTTP utilizando Python.
  • Los certificados SSL para la intercepción se generan sobre la marcha.

Captura de pantalla

   muestra ss

Ejemplo

Configuré una aplicación Jekyll Bootstrap de ejemplo que escucha en el puerto 4000 en mi host local. Para interceptar su tráfico, haría lo siguiente:

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

Luego, conéctese a mi mitmproxy en el puerto 4001 desde mi navegador web ( http://localhost:4001), dando como resultado esto en mitmproxy:

   ss de mitmproxy con JB # 1

Luego puede seleccionar cualquiera de los GETresultados para ver la información del encabezado asociada a eso GET:

   ss de mitmproxy con JB # 2

Referencias

slm
fuente
3

Para algunas situaciones, puede usar un proxy que acepte solicitudes HTTP entrantes y realice solicitudes HTTPS salientes. Como ejemplo, quería capturar el tráfico entre gity github.com. Solía mitmproxy :

mitmproxy -s httpser.py

donde httpser.pyes:

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

Entonces corrí gitasí:

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

Ahora, usando la wiresharkescucha localhost, uno puede capturar el tráfico simple. Sin el proxy, github redirigiría gitpara usar HTTPS.

Mansour
fuente
2

mitmproxy/ /mitmdump

Equivalente a tcpdumppara HTTPS es mitmdump. Aquí están los pasos:

  1. Instalar mitmproxypaquete (macOS:) brew install mitmproxy.
  2. Instale el certificado mitmproxy CA mediante los siguientes comandos:

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

Ahora, aquí está la prueba simple sobre cómo probar el proxy inverso:

  1. Ejecute: mitmdump --mode reverse:https://example.com/ -p 4433.
  2. En otra shell, ejecute: curl https://localhost:4433.

    Ahora, debería ver la fuente de la página y el mitmdumpcomando debería producir la salida como:

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

Para todo el tráfico, simplemente ejecute: mitmdumpo mitmproxy.

Ver: mitmproxypágina de documentos para más detalles.


Charles Proxy

Si está en macOS, también existe la aplicación Charles Proxy (GUI) que permite ver todo el tráfico HTTP y SSL / HTTPS entre los hosts.

kenorb
fuente