使用ecapture捕获tls网络明文通讯
00 分钟
2024-3-21
2024-4-22
type
status
date
slug
summary
tags
category
icon
password

eCapture介绍

eCapture是一款基于eBPF技术实现的用户态数据捕获工具。不需要CA证书,即可捕获https/tls的通讯明文。
  1. 不需要CA证书,即可捕获HTTPS/TLS通信数据的明文。
  1. 在bash审计场景,可以捕获bash命令。
  1. 数据库审计场景,可以捕获mysqld/mariadDB的SQL查询。
eCapture系统用户态程序使用Golang语言开发,具有良好的系统兼容性,无依赖快速部署,更适合云原生场景。 内核态代码使用C编写,使用clang/llvm编译,生产bpf字节码后,采用go-bindata转化为golang语法文件,之后采用ehids/ebpfmanager类库,调用bpf syscall进行加载、HOOK、map读取。golang编译后,无其他任何依赖即可运行,兼容linux kernel 4.18以上所有版本。

三大模块

  1. tls/ssl明文数据捕获
  1. bash命令审计
  1. mysqld数据库审计
第一个功能适用于基于tls/ssl解密需求的运维监控、故障排查、抽样分析场景。
第二个功能适用于安全领域的bash入侵发现场景,这里只是简单的功能,可以在此基础上增加其他功能。
第三个功能适用于数据库审计场景,尤其是做数据安全、数据防泄漏,甚至入侵检测等。同样,可以在此基础上扩充其他功能。

TLS/SSL类库分类

ecapture tls命令用于启动tls/ssl模块,支持了三类tls/ssl加密类库,分别是
  • openssl ,动态链接库名字为libssl.so
  • gnutls ,动态链接库名字为libgnutls.so
  • nss/nspr ,动态链接库名字为libnspr4.so
notion image

查看curl使用的ssl动态库

在不同的linux发行版中,因为各种原因,会选择不同的类库。比如wget程序,在ubuntu跟centos中就会使用不同的类库。有的是openssl,有的是gnutls,甚至两个库都引入了。
具体情况,你可以使用ldd $ELF_PATH | grep -E "tls|ssl|nspr|nss"来查看一个ELF文件使用类库情况。

代码仓库

 
参考资料