大家好,上一篇文章发出去后有小伙伴留言说,Android 上要是有不用代理不用证书的方法就好了,现在,它来了!
本篇文章来分享一下在 Android/Linux 上不安装证书不设置代理进行抓包的方法。
eBPF
要想不安装证书不设置代理进行抓包,先要了解一下什么是 eBPF。以下内容借鉴于 eBPF.io,它是一个 eBPF 的开放社区,详细介绍了 eBPF 的原理,用法和使用 eBPF 技术实现的一些功能,感兴趣的小伙伴可以看看。
eBPF 是一项革命性的技术,起源于 Linux 内核,它可以在特权上下文中(如操作系统内核)运行沙盒程序。它用于安全有效地扩展内核的功能,而无需通过更改内核源代码或加载内核模块的方式来实现。
可以将 eBPF 简单理解为一个运行在内核中的 JVM,也可以叫沙盒。它可以即时的编译并运行外部的代码,可以通过此方式在运行时向操作系统添加新的功能或者拦截/修改/记录一些信息。
如上图,借用了官方的图片,eBPF 程序运行在用户空间,但是通过内核接口将代码放到内核运行,由于有了 JIT
的加持,运行速度不输本地编译的代码。
eBPF应用
那 eBPF 可以做什么呢?由于它运行在内核中,拥有很高的权限,并且可以拦截多种系统调用,所以它的作用很广,抓包只是它的一个小小的应用。
如今,eBPF 被广泛用于驱动各种用例:在现代数据中心和云原生环境中提供高性能网络和负载均衡,以低开销提取细粒度的安全可观测性数据,帮助应用程序开发人员跟踪应用程序,为性能故障排查、预防性的安全策略执行(包括应用层和容器运行时)提供洞察,等等。可能性是无限的,eBPF 开启的创新才刚刚开始。
eCapture
eCapture 是一个基于 eBPF
技术实现的抓包工具,它可以在无需 CA
证书的情况下抓取 TLS/SSL
数据包。
支持Linux系统内核x86_64 4.18及以上版本,aarch64 5.5及以上版本; 需要ROOT权限; 不支持Windows、macOS系统;
它支持 openssl
的所有版本和 Boringssl
(Chrome 使用此 openssl 的分支作为自己的加密通讯库)的所有版本。由于 Android 也是基于 Linux 的,所以它也支持 Android。
它的使用方法很简单,只需要下载可执行文件,然后运行即可。由于我手上只有一个 Linux4.4 内核的 Android 手机,这里我使用 Ubuntu 来演示一下, 因为在 Android 上最少要 5.5 的内核才可以支持。最近的手机应该都是可以的,可能对一些型号比较老的手机不太友好。
实战
首先根据操作系统和架构来下载对应的可执行文件,我使用的是 Ubuntu 的 x86
架构,所以我要下载 ecapture-v0.9.4-linux-amd64.tar.gz,大家可以根据自己的系统和架构来选择适合自己的版本。
下载可执行文件后,直接运行下面的命令即可,别忘了给 root
权限。
bash
sudo ./ecapture tls
运行以后它会自动查找当前使用的 openssl
的版本,我的系统比较新,可能不好识别,但是最终还是正常找到了我正在使用的版本。
运行以后,使用 curl
命令尝试一下能否抓到 https
请求数据。随意访问一个网站,我这里使用百度作为演示:
bash
curl https://www.baidu.com
正常收到百度的响应,来查看一下 eCapture 的输出:
发现请求和响应都正常的打印出来了,到这里我并没有安装过任何抓包软件,也没有安装过系统证书,直接使用 root
权限把 eCapture 启动起来就可以了。
理论上来说,在 Android 上原理和操作流程是一样的,只要是使用了系统的 openssl
进行加解密,都是可以正常抓到数据的。如果没有使用系统自带的 openssl
库而使用自己编译的 openssl
,eCapture 也支持指定 openssl
库的路径,具体用法可以查看官方文档。
eCapture 也支持将抓到的数据包保存为 pcapng
文件,可以直接使用 Wireshark 打开进行分析。
eCapture 支持 8 个模块,具体看上面官网图,详细使用方式可以查看官方文档,我就不一一演示了。
总结
eCapture 可以在一台仅有 root
权限的手机上抓取 https 加密的数据包,无需任何代理和证书,可以极大的降低被软件检测的风险。
可以这么说,由于 eCapture 运行在内核中,几乎不可能有哪一款软件可以检测到它,只要能找到对应的 openssl
库,可以抓取几乎所有的 https
数据包,感兴趣的小伙伴可以自己试一下。
本文章首发于个人博客 LLLibra146's blog
本文作者:LLLibra146
更多文章请关注公众号 (LLLibra146)
版权声明 :本博客所有文章除特别声明外,均采用 © BY-NC-ND 许可协议。非商用转载请注明出处!严禁商业转载!