Skip to content

其他模块 ​

相关源文件

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

目的与范围 ​

虽然 eCapture 的核心能力集中在对 OpenSSL、BoringSSL、Go 原生 TLS 和 GnuTLS 的 TLS 拦截,但该平台还为非 TLS 工作负载提供了专门的 eBPF 探针。这些非核心模块将 eCapture 的审计和可观测性功能扩展到了 Shell 命令执行(Bash 和 Zsh)、备选密码库(NSS/NSPR)以及数据库查询监控(MySQL/MariaDB 和 PostgreSQL)。

本页面作为所有非核心探针覆盖范围的完整参考,详细介绍了它们支持的目标二进制文件和库、配置标志、内部实现以及事件数据流。

Sources: cli/cmd/bash.go:27-40, cli/cmd/zsh.go:30-42, cli/cmd/mysqld.go:30-46, cli/cmd/postgres.go:30-42, internal/probe/nspr/nspr_probe.go:37-82


非核心探针概览 ​

下表总结了 eCapture 中可用的非核心探针、它们的目标应用、CLI 命令入口点以及主要的 eBPF 挂载目标。

模块名称CLI 命令支持的目标关键钩子函数 / 事件主要源文件
NSS/NSPRnspr (内部工厂)Firefox, Thunderbird, libnspr4.so, libnss3.soPR_Write, PR_Read, SSL 主密钥[internal/probe/nspr/nspr_probe.go:37-82()]
Bashbash/bin/bash, Readline 库Readline 入口、返回及 exit/exec[cli/cmd/bash.go:27-40(), internal/probe/bash/bash_probe.go:38-81()]
Zshzsh/bin/zsh, ZLE 入口zsh_zleentry uretprobe[cli/cmd/zsh.go:30-42(), internal/probe/zsh/zsh_probe.go:37-79()]
MySQLmysqldMySQL 5.6, 5.7, 8.0, MariaDB 10.5+dispatch_command 查询执行[cli/cmd/mysqld.go:30-46(), internal/probe/mysql/mysql_probe.go:37-85()]
PostgreSQLpostgresPostgreSQL 10+exec_simple_query 查询执行[cli/cmd/postgres.go:30-42(), internal/probe/postgres/postgres_probe.go:37-65()]

Sources: cli/cmd/bash.go:27-40, cli/cmd/zsh.go:30-42, cli/cmd/mysqld.go:30-46, cli/cmd/postgres.go:30-42, internal/probe/nspr/nspr_probe.go:37-82


1. NSS/NSPR 探针 ​

NSS/NSPR 探针用于捕获基于 Mozilla 网络安全服务 (NSS) 和 Netscape 可移植运行环境 (NSPR) 构建的应用程序(如 Mozilla Firefox 和 Thunderbird)的 TLS 流量和加密密钥。

支持的目标与配置 ​

该探针以 libnspr4.so(用于套接字 I/O 操作)和 libnss3.so(用于会话密钥派生)为目标。配置通过 nspr.Config 管理,指定 NSS 和 NSPR 共享库的路径。

实现与数据流 ​

探针在 NSPR 库内的 PR_Write 和 PR_Read 上建立 uprobe 和 uretprobe 挂载,同时包含用于提取主密钥的钩子 [internal/probe/nspr/nspr_probe.go:193-224()]。捕获的有效负载被结构化为 TLSDataEvent 缓冲区,与 eBPF 字节码中定义的 C 结构体布局相匹配 [internal/probe/nspr/event.go:41-77()]。

Sources: internal/probe/nspr/nspr_probe.go:37-224, internal/probe/nspr/event.go:41-77


2. Bash 审计探针 ​

Bash 探针通过拦截输入到 Bash shell 的交互式命令行来提供安全审计。

支持的目标与配置 ​

CLI 命令 bash 初始化 bash.Probe,自动解析环境中的活动 shell 二进制文件,或通过 --bash 和 --readlineso 标志接受显式路径 [cli/cmd/bash.go:27-40()]。

实现与数据流 ​

探针挂载到 Bash 的 Readline 集成中。多行命令和命令执行状态在用户空间使用唯一的事件 UUID 进行跟踪和组装 [internal/probe/bash/bash_probe.go:173-212()]。

Sources: cli/cmd/bash.go:27-40, internal/probe/bash/bash_probe.go:38-212


3. Zsh 审计探针 ​

与 Bash 模块类似,Zsh 探针监控 Zsh 环境中的交互式命令执行。

支持的目标与配置 ​

通过 zsh 命令初始化,zsh.Probe 接受 --zsh 标志来定位目标 Zsh 二进制文件 [cli/cmd/zsh.go:30-42()]。

实现与数据流 ​

探针向 setupManager 中配置的 Zsh ZLE 入口函数 (zsh_zleentry) 挂载一个 uretprobe [internal/probe/zsh/zsh_probe.go:180-214()]。拦截的按键输入和执行的命令通过 zshEventDecoder 进行解析,并转发到输出流水线。

Sources: cli/cmd/zsh.go:30-42, internal/probe/zsh/zsh_probe.go:37-214


4. MySQL / MariaDB 查询探针 ​

MySQL 探针监控针对 MySQL 和 MariaDB 数据库服务器执行的 SQL 查询,无需配置查询日志。

支持的目标与配置 ​

支持的目标包括 MySQL 5.6, 5.7, 8.0 以及 MariaDB 10.5+ [cli/cmd/mysqld.go:30-46()]。配置通过 -m / --mysqld 接受 mysqld 二进制路径,通过 -f / --funcname 覆盖函数名,并通过 --offset 接受二进制偏移量 [cli/cmd/mysqld.go:39-46()]。

实现与数据流 ​

探针向查询分发函数(如 dispatch_command)挂载 uprobes 和 uretprobes [internal/probe/mysql/mysql_probe.go:189-235()]。查询字符串、连接 PID 以及执行返回值 (DispatchCommandReturn) 会被捕获并解码 [internal/probe/mysql/mysql_test.go:46-66()]。

Sources: cli/cmd/mysqld.go:30-46, internal/probe/mysql/mysql_probe.go:37-235, internal/probe/mysql/mysql_test.go:46-66


5. PostgreSQL 查询探针 ​

PostgreSQL 探针捕获由 PostgreSQL 数据库服务器进程执行的 SQL 查询。

支持的目标与配置 ​

目标为 PostgreSQL 服务器二进制文件 10 及以上版本 [cli/cmd/postgres.go:30-42()]。通过 postgres.Config 进行配置,接受二进制路径 (--postgres) 和目标钩子函数 (--funcname) [cli/cmd/postgres.go:36-41()].

实现与数据流 ​

探针向查询执行函数(例如 exec_simple_query)挂载 uprobes [internal/probe/postgres/postgres_probe.go:141-150()]。常量编辑器负责处理内核版本限制以及 PID/UID 过滤 [internal/probe/postgres/postgres_probe.go:188-216()]。捕获的查询通过 postgresEventDecoder 流向全局输出接收器。

Sources: cli/cmd/postgres.go:30-42, internal/probe/postgres/postgres_probe.go:37-168, internal/probe/postgres/postgres_probe.go:188-216

其他模块 has loaded
下载