
ecapture — Updated!
eBPF를 사용하여 CA 인증서 없이 SSL/TLS 평문을 캡처합니다. amd64/arm64용 Linux/Android 커널에서 지원됩니다.
汉字 | English
eCapture (방관자): eBPF를 사용하여 CA 인증서 없이 평문 SSL/TLS 트래픽을 캡처합니다.
[!IMPORTANT] x86_64(커널 4.18+) 및 aarch64(커널 5.5+)에서 Linux와 Android를 지원합니다. 커널 요구 사항은 Linux와 Android 모두에 대해 CPU 아키텍처별로 적용됩니다. root 권한 또는 특정 Linux capabilities가 필요합니다. Windows 또는 macOS는 지원하지 않습니다.
소개
- OpenSSL, LibreSSL, BoringSSL, GnuTLS, NSS/NSPR 라이브러리에서 평문 TLS/SSL 트래픽을 캡처합니다.
- Go 애플리케이션의 HTTPS/TLS 트래픽을 포함하여 Go TLS 프로그램의 평문 캡처를 지원합니다.
- 호스트 보안 모니터링을 위해 bash 및 zsh 명령 기록을 감사합니다.
- MySQL 쿼리를 감사하며 MySQL 5.6/5.7/8.0 및 MariaDB를 지원합니다.
시작하기
다운로드
ELF 바이너리 파일
[!TIP] x86_64 및 aarch64에서 Linux/Android를 지원합니다.
릴리스 페이지에서 ELF 바이너리 패키지를 다운로드하고 압축을 푼 후 실행하세요:
sudo ecapture --help
Docker 이미지
[!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는 호스트에 대한 전체 접근 권한을 부여합니다. 프로덕션 환경에서는 특정 capabilities를 사용하는 것이 좋습니다. 최소 권한 가이드를 참조하세요.
자세한 내용은 Docker Hub를 참조하세요.
OpenSSL 평문 데이터 캡처
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 애플리케이션의 명령과 쿼리 감사도 지원합니다.
- bash: bash 명령 캡처
- zsh: zsh 명령 캡처
- gnutls: CA 인증서 없이 GnuTLS 라이브러리에서 평문 캡처
- gotls: TLS/HTTPS를 사용하는 Go 프로그램의 평문 통신 캡처
- mysqld: MySQL 5.6/5.7/8.0 및 MariaDB의 SQL 쿼리 캡처
- nss: CA 인증서 없이 NSS/NSPR 라이브러리에서 평문 캡처
- postgres: PostgreSQL 10+의 SQL 쿼리 캡처
- tls: CA 인증서 없이 평문 TLS/SSL 트래픽 캡처 (OpenSSL 1.0.x/1.1.x/3.0.x 이상 지원)
ecapture -h를 사용하여 전체 하위 명령 목록을 확인할 수 있습니다.
OpenSSL 모듈
eCapture는 /etc/ld.so.conf의 기본 라이브러리 경로를 검색하여 공유 라이브러리를 찾고 OpenSSL 라이브러리 위치를 감지합니다. --libssl 플래그로 라이브러리 경로를 명시적으로 설정할 수도 있습니다.
대상 프로그램이 정적으로 링크된 경우 --libssl 플래그의 값으로 프로그램 경로를 직접 설정할 수 있습니다.
OpenSSL 모듈은 세 가지 캡처 모드를 지원합니다:
pcap/pcapng모드는 캡처된 평문 데이터를pcap-NG형식으로 저장합니다.keylog/key모드는 TLS 핸드셰이크 키를 파일에 저장합니다.text모드는 평문 데이터를 직접 캡처하여 파일에 쓰거나 콘솔에 출력합니다.
Pcap 모드
TCP를 통한 TLS 암호화 HTTP 1.0/1.1/2.0 및 UDP를 통한 HTTP/3 (QUIC)를 지원합니다.
-m pcap 또는 -m pcapng를 --pcapfile 및 -i와 함께 지정할 수 있습니다. --pcapfile의 기본값은 ecapture_openssl.pcapng입니다.
sudo ecapture tls -m pcap -i eth0 --pcapfile=ecapture.pcapng tcp port 443
이 명령은 캡처된 평문 패킷을 pcapng 파일로 저장하며, Wireshark로 열 수 있습니다.
📄 전체 pcapng 모드 출력은 docs/example-outputs.md를 참조하세요.
Keylog 모드
-m keylog 또는 -m key를 --keylogfile 옵션과 함께 지정할 수 있습니다. 기본 출력 파일은 ecapture_masterkey.log입니다.
캡처된 OpenSSL TLS master secret이 --keylogfile에 저장됩니다. tcpdump 캡처를 활성화한 다음 Wireshark에서 파일을 열고 master secret 경로를 설정하여 평문 패킷을 볼 수도 있습니다.
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
Text 모드
sudo ecapture tls -m text
모든 평문 데이터 패킷을 출력합니다.
GoTLS 모듈
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 GUI 애플리케이션
eCaptureQ는 eCapture용 크로스 플랫폼 그래픽 클라이언트로, eBPF 기반 TLS 캡처 기능을 시각화합니다. Rust + Tauri + React로 구축되어 CA 인증서 없이 암호화된 트래픽을 분석할 수 있는 반응형 실시간 인터페이스를 제공합니다. 복잡한 eBPF 캡처 워크플로를 단순화하여 더 쉽게 사용할 수 있도록 합니다.
두 가지 모드를 지원합니다:
- 통합 모드: 통합 Linux/Android 실행
- 원격 모드: Windows/macOS/Linux 클라이언트가 원격 eCapture 서비스에 연결
이벤트 전달
동영상 데모
https://github.com/user-attachments/assets/c8b7a84d-58eb-4fdb-9843-f775c97bdbfb
Protobuf 프로토콜
eCapture/eCaptureQ에서 사용하는 Protobuf 로그 스키마에 대한 자세한 내용은 다음을 참조하세요:
시간 경과에 따른 Stargazers
보안 및 운영
- 보안 정책 — 취약점 보고 및 지원 버전
- 최소 권한 — 필요한 Linux capabilities 및 최소 권한 구성
- 방어 및 탐지 — 무단 사용을 탐지하고 방어하는 방법
- 성능 벤치마크 — 오버헤드 측정 방법론 및 예상 특성
- 릴리스 검증 — 릴리스 아티팩트의 무결성을 검증하는 방법
기여
패치 제출 및 기여 워크플로에 대한 자세한 내용은 CONTRIBUTING을 참조하세요.
컴파일
사용자 정의 컴파일
정적으로 링크된 OpenSSL 라이브러리를 지원하기 위해 uprobe 오프셋 주소를 설정하는 등 원하는 기능을 사용자 정의할 수 있습니다. 자세한 지침은 컴파일 가이드를 참조하세요.
원격 구성 업데이트
eCapture가 실행된 후 HTTP 인터페이스를 통해 구성을 동적으로 수정할 수 있습니다. HTTP API 문서를 참조하세요.