
ecapture — Updated!
Captura de texto simples SSL/TLS sem um certificado CA usando eBPF. Suportado em kernels Linux/Android para amd64/arm64.
汉字 | English
eCapture (旁观者): Capture plaintext SSL/TLS traffic without a CA certificate using eBPF.
[!IMPORTANT] Suporta Linux e Android em x86_64 (kernel 4.18+) e aarch64 (kernel 5.5+). O requisito de kernel aplica-se por arquitetura de CPU tanto para Linux quanto para Android. Requer privilégios de root ou capacidades Linux específicas. Não suporta Windows ou macOS.
Introdução
- Captura tráfego TLS/SSL em texto claro das bibliotecas OpenSSL, LibreSSL, BoringSSL, GnuTLS e NSS/NSPR.
- Suporta captura em texto claro para programas Go TLS, incluindo tráfego HTTPS/TLS em aplicações Go.
- Audita o histórico de comandos do bash e zsh para monitoramento de segurança do host.
- Audita consultas MySQL e suporta MySQL 5.6/5.7/8.0 e MariaDB.
Primeiros passos
Download
Arquivo binário ELF
[!TIP] Suporta Linux/Android em x86_64 e aarch64.
Baixe o pacote binário ELF na página de releases, extraia-o e execute:
sudo ecapture --help
Imagem Docker
[!TIP] Apenas Linux.
# Pull the Docker image
docker pull gojue/ecapture:latest
# Run it
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, prefira capacidades específicas. Consulte o Guia de Privilégios Mínimos.
Consulte o Docker Hub para mais informações.
Capturar dados em texto claro do OpenSSL
sudo ecapture tls
O eCapture detecta automaticamente a biblioteca OpenSSL do sistema e começa a capturar tráfego em texto claro. Quando você faz uma requisição HTTPS, como curl https://google.com, a requisição e a resposta capturadas sã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, consulte docs/example-outputs.md.
Módulos
A ferramenta eCapture inclui 8 módulos que podem capturar dados em texto claro de bibliotecas TLS/SSL como OpenSSL, GnuTLS, NSS/NSPR, BoringSSL e GoTLS. Também suporta auditoria de comandos e consultas de aplicações Bash, MySQL e PostgreSQL.
- bash: captura comandos bash
- zsh: captura comandos zsh
- gnutls: captura texto claro de bibliotecas GnuTLS sem precisar de certificado CA
- gotls: captura comunicação em texto claro de programas Go usando TLS/HTTPS
- mysqld: captura consultas SQL do MySQL 5.6/5.7/8.0 e MariaDB
- nss: captura texto claro de bibliotecas NSS/NSPR sem precisar de certificado CA
- postgres: captura consultas SQL do PostgreSQL 10+
- tls: captura tráfego TLS/SSL em texto claro sem certificado CA (suporta OpenSSL 1.0.x/1.1.x/3.0.x e mais recentes)
Você pode usar ecapture -h para ver a lista completa de subcomandos.
Módulo OpenSSL
O eCapture pesquisa os caminhos padrão de bibliotecas em /etc/ld.so.conf para localizar bibliotecas compartilhadas e detectar a localização da biblioteca OpenSSL. Você também pode definir o caminho da biblioteca explicitamente com a flag --libssl.
Se o programa alvo for vinculado estaticamente, você pode definir o caminho do programa diretamente como valor da flag --libssl.
O módulo OpenSSL suporta três modos de captura:
- O modo
pcap/pcapngarmazena os dados em texto claro capturados no formatopcap-NG. - O modo
keylog/keysalva as chaves de handshake TLS em um arquivo. - O modo
textcaptura dados em texto claro diretamente, gravando-os em um arquivo ou imprimindo-os no console.
Modo Pcap
Suporta HTTP 1.0/1.1/2.0 criptografado com TLS sobre TCP e HTTP/3 (QUIC) sobre UDP.
Você pode especificar -m pcap ou -m pcapng junto com --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 em texto claro capturados como um arquivo pcapng, que pode ser aberto com o Wireshark.
📄 Para a saída completa do modo pcapng, consulte docs/example-outputs.md.
Modo Keylog
Você pode especificar -m keylog ou -m key junto com a opção --keylogfile. O arquivo de saída padrão é ecapture_masterkey.log.
O master secret TLS do OpenSSL capturado é salvo em --keylogfile. Você também pode habilitar a captura com tcpdump e depois abrir o arquivo no Wireshark, definindo o caminho do master secret para visualizar os pacotes em texto claro.
sudo ecapture tls -m keylog -keylogfile=openssl_keylog.log
Você também pode usar o 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
Modo Text
sudo ecapture tls -m text
Isso exibe todos os pacotes de dados em texto claro.
Módulo GoTLS
Semelhante ao módulo OpenSSL.
Comando gotls
Captura dados TLS em texto claro.
Passo 1:
sudo ecapture gotls --elfpath=/home/cfc4n/go_https_client --hex
Passo 2:
/home/cfc4n/go_https_client
Mais ajuda
sudo ecapture gotls -h
Outros módulos
Módulos como bash, mysqld e postgres também podem ser usados. Você pode ver a lista completa com ecapture -h.
Vídeos
- Vídeo no YouTube: How to use eCapture v0.1.0
- eCapture: supports capturing plaintext of Go TLS/HTTPS traffic