PMKID - itt az új WiFi támadás!
Nemrég írtunk a WPA3 biztonsági protokoll megjelenéséről, amelynek a 2017 októberében napvilágot látott KRACK fedőnevű támadás adott még nagyobb lendületet. Azóta, a még alig használt új WPA3 ellen is harcba indultak a jó és rossz oldalon állók, ami egy természetes folyamat, hiszen derüljön ki, ha valami nem elég biztonságos az elején. Nem?
Aztán elérkezett idén augusztus 4-e, amikor is Twitter-üzenetben tette közzé egy @Hashcat nevű felhasználó, hogy a WPA3 SAE (Simultaneous Authentication of Equals) elleni támadás mellékhatásaként, (azt ugyanis nem sikerült feltörni) találtak egy új módszert arra, hogy a WPA/WPA2 protokollokat az eddig bevált 4 utas handshake módszer nélkül is feltörjék.
A tweet-ben egy kép is szerepel, bizonyítandó, hogy egy ún. PMKID alapú támadásról van szó, amely a RSNIE (Robust Security Network Information Element) sérülékenységre vezethető vissza egy egyszeri EAPOL frame-ből.
A PMKID egy EAP azonosításhoz használt gyorsítótárazásos módszer, és arra szolgál, hogy a kliensek AP-k közti roamingjához ne kelljen egy teljes EAP azonosítást lefolytatni, hanem ezt viszonylag gyorsan, egy kezdeti, teljes authentikáció után, a roaming alatt gyakorlatilag késleltetés nélkül 802.1x nélkül azonosítsa újra magát a kliens (ami egy teljes azonosítás esetén már kieséseket okozna). Olyan esetekben fontos ez, ahol a készülék hang és egyéb- ilyenre érzékeny alkalmazásokat használ. Ez a módszer tipikusan a WPA Enterprise (802.1x alapú) hálózatok esetén alkalmazandó.
A PMKID-t HMAC-SHA1-el kalkulálják, a PMK a kulcs, és az adatrész tartalmazza a PMK nevet.
PMKID = HMAC-SHA1-128(PMK, "PMK név" | AP_MAC_cím | STA_MAC_cím)
Mivel a PMK ugyanaz mint a a hagyományos EAPOL 4 utas handshake-ben, ezért ez egy jó támadási felületetet ad.
Egy példával illusztrálva, attól függően hogy egy EAP-TLS-ben használt tanúsítvány mit tartalmaz, maga az azonosítási fázis egy terheletlen hálózat esetén kb. 300 ms ideig tart, ami egy VoIP beszélgetés roamingja esetén túlságosan sok idő.
A PMK caching az ún. fast roaming technológiákban használatos, mint a 802.11i és 802.11r.
A fentiek ellenére a sérülékenység nem érinti a WPA/WPA2 Enterprise szabványt, csak a WPA/WPA2 Personal típusút, ami PSK-t (Preshared Key) használ, függetlenül az AES vagy TKIP titkosítástól, mivel a kulcs kezelését támadja. Igazság szerint a PMKID használata a WPA-PSK esetében nem is jár előnyökkel kivéve talán a 802.11r-t, ahol a 4 utas handshake 2 utasra rövidül.
Egyszóval a következő a helyzet: ha van egy roamingot támogató vezeték nélküli hálózatunk, és azon bekapcsoltuk a PMK cahing-et, vagy a PKC/OKC-t, esetleg a 802.11r fast BSS transition-t, akkor érinthet minket az újonnan felfedezett sérülékenység, azonban nagy általánosságban elmondható, hogy ez a funkció a kiskereskedelemben kapható eszközökből hiányzik.
Ez azonban csak nagy általánosságokban igaz. Olyan készülékek is sérülékenyek, mint a Deutche Telekom W724V Speedport modemje, néhány Linksys és Netgear router, a FritzBox újabb routerei. Az olyan gyártók, mint a Cisco használnak bizonyos eszközökben OKC-t (ellenőrizhető a show wlan paranccsal és ott meg kell nézni, hogy a SKC Cache Support ki van-e kapcsolva), az Aruba pedig PMK caching-et. Ilyenkor a PMKID a 4 utas handshake első üzenetében benne van, és törhető a biztonsági protokoll brute-force támadással.
Amennyiben ezek kikapcsolásra kerülnek, a sérülékenység nem áll fenn. PMKID-t az olyan authentikációs módszerek is küldenek, mint az EAP, de azzal a különbséggel, hogy az nem a PSK-ból származnak, emiatt nem is lehet szótáras módszerrel feltörni.
Az ügyet tovább árnyalja, hogy az eddig megszokottaktól eltérően (az AP-khoz csatlakozott kliensek deauthentikációs frame-ekkel történő támadása) nincs szükség kliensekre, akik használják a WiFi hálózatot. Ez nagyban megkönnyíti a helyzetét annak, aki a támadásra adja a fejét, de összességében elmondható, hogy ez a támadás kicsit sem egyszerűbb, mint az eddigiek.
Ráadásul egy egyszerű (a WPA-PSK-val védett hálózatokból a PMKID eltávolításával) patch-csel, a sérülékenység azonnal foltozható, ezért úgy véljük, a gyártók nagyon gyorsan reagálni fognak erre és javításaikat közzéteszik.
Hogy kell-e pánikolni emiatt? Nem biztos. Eddig is volt/van a WPA/WPA2-PSK ellen támadási felület és módszer arra, hogy feltörjék. Ez a legújabb csak annyival hozott többet, hogy kliensekre sincs szükség ahhoz, hogy megszerezzék a brute-force támadáshoz szükséges hash-t.
A legjobb védekezés, mint eddig is ajánlott volt: Hagyjuk a WPA2-PSK módszert és használjunk WPA2 Enterprise-t. Ezt EAP (TLS, PEAP, TTLS) módszerekkel kombinálva jelenleg is törhetetlen hálózatot kapunk. Ha ez nem járható út, akkor mindenképpen egy kellően bonyolult PSK-t válasszunk a maximálisan alkalmazható 63 karakterből. Esetleg használjuk a pwgen -s 63 Linux parancsot egy törhetetlen jelszó generálásához. Windows alatt is léteznek különböző hasonló segédprogramok.
Nézzük egy picit át a módszert is!
A vezeték nélküli hálózatok feltörése, az előbb említett módszerrel, két részre tagolható. Az egyik a PMKID megszerzése, ami kb 10 perc alatt történik, majd ennek a szótáras feltörése, ami a kulcs bonyolultságától függ, de jóval tovább tart.
Először is fogjunk egy gépet, amire lehetőleg telepítsünk pl. Ubuntu Linux-ot.
Telepíteni kell a libpthread, pthread-dev, és hcxdumptool (v4.2.0 vagy frissebb) illetve hcxpcaptool és hashcat csomagokat.
telepítsünk néhány library-t és c fordítót:
apt install build-essential libssl-dev zlib1g-dev libpcap0.8-dev libcurl4-openssl-dev
töltsük le a hcxdumptools csomagot:
git clone https://github.com/ZerBea/hcxtools
git clone https://github.com/ZerBea/hcxdumptool
cd hcxdumptool
make
sudo make install
cd ../hcxtools
make
sudo make install
A wifi kártya chipset-jének támogatnia kell a korábbi támadási módszerekben is alkalmazott ún. monitor üzemmódot, amikor a kártya csak „hallgatja” az AP-t. Ajánlott a RALINK chipset, rt2x00 driver-rel.
Támogatott WiFi adapterek:
- USB ID 148f:7601 Ralink Technology, Corp. MT7601U
- USB ID 148f:3070 Ralink Technology, Corp. RT2870/RT3070
- USB ID 148f:5370 Ralink Technology, Corp. RT5370
- USB ID 0bda:8187 Realtek Semiconductor Corp. RTL8187
- USB ID 0bda:8189 Realtek Semiconductor Corp. RTL8187B
- Adjuk ki a köv parancsot a PMKID begyűjtéséhez és írassuk ki ezt a pmkid.pcapng file-ba:
$ ./hcxdumptool -o pmkid.pcapng -i wlp39s0f3u4u5 --enable_status
- A hcxpcaptool paranccsal átalakítjuk a pcapng formátumot hash formátummá, így az már emészthető állapotba kerül a Hashcat számára.
$ ./hcxpcaptool -z test.16800 pmkid.pcapng
- A Hashcat szótáras jelszó feltörővel fejtsük meg a PSK-t, és készen is vagyunk.
$ ./hashcat -m 16800 test.16800 -a 3 -w 3 '?l?l?l?l?l?lt!'
Jó hír a Ruckus eszközeit használóknak, illetve ajánlat azoknak, akik új WiFi rendszert terveznek
A Ruckus Wireless egyedi Dynamic PSK technológiája megoldást jelenthet a problémára, mivel mentes mind a nyílt hálózatok sérülékenységeitől, mind az egyetlen PSK-t használó WPA2 hálózatok gyengeségeitől, amelyek ráadásul az esetek nagy részében egyetlen rövid és általában egyszerű karakterkombináción alapul, amit mindegyik kliens megkap és alkalmaz.
A Dinamikus PSK megkíméli a klienseket az egyéni beállítások megejtésétől, azt teljesen automatizáltan is kezelheti. Elküldhető a kód SMS-ben, email-ben, vagy akár önkiszolgáló módban is, amennyiben az eszközök MAC-címe előzetesen importálásra kerültek. Az első alkalommal csatlakozni kell ethernet hálózaton, ahol egy captive portal-on, és ennek eredményeképpen az AP vagy a vezérlő generál egy egyedi titkosító kódot minden felhasználó részére, amelynek a lejárati ideje összhangba hozható a céges házirendekkel.
Ezután a felhasználó lecsatlakozik a vezetékes hálózatról és készen áll a vezeték nélküli csatlakozásra.
A generált kód, a szótáras módszerrel támadható lesz, de feltörhetetlen a véletlenszerűen generált, akár 63 karakternyi sorozat miatt. Ezzel a 802.1x beállítások nehézségeit is, illetve a WPA2-PSK gyengeségeit is kiszűrhetjük.
Ha többet szeretnétek tudni a lehetőségekről WiFi témában, nyomjatok az alábbi gombra és küldjétek el kérdéseiteket!