liszero / ecapture

无需CA证书,进行HTTPS的明文通讯抓包

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

ecapture 介绍

eBPF HOOK uprobe实现的各种用户态进程的数据捕获,无需改动原程序。

  • SSL/HTTPS数据导出功能,针对HTTPS的数据包抓取,不需要导入CA证书。
  • bash的命令捕获,HIDS的bash命令监控解决方案。
  • mysql query等数据库的数据库审计解决方案。

原理

eBPF技术

参考ebpf官网的介绍

uprobe HOOK

https的ssl hook

本项目hook了/lib/x86_64-linux-gnu/libssl.so.1.1SSL_writeSSL_read函数的返回值,拿到明文信息,通过ebpf map传递给用户进程。

Probes: []*manager.Probe{
    {
        Section:          "uprobe/SSL_write",
        EbpfFuncName:     "probe_entry_SSL_write",
        AttachToFuncName: "SSL_write",
        //UprobeOffset:     0x386B0,
        BinaryPath: "/lib/x86_64-linux-gnu/libssl.so.1.1",
    },
    {
        Section:          "uretprobe/SSL_write",
        EbpfFuncName:     "probe_ret_SSL_write",
        AttachToFuncName: "SSL_write",
        //UprobeOffset:     0x386B0,
        BinaryPath: "/lib/x86_64-linux-gnu/libssl.so.1.1",
    },
    {
        Section:          "uprobe/SSL_read",
        EbpfFuncName:     "probe_entry_SSL_read",
        AttachToFuncName: "SSL_read",
        //UprobeOffset:     0x38380,
        BinaryPath: "/lib/x86_64-linux-gnu/libssl.so.1.1",
    },
    {
        Section:          "uretprobe/SSL_read",
        EbpfFuncName:     "probe_ret_SSL_read",
        AttachToFuncName: "SSL_read",
        //UprobeOffset:     0x38380,
        BinaryPath: "/lib/x86_64-linux-gnu/libssl.so.1.1",
    },
    /**/
},

bash的readline hook

hook了/bin/bashreadline函数。

使用方法

安装使用,可以选择编译,也可以直接下载二进制包。 笔者环境ubuntu 21.04, linux kernel 5.10以上通用。

编译

git clone git@github.com:ehids/ecapture.git
cd ecapture
make
bin/ecapture

使用

https的无证书抓包 ssldump

执行任意https网络请求即可使用。

wget https://www.qq.com

演示

https://v.qq.com/txp/iframe/player.html?vid=m33278fdqt8

bash的shell捕获

ps -ef|grep foo

About

无需CA证书,进行HTTPS的明文通讯抓包

License:GNU Affero General Public License v3.0


Languages

Language:C 99.4%Language:Go 0.6%Language:Makefile 0.0%