중요한
Linux/Android 커널 버전 x86_64 4.18 이상, aarch64 5.5 이상을 지원합니다. ROOT 권한이 필요합니다. Windows 및 macOS 시스템을 지원하지 않습니다.
소개
시작하기
OpenSSL 모듈
GoTLS 모듈
기타 모듈
ELF 바이너리 파일
도커 이미지
다운로드
openssl 텍스트 콘텐츠를 캡처합니다.
모듈
비디오
기여
편집
SSL/TLS 일반 텍스트 캡처, openssllibresslboringsslgnutlsnspr(nss) 라이브러리 지원.
GoTLS 일반 텍스트는 golang 언어로 작성된 https/tls 프로그램의 암호화된 통신을 참조하는 go tls 라이브러리를 지원합니다.
bash 감사, 호스트 보안 감사를 위한 bash 명령 캡처.
mysql 쿼리 SQL 감사, mysqld 5.65.78.0 및 mariadDB 지원.
팁
Linux/Android x86_64/aarch64를 지원합니다.
ELF zip 파일 릴리스를 다운로드하고 압축을 풀고 sudo ecapture --help
명령으로 사용하세요.
팁
리눅스 전용.
# pull docker imagedocker pull gojue/ecapture:latest# rundocker run --rm --privileged=true --net=host -v ${HOST_PATH}:${CONTAINER_PATH} gojue/ecapture ARGS
자세한 내용은 Docker 허브를 참조하세요.
sudo ecapture tls 2024-09-15T11:51:31Z INF AppName="eCapture(旁观者)"2024-09-15T11:51:31Z INF HomePage=https://ecapture.cc 2024-09-15T11:51:31Z INF 저장소=https://github.com/gojue/ecapture 2024-09-15T11:51:31Z INF Author="CFC4N <[email protected]>"2024-09-15T11:51:31Z INF Description="eBPF를 사용하여 CA 인증서 없이 SSL/TLS 일반 텍스트를 캡처합니다. Linux에서 지원됩니다. /Android 커널 amd64/arm64."2024-09-15T11:51:31Z INF 버전=linux_arm64:0.8.6-20240915-d87ae48:5.15.0-113-generic 2024-09-15T11:51:31Z INF 듣기=localhost:28256 2024-09-15T11:51:31Z INF eCapture 실행 로그 로거= 2024-09-15T11:51:31Z 캡처된 이벤트를 수신하는 파일 핸들러 INF eventCollector= 2024-09-15T11:51:31Z INF 수신=localhost:28256 2024-09-15T11:51:31Z INF https 서버 시작 중...HTTP 인터페이스를 통해 구성 파일을 업데이트할 수 있습니다. 2024-09-15T11:51:31Z WRN ========== 모듈 시작. ========== 2024-09-15T11:51:31Z INF 커널 정보=5.15.152 Pid=233698 2024-09-15T11:51:31Z INF BTF 바이트코드 모드: CORE. btf모드=0 2024-09-15T11:51:31Z INF 마스터 키 키로거가 설정되었습니다. eBPFProgramType=텍스트 키로거= 2024-09-15T11:51:31Z INF 모듈 초기화. isReload=false moduleName=EBPFProbeOPENSSL 2024-09-15T11:51:31Z INF 모듈.실행() 2024-09-15T11:51:31Z WRN 공유 라이브러리 파일에서 OpenSSL/BoringSSL 버전을 찾을 수 없습니다. 기본 버전 OpenSSL 버전=linux_default_3_0을 사용했습니다. 2024-09-15T11:51:31Z INF 후크 masterKey 함수 ElfType=2 Functions=["SSL_get_wbio","SSL_in_before","SSL_do_handshake"] binrayPath=/usr/lib/aarch64-linux-gnu/libssl.so.3 2024-09-15T11:51:31Z INF는 모든 프로세스를 대상으로 합니다. 2024-09-15T11:51:31Z INF는 모든 사용자를 대상으로 합니다. 2024-09-15T11:51:31Z INF setupManagers eBPFProgramType=Text 2024-09-15T11:51:31Z INF BPF 바이트코드 파일이 일치합니다. bpfFileName=사용자/바이트코드/openssl_3_0_0_kern_core.o 2024-09-15T11:51:32Z INF perfEventReader가 mapSize(MB)=4를 생성했습니다. 2024-09-15T11:51:32Z INF perfEventReader가 mapSize(MB)=4를 생성했습니다. 2024-09-15T11:51:32Z INF 모듈이 성공적으로 시작되었습니다. isReload=false moduleName=EBPFProbeOPENSSL 2024-09-15T11:51:53Z ??? UUID:233851_233851_curl_5_1_172.16.71.1:51837, 이름:HTTP2Request, 유형:2, 길이:304 프레임 유형 => 설정 프레임 유형 => WINDOW_UPDATE 프레임 유형 => 헤더 header field ":method" = "GET"header field ":path" = "/"header field ":scheme" = "https"header field ":authority" = "google.com"header field "user-agent" = "curl/7.81.0" 헤더 필드 "accept" = "*/*"프레임 유형 => 설정 2024-09-15T11:51:53Z ??? UUID:233851_233851_curl_5_0_172.16.71.1:51837, 이름:HTTP2Response, 유형:4, 길이:1160 프레임 유형 => 설정 프레임 유형 => WINDOW_UPDATE 프레임 유형 => 설정 프레임 유형 => 헤더 헤더 필드 ":status" = "301"헤더 필드 "location" = "https://www.google.com/"헤더 필드 "content-type" = "text/html; charset=UTF-8"헤더 필드 " content-security-policy-report-only" = "객체-src 'none';base-uri 'self';script-src 'nonce-qvZZ0XreBfeqRnUEV1WoYw' 'strict-dynamic' 'report-sample' 'unsafe-eval' 'unsafe-inline' https: http:;report-uri https://csp.withgoogle.com/csp/gws/other-hp"header field "date" " = "2024년 9월 15일 일요일 11:51:52 GMT" 헤더 필드 "expires" = "2024년 10월 15일 화요일 11:51:52 GMT"헤더 필드 "cache-control" = "public, max-age=2592000"헤더 필드 "server" = "gws"헤더 필드 "content-length" = "220"헤더 필드 "x-xss-protection" = " 0"헤더 필드 "x-frame-options" = "SAMEORIGIN"헤더 필드 "alt-svc" = "h3=":443"; ma=2592000,h3-29=":443"; ma=2592000"프레임 유형 => PING 프레임 유형 => DATA<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8"><TITLE>301 이동됨</TITLE></HEAD>< BODY><H1>301 이동됨</H1>문서가 <A HREF="https://www.google.com/">여기</A>로 이동되었습니다.</BODY></HTML>
eCapture 도구는 OpenSSL, GnuTLS, NSPR, BoringSSL 및 GoTLS와 같은 TLS/SSL 암호화 라이브러리에 대한 일반 텍스트 캡처를 각각 지원하는 8개의 모듈로 구성됩니다. 또한 Bash, MySQL 및 PostgreSQL 애플리케이션에 대한 소프트웨어 감사를 용이하게 합니다.
bash 캡처 bash 명령
gnutls는 gnutls 라이브러리에 대한 CA 인증서 없이 gnutls 텍스트 콘텐츠를 캡처합니다.
gotls TLS/HTTPS로 암호화된 Golang 프로그램에서 일반 텍스트 통신을 캡처합니다.
mysqld는 mysqld 5.6/5.7/8.0에서 SQL 쿼리를 캡처합니다.
nss는 nss/nspr 라이브러리에 대한 CA 인증서 없이 nss/nspr 암호화된 텍스트 콘텐츠를 캡처합니다.
postgres는 postgres 10+에서 SQL 쿼리를 캡처합니다.
tls는 CA 인증서 없이 tls/ssl 텍스트 콘텐츠를 캡처하는 데 사용됩니다. (openssl 1.0.x/1.1.x/3.0.x 이상 지원) ecapture -h
사용하여 하위 명령 목록을 볼 수 있습니다.
eCapture는 /etc/ld.so.conf
파일 기본값을 검색하여 SO
파일의 로드 디렉터리를 검색하고 openssl
샤드 라이브러리 위치를 검색합니다. 또는 --libssl
플래그를 사용하여 샤드 라이브러리 경로를 설정할 수 있습니다.
대상 프로그램이 정적으로 컴파일되는 경우 프로그램 경로를 --libssl
플래그 값으로 직접 설정할 수 있습니다.
OpenSSL 모듈은 세 가지 캡처 모드를 지원합니다.
pcap
/ pcapng
모드는 캡처된 일반 텍스트 데이터를 pcap-NG
형식으로 저장합니다.
keylog
/ key
모드는 TLS 핸드셰이크 키를 파일에 저장합니다.
text
모드는 지정된 파일로 출력하거나 명령줄로 인쇄하여 일반 텍스트 데이터를 직접 캡처합니다.
TCP를 통한 TLS 암호화 http 1.0/1.1/2.0
및 UDP를 통한 http3 QUIC
프로토콜을 지원합니다. -m pcap
또는 -m pcapng
지정하고 이를 --pcapfile
및 -i
매개변수와 함께 사용할 수 있습니다. --pcapfile
의 기본값은 ecapture_openssl.pcapng
입니다.
sudo ecapture tls -m pcap -i eth0 --pcapfile=ecapture.pcapng tcp 포트 443
이 명령은 캡처된 일반 텍스트 데이터 패킷을 Wireshark
사용하여 볼 수 있는 pcapng 파일로 저장합니다.
sudo ecapture tls -m pcap -w ecap.pcapng -i ens160 2024-09-15T06:54:12Z INF AppName="eCapture(旁观者)"2024-09-15T06:54:12Z INF HomePage=https://ecapture.cc 2024-09-15T06:54:12Z INF 저장소=https://github.com/gojue/ecapture 2024-09-15T06:54:12Z INF Author="CFC4N <[email protected]>"2024-09-15T06:54:12Z INF Description="eBPF를 사용하여 CA 인증서 없이 SSL/TLS 일반 텍스트를 캡처합니다. Linux에서 지원됩니다. /Android 커널 amd64/arm64."2024-09-15T06:54:12Z INF 버전=linux_arm64:0.8.6-20240915-d87ae48:5.15.0-113-generic 2024-09-15T06:54:12Z INF 듣기=localhost:28256 2024-09-15T06:54:12Z INF eCapture 실행 로그 로거= 2024-09-15T06:54:12Z 캡처된 이벤트를 수신하는 파일 핸들러 INF eventCollector= 2024-09-15T06:54:12Z WRN ========== 모듈 시작. ========== 2024-09-15T06:54:12Z INF 커널 정보=5.15.152 Pid=230440 2024-09-15T06:54:12Z INF BTF 바이트코드 모드: CORE. btf모드=0 2024-09-15T06:54:12Z INF 수신=localhost:28256 2024-09-15T06:54:12Z INF 모듈 초기화. isReload=false moduleName=EBPFProbeOPENSSL 2024-09-15T06:54:12Z INF 모듈.실행() 2024-09-15T06:54:12Z INF https 서버 시작 중...HTTP 인터페이스를 통해 구성 파일을 업데이트할 수 있습니다. 2024-09-15T06:54:12Z WRN 공유 라이브러리 파일에서 OpenSSL/BoringSSL 버전을 찾을 수 없습니다. 기본 버전 OpenSSL 버전=linux_default_3_0을 사용했습니다. 2024-09-15T06:54:12Z INF HOOK 유형:Openssl elf ElfType=2 IFindex=2 IFname=ens160 PcapFilter= binrayPath=/usr/lib/aarch64-linux-gnu/libssl.so.3 2024-09-15T06:54:12Z INF Hook masterKey 함수 Functions=["SSL_get_wbio","SSL_in_before","SSL_do_handshake"]2024-09-15T06:54:12Z INF는 모든 프로세스를 대상으로 합니다. 2024-09-15T06:54:12Z INF는 모든 사용자를 대상으로 합니다. 2024-09-15T06:54:12Z INF setupManagers eBPFProgramType=PcapNG 2024-09-15T06:54:12Z INF BPF 바이트코드 파일이 일치합니다. bpfFileName=사용자/바이트코드/openssl_3_0_0_kern_core.o 2024-09-15T06:54:12Z INF 패킷이 pcapng 파일에 저장되었습니다. pcapng 경로=/home/ecapture/ecap.pcapng 2024-09-15T06:54:12Z INF perfEventReader가 mapSize(MB)=4를 생성했습니다. 2024-09-15T06:54:12Z INF perfEventReader가 mapSize(MB)=4를 생성했습니다. 2024-09-15T06:54:12Z INF 모듈이 성공적으로 시작되었습니다. isReload=false moduleName=EBPFProbeOPENSSL 2024-09-15T06:54:14Z INF 패킷이 pcapng 파일에 저장되었습니다. 개수=4 2024-09-15T06:54:16Z INF 비 TLSv1.3 암호화 제품군이 발견되었습니다. CLientRandom=f08e8d784962d1693c042f9fe266345507ccfaba58b823904a357f30dbfa1e71 CipherId=0 2024-09-15T06:54:16Z INF 비 TLSv1.3 암호화 제품군이 발견되었습니다. CLientRandom=f08e8d784962d1693c042f9fe266345507ccfaba58b823904a357f30dbfa1e71 CipherId=0 2024-09-15T06:54:16Z INF 패킷이 pcapng 파일에 저장되었습니다. 개수=183 2024-09-15T06:54:16Z INF CLIENT_RANDOM 저장 성공 CLIentRandom=f08e8d784962d1693c042f9fe266345507ccfaba58b823904a357f30dbfa1e71 TlsVersion=TLS1_2_VERSION bytes=176 2024-09-15T06:54:18Z INF 패킷이 pcapng 파일에 저장되었습니다. 개수=65 ^C2024-09-15T06:54:18Z INF 모듈이 닫혔습니다. 2024-09-15T06:54:18Z INF 패킷이 pcapng 파일에 저장되었습니다. 개수=3 2024-09-15T06:54:18Z INF 패킷이 pcapng 파일에 저장되었습니다. 개수=255 2024-09-15T06:54:18Z INF 모듈이 닫히고 컨텍스트에서 메시지가 수신되었습니다. 2024-09-15T06:54:18Z INF iModule 모듈 닫기 2024-09-15T06:54:18Z INF 안녕히 계세요.
Wireshark
사용하여 ecap.pcapng
파일을 열어 일반 텍스트 데이터 패킷을 확인했습니다.
-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 필드 -e http.file_data -f "포트 443" -i eth0
sudo ecapture tls -m text
모든 일반 텍스트 데이터 패킷을 출력합니다. (v0.7.0부터는 더 이상 SSLKEYLOG 정보를 캡처하지 않습니다.)
OpenSSL 모듈과 유사합니다.
TLS 텍스트 컨텍스트를 캡처합니다.
1단계:
sudo ecapture gotls --elfpath=/home/cfc4n/go_https_client --hex
2단계:
/home/cfc4n/go_https_client
sudo ecapture gotls -h
bashmysqldpostgres
모듈과 같은 경우 ecapture -h
사용하여 하위 명령 목록을 볼 수 있습니다.
YouTube 비디오: eCapture v0.1.0 사용 방법
eCapture: Golang TLS/HTTPS 트래픽의 일반 텍스트 캡처 지원
패치 제출 및 기여 워크플로에 대한 자세한 내용은 CONTRIBUTING을 참조하세요.
eCapture 소스 코드 컴파일에 대한 자세한 내용은 컴파일을 참조하세요.