Recent posts
Tag: #ios · 4 posts
Posted Oct 17
#iOS#TestFlight Surge 5 5.21.0 (2885) is ready to test on iOS. What to Test: 完成针对 SNI 的 MITM 启动匹配,现在当 SNI 出现于 MITM 列表时将能够开启 MITM。
Hashtags
Posted Oct 17
#iOS#TestFlight Surge 5 5.21.0 (2884) is ready to test on iOS. What to Test: 一直以来 Surge iOS/macOS 都是使用的代理优先,VIF 为补充的方式接管系统请求。这样做有几个好处: 1. 代理模式接管时,App 和 Surge 间使用的是 loopback socket 通讯,由于不需要在 userspace 进行 TCP 重组装,代理接管模式比 VIF 模式更高效。 2. 当请求通过 HTTP 代理模式被接管时,说明这个请求一定是 HTTP/HTTPS 协议(HTTP CONNECT 模式下可能有些许例外)。这使得 Surge 可以直接使用 HTTP/MITM 引擎进行处理。而如果由 VIF 接管,则并没有方法绝对确认这是否是 HTTP/HTTPS 协议,只能靠端口号/数据包特征进行猜测。 3. 使用 HTTP 引擎接管除了可以使用修改功能外,还可以使得 Surge 在建立向外的连接时,在连接建立阶段便发出客户端首个数据包,即 0-RTT,降低握手延迟。 但是越来越多的 App 开始检测系统代理设置并拒绝工作,这是一种既不专业也无必要的安全措施,一方面来说代理设置在一些大型企业中是一种很常见的配置,另一方面即使不设置代理,也可以通过 VIF 甚至上级路由劫持或修改流量。如果 App 在意流量安全,应该正确使用 Certificate Pinning 等安全手段,而非在代理设置上为难用户。 但是由于使用代理的用户量确实过少使得无法影响厂商决策,我们不得不进行妥协。Surge iOS 将调整为 VIF 接管优先的工作模式以绕过该问题。目前测试阶段将强制切换为该模式,之后将重新开放代理模式优先选项。如果某 app 在该版本后无法正常工作请反馈。 于此同时,还优化了 VIF 引擎的工作方式以应对该变化: 1. 发往 80/443 端口的请求,会等待客户端发送第一个数据包后,判断是否为有效的 HTTP/TLS 请求决定处理方式,若非有效的 HTTP 请求,或 300ms 内未收到首个数据包,则回退至 TCP 转发模式。因此对于使用 80 端口的请求,不再需要配置 force-http-engine-hosts 参数。 2. 将自动识别 TLS Client Hello 消息并提取 SNI,下个版本将增加针对 SNI 的规则和 MITM 主机名匹配。 其他说明: 1. 目前仅对 80/443 端口开启了协议自识别,因为部分协议是由服务端先发送数据,如 SSH、IMAP、FTP,等待客户端数据再进行后续工作的流程将对这些请求造成不必要的延迟。其余端口的 HTTP 请求若需要由 HTTP 引擎处理依然需要配置 force-http-engine-hosts。 2. MITM 依然需要配置主机名以开启,但是不再需要 tcp-connection 参数,将默认对 TCP 请求生效。 3. 本次调整后,由于 VIF 接管的 HTTP/HTTPS 请求将自动由 HTTP 引擎处理,对比原来手动配置 VIF Only 兼容模式的方式,HTTP/HTTPS 请求的握手延迟会有所下降。(因为可以正确识别与构造 early data 完成 0-RTT 握手。原先仅在代理模式下支持)
Hashtags
Posted May 11
#iOS#TestFlight Surge 5 5.20.0 (2717) is ready to test on iOS. What to Test: - 新的订阅功能:图标库 Surge 现在自带了 8000+ 图标的彩色图标库供策略组选用。(后续将同步给 Mac 版本配置设备图标) 频道: @SURGEINFO 群组: @SURGEPRO
Hashtags
Posted Apr 18
#iOS#TestFlight#订阅功能 Surge 5 5.20.0 (2703) is ready to test on iOS. What to Test: 新的订阅功能:Shadow TLS v3 支持 - 需追加参数 shadow-tls-version=3 使用。 - 使用 V3 时一定需要配置 shadow-tls-sni 参数。 - 暂不支持 UI 配置。 新功能:Adaptive TLS Fingerprint 由于 TLS/SSL 协议历史悠久,存在大量握手参数,且握手时的参数是明文传递的。这使得握手时的参数的排列与组合方式便可以当做一种特征,即 TLS 指纹。通过 TLS 指纹,可以推断客户端的浏览器版本、操作系统等信息。 为了保护隐私和防止非标准 TLS 客户端检测,Surge 新加入了 Adaptive TLS Fingerprint 功能。Surge 将从处理的流量中自动提取和复制系统请求的 TLS 指纹(目前复制对象为 gateway.icloud.com 的 HTTPS 请求)。通过这种方式,Surge 所产生的 TLS ClientHello 数据包将与 iOS 系统请求完全一致,避免产生独特的 TLS 指纹。 目前该功能与 Shadow TLS v3 绑定,无需单独配置开启。 频道: @SURGEINFO 群组: @SURGEPRO
Hashtags