Evil Twin EAP-TLS
Tip
Μάθετε & εξασκηθείτε στο AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
Το EAP-TLS είναι η κοινή “ασφαλής” επιλογή για WPA2/3-Enterprise, αλλά δύο πρακτικές αδυναμίες εμφανίζονται συχνά κατά τις αξιολογήσεις:
- Unauthenticated identity leakage: το εξωτερικό EAP-Response/Identity αποστέλλεται σε cleartext πριν δημιουργηθεί οποιοδήποτε TLS tunnel, οπότε πραγματικά domain usernames συχνά leak πάνω από τον αέρα.
- Broken client server-validation: εάν ο supplicant δεν επαληθεύει αυστηρά το RADIUS server certificate (ή επιτρέπει στους χρήστες να πατούν μέσω των προειδοποιήσεων), ένα rogue AP με self-signed cert μπορεί ακόμα να onboard-άρει θύματα – μετατρέποντας το mutual TLS σε one-way TLS.
Μη-επαληθευμένη EAP διαρροή ταυτότητας / username enumeration
Η EAP προκαλεί ανταλλαγή ταυτότητας πριν ξεκινήσει το TLS. Εάν ο client χρησιμοποιεί το πραγματικό domain username ως εξωτερική ταυτότητα, οποιοσδήποτε εντός RF range μπορεί να το συλλέξει χωρίς να αυθεντικοποιηθεί.
Παθητική ροή συλλογής
# 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: γρήγορη no-auth username συλλογή → τροφοδοτεί password spraying, phishing, account correlation. Χειρότερα όταν τα usernames συμπίπτουν με διευθύνσεις email.
TLS 1.3 privacy vs downgrade games
Το TLS 1.3 κρυπτογραφεί τα client certs και τα περισσότερα handshake metadata, οπότε όταν ένας supplicant πραγματικά διαπραγματεύεται TLS 1.3, ένας Evil Twin δεν μπορεί παθητικά να μάθει το client certificate/identity. Πολλά enterprise stacks εξακολουθούν να επιτρέπουν TLS 1.2 για συμβατότητα· το RFC 9190 προειδοποιεί ότι ένας rogue AP μπορεί να προσφέρει μόνο TLS 1.2 static-RSA suites για να επιβάλει fallback και να επανεκθέσει την outer identity (ή ακόμη και το client cert) σε cleartext EAP-TLS.
Offensive playbook (downgrade to leak ID):
- Μεταγλωττίστε hostapd-wpe με ενεργοποιημένα μόνο TLS 1.2 static RSA ciphers και TLS 1.3 απενεργοποιημένο στο
openssl_ciphersuite/ssl_ctx_flags. - Διαφημίστε το corporate SSID· όταν το θύμα ξεκινήσει TLS 1.3, απαντήστε με ένα TLS alert και επανεκκινήστε το handshake ώστε ο peer να ξαναπροσπαθήσει με TLS 1.2, αποκαλύπτοντας την πραγματική του identity πριν η επικύρωση του cert ολοκληρωθεί.
- Συνδυάστε αυτό με
force_authorized=1στο hostapd-wpe ώστε το 4-way handshake να ολοκληρωθεί ακόμη και αν η client-auth αποτύχει, δίνοντάς σας DHCP/DNS-level κίνηση για phish ή portal.
Defensive toggle (what to look for during an assessment):
- hostapd/wpa_supplicant 2.10 πρόσθεσε EAP-TLS server και peer υποστήριξη για TLS 1.3 αλλά το παραδίδει απενεργοποιημένο από προεπιλογή· η ενεργοποίησή του σε clients με
phase1="tls_disable_tlsv1_3=0"αφαιρεί το παράθυρο για downgrade.
TLS 1.3 realities in 2024–2025
- FreeRADIUS 3.0.23+ δέχεται EAP-TLS 1.3, αλλά clients εξακολουθούν να σπάνε (Windows 11 δεν έχει EAP-TLS 1.3 session resumption, η υποστήριξη Android ποικίλλει), οπότε πολλές εγκαταστάσεις καρφιτσώνουν
tls_max_version = "1.2"για σταθερότητα. - Windows 11 ενεργοποιεί EAP-TLS 1.3 από προεπιλογή (22H2+), ωστόσο αποτυχημένες resumptions και ασταθείς RADIUS stacks συχνά αναγκάζουν fallback σε TLS 1.2.
- Το RSA key exchange για TLS 1.2 αποσύρεται· το OpenSSL 3.x αφαιρεί static-RSA suites σε security level ≥2, οπότε ένας TLS 1.2 static-RSA rogue χρειάζεται OpenSSL 1.1.1 με
@SECLEVEL=0ή παλαιότερο.
Practical version steering during an engagement
- 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: τρέξτε δύο rogues – ένα που διαφημίζει μόνο TLS 1.3 (
disable_tlsv1=1,disable_tlsv1_1=1,disable_tlsv1_2=1) και ένα μόνο TLS 1.2. Clients που συνδέονται μόνο στο 1.2 BSS είναι downgradeable. - Watch for fallback in captures: φιλτράρετε στο Wireshark για
tls.handshake.version==0x0303μετά από αρχικόClientHelloμεsupported_versionsπου περιέχει 0x0304· θύματα που επαναπροσπαθούν 0x0303 είναι leaking την outer ID τους ξανά.
Evil Twin via broken server validation (“mTLS?”)
Rogue APs που προβάλλουν το corporate SSID μπορούν να παρουσιάσουν οποιοδήποτε certificate. Αν ο client:
- δεν επικυρώνει το server cert, ή
- ζητά από τον χρήστη και επιτρέπει override των untrusted CAs/self-signed certs,
τότε το EAP-TLS παύει να είναι mutual. Ένα τροποποιημένο hostapd/hostapd-wpe που παρακάμπτει την επικύρωση client-cert (π.χ.
SSL_set_verify(..., 0)) αρκεί για να σηκώσει έναν Evil Twin.
Rogue infra quick note
Σε πρόσφατο Kali, μεταγλωττίστε hostapd-wpe χρησιμοποιώντας hostapd-2.6 (from https://w1.fi/releases/) και εγκαταστήστε πρώτα τα 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 (GUI/GPO)
Βασικές ρυθμίσεις στο προφίλ Windows EAP-TLS:
- Verify the server’s identity by validating the certificate
- Επιλεγμένο → η αλυσίδα πρέπει να είναι αξιόπιστη; μη επιλεγμένο → οποιοδήποτε self-signed cert γίνεται αποδεκτό.
- Connect to these servers
- Κενό → οποιοδήποτε cert από μια αξιόπιστη CA γίνεται αποδεκτό; ορίστε λίστα CN/SAN για να pinάρετε τα αναμενόμενα ονόματα RADIUS.
- Don’t prompt user to authorise new servers or trusted certification authorities
- Επιλεγμένο → οι χρήστες δεν μπορούν να παρακάμψουν· μη επιλεγμένο → ο χρήστης μπορεί να εμπιστευτεί μια μη αξιόπιστη CA/cert και να ενταχθεί στο rogue AP.
Παρατηρούμενα αποτελέσματα:
- Strict validation + no prompts → rogue cert απορρίπτεται· τα Windows καταγράφουν ένα event και το TLS αποτυγχάνει (καλό σήμα ανίχνευσης).
- Validation + user prompt → η αποδοχή από τον χρήστη = επιτυχής σύνδεση με Evil Twin.
- No validation → σιωπηλή σύνδεση με Evil Twin με οποιοδήποτε cert.
Αναφορές
- EAP-TLS: The most secure option? (NCC Group)
- EAP-TLS wireless infrastructure (Versprite hostapd bypass)
- RFC 4282 - Network Access Identifier
- Microsoft ServerValidationParameters (WLAN profile)
- RFC 9190 – EAP-TLS 1.3
- hostapd/wpa_supplicant 2.10 release notes (TLS 1.3 EAP-TLS support)
- FreeRADIUS TLS 1.3 support thread (Nov 2024)
- Windows 11 enabling TLS 1.3 for EAP (SecurityBoulevard, Jan 2024)
- draft-ietf-tls-deprecate-obsolete-kex
Tip
Μάθετε & εξασκηθείτε στο AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.


