Android不安装证书不设置代理如何抓包?

大家好,上一篇文章发出去后有小伙伴留言说,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 许可协议。非商用转载请注明出处!严禁商业转载!

本文链接blog.d77.xyz/archives/b8...

相关推荐
Doro再努力7 小时前
【Linux操作系统10】Makefile深度解析:从依赖推导到有效编译
android·linux·运维·服务器·编辑器·vim
Daniel李华7 小时前
echarts使用案例
android·javascript·echarts
做人不要太理性8 小时前
CANN Runtime 运行时组件深度解析:任务调度机制、存储管理策略与维测体系构建逻辑
android·运维·魔珐星云
我命由我123459 小时前
Android 广播 - 静态注册与动态注册对广播接收器实例创建的影响
android·java·开发语言·java-ee·android studio·android-studio·android runtime
朗迹 - 张伟9 小时前
Tauri2 导出 Android 详细教程
android
lpruoyu10 小时前
【Android第一行代码学习笔记】Android架构_四大组件_权限_持久化_通知_异步_服务
android·笔记·学习
独自破碎E11 小时前
【BISHI15】小红的夹吃棋
android·java·开发语言
李堇14 小时前
android滚动列表VerticalRollingTextView
android·java
lxysbly15 小时前
n64模拟器安卓版带金手指2026
android
游戏开发爱好者818 小时前
日常开发与测试的 App 测试方法、查看设备状态、实时日志、应用数据
android·ios·小程序·https·uni-app·iphone·webview