Atunci cand vorbim de securitate wireless ne referim in principal la WPA/WPA2 PSK, lasand la urma mai vechiul si vulnerabilul WEP. Clar, exista si puncte de acces WiFi cu Server RADIUS incorporat, dar, in mod normal nu-l vei gasi intr-o locuinta obisnuita.

Haideti sa vedem cum functioneaza un WPA/WPA2 PSK in viata de zi cu zi, care sunt vulnerabilitatile, si mai ales ce putem face pentru a ne proteja mai bine conexiunea.

WPA/WPA2 PSK

WPA (WiFi Protected Acces) e doar o solutie temporara a WiFI Alliance pana cand sunt stabilite standardele si implementat IEEE 802.11i pentru securizarea retelelor wireles. Ambele solutii WPA si WPA2 suporta protocolul 802.1x pentru autentificarea din domeniul profesional si, clar, PSK(Pre-Shared Key) in SOHO.

Intre WPA si WPA2 exista putine diferente conceptuale, principala fiind algoritmul de cifrare. In timp ce WPA isi bazeaza cifrarea comunicatiilorpe algoritmul TKIP (Temporary Key Integrity Protocol), care in esenta este un RC4 la fel ca si WEP, WPA2 utilizeaza CCMP (Counter Mode/CBC-MAC protocol) bazat pe AES (Advanced Encriptyon System). In mod clar, atunci cand putem alege, e preferabil sa implementam un WPA2 datorita superioritatii AES fata de TKIP.

Arhitectura WPA/WPA2 PSK

Pentru a intelege vulnerabilitatea protocolului va trebui sa intelegem mai intai  procesul de asociere intre client(ex.:PC/laptop) si reteaua wireles. Indiferent ce protocol de securitate ar fi implementat, asocierea/integrarea in retea se va face intotdeauna in acelasi mod. Acest proces depinde in exclusivitate de punctul de acces, sau mai bines spus de trimiterea sau nu a asanumitelor “Beacon Frames”.

Daca PA (punct de Acces) emite frame-uri, procesul de conectare se desfasoara in doua faze, prima de autentificare si cea de-a doua de asociere. In cazul in care PA-ul un emite “Beacon Frames” exista o o faza initiala de proba, unde clientul transmite ESSID-ul retelei catre punctul de acces, sperand ca acesta sa raspunda si sa initieze celalti pasi.

E foarte important sa cunoastem exact ce se intampla pentru ca, asa cum se vede, clientul se conecteaza la retea in prima faza, chiar daca e vorba de PSK sau nu,  fara a fi initiat procesul de autentificare. Asta inseamna ca traficul inca nu este cifrat, iar un atacator poate trimite un frame de dezasociere care sa duca la desconectarea de la retea si, clar, la o noua conectare. Acest tip de atac se numeste Atac O sau de dezasociere.

Procesul de reautentificare se face doar daca avem o conexiune profi, configurata pentru 802.1x pentru autentificare si EAP (Extended Authentication Protocol) pe un Server RADIUS. In cazul unei conexiuni obisnuite, cu PSK, se trece direct la schimbul de cifruri/parole ceea ce duce la interceptare si descifrare…

In faza de schimb de parole intre client si PA se utiliza PSK pentru a genera un cifru numit PMK (Pairwise Master Key). Acesta este un derivat. Cu el se genereaza  un cifru pentru fiecare proces de autentificare, iar sistemul in sine se numeste “4-way-handshake”.

In cazul TKIP se utilizeaza 6 cifruri pentru fiecare sesiune, 4 dintre aceste sunt folosite pentru comunicatii unicast si 2 pentru broadcast. Aceste cifruri sunt unice pentru fiecare client si sesiune si sunt generate pornind de la derivate de MAC, ESSID si PTK.

Care este vulnerabilitate unei retele WPA/WPA2 PSK ?

Un atacant poate captura acest schimb de numere aleatorii si, odata cunoscute, impreuna cu SSID si MAC-ul clientului, poate obtine cifrul si se poate conecta la retea.

Capturarea handshake-ului

Cum va spuneam mai sus, un atacator poate monitoriza traficul dintr-o retea wireles, mai ales cele din timpul unei sesiuni de autentificare PSK, in acest fel descoperind parola si conectandu-se la retea.

Pentru a monitoriza o retea intr-un mediu Windows putem folosi de exemplu un Commview pentru WiFi sau un Omnipeek, in functie de tipul chipset-ului de WIFI pe care il avem.

Sa presupunem ca avem un Commview for WiFi si un chipset Intel Centrino Pro Wireless 2200BG. Injectiile de trafic se fac cu un card Orinoco 11a/b/g ComboCard.

In primul rand trebuie sa instalam driver-ul Commview. Odata instalat, trebuie activata captura de trafic si se poate incepe si explorarea canalelor WiFi disponibile :

foto 1

Commview afiseaza toate retelele si canalele disponibile, oferind o viziune generala asupra spatiului WiFi:

foto2

In imaginea urmatoare puteti vedea un punct de acces care utilizeaza WPA2-PSK cu cifrare CCMP si doi clienti asociati retelei. In acest momento Commview poate captura toate pachetele care circula in retea, chestie pe care nu o recomand deoarece poate satura repede PC-ul pe care il folositi. Pentru a realiza o selectie, puteti adauga filtre in captura:

foto3

ATACUL O

Pentru a obtine rapid schimbul de numere aleatoare intre PA si un PC fara a astepta ca cineva sa se conecteze, putem lansa un atac de dezasociere prin care obligam un client sa se deconecteze si sa se conecteze din nou. Procesul este automat in Windows XP, dar necesita intervenida utilizatorului in Vista. In bara de utilitati din Commview folosim Reasociere Nodurilor:

foto4

Card-ul wireles( Intel) pe care il folosim nu permite injectia de pachete asa ca un ne ramane decat sa asteptam sa se conceteze cineva…In fereastra de dialog se selectioneaza PA-ul unde vrem sa facem spoofing, clientul pe care vrem sa il deconectam si numarul de pachete pe care vrem sa il transmitem. Odata terminat procesul, nu ne ramane decat sa salvam datele intr-un pachet cu extensia .cap:

foto5

Cracking-ul cifrurilor WPA/WPA2 PSK – teorie

WPA/WPA2 PSK foloseste urmatoarea formula pentru pentru a obtine PMK, din care deriva mai tarziu PTK:

PMK = PBKDF2(PSK, SSID, longitud SSID, 4096, 256)

…unde PBKDF2 este o functie de derivatie de cifrucare face parte din standardele criptografice ale laboratoarelor RSA. E vorba de o functie pseudoaleatorie care se utilizeaza pentru derivarea cifrului PMK folosind PSK si SSID.

Pentru procesul de crack putem folosi tabele precalculate, asa numitele rainbow-tables. Problema este insa alta. Hash-ul precalculat depinde de SSID, concluzia fiind ca nu este posibil sa ai precalculat hash-ul pentru toate posibilitatile de nume de retea. Adica, daca vine un Gherghita care isi numeste reteaua Ghe73OR75ghi55ta01 sigur nu exista hash-ul precalculat…Exista si proiecte cum este cel de la Renderlab, unde sau tabele de aproximativ 33 de GB de  hash-uri precalculate folosind dictionarele englezesti, putin folositoare insa intr-o tara care vorbeste alta limba.

Cracking-ul cifrurilor WPA/WPA2 PSK – practica

In cazul in care avem deja pachetele capturate, putem folosi banalul Cain, unde importam fisierul cu extensia . cap. Cain il va analiza si ne va spune daca exista vreun handshake valid de unde se poate extrage cifrul PSK:

foto6

Odata stiut schimbul de numere putem folosi pentru crack un atac de forta bruta sau un atac bazat pe dictionar :

foto7

Succesul unui astfel de atac depinde insa de modul cum administratorul de retea a ales parola. Nu e acelasi lucru o parola de tipul: gheorghita 77 cu una de tipul : O0b5TR48)??Bnc3wk

Pentru a folosi brute-force-ul trebuie sa alegem alfabetul si lungimea minima si maxima a parolei.

foto8

Pentru atacul bazat pe dictionar e necesar un bun dictionar si clar,  indicarea posibilele probe realizate cu fiecare cuvant din el:

foto9

Depinzand de versiunea de Cain folosita, putem sau un sa avem succes pentru ca nu sunt suportate toate tipurile de caracteres. O alternativa gratuita ar fi aircrack, disponibila atat pentru Linux cat si pentru Windows:

foto10

Concluzie

WPA/WPA2 PSK poate fi un protocol destul de sigur. Depinde insa de modul cum un administrador alege parolele folosite. Pentru evitarea unui astfel de atac e necesar sa ne ferim de SSID-uri de tipul : Home, Personal, WIFI, Default etc…

Exceptand folosirea unor parole mai mult sau mai putin sigure, WPA/WPA2 PSK nu ofera nici un alt tip de protectie, dupa cum ati vazut si din randurile de mai sus.

Solutie? Folosirea altor metode gen servere RADIUS sau sisteme de autentificare EAP bazate pe certificate digitate, sisteme SSL etc. Doar asa putem implanta o infrastructura WPA/WPA2-EAP- MSCHAPv2, sau MD5 sau TLS, sau chiar mai puternicul WPA/WPA2-PEAP-MSCHAPv2 cunoscut si ca TLS-EAP-TLS unde prima data se realizeaza o conexiune SSL cu certificat digital, se autentifica tot cu certificat clientul apoi se negociaza cu EAP un alt certificat digital si, in sfarsit, se trimite clientului prin SSL certificatul final… Ceva mai complicat si greu de rupt, nu?

(Multumiri lui Chema Alonso pentru informatii si screen-uri)