eCapture v0.7.4发布,支持Pcap Filter包过滤语法
eCapture是什么
eCapture旁观者[1]一个无需CA证书,无侵入的HTTPS/TLS明文抓包工具。可以在Linux 4.18以上版本使用,同时也支持Android arm64 5.5以上版本。项目在2022年4月发布,目前7900颗星。
超强特性 :Pcap Filter 包过滤
eCapture v0.7.4版本发布支持Pcap Filter Syntax[2],你可以像tcpdump一样使用pcap filter表达式来过滤网络包。
在tls
或gotls
模块中,当运行模式参数-m
为pcap
时,支持pcap filter表达式。在命令行最后的参数中设定,例如:
sudo bin/ecapture tls -m pcap -i ens160 -w a.pcapng host 1.1.1.1 or src port 443
[sudo] password for cfc4n:
tls_2024/02/25 07:23:27 ECAPTURE :: ecapture Version : linux_aarch64:0.7.3-20240222-f50b9de:[CORE]
tls_2024/02/25 07:23:27 ECAPTURE :: Pid Info : 884394
tls_2024/02/25 07:23:27 ECAPTURE :: Kernel Info : 5.15.131
tls_2024/02/25 07:23:27 EBPFProbeOPENSSL module initialization
tls_2024/02/25 07:23:27 ECAPTURE :: Module.Run()
tls_2024/02/25 07:23:27 EBPFProbeOPENSSL: Pcapng MODEL
tls_2024/02/25 07:23:27 EBPFProbeOPENSSL OpenSSL/BoringSSL version not found from shared library file, used default version:linux_default_3_0
tls_2024/02/25 07:23:27 EBPFProbeOPENSSL HOOK type: 2, binrayPath: /usr/lib/aarch64-linux-gnu/libssl.so.3
tls_2024/02/25 07:23:27 EBPFProbeOPENSSL PcapFilter: host 1.1.1.1 or src port 443
tls_2024/02/25 07:23:27 EBPFProbeOPENSSL Ifname: ens160, Ifindex: 2
tls_2024/02/25 07:23:27 EBPFProbeOPENSSL Hook masterKey function: [SSL_get_wbio SSL_in_before SSL_do_handshake]
tls_2024/02/25 07:23:27 EBPFProbeOPENSSL target all process.
tls_2024/02/25 07:23:27 EBPFProbeOPENSSL target all users.
tls_2024/02/25 07:23:27 EBPFProbeOPENSSL: BPF bytecode filename:user/bytecode/openssl_3_0_0_kern.o
tls_2024/02/25 07:23:27 EBPFProbeOPENSSL saving pcapng file: /home/cfc4n/project/ecapture/a.pcapng
tls_2024/02/25 07:23:27 EBPFProbeOPENSSL: perfEventReader created. mapSize:4 MB
tls_2024/02/25 07:23:27 EBPFProbeOPENSSL: perfEventReader created. mapSize:4 MB
tls_2024/02/25 07:23:27 EBPFProbeOPENSSL module started successfully.
tls_2024/02/25 07:23:27 ECAPTURE :: start 1 modules
eCapture 指令图解
很多同学对ecapture的使用方式不了解,eCapture的module模块
、mode模式
两个功能点经常混淆,运行出错后,文档不看,help
命令也不看。遇到问题后,直接到公众号问我,弄得我很头大。这次也按照思维导图的方式,简单画个图解,以便更直观地熟悉eCapture。
注
在个别Android的发行版上,pcap filter过滤语法可能没有效果,未来会修复。
技术原理
本功能由Leon Hwang[3]大神贡献,感谢他春节期间的付出。详情见:feat: Support pcap-filter expression for pcap mode #478[4]
libpcap 编译 pcap filter 表达式的过滤内容为cbpf字节码 cbpf字节码转为ebpf字节码 ebpf字节码插入到eCapture的TC HOOK字节码中 由内核加载全部eBPF字节码,实现表达式过滤
依赖
elibpcap[5] cbpfc[6] ebpfmanager v0.4.5[7] (eBPF bytecode InstructionPatchers)
下载
eCapture v0.7.4 下载地址[8]
eCapture旁观者: https://ecapture.cc
[2]Pcap Filter Syntax: https://www.tcpdump.org/manpages/pcap-filter.7.html
[3]Leon Hwang: https://github.com/asphaltt
[4]feat: Support pcap-filter expression for pcap mode #478: https://github.com/gojue/ecapture/pull/478
[5]elibpcap: https://github.com/jschwinger233/elibpcap
[6]cbpfc: github.com/cloudflare/cbpfc
[7]ebpfmanager v0.4.5: https://github.com/gojue/ebpfmanager
[8]eCapture v0.7.4 下载地址: https://github.com/gojue/ecapture/releases/v0.7.4
2024年2月25日 高铁G26