Evil Twin EAP-TLS

Tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks

EAP-TLS je uobičajen “sigurni” izbor za WPA2/3-Enterprise, ali dve praktične slabosti se redovno pojavljuju tokom procena:

  • Unauthenticated identity leakage: spoljni EAP-Response/Identity se šalje u cleartextu pre nego što se uspostavi bilo koji TLS tunel, pa stvarna korisnička imena domena često leak preko vazduha.
  • Broken client server-validation: ako supplicant ne proverava striktno RADIUS server certificate (ili dozvoli korisnicima da kliknu kroz upozorenja), rogue AP sa self-signed cert-om i dalje može onboard-ovati žrtve – pretvarajući mutual TLS u one-way TLS.

Unauthenticated EAP identity leakage / enumeracija korisničkih imena

Passive harvest workflow

# 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: brzo prikupljanje korisničkih imena bez autentifikacije → pogoni password spraying, phishing, korelaciju naloga. Još gore kada korisnička imena odgovaraju email adresama.

TLS 1.3 privatnost vs downgrade igre

TLS 1.3 šifruje client certs i većinu handshake metadata, pa kada supplicant zaista pregovara TLS 1.3, Evil Twin ne može pasivno saznati client certificate/identitet. Mnogi enterprise stackovi i dalje dozvoljavaju TLS 1.2 radi kompatibilnosti; RFC 9190 upozorava da rogue AP može ponuditi samo TLS 1.2 static-RSA suite-ove da bi naterao fallback i ponovo izložio outer identity (ili čak client cert) u nešifrovanom EAP-TLS.

Ofenzivni playbook (downgrade to leak ID):

  • Kompajlirajte hostapd-wpe sa uključenim samo TLS 1.2 static RSA šiframa i TLS 1.3 onemogućenim u openssl_ciphersuite / ssl_ctx_flags.
  • Reklamirajte corporate SSID; kada žrtva inicira TLS 1.3, odgovorite TLS alert-om i restartujte handshake tako da peer pokuša ponovo sa TLS 1.2, otkrivajući svoj stvarni identitet pre nego što validacija sertifikata uspe.
  • Uparite ovo sa force_authorized=1 u hostapd-wpe tako da 4-way handshake završi čak i ako client-auth zakaže, što vam daje DHCP/DNS-nivo saobraćaja za phish ili portal.

Defanzivni prekidač (na šta obratiti pažnju tokom procene):

  • hostapd/wpa_supplicant 2.10 je dodao EAP-TLS server i peer podršku za TLS 1.3, ali dolazi disabled by default; omogućavanje na klijentima sa phase1="tls_disable_tlsv1_3=0" uklanja prozor za downgrade.

Realnosti TLS 1.3 u 2024–2025

  • FreeRADIUS 3.0.23+ prihvata EAP-TLS 1.3, ali klijenti i dalje kvare (Windows 11 nema EAP-TLS 1.3 session resumption, podrška na Android-u varira), pa mnoge implementacije fiksiraju tls_max_version = "1.2" radi stabilnosti.
  • Windows 11 omogućava EAP-TLS 1.3 po defaultu (22H2+), ipak neuspešne resumptions i nestabilni RADIUS stackovi često forsiraju fallback na TLS 1.2.
  • RSA key exchange za TLS 1.2 je u procesu deprecacije; OpenSSL 3.x uklanja static-RSA suite-ove na security level ≥2, tako da rogue TLS 1.2 static-RSA zahteva OpenSSL 1.1.1 sa @SECLEVEL=0 ili stariji.

Praktično usmeravanje verzije tokom angažmana

  • Forsirajte TLS 1.2 na rogue-u (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
  • Ispitajte TLS netoleranciju klijenta: pokrenite dva rogues – jedan koji reklamira TLS 1.3-only (disable_tlsv1=1, disable_tlsv1_1=1, disable_tlsv1_2=1) i jedan TLS 1.2-only. Klijenti koji se priključe samo na 1.2 BSS su podložni downgrade-u.
  • Pazite na fallback u capture-ima: filtrirajte u Wireshark-u za tls.handshake.version==0x0303 nakon inicijalnog ClientHello sa supported_versions koji sadrži 0x0304; žrtve koje retry 0x0303 ponovo leak-aju svoj outer ID.

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

Rogue AP-ovi koji emituju corporate SSID mogu pokazati bilo koji sertifikat. Ako klijent:

  • ne validira server cert, ili
  • pita korisnika i dozvoljava override za untrusted CAs/self-signed certs, onda EAP-TLS prestaje biti međusoban. Izmenjeni hostapd/hostapd-wpe koji preskače validaciju client-cert (npr. SSL_set_verify(..., 0)) je dovoljno da se podigne Evil Twin.

Kratka napomena o rogue infrastrukturi

Na novijem Kali-ju, kompajlirajte hostapd-wpe koristeći hostapd-2.6 (sa https://w1.fi/releases/) i prvo instalirajte 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:

  • Proveriti identitet servera validacijom sertifikata
  • Označeno → lanac mora biti pouzdan; neoznačeno → prihvata se bilo koji samopotpisani sertifikat.
  • Povezati se na ove servere
  • Prazno → prihvata se bilo koji sertifikat od pouzdanog CA; podesite CN/SAN listu da zaključate očekivana RADIUS imena.
  • Ne traži od korisnika autorizaciju novih servera ili trusted certification authorities
  • Označeno → korisnici ne mogu da preskoče upozorenje; neoznačeno → korisnik može da veruje nepouzdanom CA/sertifikatu i pridruži se rogue AP.

Observed outcomes:

  • Strict validation + no prompts → rogue cert rejected; Windows logs an event and TLS fails (dobar signál za detekciju).
  • Validation + user prompt → user acceptance = successful Evil Twin association.
  • No validation → silent Evil Twin association with any cert.

References

Tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks