type
status
date
slug
summary
tags
category
icon
password
eCapture介绍
eCapture是一款基于eBPF技术实现的用户态数据捕获工具。不需要CA证书,即可捕获https/tls的通讯明文。
- 不需要CA证书,即可捕获HTTPS/TLS通信数据的明文。
- 在bash审计场景,可以捕获bash命令。
- 数据库审计场景,可以捕获mysqld/mariadDB的SQL查询。
eCapture系统用户态程序使用Golang语言开发,具有良好的系统兼容性,无依赖快速部署,更适合云原生场景。
内核态代码使用C编写,使用clang/llvm编译,生产bpf字节码后,采用go-bindata转化为golang语法文件,之后采用ehids/ebpfmanager类库,调用bpf syscall进行加载、HOOK、map读取。golang编译后,无其他任何依赖即可运行,兼容linux kernel 4.18以上所有版本。
三大模块
- tls/ssl明文数据捕获
- bash命令审计
- mysqld数据库审计
第一个功能适用于基于tls/ssl解密需求的运维监控、故障排查、抽样分析场景。
第二个功能适用于安全领域的bash入侵发现场景,这里只是简单的功能,可以在此基础上增加其他功能。
第三个功能适用于数据库审计场景,尤其是做数据安全、数据防泄漏,甚至入侵检测等。同样,可以在此基础上扩充其他功能。
TLS/SSL类库分类
ecapture tls
命令用于启动tls/ssl模块,支持了三类tls/ssl加密类库,分别是- openssl ,动态链接库名字为
libssl.so
- gnutls ,动态链接库名字为
libgnutls.so
- nss/nspr ,动态链接库名字为
libnspr4.so
查看curl使用的ssl动态库
在不同的linux发行版中,因为各种原因,会选择不同的类库。比如
wget
程序,在ubuntu跟centos中就会使用不同的类库。有的是openssl
,有的是gnutls
,甚至两个库都引入了。具体情况,你可以使用
ldd $ELF_PATH | grep -E "tls|ssl|nspr|nss"
来查看一个ELF文件使用类库情况。代码仓库
参考资料
- 作者:Killi
- 链接:https://udeth.com/article/ecapture-tls
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。