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...

相关推荐
我不会插花弄玉5 小时前
7.函数【由浅入深-MySQL】
android·数据库·mysql
vilya6 小时前
手机端 Agent 怎么动起来:Kotlin 与 Python 之间的桥
android·agent
高晶6 小时前
Android 新手实战:从零搭建 WebRTC 在线直播系统
android·程序员
alexhilton6 小时前
为什么你的 LazyColumn 仍然卡顿
android·kotlin·android jetpack
>Andre<7 小时前
系统架构全景
android
hai_android11 小时前
Android 嵌套滑动冲突:内部拦截 vs 外部拦截实战
android·android studio·android jetpack
木子欢儿13 小时前
Zabbix 7.4 Alpine 版 Docker Compose 部署
android·运维·docker·容器·zabbix
素师良码14 小时前
第9篇:Android驱动踩坑实录:DSI RX FIFO前置脏0、数据错位复盘
android
夜雪一千14 小时前
如何在MySQL中实现字段级加密
android·数据库·mysql
夜雪一千14 小时前
MySQL 如何存储经纬度坐标:选型、建表、空间查询实战
android·mysql·adb