无需安装CA证书 就能实现对SSL/TLS加密明文捕获工具-eCapture

今天给大家介绍的不是如何采用SSL/TLS进行加密的方法,而是介绍的是一种无需CA证书,就能实现SSL/TLS加密的明文捕获的工具-eCapture
eCapture.png
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

标签: Go, 运维, 安全

相关文章

端口扫描工具Masscan的安装与使用 附对比Nmap

在网络安全领域,端口扫描是一个基本的任务,通常用于发现网络中的设备和服务。Masscan 和 Nmap 是两种流行的端口扫描工具,尽管它们都有相似的功能,但在性能和使用场景上存在一些显著的差异。...

macOS下安装与配置网络抓包工具Charles入门教程

charles抓包工具是基于HTTP请求中间人代理,通过和服务端、客户端建立通信将客户端的请求数据发送服务器,并将响应数据传输给客户端,实现抓包记录,最最最...我想推荐的原因是...它很简洁....

深入解析 Go 编译参数 -ldflags 及常见用法

在 Go 开发中,编译生成的二进制文件往往是程序性能和可移植性的关键。在某些场景下,我们需要对编译的输出进行优化,比如减少二进制文件大小、注入版本信息、控制调试信息等。而 -ldflags 是 ...

Go语言中定时器NewTicker详解

在 Golang 中,time 包提供了 NewTicker 函数,用于创建一个定时器,该定时器会定期向其 C 通道发送当前时间。NewTicker 非常适合用于需要定期执行某些任务的场景。1....

图片Base64编码

CSR生成

图片无损放大

图片占位符

Excel拆分文件