Skip to content

Instantly share code, notes, and snippets.

@quake
Last active April 6, 2022 03:47
Show Gist options
  • Star 47 You must be signed in to star a gist
  • Fork 6 You must be signed in to fork a gist
  • Save quake/b927122dad5bb7a78dac6fc527bcf888 to your computer and use it in GitHub Desktop.
Save quake/b927122dad5bb7a78dac6fc527bcf888 to your computer and use it in GitHub Desktop.

参考: https://blog.jacopo.io/en/post/apple-ocsp/

TL;DR

  1. 如果在墙内 + 怕被请喝茶,请不要使用已经编译好的 macOS 翻墙应用,因为它们通常都用开发者证书签名过,可以自己从源代码编译或者下载后去除签名后再运行: codesign --remove-signature /Applications/V2rayU.app

  2. iOS 上的翻墙应用是否也有类似问题?我没有 iPhone,没有办法做实验,如果你实验过,请评论告知

实验一下常用的 macOS 翻墙软件,以 V2rayU 为例子,从 github 下载最近的 release 版本: https://github.com/yanue/V2rayU

开启抓包工具,过滤一下 http 协议,运行 V2rayU,可以看到通过未加密的 http 发送了数据给 ocsp.apple.com:

99214107-a7858580-2812-11eb-91e2-11a529686ea9.png

将数据进行 base64 decoding:

echo 'ME4wTKADAgEAMEUwQzBBMAkGBSsOAwIaBQAEFADrDMz0cWy6RiOj1S+Y1D32MKkdBBSIJxcJqbYYYIvs67r2R1nFUlSjtwIIPwDJ61lEAH4=' | base64 --decode | hexdump

0000000 30 4e 30 4c a0 03 02 01 00 30 45 30 43 30 41 30
0000010 09 06 05 2b 0e 03 02 1a 05 00 04 14 00 eb 0c cc
0000020 f4 71 6c ba 46 23 a3 d5 2f 98 d4 3d f6 30 a9 1d
0000030 04 14 88 27 17 09 a9 b6 18 60 8b ec eb ba f6 47
0000040 59 c5 52 54 a3 b7 02 08 3f 00 c9 eb 59 44 00 7e

这里的 offset 0x32 ~ 0x45 是 OCSP 请求的 issuer key hash,它是开发者证书的公钥 hash,这里的值是:

88 27 17 09 a9 b6 18 60 8b ec eb ba f6 47 59 c5 52 54 a3 b7

网络嗅探者可以下载常见的已经打包好的 macOS 翻墙应用,从应用中 dump 出 issuer key hash:

codesign -d --extract-certificates /Applications/V2rayU.app

它会在当前目录下面 dump 出这个应用在签名路径上的所有签名,从 codesign0 到 codesignX , codesign0 对应到开发者证书,看一下这个文件里面的内容:

hexdump codesign0

...
00002b0 30 16 80 14 88 27 17 09 a9 b6 18 60 8b ec eb ba
00002c0 f6 47 59 c5 52 54 a3 b7 30 3d 06 08 2b 06 01 05
...

可以看到 offset 0x2b4 ~ 0x2c7 包含上面这个 issuer key hash

88 27 17 09 a9 b6 18 60 8b ec eb ba f6 47 59 c5 52 54 a3 b7

这样网络嗅探者就能够用一个最简单的网络嗅探 + issuer key hash 映射,知道你在这台 macOS 上运行了哪些需要关注的软件(不仅限于翻墙)

我验证了几个常见的翻墙应用:ShadowsocksX-NG, V2rayU,SurfsharkVPN 等等,无一例外都用开发者证书进行了签名

20aab34d-a57c-4a7a-b033-fbbfcad51771-3412-000003e4da9341be

@ferstar
Copy link

ferstar commented Nov 18, 2020

直接把 ocsp 请求搞到本地回环就好了吧, 顺便还能提高下打开 APP 的速度

echo 127.0.0.1 ocsp.apple.com | sudo tee -a /etc/hosts
sudo killall -HUP mDNSResponder

更新:

屏蔽ocsp.apple.com的问题目前发现两处:

  1. ping不通百度, 但能上网
  2. 无法检查macOS系统更新这也许是个优点?适合养老

@mchotdograp
Copy link

@WishMelz
Copy link

请问mac应该用什么软件

@karolguo
Copy link

直接把 ocsp 请求搞到本地回环就好了吧, 顺便还能提高下打开 APP 的速度

echo 127.0.0.1 ocsp.apple.com | sudo tee -a /etc/hosts
sudo killall -HUP mDNSResponder

更新:

屏蔽ocsp.apple.com的问题目前发现两处:

  1. ping不通百度, 但能上网
  2. 无法检查macOS系统更新这也许是个优点?适合养老

请问屏蔽了如何恢复呢?现在更新不了系统了。。。

@phlinhng
Copy link

请问屏蔽了如何恢复呢?现在更新不了系统了。。。

@karolguo 編輯 /etc/hosts 把對應行刪除即可

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment