
eBPF로 SSL/TLS 평문을 캡처합니다—MITM 프록시나 사용자 지정 CA 설치가 필요 없습니다. x86_64 및 arm64에서 Linux와 Android를 지원합니다.
eCapture (방관자)
eBPF로 SSL/TLS 평문을 캡처합니다—MITM 프록시나 사용자 지정 CA 설치가 필요 없습니다.
English · 汉字
[!IMPORTANT] x86_64(커널 4.18+), aarch64(커널 5.5+), LoongArch64
loong64(커널 6.6+)의 Linux를 지원합니다. Android는 기존 커널 최소 요구 사항과 함께 x86_64 및 aarch64를 지원합니다. root 권한 또는 특정 Linux capabilities가 필요합니다. Windows 또는 macOS는 지원하지 않습니다.
[!TIP] x86_64, aarch64, LoongArch64의 Linux를 지원하며, Android는 x86_64 및 aarch64를 지원합니다.
릴리스 페이지에서 ELF 바이너리 패키지를 다운로드하여 압축을 풀고 실행하세요:
sudo ecapture --help
[!TIP] 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
⚠️ 보안 참고:
--privileged=true는 호스트에 대한 전체 접근 권한을 부여합니다. 프로덕션 환경에서는 대신 특정 capability를 사용하는 것을 권장합니다. 최소 권한 가이드를 참조하세요.
자세한 내용은 Docker Hub를 참조하세요.
sudo ecapture tls
eCapture는 시스템의 OpenSSL 라이브러리를 자동으로 감지하고 평문 트래픽 캡처를 시작합니다. curl https://google.com과 같은 HTTPS 요청을 보내면 캡처된 요청과 응답이 표시됩니다:
...
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"
...
📄 전체 출력 예시는 docs/example-outputs.md를 참조하세요.
eCapture 도구에는 OpenSSL, GnuTLS, NSS/NSPR, BoringSSL, GoTLS와 같은 TLS/SSL 라이브러리에서 평문 데이터를 캡처할 수 있는 8개의 모듈이 포함되어 있습니다. 또한 Bash, MySQL, PostgreSQL 애플리케이션의 명령과 쿼리를 감사하는 기능도 지원합니다.
ecapture -h를 사용하여 전체 하위 명령 목록을 확인할 수 있습니다.
eCapture는 /etc/ld.so.conf의 기본 라이브러리 경로를 검색하여 공유 라이브러리를 찾고 OpenSSL 라이브러리 위치를 감지합니다. --libssl 플래그로 라이브러리 경로를 명시적으로 설정할 수도 있습니다.
대상 프로그램이 정적으로 링크된 경우, 프로그램 경로를 --libssl 플래그의 값으로 직접 설정할 수 있습니다.
OpenSSL 모듈은 세 가지 캡처 모드를 지원합니다:
pcap/pcapng 모드는 캡처한 평문 데이터를 pcap-NG 형식으로 저장합니다.keylog/key 모드는 TLS 핸드셰이크 키를 파일에 저장합니다.text 모드는 평문 데이터를 직접 캡처하여 파일에 쓰거나 콘솔에 출력합니다.OpenSSL, GoTLS, GnuTLS의 경우 --eventaddr는 통일된 기본 이벤트
대상입니다. stdout, 일반 경로 또는 file:// URI,
tcp://host:port, 그리고 ws:///wss://(순서가 보장된 바이너리 프레임)를
허용합니다. 모드는 text, NSS Key Log 또는 pcapng 표현을 선택하며,
주소는 전송 방식만 선택합니다. --keylogfile과 --pcapfile은 각각의
모드에서 호환되는 기본 파일 별칭으로 남아 있습니다. --eventaddr를
해당 별칭과 함께 설정하면 오류입니다. pcapng 모드에서 --keylogfile은
별도의 선택적 keylog 산출물입니다.
--logaddr는 eCapture 런타임 로그만 전달합니다. 콘솔 런타임 로그는
stderr를 사용하며, 캡처된 stdout에는 이벤트 바이트만 포함됩니다. eCaptureQ는
추가적입니다. 이를 활성화해도 --eventaddr나 --logaddr를 대체하지 않습니다.
TCP를 통한 TLS 암호화 HTTP 1.0/1.1/2.0과 UDP를 통한 HTTP/3(QUIC)를 지원합니다.
-m pcap 또는 -m pcapng를 --pcapfile 및 -i와 함께 지정할 수 있습니다. --pcapfile의 현재 호환 기본값은 save.pcapng입니다.
sudo ecapture tls -m pcap -i eth0 --pcapfile=ecapture.pcapng tcp port 443
이 명령은 캡처된 평문 패킷을 pcapng 파일로 저장하며, 이 파일은 Wireshark로 열 수 있습니다.
📄 전체 pcapng 모드 출력은 docs/example-outputs.md를 참조하세요.
--keylogfile 옵션과 함께 -m keylog 또는 -m key를 지정할 수 있습니다. 현재 호환되는 기본 출력 파일은 ecapture_openssl_key.log입니다.
캡처된 OpenSSL TLS 마스터 시크릿은 --keylogfile에 저장됩니다. 또한 tcpdump 캡처를 활성화한 다음 Wireshark에서 파일을 열고 마스터 시크릿 경로를 설정하여 평문 패킷을 볼 수 있습니다.
sudo ecapture tls -m keylog -keylogfile=openssl_keylog.log
tshark를 사용하여 실시간 복호화 및 표시를 수행할 수도 있습니다:
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
This outputs all plaintext data packets.
OpenSSL 모듈과 유사합니다.
gotls 명령TLS 평문 데이터를 캡처합니다.
1단계:
sudo ecapture gotls --elfpath=/home/cfc4n/go_https_client --hex
2단계:
/home/cfc4n/go_https_client
sudo ecapture gotls -h
bash, mysqld, postgres와 같은 모듈도 사용할 수 있습니다. 전체 목록은 ecapture -h로 확인할 수 있습니다.
eCaptureQ는 eCapture용 크로스 플랫폼 그래픽 클라이언트로, eBPF 기반 TLS 캡처 기능을 시각화합니다. Rust + Tauri + React로 구축되었으며, CA 인증서 없이도 암호화된 트래픽을 분석할 수 있는 반응형 실시간 인터페이스를 제공합니다. 복잡한 eBPF 캡처 워크플로를 단순화하여 더 쉽게 사용할 수 있도록 합니다.
두 가지 모드를 지원합니다: