重要的
支持Linux/Android内核版本x86_64 4.18及以上, aarch64 5.5及以上。需要ROOT权限。不支持Windows和macOS系统。
介绍
入门
OpenSSL 模块
GoTLS 模块
其他模块
ELF 二进制文件
Docker镜像
下载
捕获 openssl 文本内容。
模块
视频
贡献
汇编
SSL/TLS 明文捕获,支持 openssllibresslboringsslgnutlsnspr(nss) 库。
GoTLS 明文支持 go tls 库,指用 golang 语言编写的 https/tls 程序中的加密通信。
bash审计,捕获bash命令以进行主机安全审计。
mysql查询SQL审计,支持mysqld 5.65.78.0,和mariadDB。
提示
支持Linux/Android x86_64/aarch64。
下载 ELF zip 文件版本,解压并通过命令sudo ecapture --help
使用。
提示
仅限 Linux。
# pull docker imagedocker pull gojue/ecapture:latest# rundocker run --rm --privileged=true --net=host -v ${HOST_PATH}:${CONTAINER_PATH} gojue/ecapture ARGS
请参阅 Docker Hub 了解更多信息。
sudo 捕获 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 监听=本地主机:28256 2024-09-15T11:51:31Z INF eCapture 运行日志记录器= 2024-09-15T11:51:31Z INF 接收捕获事件的文件处理程序 eventCollector= 2024-09-15T11:51:31Z INF 监听=本地主机: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=EBFProbeOPENSSL 2024-09-15T11:51:31Z INF 模块.Run() 2024-09-15T11:51:31Z WRN OpenSSL/BoringSSL 版本未从共享库文件中找到,使用默认版本 OpenSSL Version=linux_default_3_0 2024-09-15T11:51:31Z INF Hook 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=EBFProbeOPENSSL 2024-09-15T11:51:53Z??? UUID:233851_233851_curl_5_1_172.16.71.1:51837,名称:HTTP2Request,类型:2,长度:304 框架类型 => 设置 帧类型 => WINDOW_UPDATE 帧类型 => 标头 标头字段 ":method" = "GET"标头字段 ":path" = "/"标头字段 ":scheme" = "https"标头字段 ":authority" = "google.com"标头字段 "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"标头字段 "内容安全策略报告-only" = "object-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“标头字段”日期" = "Sun, 15 Sep 2024 11:51:52 GMT" 标头字段 "expires" = "Tue, 15 Oct 2024 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 工具包含 8 个模块,分别支持 OpenSSL、GnuTLS、NSPR、BoringSSL 和 GoTLS 等 TLS/SSL 加密库的明文捕获。此外,它还有助于对 Bash、MySQL 和 PostgreSQL 应用程序进行软件审核。
bash 捕获 bash 命令
gnutls 捕获 gnutls 文本内容,无需 gnutls 库的 CA 证书。
gotls 从使用 TLS/HTTPS 加密的 Golang 程序中捕获明文通信。
mysqld 从 mysqld 5.6/5.7/8.0 捕获 sql 查询。
nss 捕获 nss/nspr 加密文本内容,无需 nss/nspr 库的 CA 证书。
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
该命令将捕获的明文数据包保存为 pcapng 文件,可以使用Wireshark
查看。
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 监听=本地主机: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 监听=本地主机:28256 2024-09-15T06:54:12Z INF 模块初始化。 isReload=false moduleName=EBFProbeOPENSSL 2024-09-15T06:54:12Z INF 模块.Run() 2024-09-15T06:54:12Z INF https 服务器启动...您可以通过 HTTP 接口更新配置文件。 2024-09-15T06:54:12Z WRN OpenSSL/BoringSSL 版本未从共享库文件中找到,使用默认版本 OpenSSL Version=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=EBFProbeOPENSSL 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字节= 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 fields -e http.file_data -f "port 443" -i eth0
sudo ecapture tls -m text
将输出所有明文数据包。 (从v0.7.0开始,不再捕获SSLKEYLOG信息。)
与 OpenSSL 模块类似。
捕获 tls 文本上下文。
步骤一:
sudo ecapture gotls --elfpath=/home/cfc4n/go_https_client --hex
步骤2:
/home/cfc4n/go_https_client
sudo 捕获gotls -h
例如bashmysqldpostgres
模块,可以使用ecapture -h
查看子命令列表。
Youtube 视频:如何使用 eCapture v0.1.0
eCapture:支持捕获Golang TLS/HTTPS流量的明文
有关提交补丁和贡献工作流程的详细信息,请参阅贡献。
有关编译 eCapture 源代码的详细信息,请参阅编译。