这款免费工具无须CA证书也能捕获HTTPS明文流量,原理大揭秘!

Wireshark、Burp Suite、tcpdump等工具在没有CA证书的情况下只能抓到加密后的流量,无法捕获TLS的明文。而将下来我们将会介绍一款工具,它只需要root权限,即可捕获明文的HTTPS通信包。

1. eCapture介绍

eCapture是一个C语言开发的开源项目,于2022年3月创建,一经发布广受大家喜爱,截止目前已经超过1.3万个Star。它是基于eBPF技术的先进网络数据捕获工具,能够无需CA证书即可捕获HTTPS和TLS通信的明文内容,非常适合于网络监控、安全审计和故障排查等场景。

eCapture的中文名字为旁观者,意为"当局者迷,旁观者清",与其本身功能旁路、观察 契合。

核心特点

  • 用户态捕获:主要在用户态进行数据捕获,减少了对系统内核的依赖;
  • 内核态支持:内核态代码使用C语言编写,利用eBPF技术进行高效的数据捕获;
  • 无依赖部署:编译后的程序无需其他依赖即可运行,简化了部署过程;
  • 多语言支持

eCapture有三个功能模块:

  1. tls/ssl明文数据捕获:可捕获基于Openssl/Boringssl的加密通讯的明文内容,主要用于基于tls/ssl解密需求的运维监控、故障排查、抽样分析场景;
  2. bash命令审计:可用于安全领域的bash入侵发现场景;
  3. mysqld数据库审计:适用于数据库审计场景,尤其是做数据安全、数据防泄漏,甚至入侵检测等。

注:以上三个功能均支持自定义扩展。

2. eCapture工作原理

eCapture主要利用了eBPF和HOOK技术:

  • eBPF加载机制:利用eBPF技术进行数据包的捕获和处理,eBPF程序是事件驱动的,当内核或应用程序通过某个挂钩点时运行。预定义的钩子包括系统调用、函数入口/出口、内核跟踪点、网络事件和其他几个;
  • HOOK机制:使用eBPF uprobe相关函数进行用户态函数的HOOK,支持对不同编程语言实现的加密库进行HOOK,如OpenSSL、GnuTLS、NSS/NSPR。

eBPF(Extended Berkeley Packet Filter)是一项革命性的技术,起源于Linux内核,可以在特权上下文(如操作系统内核)中运行沙盒程序。它用于安全有效地扩展内核的功能,而不需要更改内核源代码或加载内核模块。

eBPF允许沙盒程序在操作系统中运行,这意味着应用程序开发人员可以运行eBPF程序,在运行时为操作系统添加额外功能。然后,操作系统保证安全性和执行效率,就像在即时(JIT)编译器和验证引擎的帮助下进行本机编译一样。这导致了一波基于eBPF的项目,覆盖了广泛的应用场景,包括下一代网络、可观测性和安全功能。

要想了解eBPF的详细加载机制,可参阅https://ebpf.io/what-is-ebpf/。

如工作原理图所示,在用户态的加密解密函数中下钩子。tcpdump(libpcap)是在接收到数据包,XDP处理后克隆数据包(packet),发送给用户态进程。与eCapture工作的所在层不一样。

3. 安装及使用

目前仅支持 Linux 和 Android 两种操作系统。

3.1. 安装

进入开源项目下载界面:https://github.com/gojue/ecapture/releases,根据自己电脑的操作系统和架构类型选择相应的二进制安装包。

下载后解压软件包,无须额外安装其他依赖即可运行

sh 复制代码
./ecapture 

3.2. 使用介绍:以HTTPS流量捕获为例

执行eCapture tls命令可用于启动tls/ssl模块,该模块支持三类tls/ssl加密类库:

eCapture tls可捕获基于以上三种动态链接库加密的网络通讯。

接下来我们使用火狐浏览器(firefox)发送https请求来利用eCapture捕获明文流量。

首先确认下firefox使用的tls加密类库,通过执行命令ps -ef |grep firefox获取firefox的进程ID,从下图中可以得知ID为2908

接着通过命令pldd 2908 | grep -E "tls|ssl|nspr|nss"即可确认firefox使用的tls加密类库。

如果firefox加密类库与eCapture默认使用的库一致,最后则执行命令./ecapture tls --hex启动流量监控,可以看到控制台打印出了明文内容。

若系统中firefox加密类库与eCapture默认使用的库不一致,可以通过参数手工指定,具体可参阅官方文档。

虽然可以通过eCapture捕获明文流量,在高并发场景下会存在性能问题,有用户反馈在执行一千万次SSL_write写数据的场景,不开启eCapture耗时6秒,而开启eCapture后却要30秒,性能耗时增大5倍以上。

其实不仅是eCapture,其他基于HOOK技术实现的监测工具均会面临性能问题,需要在HOOK点设置、监控项与性能中做出取舍​。

4. 参考链接


相关推荐
njnu@liyong11 小时前
图解HTTP-HTTP报文
网络协议·计算机网络·http
ZachOn1y11 小时前
计算机网络:应用层 —— 应用层概述
计算机网络·http·https·应用层·dns
kaixin_learn_qt_ing12 小时前
了解RPC
网络·网络协议·rpc
爱吃水果蝙蝠汤14 小时前
DATACOM-IP单播路由(BGP)-复习-实验
网络·网络协议·tcp/ip
网安墨雨18 小时前
iOS应用网络安全之HTTPS
web安全·ios·https
言成言成啊21 小时前
TCP与UDP的端口连通性
网络协议·tcp/ip·udp
敲代码娶不了六花21 小时前
对计算机网络中“层”的理解
网络·网络协议·tcp/ip·计算机网络
低调之人21 小时前
Fiddler勾选https后google浏览器网页访问不可用
前端·测试工具·https·fiddler·hsts
x66ccff21 小时前
HTTPS如何通过CA证书实现安全通信,以及HTTPS的局限性
网络协议·安全·https
Graceful_scenery21 小时前
https双向认证
服务器·网络·网络协议·http·https