
Captura de texto simples SSL/TLS sem um certificado CA usando eBPF. Suportado em kernels Linux/Android para amd64/arm64.
汉字 | Inglês
[!IMPORTANT]
Suporta Linux/Android em x86_64 (kernel 4.18+) e aarch64 (kernel 5.5+). Os requisitos de versão do kernel se aplicam por arquitetura de CPU tanto para Linux quanto para Android. Necessita de permissão ROOT ou capacidades Linux específicas. Não suporta sistemas Windows e macOS.
[!TIP] suporta Linux/Android x86_64/aarch64.
Baixe o arquivo zip ELF release, descompacte e use com o comando sudo ecapture --help.
[!TIP] Apenas Linux.
# pull docker image
docker pull gojue/ecapture:latest
# run
docker run --rm --privileged=true --net=host -v ${HOST_PATH}:${CONTAINER_PATH} gojue/ecapture ARGS
⚠️ Nota de Segurança:
--privileged=trueconcede acesso total ao host. Para uso em produção, considere capacidades específicas. Veja Guia de Privilégios Mínimos.
veja Docker Hub para mais informações.
sudo ecapture tls
O eCapture detectará automaticamente a biblioteca OpenSSL do sistema e começará a capturar texto simples. Quando você fizer uma requisição HTTPS (por exemplo, curl https://google.com), a requisição e resposta capturadas serão exibidas:
...
INF module started successfully. moduleName=EBPFProbeOPENSSL
??? UUID:233851_233851_curl_5_1_172.16.71.1:51837, Name:HTTP2Request, Type:2, Length:304
header field ":method" = "GET"
header field ":path" = "/"
header field ":authority" = "google.com"
...
📄 Para exemplos completos de saída, veja docs/example-outputs.md.
A ferramenta eCapture é composta por 8 módulos que suportam respectivamente a captura de texto simples para bibliotecas de criptografia TLS/SSL como OpenSSL, GnuTLS, NSPR, BoringSSL e GoTLS. Além disso, facilita auditorias de software para aplicações Bash, MySQL e PostgreSQL.
ecapture -h para ver a lista de subcomandos.O eCapture procura o arquivo /etc/ld.so.conf por padrão, para encontrar diretórios de carregamento do arquivo SO, e localiza as bibliotecas compartilhadas openssl. Ou você pode usar a flag --libssl para definir o caminho da biblioteca compartilhada.
Se o programa alvo for compilado estaticamente, você pode definir o caminho do programa diretamente como valor da flag --libssl.
O módulo OpenSSL suporta três modos de captura:
pcap/pcapng armazena os dados de texto simples capturados no formato pcap-NG.keylog/key salva as chaves de handshake TLS em um arquivo.text captura diretamente os dados de texto simples, seja exibindo em um arquivo especificado ou imprimindo na linha de comando.Suporta http 1.0/1.1/2.0 criptografado por TLS sobre TCP, e protocolo http3 QUIC sobre UDP.
Você pode especificar -m pcap ou -m pcapng e usá-lo em conjunto com os parâmetros --pcapfile e -i. O valor padrão de --pcapfile é ecapture_openssl.pcapng.
sudo ecapture tls -m pcap -i eth0 --pcapfile=ecapture.pcapng tcp port 443
Este comando salva os pacotes de dados de texto simples capturados como um arquivo pcapng, que pode ser visualizado usando Wireshark.
📄 Para a saída completa do modo pcapng, veja docs/example-outputs.md.
Você pode especificar -m keylog ou -m key e usá-lo em conjunto com o parâmetro --keylogfile, cujo valor padrão é ecapture_masterkey.log.
As informações de Master Secret do TLS OpenSSL capturadas são salvas em --keylogfile. Você também pode habilitar a captura de pacotes do tcpdump e depois usar o Wireshark para abrir o arquivo e definir o caminho do Master Secret para visualizar pacotes de dados de texto simples.
sudo ecapture tls -m keylog -keylogfile=openssl_keylog.log
Você também pode usar diretamente o software tshark para descriptografia e exibição em tempo real:
tshark -o tls.keylog_file:ecapture_masterkey.log -Y http -T fields -e http.file_data -f "port 443" -i eth0
sudo ecapture tls -m text exibirá todos os pacotes de dados de texto simples. (A partir da v0.7.0, ele não captura mais informações SSLKEYLOG.)
Semelhante ao módulo OpenSSL.
capturar contexto de texto tls.
Passo 1:
sudo ecapture gotls --elfpath=/home/cfc4n/go_https_client --hex
Passo 2:
/home/cfc4n/go_https_client
sudo ecapture gotls -h
como os módulos bash\mysqld\postgres, você pode usar ecapture -h para ver a lista de subcomandos.
eCaptureQ é um cliente de interface gráfica de usuário multiplataforma para o eCapture, visualizando as capacidades de captura TLS eBPF. Construído usando a pilha de tecnologia Rust + Tauri + React, fornece uma interface responsiva em tempo real, permitindo análise fácil de tráfego criptografado sem a necessidade de certificados CA. Simplifica técnicas complexas de captura eBPF, tornando-as fáceis de usar. Suporta dois modos:
Projetos de Encaminhamento de Eventos
https://github.com/user-attachments/assets/c8b7a84d-58eb-4fdb-9843-f775c97bdbfb
Para detalhes do esquema de log Protobuf usado pelo eCapture/eCaptureQ, veja:
Veja CONTRIBUTING para detalhes sobre como enviar patches e o fluxo de trabalho de contribuição.
Você pode personalizar os recursos desejados, como definir o endereço de deslocamento para uprobe para suportar bibliotecas OpenSSL compiladas estaticamente. Consulte o guia de compilação para instruções de compilação.
Após o eCapture estar em execução, você pode modificar dinamicamente as configurações através de interfaces HTTP. Consulte a Documentação da API HTTP.
O eCapture suporta múltiplos métodos de encaminhamento de eventos. Você pode encaminhar eventos para softwares de captura de pacotes como Burp Suite. Para detalhes, consulte a Documentação da API de Encaminhamento de Eventos.