无需安装CA证书 就能实现对SSL/TLS加密明文捕获工具-eCapture
今天给大家介绍的不是如何采用SSL/TLS进行加密的方法,而是介绍的是一种无需CA证书,就能实现SSL/TLS加密的明文捕获的工具-eCapture
eCapture的中文名字为旁观者,即「当局者迷,旁观者清」,与其本身功能旁路、观察 契合,是一款基于 eBPF 技术的工具,能够在无需安装 CA 证书的情况下,捕获并解密 SSL/TLS 加密流量。它通过在内核层面进行数据包捕获和解密,避免了传统方法中需要客户端信任特定 CA 证书的限制。eCapture 适用于安全审计、网络监控和故障排查等场景。
功能特征
- 无需CA证书:能够捕获HTTPS/TLS通信数据的明文,而无需安装或信任任何CA证书。Wireshark、tcpdump等工具只能抓到加密后的流量,无法捕获TLS的明文(需要解密才行)。eCapture只需要root权限,即可捕获明文的HTTPS通信包明文。
- 用户态捕获:主要在用户态进行数据捕获,减少了对系统内核的依赖。
- 内核态支持:内核态代码使用C语言编写,利用eBPF技术进行高效的数据捕获。
- 多种审计功能:支持TLS/SSL明文数据捕获、bash命令审计和数据库(如MySQL/MariaDB)审计。
- 无依赖部署:编译后的程序无需其他依赖即可运行,简化了部署过程。
- eBPF加载机制:利用eBPF技术进行数据包的捕获和处理。
- HOOK机制:使用eBPF uprobe相关函数进行用户态函数的HOOK。
- 多语言支持:支持对不同编程语言实现的加密库进行HOOK,如OpenSSL、GnuTLS、NSS/NSPR。
- 动态链接库支持:能够自动查找或手动指定动态链接库中的函数进行HOOK。
- 过滤和选择性捕获:允许用户根据需要选择性地捕获特定进程或类型的网络通信。
1. eBPF 技术
eCapture 的核心技术是 eBPF(Extended Berkeley Packet Filter)。eBPF 允许在内核中运行沙盒化的程序,而无需修改内核代码或加载内核模块。eCapture 利用 eBPF 技术在内核中捕获网络数据包,并对其进行解密。
2. SSL/TLS 解密
eCapture 通过捕获 SSL/TLS 握手过程中的密钥交换信息,获取到会话密钥,从而能够解密后续的加密流量。它支持常见的加密协议,如 TLS 1.2 和 TLS 1.3。
3. 无需 CA 证书
传统的 SSL/TLS 解密工具通常需要客户端信任特定的 CA 证书,以便在客户端和服务器之间插入中间人(MITM)代理。eCapture 通过直接在内核层面进行解密,避免了这一限制,使得解密过程更加透明和高效。
使用教程
1. 安装 eCapture
首先,确保你的系统支持 eBPF 技术。大多数现代 Linux 发行版都支持 eBPF。
二进制包安装
支持 Linux/Android的x86_64/aarch64 CPU架构。
Linux/Android ARM64-aarch64 CPU架构,内核版本 >= 5.5
Linux/Android X86_64 CPU架构,内核版本 >= 4.18
下载 release 的二进制包,可直接使用https://github.com/gojue/ecapture/releases
Docker安装
# 拉取镜像
docker pull gojue/ecapture:latest
# 运行
docker run --rm --privileged=true --net=host -v ${宿主机文件路径}:${容器内路径} gojue/ecapture ARGS
编译安装
# 安装必要的依赖
sudo apt-get install -y bpfcc-tools
# 下载 eCapture
git clone https://github.com/gojue/ecapture
cd ecapture
# 编译 eCapture
make
2. 运行 eCapture
编译完成后,你可以直接运行 eCapture 来捕获 SSL/TLS 流量。
sudo ./ecapture
3. 配置捕获参数
eCapture 提供了多种参数来配置捕获行为,例如指定捕获的网络接口、过滤特定的 IP 地址或端口等。
# 捕获 eth0 接口上的所有 SSL/TLS 流量
sudo ./ecapture -i eth0
# 捕获特定 IP 地址的流量
sudo ./ecapture -i eth0 -d 192.168.1.100
# 捕获特定端口的流量
sudo ./ecapture -i eth0 -p 443
4. 查看捕获结果
eCapture 会将捕获到的 SSL/TLS 流量解密后输出到控制台或指定的文件中。你可以通过重定向输出到文件来保存捕获结果。
sudo ./ecapture -i eth0 > capture.log
5. 高级功能
eCapture 还支持一些高级功能,如实时分析、流量过滤和数据导出、模块如bash、mysql、nss、postgres等。你可以通过查看帮助文档来了解更多功能。
sudo ./ecapture --help
版权声明:本文为原创文章,版权归 全栈开发技术博客 所有。
本文链接:https://www.lvtao.net/tool/eCapture.html
转载时须注明出处及本声明