Atacuri care tintesc protocolul DNS – partea intai

Ce este DNS?

DNS sau Domain Name System este un serviciu extrem de important pentru modul in care Internetul functioneaza. Foarte simplu explicat, DNS-ul are rolul unei agende telefonice. Noi, ca oameni, avem dificultati in a retine pe dinafara numere de telefon lungi, mai ales ca acestea au 10 cifre. Asa ca ne folosim de agenda telefonica unde facem o asociere intre un numar de telefon si numele persoanei care detine acel numar. Atunci cand vrem sa sunam persoana in cauza, o sa o cautam in agenda dupa nume, si nu vom fi nevoiti sa tastam numarul de telefon in mod explicit. Intr-un mod asemanator functioneaza si DNS-ul. Fiecare resursa disponibila in Internet are o adresa IP la care poate fi contactata (numarul de telefon). Nu ne-ar veni foarte usor sa scriem in bara de adrese din browser 157.240.214.35 de fiecare data cand dorim sa accesam site-ul Facebook. Si ce ne-am face daca maine Facebook va dori sa foloseasca o alta adresa IP? Va trebuie sa ne aducem aminte alte numere :(. Noua ne este mult mai usor sa ne folosim de nume si sa scriem www.facebook.com. Aici intervine DNS. DNS ne ajuta sa accesam resursele din Internet dupa nume, in loc sa ne chinuim sa ne aducem aminte adresele numerice, si face transparenta pentru utilizator schimbarea adresei IP, acesta folosind acelasi nume ca si inainte de modificare. Agenda telefonica este reprezentata de un server de DNS pe care browser-ul il interogheaza atunci cand utilizatorul doreste sa acceseze o resursa. De buna functionare a server-ului depind multe aspecte printre care si posibilitatea de a accesa resursa, calitatea experientei (timpul de raspuns la query-ul de DNS este un parametru des monitorizat de catre sistemele de APM – Application Performance Monitoring) si securitatea conexiunii.

Cum functioneaza DNS?

Atunci cand dorim sa accesam o resursa disponibila intr-o retea (fie in reteaua interna a organizatiei, fie in Internet) au loc urmatoarele etape:

  • browser-ul web si sistemul de operare vor incerca “sa isi aduca aminte” adresa IP asociata cu numele resursei. Daca resursa a mai fost accesata in trecut, adresa IP poate fi pastrata intr-un cache (DNS cache mai exact)
  • daca o mapare a numelui resursei la o adresa IP nu este gasita, atunci sistemul de operare trimite un mesaj de tipul DNS query catre serverul de DNS configurat pe placa de retea
  • serverul de DNS va raspunde sistemului de operare cu inregistrarea ceruta care contine maparea nume <-> adresa IP. Sistemul de operare va trimite aceasta mapare catre aplicatia careia ii este necesara, de exemplu browserului web

Functionarea serviciului de DNS si a serverului de DNS utilizat de sistemul de operare se poate verifica folosind utilitarul “nslookup” disponibil pe toate sistemele de operare majore:

➜  ~ nslookup
> www.google.ro
Server:                   208.67.222.222
Address:     208.67.222.222#53

Non-authoritative answer:
Name:         www.google.ro
Address: 172.217.20.3

Cache-ul de DNS care pastreaza temporar interogarile facute se poate examina prin comenzile “ipconfig /displaydns” pe Windows. Pe sistemele Linux si macOS procedura pentru a examina cache-ul de DNS nu este atat de simpla 🙂

Atacuri la nivel de DNS: spoofing si cache poisoning

DNS spoofing si DNS poisoning sunt cele mai des intalnite atacuri cibernetice la nivel de DNS si se folosesc de vulnerabilitati din protocol pentru a directiona traficul utilizatorului catre site-uri false detinute de atacatori care impersoneaza de fapt site-urile reale pe care utilizatorul doreste sa le acceseze. Aceste doua tipuri de atacuri sunt printre cele mai periculoase intrucat utilizatorul poate crede ca site-ul vizitatca fost hack-uit, cand de fapt problema este cu propriul dispozitiv care a fost compromis. Pentru a face lucrurile si mai complicate, unele sisteme de securitate au capabilitati limitate in a bloca astfel de amenintari sau astfel de capabilitati lipsesc cu desavarsire.

Atacatorii se pot folosi de modul de functionare a DNS-ului prezentat mai sus pentru a executa atacuri precum:

DNS spoofing – utilizatorul este “fortat” sa navigheze catre un site fraudulos care are intocmai ca un site legitim scopul de a intercepta traficul utilizatorului sau credentialele acestuia de acces.

DNS cache poisoning – este un atac prin care hackerii reusesc sa injecteze inregistrari DNS alterate in cache-ul sistemului de operare prin care care sa trimita utilzatorul catre site-ul malitios care impersoneaza site-ul legitim.

Despre cum pot fi executate aceste atacuri, care sunt pericolele la care sunt expuse victimele unor astfel de atacuri si modurile prin care putem bloca aceste atacuri vom discuta in a doua parte a acestui articol.

Mihai Dumitrascu, Sr Systems Engineer