Que ferramenta posso usar para capturar o tráfego HTTP / HTTPS?

17

Estou procurando uma ferramenta de linha de comando que possa interceptar solicitações HTTP / HTTPS, extrair informações como: (conteúdo, destino, etc.), executar várias tarefas de análise e, finalmente, determinar se a solicitação deve ser descartada ou não . Os pedidos legais devem ser encaminhados para o aplicativo.

Uma ferramenta de natureza semelhante a tcpdump , Wireshark , ou Snort , mas opera no nível HTTP.

Referências

por slm 29.11.2013 / 09:54

3 respostas

14

Experimente o mitmproxy .

  • O mitmproxy é um proxy man-in-the-middle compatível com SSL para HTTP. Ele fornece uma interface de console que permite que os fluxos de tráfego sejam inspecionados e editados na hora.

  • O mitmdump é a versão de linha de comando do mitmproxy, com a mesma funcionalidade, mas sem a interface do usuário. Pense no tcpdump para HTTP.

Recursos

  • Intercepte solicitações e respostas HTTP e modifique-as imediatamente.
  • Salve conversas HTTP completas para reprodução e análise posteriores.
  • Reproduzir novamente o lado do cliente de uma conversa HTTP.
  • Reproduzir respostas HTTP de um servidor previamente gravado.
  • Inverter o modo de proxy para encaminhar o tráfego para um servidor especificado.
  • Faça alterações com script no tráfego HTTP usando o Python.
  • Certificados SSL para interceptação são gerados em tempo real.

Screenshot

Exemplo

Euconfigureiumaplicativodeexemplo Jekyll Bootstrap que está escutando na porta 4000 no meu localhost. Para interceptar o tráfego, faço o seguinte:

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

Em seguida, conecte-se ao meu mitmproxy na porta 4001 do meu navegador da Web ( http://localhost:4001 ), resultando em mitmproxy:

VocêpodeselecionarqualquerumdosresultadosGETparaverasinformaçõesdocabeçalhoassociadasaesseGET:

Referências

por 29.11.2013 / 09:59
3

Em algumas situações, você pode usar um proxy que aceite solicitações HTTP de entrada e faça solicitações HTTPS de saída. Por exemplo, eu queria capturar o tráfego entre git e github.com. Eu usei mitmproxy :

mitmproxy -s httpser.py

em que httpser.py é:

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

Eu então executei git da seguinte forma:

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

Agora usando wireshark ouvindo localhost , é possível capturar o tráfego simples. Sem o proxy, o github redirecionaria git para usar HTTPS.

    
por 10.11.2015 / 08:22
1

mitmproxy / mitmdump

Equivale a tcpdump para HTTPS é mitmdump . Aqui estão os passos:

  1. Instale o mitmproxy package (macOS: brew install mitmproxy ).
  2. Instale o certificado de CA mitmproxy com os seguintes 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.
    

Agora, aqui está o teste simples sobre como testar o proxy reverso:

  1. Executar: mitmdump --mode reverse:https://example.com/ -p 4433 .
  2. Em outro shell, execute: curl https://localhost:4433 .

    Agora, você deve ver a origem da página e o comando mitmdump deve produzir a saída 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 o tráfego, basta executar: mitmdump ou mitmproxy .

Consulte: mitmproxy docs page para obter mais detalhes.

Charles Proxy

Se você usa o macOS, há também o aplicativo Charles Proxy (GUI), que permite visualizar todos os recursos HTTP e SSL / Tráfego HTTPS entre os hosts.

    
por 09.03.2018 / 23:31