系统级抓包
本篇教你用「系统级抓包」抓下 macOS 系统自带 App 和那些顽固、藏得很深的应用:不进入程序、不碰证书,只从系统底层旁路观测,把连别的抓法都够不着的目标也读成明文。这是本机抓法的最后一张底牌——前面几种都拿不下时,用它。
一、什么时候用这种抓法
适合你满足下面任一条:
- 想看 macOS 系统自带 App / 系统服务(App Store、系统组件、后台服务等)在跟服务器说什么。
- 目标是顽固、藏得很深的第三方应用:拒绝一切外部介入,代理进不去、从程序内部取明文也被挡在门外。
- 前面几种抓法都试过了——代理被拒、应用层抓包 拒绝介入、网卡上只剩一堆密文——还是要拿到明文。
如果只是常规程序(浏览器 / 脚本 / CLI),用 指定程序抓包 或 应用层抓包 更省事,系统级抓包属于杀鸡用牛刀。
二、前置条件
- 运行在 macOS 上(本篇讲的是 macOS 系统级抓法)。
- 已安装并启动 TraceEagle,第一次启动时同意系统权限即可。
- 知道要抓的目标:一个正在运行的程序,或它的程序路径 / 名称。
- 无需装证书、无需改系统代理——这种抓法不做中间人、不碰证书。
三、开始抓:三步抓下第一条
- 新建会话,选择 「本机系统级抓包」。
- 选目标:从下拉里选一个正在运行的程序,或直接填程序路径 / 名称。
- 可选 抓「启动那一刻」:勾上后工具会先把目标关掉、再由自己拉起,把启动初期的流量也一并抓到——很多鉴权、握手就发生在这一瞬间,不勾容易漏掉。
- 点 开始。工具会从系统底层旁路观测这个程序,读出它收发的明文。
让目标程序产生网络请求(在系统 App 里点一下会联网的操作),流量就会实时出现在请求列表里。
四、验证:确认抓到并解密了
在请求列表点开任意一条,看详情:
- 能看到请求:请求行、请求头、body 都在。
- TLS 显示「已解密」:请求与响应是可读的明文(如 JSON),不是乱码密文。
系统级抓包不注入、不改动程序、不碰证书,所以哪怕目标做了严格的证书校验,也影响不到这里读出的明文。
五、抓不到 / 解不开?逐条排查
| 现象 | 多半是 | 怎么办 |
|---|---|---|
| 选不到目标 / 下拉里没有 | 程序还没运行 | 先把目标程序跑起来,再回来在下拉里选;或直接填程序路径 / 名称 |
| 抓到了,但漏了最开头的握手 / 鉴权 | 关键流量发生在启动初期,开抓时已经过去了 | 勾上 抓「启动那一刻」,让工具先关掉目标、再拉起,把启动初期一并覆盖 |
| 一条流量都没有 | 选错了目标,或该程序此刻没联网 | 确认选的是真正在联网的那个程序;触发一次会联网的操作再看 |
| 常规程序也想用它 | 系统级抓包对普通程序是杀鸡用牛刀 | 常规程序改用 指定程序抓包(能命令启动)或 应用层抓包(已在运行) |
六、本机四种抓法怎么选
| 你的情况 | 用哪种 |
|---|---|
| macOS 上的系统自带 App、顽固应用(别的方式抓不到) | 系统级抓包(本篇) |
| 程序已在运行 / 证书绑定 / 不认代理 / 自研加密 | 应用层抓包 |
| 能用命令启动的常规程序(浏览器 / 脚本 / CLI) | 指定程序抓包 |
| 想看整机全部流量、非 HTTP 流量 | 网卡抓包 |
下一步
- 抓到之后怎么读、怎么切换视图、怎么解码:见 数据查看与解码。
- 遇到私有 / 自研协议、想自己教它怎么读:见 自定义协议解码。
- 想改请求再发、或半路拦下来手动改:见 请求构造与重放、规则改写与断点拦截。
项目地址:traceeagle.com/zh/