Skip to content

核心 TLS 模块 ​

相关源文件

以下文件被用作生成此维基页面的上下文:

本页面为用户提供了 eCapture 中核心 TLS 拦截功能的总体概述:tls (OpenSSL/BoringSSL)、gotls (Go 原生 TLS) 以及 gnutls (GnuTLS)。这三个核心模块无需自定义 CA 证书或修改目标应用程序,即可提取 TLS 明文、加密密钥日志以及 pcapng 数据包捕获 cli/cmd/tls.go:29-32, cli/cmd/gotls.go:29-32, cli/cmd/gnutls.go:33-36。

共享工作流与架构 ​

尽管针对不同的加密库和运行时环境,所有核心 TLS 模块都共享由 eBPF 探针框架管理的统一生命周期。配置解析、eBPF 字节码加载、Map 轮询、事件解码和输出路由通过 base.BaseProbe 和 events.NewDispatcher 等共享组件进行协调 internal/probe/base/base_probe.go:46-68, internal/probe/base/base_probe.go:128-161。

*Sources: cli/cmd/tls.go:29-48, cli/cmd/gotls.go:29-43, cli/cmd/gnutls.go:33-49, internal/probe/openssl/openssl_probe.go:44-69, internal/probe/gotls/gotls_probe.go:52-78, internal/probe/base/base_probe.go:46-68 *

模块对比 ​

虽然各模块的输出模式(text、keylog、pcapng)保持一致,但它们的定位机制和运行时先决条件有显著不同:

模块命令目标发现方式支持的运行时 / 库平台支持
tlsecapture tls--libssl 或自动搜索 cli/cmd/tls.go:51OpenSSL 1.0.x / 1.1.x / 3.x, BoringSSL cli/cmd/tls.go:32Linux (amd64/arm64/loong64), Android (BoringSSL) cli/cmd/root.go:46
gotlsecapture gotls--elfpath (ELF 二进制文件) cli/cmd/gotls.go:46Go 标准库 (crypto/tls) 编译的二进制文件Linux, Android
gnutlsecapture gnutls--gnutls 或自动搜索 cli/cmd/gnutls.go:52GnuTLS 库 (libgnutls.so) cli/cmd/gnutls.go:52Linux, Android (Termux) cli/cmd/gnutls.go:32-46

Sources: cli/cmd/tls.go:32-51, cli/cmd/gotls.go:46, cli/cmd/gnutls.go:32-52, cli/cmd/root.go:46


2.1. TLS 捕获 (OpenSSL/BoringSSL) ​

tls 模块将 uprobes 挂载到 OpenSSL 和 BoringSSL 函数(如 SSL_read、SSL_write 和主密钥提取函数)上,以捕获加密负载和会话密钥。它支持自动发现库路径或通过 --libssl 手动指定 cli/cmd/tls.go:33-51。

有关详细的配置标志、版本映射、Android BoringSSL 设置以及经过验证的文本、密钥日志和 pcapng 示例,请参阅 TLS 捕获 (OpenSSL/BoringSSL)。

Sources: cli/cmd/tls.go:29-61, internal/probe/openssl/openssl_probe.go:44-69


2.2. GoTLS 捕获 ​

gotls 模块针对使用标准 crypto/tls 构建的 Go 二进制文件。由于 Go 将 TLS 例程静态编译到 ELF 二进制文件中,而不是依赖共享系统库,因此该模块需要通过 --elfpath cli/cmd/gotls.go:46 提供目标可执行文件的路径,并解析函数偏移量或符号(crypto/tls.(*Conn).Read、crypto/tls.(*Conn).writeRecordLocked)internal/probe/gotls/gotls_probe.go:47-49。

有关 Go 版本兼容性、符号注意事项、寄存器 ABI 处理以及所有输出模式下可运行工作流的详细说明,请参阅 GoTLS 捕获。

Sources: cli/cmd/gotls.go:28-55, internal/probe/gotls/gotls_probe.go:46-78


2.3. GnuTLS 捕获 ​

gnutls 模块对 GnuTLS (libgnutls.so) 函数调用进行插桩,以拦截明文和握手密钥 cli/cmd/gnutls.go:33-52。它适配了诸如 Android 上的 Termux 等应用程序和包管理器 cli/cmd/gnutls.go:32-46。

有关库路径发现、特定版本的补丁映射、平台限制以及经过验证的命令示例,请参阅 GnuTLS 捕获。

Sources: cli/cmd/gnutls.go:31-60

核心 TLS 模块 has loaded
下载