Evil Twin EAP-TLS

Tip

Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Ucz się i ćwicz Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Wsparcie dla HackTricks

EAP-TLS jest powszechnym „bezpiecznym” wyborem dla WPA2/3-Enterprise, ale podczas ocen regularnie pojawiają się dwie praktyczne słabości:

  • Unauthenticated identity leakage: zewnętrzny EAP-Response/Identity jest wysyłany w postaci jawnego tekstu zanim zostanie zbudowany tunel TLS, więc prawdziwe nazwy użytkowników domeny często leakują w eterze.
  • Broken client server-validation: jeśli supplicant nie weryfikuje rygorystycznie certyfikatu serwera RADIUS (lub pozwala użytkownikom przepuścić ostrzeżenia klikając dalej), rogue AP z self-signed cert nadal może onboardować ofiary – zamieniając mutual TLS w one-way TLS.

Nieuwierzytelnione ujawnianie tożsamości EAP / enumeracja nazw użytkowników

EAP przeprowadza wymianę tożsamości przed rozpoczęciem TLS. Jeśli klient używa prawdziwej nazwy użytkownika domeny jako swojej zewnętrznej tożsamości, każdy w zasięgu RF może ją zebrać bez uwierzytelniania.

Proces pasywnego zbierania

# 1) Park on the right channel/BSSID
airodump-ng -i $IFACE -c $CHAN --bssid $BSSID

# 2) Decode EAP frames and extract identities
# Trigger a client connection (e.g., your phone) to see the leak
tshark -i "$IFACE" -Y eap -V | grep "Identity: *[a-z]\|*[A-Z]\|*[0-9]"

Impact: szybkie, bezautoryzacyjne zbieranie nazw użytkowników → napędza password spraying, phishing i korelację kont. Gorzej, gdy nazwy użytkowników odpowiadają adresom e-mail.

TLS 1.3 privacy vs downgrade games

TLS 1.3 szyfruje certyfikaty klienta i większość metadanych handshake, więc gdy supplicant rzeczywiście negocjuje TLS 1.3, Evil Twin nie może pasywnie poznać certyfikatu/tożsamości klienta. Wiele enterprise stacków nadal dopuszcza TLS 1.2 dla kompatybilności; RFC 9190 ostrzega, że rogue AP może zaoferować tylko TLS 1.2 static-RSA suites, aby wymusić fallback i ponownie ujawnić outer identity (a nawet cert klienta) w cleartext EAP-TLS.

Offensive playbook (downgrade to leak ID):

  • Skompiluj hostapd-wpe z włączonymi tylko TLS 1.2 static RSA ciphers i z wyłączonym TLS 1.3 w openssl_ciphersuite / ssl_ctx_flags.
  • Reklamuj corporate SSID; kiedy ofiara zainicjuje TLS 1.3, odpowiedz alertem TLS i zrestartuj handshake, aby peer spróbował ponownie z TLS 1.2, ujawniając swoją prawdziwą tożsamość zanim walidacja certyfikatu się powiedzie.
  • Połącz to z force_authorized=1 w hostapd-wpe, by 4-way handshake zakończył się nawet gdy client-auth zawiedzie, dając ruch na poziomie DHCP/DNS do phishowania lub portal.

Defensive toggle (what to look for during an assessment):

  • hostapd/wpa_supplicant 2.10 dodał wsparcie EAP-TLS zarówno po stronie serwera, jak i peer dla TLS 1.3, ale jest ono wyłączone domyślnie; włączenie go na klientach z phase1="tls_disable_tlsv1_3=0" usuwa okno downgrade.

TLS 1.3 realities in 2024–2025

  • FreeRADIUS 3.0.23+ akceptuje EAP-TLS 1.3, ale klienci nadal zawodzą (Windows 11 nie ma wznowienia sesji EAP-TLS 1.3, wsparcie na Androidzie jest zróżnicowane), więc wiele wdrożeń przypina tls_max_version = "1.2" dla stabilności.
  • Windows 11 włącza EAP-TLS 1.3 domyślnie (22H2+), jednak nieudane wznowienia i niestabilne stosy RADIUS często wymuszają fallback do TLS 1.2.
  • Wymiana klucza RSA dla TLS 1.2 jest wycofywana; OpenSSL 3.x usuwa static-RSA suites przy security level ≥2, więc rogue TLS 1.2 static-RSA potrzebuje OpenSSL 1.1.1 z @SECLEVEL=0 lub starszego.

Praktyczne sterowanie wersją podczas działania

  • Force TLS 1.2 on the rogue (to leak identities):
# hostapd-wpe.conf
ssl_ctx_flags=0
openssl_ciphers=RSA+AES:@SECLEVEL=0   # requires OpenSSL 1.1.1
disable_tlsv1_3=1
  • Probe client TLS intolerance: uruchom dwa rogue – jeden reklamujący TLS 1.3-only (disable_tlsv1=1, disable_tlsv1_1=1, disable_tlsv1_2=1) i jeden TLS 1.2-only. Klienci, którzy łączą się tylko z BSS 1.2, są podatni na downgrade.
  • Watch for fallback in captures: filtrować w Wiresharku tls.handshake.version==0x0303 po początkowym ClientHello z supported_versions zawierającym 0x0304; ofiary które ponawiają próbę z 0x0303 ponownie leakingują swoje outer ID.

Evil Twin via broken server validation (“mTLS?”)

Rogue APs nadawające corporate SSID mogą przedstawić dowolny certyfikat. Jeśli klient:

  • nie weryfikuje certyfikatu serwera, lub
  • prosi użytkownika i pozwala na nadpisanie nieufanych CAs/self-signed certs, to EAP-TLS przestaje być mutual. Zmieniony hostapd/hostapd-wpe, który pomija walidację certyfikatu klienta (np. SSL_set_verify(..., 0)) wystarczy, by postawić Evil Twin.

Rogue infra quick note

Na nowszym Kali skompiluj hostapd-wpe używając hostapd-2.6 (z https://w1.fi/releases/) i najpierw zainstaluj legacy OpenSSL headers:

apt-get install libssl1.0-dev
# patch hostapd-wpe to set verify_peer=0 in SSL_set_verify to accept any client cert

Windows supplicant misconfig pitfalls (GUI/GPO)

Key knobs from the Windows EAP-TLS profile:

  • Verify the server’s identity by validating the certificate
  • Zaznaczone → łańcuch musi być zaufany; niezaznaczone → akceptowany jest każdy samopodpisany certyfikat.
  • Connect to these servers
  • Puste → akceptowany jest każdy cert od zaufanej CA; ustaw listę CN/SAN, aby przypiąć oczekiwane nazwy RADIUS.
  • Don’t prompt user to authorise new servers or trusted certification authorities
  • Zaznaczone → użytkownicy nie mogą kliknąć dalej; niezaznaczone → użytkownik może zaufać niezaufanej CA/certyfikatowi i dołączyć do rogue AP.

Observed outcomes:

  • Strict validation + no prompts → rogue cert rejected; Windows logs an event and TLS fails (good detection signal).
  • Validation + user prompt → user acceptance = successful Evil Twin association.
  • No validation → silent Evil Twin association with any cert.

Źródła

Tip

Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Ucz się i ćwicz Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Wsparcie dla HackTricks