
Wstęp
Czym są sieci Wi-Fi to raczej nie muszę tłumaczyć. W dzisiejszych czasach coraz to bardziej na nich polegamy. Nie ma się co dziwić, w końcu jest to wygodne – dostęp do internetu nie wymaga kabla do każdego urządzenia w sieci, tylko do jednego AP.
Jednakże cały czas słyszymy żeby nie łaczyć się do publicznych Wi-FI, że to nie bezpieczne, żeby nie robić przelewów przez publiczne Wi-Fi.
I rzeczywiście tak jest. Wi-Fi jest niebezpieczne pod tym względem że jest rozgłaszane w “eter” i każdy tak naprwadę może podsłuchać ruch sieciowy. Nawet jeżeli nie znajduje się fizycznie w pobliżu tylko kilka a nawet kilkanaście metrów dalej. Powoduje to że ciężej jest namierzyć osobę podsłuchującą sieć.
Jendak to nie tak że kabel jest bezpieczniejszy. Jeżeli infrastruktura jest płaska i słabo zabezpieczona – nie posiada żadnych switchy z vlanami ani dodatkowych routerów, które dzielą sieć, o firewallach już nie wspominając. To i tak zły hacker może wpiąć się fizycznie do sieci po przez kabel i nadsłuchiwać ruch. Dlatego ważne jest prowadzenie kabli ethernetowych w miejscach nie dostępnych dla wszystkich.
Działanie
Wracając do Wi-Fi, korzystamy z niego codziennie, w technikum na informatyku dowiemy się jak go konfigurować i o jego standardach. Ale jak ono tak naprawdę działa? Postaram się go omówić.
Kiedy klieny chce połaczyć się do sieci Wi-Fi musi on wraz z Access Pointem przejść przez proces Uwierzetelniania i Asocjacji. Jest to proces który zachodzi jeszcze kiedy AP i klient nie są połączone, ani żadna taka próba nie została podjęta.
Kolejny proces jaki zachodzi zaraz po asocjacji i uwierzetelnienia to 4-Way Handshake. Generowane są wtedy klucze szyfrujące całą komunikacje i to dzięki nim nasze dane są szyfrowane i trudniejsze do odczytania przez osobę trzecią.
Teraz gdy już mamy zarys o czym mówimy, wytłumaczmy sobie te procesy.
Asocjacja (połączenie)
Standard 802.11 (Wi-Fi), wyróżnia trzy sposoby połączenia:
- Nie Uwierzetelniony ani połączony.
- Uwierzetelniony, ale nie połączony.
- Uwierzetelniony i połączony.
Stacja kliencka – dla przykładu laptop, telefon, startują jako nie uwierzetelnione ani połączone do żadnego AP.
Sonda żądanie
I) Pierwsze co robi stacja kliencka to wysyła żądanie, które jest sondą aby odkryć wszystkie sieci Wi-Fi w pobliżu. Sonda rozgłasza informacje takie jak standard z jakiego korzysta oraz przepustowość stacji klienckiej. Sonda jest wysyłana z stacji klienckiej do miejsca docelowego w warstwie 2 modelu OSI, a przez to że adress BSSID to ff:ff:ff:ff:ff:ff (adres broadcastowy) to wszystkie AP’y, które otrzymają ją to odpowiedzą na żądanie.
Odpowiedź na sonde
II) Następnie wszystkie AP’y które otrzymały sondę muszą sprawdzić czy mają chociaż jedną wspólną przepustowośc, na której mogli by przesyłać między sobą informacje. Jeżeli mają kompatybilne częstotliwości to Access Point wysyła odpowiedź na żądanie/sondę, która rozgłasza SSID (nazwę sieci), wspierane częstotliwości oraz typy szyfrowania (WPA, WPA2…) a także inne możliwości AP zawarte w standardzie 802.11.
Stacja Kliencka wybiera kopatybilne sieci z odpowiedzi na sonde którą wysłała. Kompatybilność sieci może być określana przez typ szyfrowania. Gdy kompatybilne AP zostały odnalezione to stacja kliencka przerpowadzi nisko poziomową autoryzacje 802.11, jednak należy odróżnić ją od WPA2 lub 802.11X ponieważ zwykłe ramki autoryzacyjne 802.11 były stworzone dla szyfrowania WEP ale jak się okazało standard WEP był mało bezpieczny i został wycofany.
Uwierzetelnienie
III) Stacja kliencka wysyła wstępną ramkę autoryzacyjną 802.11 do AP i zmienia stan uwierzetelnienia na otwarty i sekwencje na 0x0001.
IV) AP otrzymuje wstępną ramkę autoryzacyjną i odpowiada stacji klienckiej ramką uwierzetelnienia ustawioną na otwartą wraz z sekwencją 0x0002.
Jeżeli AP otrzyma jakąkolwiek inną ramkę niż autoryzacyjną lub sondę-żądanie od stacji klienckiej, która nie jest uwierzetelniona to AP odpowie ramką deuwierzetelniającą. Zmieniajać stacje kliencką w tryb nie uwierzetelniony, nie połączony. Stacja kliencka będzie musiała zacząć proces uwierzetelniania od kroku III, wtedy Stacja Kliencka jest uwierzetelniona ale nie połączona. To będzie kluczowe w kolejnym artykule.
Asocjacja
V) Kiedy stacja kliencka określiła, do którego AP chciała by się połączyć, to wysyła żądanie połączenia do tego AP. Żądanie to zaweira wybrany rodzaj szyfrowania oraz inne możliwości standardu 802.11.
Jeżeli AP otrzyma ramkę od mobilnej stacji, która jest uwierzetelniona ale nie połączona to AP odpowie ramką deassocjacyjną (rozłączeniową), zmieniając stan stacji klienckiej na uwierzetelniony ale nie połączony.
VI) Jeżeli elementy w żądaniu połączeniowym zgadzają się możliwościami AP to stworzy on ID połączenia dla stacji klienckiej i odpowie on na żądanie połączenia z wiadomością że wszystko się powiodło i da dostęp do sieci dla stacji klienckiej.
VII) Teraz stacja kliencka jest połączona z Access Pointem i mogą przesyłać informacje.

4-Way Handshake
Pozwala ono na wzajemne uwierzytelnienie oparte na współdzielonym sekrecie nazywanym PMK – Pairwise Master Key, a następnie na negocjacji nowego klucza sesji nazywanym PTK – Pairwise Transient Key. Podczas tego procesu Klient jest nazywany Suplikantem (Supplicant)1 a Access Point Uwierzetelniającym.
PMK tworzone jest z hasła w sieciach personal, a w sieciach enterprise jest negocjowany przy użyciu uwierzetelniania z standardu 802.1x.
PTK jest tworzone z PMK, Authenticator Nonce – ANonce (Losowego numeru generowanego przez uwierzetelniającego), Supplicant Nonce – SNonce (Losowego numeru generowanego przez suplikanta) i adresy MAC Klienta i AP.
AA to adres MAC uwierzetelniającego, SA to adres MAC suplikanta. PRF to pseudo losowa funkcja, która generuje PTK.
Kiedy PTK zostanie wygenerowane dzielone jest na:
- KCK – Key Confirmation Key
- KEK – Key Encryption Key
- TK – Temporal Key
KCK i KEK są używane do ochrony wiadomości Handshake’u a TK używane jest do chronienia ramek danych. Jeżeli używane jest WPA2 to 4-Way Handshake przenosi również aktualny GTK – Group Temporal Key do suplikanta. (są to klucze do broadcastu i multicastu)

MIC – Message Integrity Control, to po prostu dodatek który szyfruje dane przy użyciu HMAC-SHA1.
Obraz ten, teraz powinien być jasny i przejrzysty.
EAPOL
I) Pierwsza wiadomość jest przesyłana z AP do Klienta i zawiera ona losowy numer, aby klient mógł wygenerować PTK. Ponieważ Klient zna PMK, swój SNonce, SA oraz AA (z procesu asocjacji) to jedyne czego mu brakuje to właśnie ANonce
II) Klient odpowiada na pierwszą wiadomość, wysyłając SNonce zaszyforwany przez MIC. AP wygeneruje własny MIC i porówna go z tym w wiadomości, jeżeli będą się zgadzać to przechodzą dalej do instalacji kluczy.
III) AP informuje Klienta o instalacji klucza PTK i odsyła GTK zaszyfrowany po przez PTK.
IV) Klient powiadamia AP o instalacji PTK i GTK
V) Teraz AP i Klient mogą z sobą się komunikować w bezpieczny sposób.
To w zasadzie wszystko z mojej strony w tej części, w drugiej części zobaczycie już pentesta ;). Podczas tworzenia tego posta zaczerpnąłem wiedzy z tych źródeł, polecam się z nimi zapoznać jeżeli zainteresowała cię ta tematyka, szczególnie ostatnim:
- https://wlan1nde.wordpress.com/2014/10/27/4-way-handshake/
- https://www.wifi-professionals.com/2019/01/4-way-handshake
- https://www.cisco.com/en/US/docs/wireless/wlan_adapter/secure_client/5.1.0/administration/guide/C1_Network_Security.html#wp1051588
- https://documentation.meraki.com/Wireless/Design_and_Configure/Architecture_and_Best_Practices/802.11_Association_Process_Explained
- https://papers.mathyvanhoef.com/ccs2017.pdf
- 1) nie znalazłem polskiego odpowiednika, w dosłownym tłumaczeniu znaczy błagający, z słownictwa sieciowego nazwałbym go żądającym. ↩︎
