无需安装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, 运维, 安全

相关文章

在 Go 项目中使用 LevelDB 进行数据存储

LevelDB 是一个由 Google 开发的高性能键值存储库,广泛应用于需要快速读写操作的场景。本文将介绍如何在 Go 项目中使用 LevelDB 作为数据存储,并通过示例代码展示如何初始化数...

详解Go语言依赖注入工具wire最佳实践介绍与使用

wire是一个强大的依赖注入工具,通过代码生成的方式实现了高效的依赖注入。本文详细介绍了wire的入门级和高级使用技巧,并通过示例代码展示了其强大的功能。无论是简单的依赖注入,还是复杂的依赖图生...

Go语言中copy命令讲解 切片之间复制元素

在Go语言中,copy函数是一个非常常用的内置函数,用于在切片(slice)之间复制元素。理解copy函数的用法和机制对于高效处理数据操作至关重要1. copy函数的基本用法copy函数的基本语...

深入理解 Go 语言中的 goto:用法与最佳实践

在学习编程语言时,goto 一直是一个颇具争议的概念。它常常因为“跳跃式”的行为被认为会让代码混乱且难以维护,但在 Go 语言中,goto 被保留并提供了一些实际的应用场景。今天我们将深入探讨 ...

图片Base64编码

CSR生成

图片无损放大

图片占位符

Excel拆分文件