SSL Proxy Detection — TLS MITM and Deep Packet Inspection

Back to SSL Proxy Check

SSL Proxy & MITM Detection

How SSL Proxy Detection Works

A technical overview explaining how SSL proxy interception is detected and how to interpret the test results.


01

What Is an SSL Proxy (MITM)?

An SSL proxy — also referred to as a Man-in-the-Middle (MITM) proxy — is an intermediary device that intercepts encrypted HTTPS connections between a client and a destination server.

Rather than communicating directly with the destination, the browser connects to the proxy. The proxy decrypts the inbound HTTPS traffic, inspects or filters it according to a defined policy, re-encrypts it, and forwards the reconstructed connection to the intended server.

From the perspective of the destination server, the connection appears to originate from the proxy — not from the end-user's device. This process is formally known as SSL/TLS interception or HTTPS inspection.

Technical Note

SSL proxy interception operates at Layer 7 (Application Layer) of the OSI model. It requires the proxy to maintain two separate TLS sessions: one with the client and one with the destination server. The proxy acts as a TLS termination point for both.
02

Why SSL/TLS Interception Is Deployed

SSL interception is legitimately deployed across a wide range of enterprise and security use cases. Understanding these use cases helps distinguish authorised inspection from unauthorised interception.

✔ Authorised Use Cases
  • Corporate security monitoring & policy enforcement
  • Antivirus / malware scanning of encrypted traffic
  • Data Loss Prevention (DLP)
  • Cloud Access Security Broker (CASB) controls
  • Advanced Threat Protection (ATP)
  • Parental and content filtering
  • Regulatory compliance inspection
✕ Malicious / Unauthorised Use
  • Credential harvesting from intercepted sessions
  • Content injection or page manipulation
  • Surveillance without user knowledge or consent
  • Session hijacking in compromised network environments
03

How the SSL Proxy Check Works

Detection is based on TLS fingerprint analysis of the ClientHello message — the first packet a browser sends when initiating a secure connection. This message is transmitted before encryption is established, making it fully observable without breaking the security of the session.

3.1 — The TLS ClientHello

When a browser initiates a TLS handshake, it sends a ClientHello message containing a structured description of its TLS capabilities. The fields within this message collectively form a TLS fingerprint that is characteristic of a specific browser and its underlying TLS implementation.

FieldDescription
Supported Protocol Versionse.g. TLS 1.2, TLS 1.3
Cipher SuitesOrdered list of supported encryption algorithms
TLS ExtensionsAdditional capabilities declared by the client
Supported GroupsElliptic curves and finite-field DH groups
ALPN IdentifiersApplication protocols (e.g. h2 for HTTP/2, http/1.1)
GREASE ValuesRandomised placeholder values (Chromium browsers only)

These fields together form a fingerprint that is highly consistent for a given browser version. Modern fingerprinting methods such as JA3, JA3S, and JA4 hash these fields to produce a short identifier that can be compared against known browser profiles.

3.2 — Cross-Validation Against the User-Agent

Once the server captures the raw ClientHello fingerprint, it cross-validates the observed TLS characteristics against the browser identity declared in the HTTP User-Agent string.

Modern browsers generate consistent, recognisable TLS fingerprints that match their declared identity. When a middlebox intercepts the connection and rebuilds the TLS handshake using its own TLS library — such as OpenSSL, Go's crypto/tls, or a vendor-specific stack — the resulting ClientHello structure changes. These structural differences create detectable inconsistencies between the expected browser fingerprint and the observed handshake.

3.3 — Why Certificate Spoofing Cannot Bypass This Detection

Many SSL interception systems install a trusted root certificate on the endpoint device to prevent certificate warnings. This makes certificate-based detection methods ineffective — the proxy can present a trusted certificate that the browser accepts without complaint.

However, TLS fingerprint analysis operates at the handshake layer, before certificate exchange completes. Even when a proxy presents a fully trusted certificate, it cannot perfectly replicate the client TLS fingerprint because:

  • Cipher suite ordering is determined by the underlying TLS library, not configurable per-session
  • Extension ordering and contents are library-specific and structurally different across implementations
  • GREASE values are generated by the browser's TLS stack and are not inserted by proxy libraries
  • ALPN preferences reflect the browser's actual HTTP implementation, not the proxy's
  • Supported version lists differ between browser TLS stacks and proxy TLS libraries

🔒 Key Principle

The TLS library itself leaves identifiable structural patterns in the ClientHello. These patterns are independent of certificate trust and cannot be suppressed without replacing the browser's TLS stack entirely.
04

Detection Signals — What Each Field Reveals

The following five signals are examined during fingerprint analysis. Each represents a structural property of the ClientHello that differs predictably between genuine browser connections and proxy-reconstructed handshakes.

1GREASE Values

What it is

Randomised 0x?A?A placeholder values inserted by Chromium browsers

RFC / Spec

RFC 8701 — Generate Random Extensions And Sustain Extensibility

Normal (Chrome / Edge)

GREASE values present in cipher list and extensions

Proxy indicator

GREASE absent while Chrome or Edge is declared in User-Agent

Why it works:Proxy TLS libraries do not implement GREASE. Its absence is a reliable signal when a Chromium-based browser is claimed.
2TLS 1.3 Support

What it is

Presence of TLS 1.3 in the supported_versions extension

Baseline

All major browsers have supported TLS 1.3 since 2018

Normal browser

TLS 1.3 present in supported_versions

Proxy indicator

TLS 1.3 absent — legacy TLS stack constructing the handshake

Why it works:Older or minimal TLS libraries used by interception appliances frequently default to TLS 1.2 only.
3HTTP/2 in ALPN

What it is

Advertisement of h2 (HTTP/2) in the ALPN (Application-Layer Protocol Negotiation) extension

Normal browser

h2 and http/1.1 both advertised via ALPN

Normal browser

h2 + http/1.1 advertised via ALPN

Proxy indicator

h2 absent — only http/1.1 present in ALPN

Why it works:Many proxy libraries default to HTTP/1.1 only and omit the h2 identifier. All modern browsers advertise h2 by default on every TLS connection.
4Cipher Suite Count

What it is

Total number of cipher suites offered in the ClientHello

Browser baseline

Chrome / Edge / Firefox: 15–20 cipher suites

Normal browser

15–20 cipher suites offered

Proxy indicator

3–6 suites — OpenSSL / Go-based proxy library

Why it works:Browsers offer a broad cipher list for compatibility. Minimal TLS libraries include only the suites they actually implement, producing a characteristically short list.
5TLS Extension Count

What it is

Total number of TLS extensions present in the ClientHello

Normal browser

12 or more extensions (SNI, OCSP, SCT, session ticket, key share, etc.)

Normal browser

12+ extensions including optional ones

Proxy indicator

< 8 extensions — minimum-viable ClientHello construction

Why it works:Proxies that reconstruct the handshake include only required extensions. The absence of optional but universally-present extensions such as signed certificate timestamps or extended master secret indicates a non-browser TLS stack.
05

Signal Quick Reference

A summary of all five detection signals and their expected values for legitimate browsers versus proxy-intercepted connections.

Signal✔ Legitimate Browser✕ Proxy / MITM Indicator
GREASE ValuesPresent (0x?A?A pattern) — Chrome/EdgeAbsent despite Chromium User-Agent
TLS 1.3 SupportPresent in supported_versionsAbsent — legacy TLS stack in use
ALPN: h2 (HTTP/2)h2 + http/1.1 advertisedhttp/1.1 only — h2 missing
Cipher Suite Count15–20 suites (Chrome / Firefox / Edge)3–6 suites (OpenSSL / Go library)
Extension Count12+ extensions including optional ones< 8 extensions — minimal construction
06

Interpreting Your Results

The detection engine cross-references all observed signals against the declared browser profile. Results fall into one of two categories:

No SSL Proxy Detected

All observed TLS fingerprint signals are consistent with the browser declared in the User-Agent. The connection appears to be direct with no middlebox interference. The ClientHello structure matches the expected profile for this browser and TLS implementation.
!

SSL Proxy / MITM Detected

One or more TLS fingerprint signals are inconsistent with the declared browser. A middlebox is highly likely intercepting and re-signing the TLS connection. The ClientHello was likely reconstructed by a proxy TLS library rather than the browser itself.

Important Context for MITM Detected Results

A MITM detection result does not necessarily indicate a malicious interception. Enterprise corporate networks, secure web gateways, and cloud security platforms routinely perform authorised SSL inspection.

If you are on a corporate network and see this result, your organisation's security gateway is likely performing HTTPS inspection as part of its standard security policy.

If you see this result on a personal or untrusted network where no interception is expected, investigate the network environment and the certificates being presented to your browser.