Laborator 8
Tematica laboratorului
Scurta descriere a diverselor tipuri de atacuri DDoS
Un atac de tip DoS - Denial of Service, se defineste ca un atac ce are ca tinta restrictionarea accesului la un serviciu disponibil in retea pentru un potential client. Un astfel de atac - SYN flood - a fost prezentat in detaliu in cadrul unui laborator anterior. Termenul DDoS - Distributed Denial of Service - reprezinta o generalizare in sensul ca atacul DoS este lansat in mod coordonat din mai multe puncte cu scopul principal de a creste sansele de succes. Punctele respective nu reprezinta neaparat statii aflate din start sub controlul direct al atacatorului, constituindu-se deseori in agenti corupti pentru lansarea atacului prin exploatarea diverselor vulnerabilitati de sistem, infectarea cu troieni, etc.
In cele ce urmeaza vom continua cu o clasificare sumara a atacurilor de tip DDoS, avand la baza in principal articolul urmator: link
Un prim criteriu de categorizare a atacurilor DDoS il reprezinta gradul de automatizare:
- Atacuri neautomatizate - Cautarea de agenti cu vulnerabilitati, exploatarea si potentiala infectare a acestora, si coordonarea in lansarea atacului este realizata de catre atacator personal pentru fiecare statie.
- Atacuri semi-automatizate - Cautarea de agenti cu vulnerabilitati, exploatarea si potentiala infectare a acestora e realizata automat prin softul creat de atacator. Coordonarea si lansarea atacurilor e realizata de catre atacator pe baza listei de agenti vulnerabili obtinuta, prin comunicarea cu acestia si transmiterea de parametri privind tipul atacului, durata, tinta atacata si alte caracteristici. In general comunicarea se face cu un cod instalat pe masina agent in faza automata de infectare. O varianta consta in integrarea adresei IP a statiei de coordonare in codul destinat agentilor, astfel incat in cazul in care infectarea reuseste, un agent va deschide o conexiune cu serverul detinut de atacator prin care acesta din urma va coordona atacul.
- Atacuri automatizate - Este de asemenea automatizata si coordonarea atacului, codul ce infecteaza masina agentului folosit avand setati parametrii necesari pentru lansarea acestuia.
Din punct de vedere al metodelor de scanare (si propagare) automatizate pentru gasirea de agenti vulnerabili ce vor fi folositi pentru DDoS, atacurile din ultimele doua categorii de mai sus pot utiliza diverse mecanisme. Acestea pot varia de la simpla cautare aleatoare in spatiul de adrese IP de statii vulnerabile, utilizarea unei liste predefinite de adrese ce e transmisa mai departe creandu-se o propagare in lant - un agent avand rol de "recrutare" mai departe, folosirea de servicii standard (mail, web, etc) pentru a gasi agenti vulnerabili, si alte modalitati ce sunt descrise partial in articolul mentionat anterior. O mentiune importanta ar fi ca grupul de agenti "recrutati" poate fluctua in timpul executiei atacului, nefiind neaparat folositi toti la un moment dat.
Ca modalitati efective de exploatare a victimei finale, atacurile DDoS sunt clasificate uneori in atacuri semantice si de forta bruta.
Atacurile semantice reprezinta categoria de atacuri ce se bazeaza pe vulnerabilitatile victimei la nivel de stiva de protocol sau implementare pentru a cauza intreruperea serviciului. Ca exemplu de astfel de atac vom descrie pe scurt tipul NAPTHA raportat in anul 2000 ca eficient impotriva unei categorii largi de implementari a stivei TCP in cadrul sistemelor de operare de la momentul respectiv.
Context. Pentru realizarea atacului se presupune ca atacatorul are acces la traficul dintr-o subretea gazda.
Executie.
1) Atacatorul trimite in prima faza a atacului pachete SYN din partea unor adrese IP falsificate catre victima. Conexiunea este creata pana la capat, spre deosebire de un SYN flood, dupa cum urmeaza.
2) Raspunsul la pachetul SYN e primit in reteaua accesibila atacatorului. Pentru aceasta routerul ce asigura accesul in retea trebuie sa detina o mapare in tabela ARP a adresei falsificate ce a initiat conexiunea. Setarea acestei mapari se poate obtine fie printr-un atac aditional de tip cache poisoning pe router sau prin setare directa de catre atacator daca routerul se afla sub propriul control.
3) Atacatorul va capta raspunsul SYN-ACK trimis in respectiva retea catre IP-ul inexistent ce a initiat conexiunea, si va trimite pachetul ACK din partea aceluiasi IP inexistent pentru a completa conexiunea. Conexiunea astfel creata intre IP-ul inexistent si victima poate fi mentinuta prin monitorizarea periodica de pachete sau exploatata faza de inchidere netrimitand confirmare in acest sens.
Efect. Ideea atacului este de a supraincarca victima prin conexiuni create in acest mod, utilizand pentru aceasta o implementare modificata a stivei TCP/IP si nu o initiere de conexiuni obisnuite. Implementarea TCP/IP modificata permite atacatorului operatiile descrise in executia atacului fara a pastra informatii legate de conexiune. Nu se ocupa astfel resurse la nivelul atacatorului.
Prevenire. Cai de baza de prevenire a atacului ar fi filtrarea IP-urilor ce pot accesa un anume serviciu sau ajustarea timpilor de transmitere de pachete de keep-alive pentru o conexiune.
Atacurile bazate pe forta bruta sunt cele ce in mod normal nu au sanse de reusita doar pe baza exploatarii unei vulnerabilitati ci necesita in mod obligatoriu un volum crescut de trafic pentru a impiedica oferirea unui serviciu. Un exemplu de categorie de astfel de atacuri este Smurf. Un atac de acest gen are la baza urmatorul mecanism.
Context. Atacatorul a reusit recrutarea mai multor agenti pe care ii poate utiliza in atac.
Executie. Atacatorul foloseste agentii pentru a trimite pachete directionate catre adrese de retea broadcast - de exemplu ping-uri ICMP Echo Request. In respectivele pachete falsifica IP-ul sursa ca fiind cel al victimei.
Efect. Victima primeste raspuns din partea unui numar mult mai mare de statii - de exemplul ICMP Echo Reply. Se reduce astfel atat capacitatea de procesare la nivelul pachetelor primite de victima, cat si latimea de banda disponibila.
Prevenire. Cel mai simplu mod de prevenire este de a restrictiona la nivelul routerelor cereri generice catre adrese de broadcast - cum ar fi ping-urile ce nu tin de o conexiune, sau de a le ignora la nivelul statiei ce le primeste.
Un alt criteriu dupa care se pot distinge atacurile de tip DDoS, ce are importanta efectiva in actiunile de filtrare impotriva acestora e modul in care atacatorul alege adresele IP sursa falsificate in cazul in care atacul implica acest lucru. Pentru categoria cea mai des intalnita in practica si anume alegerea de adrese IP rutabile, se pot observa urmatoarele cazuri ce partial se intersecteaza:
- Adrese alese aleator din intregul spatiu existent - ce pot fi uzual filtrate la nivel ingress prin comparatie cu adresa subretelei de provenienta de catre primul router prin care pachetul va trece spre destinatie (mecanism descris in cadrul unui laborator trecut)
- Adrese alese aleator din cadrul propriei subretele - filtrarea mentionata mai sus nu mai este aplicabila in acest caz dar detectia atacului poate duce la filtrarea intregii subretele de catre ultimul router din calea spre victima
- Adrese alese aleator din cadrul unei alte subretele - filtrarea ce se poate aplica e fie ingress fie pe intreaga subretea de unde sunt alese adresele; aceasta filtrare poate insa cauza negarea de trafic legitim dintr-o anume subretea
- Adrese fixe - e vorba in special de atacuri cu "reflectie", in care adresa folosita ca adresa sursa coincide cu victima vizata a atacului; de exemplu in atacurile de tip Smurf descrise in paragraful anterior; in functie de pozitionarea agentilor de atac, in afara retelei victimei sau in cadrul ei, filtrarea ingress poate preveni sau nu atacul
O alta categorizare a atacurilor DDoS ce poate avea de asemeni importanta in detectie si filtrare se poate face in functie de dinamica acestora. Astfel atacurile pot avea o rata constanta, de obicei maximul permis de latimea de banda mai ales in cazul atacurilor bazate pe forta bruta, factor ce contribuie la detectia de anomalii in trafic si implicit pot conduce la posibila descoperire si preventie a atacului. Alternativa pentru atacator o reprezinta un atac cu o rata variabila, ce nu e totdeauna insa aplicabila pentru reusita atacului, constand in variatii de transmitere a pachetelor ce fac o detectie pe baza volumului de trafic mai dificil de detectat.
Un factor ce poate avea importanta de asemeni in filtrarea atacurilor DDoS il constituie nivelul de entropie in ceea ce priveste headerele pachetelor sau mai exact serviciile solicitate. Astfel de exemplu un atac de tip Smurf bazat pe ICMP va avea ca factor sesizabil cantitatea mare de pachete de acelasi tip si anume Echo Reply ce sunt adresate victimei. O filtrare pe acest criteriu ar fi posibila la nivelul unui router/firewall intermediar, dar depinde si de serviciile oferite de statia victima. Astfel, pentru exemplul dat nu ar fi o problema filtrarea in cazul in care atacul bazat pe ICMP ar fi indreptat catre un web server. Daca ar fi insa vorba de solicitari masive de conexiuni HTTP, deci un SYN flood pe port 80, filtrarea doar bazata pe entropie si cantitatea de pachete ar impiedica si cererile legitime.