8 pontos por GN⁺ 2025-02-04 | 2 comentários | Compartilhar no WhatsApp
  • httptap é uma ferramenta que permite ver facilmente as requisições HTTP e HTTPS feitas por programas no Linux
    • É possível rastrear as requisições de rede de um comando específico usando httptap --
  • Por exemplo, ao enviar uma requisição para uma URL específica com o comando curl, o httptap exibe essa requisição e a resposta correspondente
    • O httptap não exige privilégios de root e não afeta o sistema como um todo
    • Atualmente funciona apenas no Linux, e portar para outros sistemas operacionais é difícil
  • Instalação
  • Início rápido
    • É possível enviar uma requisição HTTP com o comando curl e verificar a requisição e a resposta com o httptap
    • Ao usar a opção -L para seguir redirecionamentos, requisições HTTP adicionais são geradas
  • Exemplos de uso com Google Cloud e kubectl
    • É possível rastrear as requisições HTTP geradas ao listar instâncias de computação do Google Cloud com o comando gcloud compute instances list
    • É possível rastrear as requisições HTTP geradas ao listar recursos de um cluster Kubernetes com o comando kubectl get all
  • DNS-over-HTTP
    • É possível fazer requisições DNS-over-HTTP usando a opção --doh-url do curl
    • É possível verificar as requisições e respostas DNS com o httptap
  • Saída HAR
    • É possível exportar requisições e respostas HTTP para um arquivo HAR
    • O arquivo HAR pode ser visualizado em diversos viewers
  • Como funciona
    • O httptap usa namespaces de rede para executar comandos em um ambiente isolado
    • Cria um dispositivo TUN para rastrear o tráfego de rede e gera uma autoridade certificadora temporária para descriptografar o tráfego HTTPS
  • Observações
    • O processo não pode receber conexões de rede de entrada
    • É necessário ter permissão de acesso a /dev/net/tun
    • Todas as requisições ICMP echo são respondidas localmente, sem enviar pacotes ICMP para a rede real

2 comentários

 
halfenif 2025-02-06

foi desenvolvido na Monastic Academy em Vermont, nos EUA. Acreditamos que uma rotina monástica, e a prática do caminho espiritual budista de forma mais ampla, oferecem condições ideais para o desenvolvimento tecnológico.

Enquanto testava e dava uma olhada no GitHub. Treinamento monástico? Fiquei pensando se foi feito por pessoas assim como parte de uma busca por realização espiritual.

 
GN⁺ 2025-02-04
Comentários do Hacker News
  • A seção "How it was made" do README é tão interessante quanto a própria ferramenta

    • O desenvolvimento do software foi feito por meio de vida em comunidade e prática de meditação
    • A ideia de executar processos em um namespace de rede isolado é genial
    • Há interesse na parte de HTTPS, e são definidas variáveis de ambiente para instruir o programa a usar o bundle de CAs de um diretório temporário
    • Podem surgir problemas semelhantes aos de http_proxy, e o programa pode ignorar as variáveis
    • É montado um sistema de arquivos overlay em /etc/resolv.conf, e fica a dúvida se ajudaria montar o diretório /etc/ca-certificates usando o bundle de CAs temporário
  • O httptap é um rastreador de HTTP no escopo do processo que pode ser executado sem privilégios de root

    • Pode ser executado com httptap <command> para rastrear requisições e respostas HTTP/HTTPS na saída padrão
    • Executa o comando em um namespace de rede isolado e usa sua própria pilha TCP/IP
    • Não é um proxy HTTP, e não é necessário configurar o comando para usar um proxy HTTP
    • Decifra tráfego TLS em tempo real gerando uma CA
    • Não instala regras de iptables nem faz alterações globais no sistema
  • Outra ferramenta que permite analisar tráfego de rede sem privilégios de root é rootless Podman com Pasta

    • Adicionando a opção --network=pasta:--pcap,myfile.pcap, o tráfego de rede é gravado em um arquivo PCAP
    • Foi escrito um exemplo simples para analisar o arquivo PCAP gravado com o tshark
  • Usar um dispositivo TUN é uma ideia muito legal, e a seção "How it was made" é uma das melhores já vistas em um README no Github

    • Está sendo desenvolvida uma ferramenta chamada Subtrace, capaz de interceptar automaticamente requisições de entrada e saída
    • Usa Seccomp BPF para interceptar chamadas de sistema como socket, connect, recv e accept, e faz proxy de todas as conexões TCP por meio do Subtrace
    • Analisa requisições HTTP a partir do fluxo TCP e as mostra ao usuário na aba Network do Chrome DevTools
  • Pretendo usar isso imediatamente para depurar configuração de nginx

    • Atualmente uso curl -v para inspecionar manualmente a saída, mas essa ferramenta permite identificar de imediato loops de redirecionamento e afins
  • Recentemente foi implementado um recurso semelhante no mitmproxy, mas com outros trade-offs

    • Requer privilégios de root, e a instalação automática de certificados ainda não existe
    • Não é necessário executar o app em um namespace dedicado, então é possível capturar processos que já estão em execução
  • Outra abordagem usando LD_PRELOAD pode falhar com ELF estaticamente linkado, por exemplo binários em golang

  • Excelente uso da pilha TCP/IP em espaço de usuário do gVisor

  • O Mitmproxy v11.1 também consegue fazer algo semelhante