iulie 2009


Uneori gasesti pe internet chestii care te lasa masca… Un astfel de exemplu este si un poster desenat de Technet Magazine Australia, care prezinta toate componentele Exchange Server 2007 intr-o forma mai mult decat inteligibila:

image.axd

Posterul in format PDF il puteti descarca de aici



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)

Se pare ca minunata companie din Redmond trece iar prin momente grele… Tocmai ce a fost facut public un exploit pentru Windows, pentru care, deocamdata nu exista remediu…

Ca de obicei, Micrisoft nu face public nici un anunt, mergand pe principiul: ” las´ ca o rezolvam cu primul update!”

Un buffer overflow care profita de functia ‘MPEG2TuneRequest’ din libraria msvidctl.dll…

Unicul “remediu” in acest moment ar fi un killbit al controller-ului:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\

Microsoft\Internet Explorer\
ActiveX Compatibility\{0955AC62-BF2E-4CBA-A2B9-A63F772D46CF}]
“Compatibility Flags”=dword:00000400
Copiati textul in bold intr-un fisier cu extensia .reg… Dublu click si…restul se rezolva. Deocamdata este insa doar o solutie intermediara.
Inca nu exista nici o informatie oficiala legata de versiunile concrete afectate de acest exploit…
Conform  VirusTotal, doar McAfee, AntiVir si VirusBuster   sunt capabile sa recunoasca exploit-ul …

In general nu caut nod in papura nimanui… Cu atat mai putin unei fundatii care a facut si face destule lucruri buna intr-o rromanica plina de …….. Completati voi punctele cu ce va trece prin cap!

Totusi, va trebui sa critic putin modul in care a fost construit site-ul Fundatiei Dinu Patriciu, manscand  informatiile sensibile, astfel incat sa nu oferim mai mult decat trebuie vitejilor cu anumite cunostinte IT…

Ca prezentare, site-ul e clar si functional. Problemele rezida insa in modul cum au fost protejati anumiti parametri, si, mai ales in update-urile atat de necesare unui server web…

Haideti sa luam problemele pe rand:

1.Utilizare SSL2… Intre timp a aparut SSL3 sau chiar TLS, mult mai puternice si versatile… Consecinte?

SSL2_CK_RC4_128_EXPORT40_WITH_MD5 – Low strength
SSL2_CK_RC2_128_CBC_EXPORT40_WITH_MD5 – Low strength
SSL2_CK_DES_64_CBC_WITH_MD5 – Low strength

!Prietenii stiu de ce!

2.MySQL Enterprise Server v.5.0.52… Consecinte?

Folosind RENAME TABLE intr-un tabel cu optiunile explicite DATA DIRECTORY si INDEX DIRECTORY se poate suprascrie informatia din tabel.

ALTER VIEW retine valuarea originala a DEFINER , chiar daca este modificata de alt utilizator, ceea ce inseamna acces catre datele de output.

Cand se foloseste un tabel FEDERATED , serverul local crapa atunci cand serverul remote intoarce un rezultat cu mai putine coloane decat trebuie.

3.DNS zone transfer….adica serverul de DNS accepta transferul de zone… asta chiar mi-a placut!!! Individual, datele din inregistrarile DNS nu sunt foarte importante, dar… avand toate intrarile DNS e mult mai usor pentru un hacker sa vada exact ce domenii sunt pe server, si mai ales ce are de atacat…

4. XSS… ca de obicei, si in URL si in scriptul de cautare si cel de contact:

xss2

5. MySQL Community Server Symlink Attack Vulnerability… nu dau amanunte, prietenii stiu de ce… Presupun ca vreunul din cei ce administreaza pagina si-a lasat o portita de scapare in caz ca nu-l plateste Don Patriciu…

Sper sa le rezolve cat mai repede…..

P.S. Odata cu publicarea articolului i-am anuntat si pe cei din Fundatie, care presupun ca au trimis mail-ul mai departe catre persoana responsabila de pagina web … De aici incepe distractia, intrucat individul, dovedind o reala lipsa de cojones si un caracter cat se poate de josnic, se foloseste de numele si adresa de mail a lui Valentin Ivascu, un programator php pe care il stiu dupa reputatie, si imi lasa doua comentarii amuzante… le puteti citi aici

Am incercat sa-i explic individului ca, de obicei, pentru asa ceva se multumeste… Din pacate cred ca nu stie ce e aia…

Ca exemplu ii pot da pe cei de la trilulilu.ro, pe care i-am anuntat ca au cateva probleme cu SQL injection, si care au stiut sa multumeasca pentru informatii… Acesta este de altfel si motivul pentru care nu am publicat nimic despre vulnerabilitatile de pe trilulilu.ro…

Un salut trilulitilor, si un “rusinica” d-lui programator/secretarei/celor de la fundatie/etc… !