업데이트로 돌아가기
UpdatedOct 4, 2026

ecapture — Updated!

eBPF를 사용하여 CA 인증서 없이 SSL/TLS 평문을 캡처합니다. amd64/arm64용 Linux/Android 커널에서 지원됩니다.

공유
eCapture Logo

汉字 | English

GitHub stars GitHub forks CI GitHub Version

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

🔗 GitHub 저장소

Protobuf 프로토콜

eCapture/eCaptureQ에서 사용하는 Protobuf 로그 스키마에 대한 자세한 내용은 다음을 참조하세요:

시간 경과에 따른 Stargazers

Stargazers over time

보안 및 운영

기여

패치 제출 및 기여 워크플로에 대한 자세한 내용은 CONTRIBUTING을 참조하세요.

컴파일

사용자 정의 컴파일

정적으로 링크된 OpenSSL 라이브러리를 지원하기 위해 uprobe 오프셋 주소를 설정하는 등 원하는 기능을 사용자 정의할 수 있습니다. 자세한 지침은 컴파일 가이드를 참조하세요.

원격 구성 업데이트

eCapture가 실행된 후 HTTP 인터페이스를 통해 구성을 동적으로 수정할 수 있습니다. HTTP API 문서를 참조하세요.

이벤트 전달

카테고리