One thing about () that I'm a little worried about is that it will make inspection of traffic harder to the point where it might restrict lots of important kinds of inspection. When the software we use is not , then we cannot see what it is doing by reading the source code. We need to inspect the network traffic. So it is very important that it is possible to inspect traffic that uses ECH as well, despite that middleware companies will abuse this

@eighthave It is one of the many reasons why in PiRogue Tool Suite we decided to use another technique enabling TLS traffic decryption. Instead of using MITM proxy, we retrieve encryption keys directly from the device's memory: pts-project.org/guides/g8/#tls

@U039b interesting, nice approach. Have you looked at how to do that with ? It uses a new public key that is generated using rfc-editor.org/rfc/rfc9180.htm

Also, will that work with apps that use etc so they refuse to run on rooted devices? It seems for those apps, we still need a way to use something like , e.g. inserting a custom CA cert. But the ECH key is not related to any CA cert.

If you have detailed questions about ECH, please ask here or on matrix.to/#/#ech-dev:matrix.or

@eighthave I already managed to analyze apps using Safety Net. PiRogue comes with a Frida hook preventing root detection.

MITM proxy requires disabling certificate pinning enforced by almost all tracking SDKs. Disabling it requires modifying the app behavior, either by modifying its code or by using Frida hooks (rooted device).

Regarding ECH, the future will teach me if the technique we use in PiRogue works or not. AFAIK, ECH encrypts the handshake but has no impact on TLS encryption keys.

@U039b ECH just affects ClientHello, the rest of the TLS session should remain the same. If the ClientHelloInner cannot be decrypted, then the actual domain name remains hidden. That could be important with CDNs, e.g. is the client app connecting to badtracker.com or cloudflare-ech.com? In that case, it might be possible to get the domain name by MITMing the DNS but not guaranteed. The client could store IP addresses to avoid leaking DNS to avoid detection. I think Facebook's app does this.

Follow

@U039b For HTTP that would require things work without the Host: header, I wonder if any CDNs would use the domain name from ClientHelloInner if Host: was missing?

Sign in to participate in the conversation
Librem Social

Librem Social is an opt-in public network. Messages are shared under Creative Commons BY-SA 4.0 license terms. Policy.

Stay safe. Please abide by our code of conduct.

(Source code)

image/svg+xml Librem Chat image/svg+xml