Qual ferramenta posso usar para detectar o tráfego HTTP / HTTPS?

23

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 que é de natureza semelhante a tcpdump, Wireshark , ou Snort , mas opera no nível HTTP.

Referências

slm
fonte

Respostas:

20

Tente mitmproxi .

  • mitmproxy é um proxy intermediário para SSL compatível com SSL. Ele fornece uma interface de console que permite que os fluxos de tráfego sejam inspecionados e editados em tempo real.

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

Recursos

  • Intercepte solicitações e respostas HTTP e modifique-as rapidamente.
  • Salve conversas HTTP completas para posterior reprodução e análise.
  • Repita o lado do cliente de uma conversa HTTP.
  • Repita as respostas HTTP de um servidor gravado anteriormente.
  • Modo proxy reverso para encaminhar tráfego para um servidor especificado.
  • Faça alterações de script no tráfego HTTP usando Python.
  • Certificados SSL para interceptação são gerados em tempo real.

Captura de tela

   amostra ss

Exemplo

Eu configurei um exemplo de aplicativo Jekyll Bootstrap que está escutando na porta 4000 no meu host local. Para interceptar o tráfego, eu faria 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 no seguinte mitmproxy:

   ss de mitmproxy com JB # 1

Você pode selecionar qualquer um dos GETresultados para ver as informações do cabeçalho associadas a isso GET:

   ss de mitmproxy com JB # 2

Referências

slm
fonte
3

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

mitmproxy -s httpser.py

onde httpser.pyé:

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

Então eu corri gitassim:

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

Agora, wiresharkouvindo localhost, pode-se capturar o tráfego simples. Sem o proxy, o github seria redirecionado gitpara usar HTTPS.

Mansour
fonte
2

mitmproxy/mitmdump

Equivalente a tcpdumpHTTPS é mitmdump. Aqui estão os passos:

  1. Instale o mitmproxypacote (macOS :) brew install mitmproxy.
  2. Instale o certificado CA mitmproxy pelos 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 de como testar o proxy reverso:

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

    Agora, você deve ver a fonte da página e o mitmdumpcomando 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: mitmdumpou mitmproxy.

Consulte a mitmproxypágina de documentos para obter mais detalhes.


Charles Proxy

Se você estiver no macOS, também há o aplicativo Charles Proxy (GUI), que permite visualizar todo o tráfego HTTP e SSL / HTTPS entre os hosts.

kenorb
fonte