这款免费工具无须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. 参考链接


相关推荐
EasyDSS5 小时前
视频监控从安装到优化的技术指南,视频汇聚系统EasyCVR智能安防系统构建之道
大数据·网络·网络协议·音视频
rufeike5 小时前
UDP协议理解
网络·网络协议·udp
GKoSon6 小时前
加入RPC shell指令 温箱长时间监控
网络·网络协议·rpc
hgdlip7 小时前
关闭IP属地显示会影响账号的正常使用吗
网络·网络协议·tcp/ip·ip属地
Zz_waiting.8 小时前
网络原理 - 7(TCP - 4)
网络·网络协议·tcp/ip
zheshiyangyang8 小时前
HTTP相关
网络·网络协议·http
爱编程的鱼9 小时前
Windows 各版本查找计算机 IP 地址指南
人工智能·windows·网络协议·tcp/ip·tensorflow
xxy!11 小时前
OSI七层模型和TCP/IP四层模型
网络·网络协议·tcp/ip
宝耶13 小时前
HTTP协议-请求协议
网络协议·http·servlet
神的孩子都在歌唱16 小时前
网络IP冲突的成因与解决方案
网络·网络协议·tcp/ip