IPRO - PC Magazine Romania, Februarie 2004
SOLUŢII PENTRU PROGRAMATORII ŞI DESIGNERII WEB
Securitatea Reţelei [5] - atacurile DoS
Cadeeeeee: atacurile DoS
Alexandru Ioan Lazăr
Tocmai am venit de la şcoală. Am dat lucrare şi am făcut varză (de parcă ar
fi ceva nou). De aceea, mă întreb dacă nu cumva există o metodă de a bloca acţiunea
săvârşită de profesor. Adică, pot împiedica profesorul să-mi treacă nota? În
fond, e tot un serviciu şi ăsta…
Mda…tocmai am bătut apropouri despre clasa de atacuri pe care o vom analiza
astăzi: atacurile Denial of Service (DoS) - atacuri de refuz al serviciului.
,,Orice corp…
...îşi păstrează starea de repaus sau mişcare uniformă şi rectilinie atâta
timp cât asupra lui nu acţionează o forţă exterioară". La fel se întâmplă
cu orice calculator: totul merge bine până când apare o "forţă exterioară"
(ştiţi sloganul… pericol! Om la tastatură!).
În general, acţiunile utilizatorilor nu duc la blocarea intenţionată a unei
maşini. De exemplu, un server Linux cu un firewall bine configurat va refuza
pachetele incomplete. Şi totuşi, uneori apar situaţii pe care nici un programator
nu le poate prevedea: pachete neinteligibile sau comenzi care necesită resurse
enorme, lansate de utilizatori rău intenţionaţi. Sistemul nu le poate înţelege
şi are tendinţa de a face ce e mai sigur: se resetează sau - în cazurile cele
mai serioase - se blochează.
Aşadar, atacurile DoS reprezintă acele atacuri de la distanţă (sau chiar locale,
dar mai rar) care au ca ţintă blocarea unor servicii de pe maşina ţintă, sau
chiar a maşinii însăşi.
Bine-bine, dar de ce ar încerca un atacator să blocheze o maşină? Unii lansează
asemenea atacuri numai pentru iritare (chiar şi mailbombing-ul poate reprezenta
un atac DoS dacă are drept consecinţă blocarea posibilităţii unui utilizator
de a-şi verifica mesajele). Alţii doar din amuzament sau teribilism (cum ar
zice răposatul Kurt Cobaine, smells like teen spirit). Aceştia sunt cei mai
mulţi. Există însă hackeri sau crackeri experimentaţi, care folosesc aceste
atacuri pentru a scoate din uz o maşină a cărei adresă IP o vor folosi pentru
a "păcăli" o altă maşină din reţea (acest ultim tip de atac se numeşte
IP spoofing - imitare IP - şi vom discuta despre el într-un articol viitor).
Iată motivul principal pentru care atacurile tip DoS trebuie tratate cu cea
mai mare seriozitate de orice administrator: orice atac DoS poate fi preludiul
unui atac prin imitare IP!
Problema celor două puncte
Nu, nu puncte materiale (ce naiba, abia am scăpat de fizică!). Să zicem că
tu administrezi un server Windows NT 3.51 (cazuri rare, dar e de dragul didacticii).
Eu am acces la o maşină *nix, sau oricum, o maşină pe care rulează un OS capabil
de a folosi directoarele partajate în reţea de către tine. (Ştiu… deja
începe să nu-ţi placă situaţia☺) Iată ce o să fac eu…
$telnet 142.141.5.13 Trying 142.141.5.13... Connected to 142.141.5.13. Escape character is ´^]´. Welcome to our domain! >
Evident, e vorba de un caz ipotetic… nu vă gândiţi că m-am apucat să sparg
reţele reale (de fapt, cele din clasa xxx.xxx.5.xxx sunt private, n-am curaj
nici să mă gândesc ce organizaţii le deţin). ´>´ reprezintă prompt-ul,
deci maşina aşteaptă comenzi. Mai departe, eu voi…
>DIR ../
Şi brusc, conexiunea va fi întreruptă. De ce? Aplauze, te rog, tocmai ţi-am
blocat maşina… Pe ecranul maşinii NT a apărut un mesaj STOP, după care
sistemul a fost reiniţializat.
Cazul de mai sus este cel mai simplist. De fapt, există mai multe metode de
a bloca un calculator aflat la distanţă. La ora actuală, nu cred că mai există
vreun calculator care să poată fi blocat în acest fel, pentru că Microsoft a
lansat un patch (versiunile afectate erau doar NT 3.50 şi 3.51). Rezultate asemănătoare
se pot obţine bombardând ţinta cu cereri telnet, finger, ping, sau blocând demonul
inetd. De fapt, chiar acesta este principiul DoS: atacurile vizează epuizarea
resurselor ţintei, sau blocarea traficului prin reţea. De obicei, un hacker
cu experienţă va folosi mai întâi o altă tehnică, anume aceea de syn flooding.
Syn flooding
Dacă mai ţii minte, am vorbit în primul articol din această serie despre înţelegerea
în trei părţi. Priveşte figura 1: în primul pas, clientul (atacatorul) va trimite
o cerere de conexiune către ţintă. Pachetul este de tip TCP:syn (synchronize).
Ţinta va răspunde cu un pachet TCP:syn/ack (synchronize/acknowledge) şi va aştepta.
Cel puţin în teorie - clientul va răspunde cu un pachet TCP:ack (observă sintaxa
pe care o vom folosi de acum încolo: [protocol]:[tip pachet]), şi schimbul de
date poate începe.
Fig. 1 - Structura protocolului

Să presupunem că maşina noastră a răspuns deja cu pachetul TCP:syn/ack, şi
aşteaptă ca atacatorul să răspundă cu TCP:ack. Dacă acesta întârzie, maşina
noastră va aştepta… şi va aştepta…
Bineînţeles, dacă e vorba de un singur port atacat nu e ceva foarte grav. O
simplă intervenţie din partea mea va finaliza scurt tentativa de atac. Situaţia
devine periculoasă dacă atacatorul ia la rând toate porturile maşinii mele.
La un moment dat, ţinta nu va mai putea face faţă şi se va reseta (dacă nu se
va bloca înainte).
Dar cum se pot trimite atâtea cereri? Nici un hacker nu poate lucra atât de
repede. Probabil că deja v-aţi gândit la Perl… şi eu, dar Perl funcţionează
numai pentru alte tehnici (implementarea unui syn_flooding în Perl e prea complicată).
În schimb, folosind C/C++ sau un alt limbaj puternic (am văzut chiar şi un program
în Assembler), un asemenea atac se poate implementa foarte uşor. Programe care
automatizează atacuri DoS se pot găsi pe internet cu zecile de mii - unele sunt
adevărate bijuterii în materie de programare. Ar trebui să le studiaţi cu atenţie,
pentru a vă putea proteja sistemul.
Fortress Arround Your Heart
(Ştiu, şi mie îmi place Sting ☺). Dar dacă veni vorba de fortăreţe, să
vedem cum se poate proteja un sistem…
Mai întâi, trebuie să ştii că singurele sisteme sigure împotriva atacurilor
DoS prin internet sunt maşinile neconectate la Reţea. Celelalte pot suferi de
pe urma acestor atacuri.
Există totuşi metode prin care te poţi proteja. În primul rând, instalează
toate patch-urile oficiale şi fii cu ochii pe buletinele de ştiri. Ultima parte
poate chiar să dea greş! Sunt mulţi hacker care nu-şi împărtăşesc descoperirile
decât cu colegi de breaslă. Aşa că poţi încerca să te "infiltrezi"
sub un pseudonim fals şi să iei pulsul acţiunii chiar de la atacatori (mai ales
dacă eşti expert în securitate). E o metodă murdară şi periculoasă (unii indivizi
sunt de-a dreptul dubioşi, mulţi au dat deja o raită prin închisorile federale),
dar funcţională.
Scanează-ţi maşina cu un scanner de calitate (identTCPscan, Strobe sau nmap)
şi închide toate serviciile inutile. Cu cât maşina ta rulează mai puţine servicii,
cu atât este mai puţin vulnerabilă, deoarece există mai puţine programe care
pot fi atacate, şi mai multe resurse disponibile (operaţii care ar bloca o maşină
configurată greşit s-ar putea să nu blocheze maşina ta, deoarece dispun de resursele
necesare).
Încearcă orice metodă de a ataca un sistem. Dacă ai aflat despre o tehnică
de atac, testeaz-o imediat şi găseşte o modalitate de protecţie (pe sistemul
tău, normal). La fel - dacă ai descoperit o tehnică de protecţie, caută-i vulnerabilităţile.
În felul acesta, vei putea fi cu un pas înaintea eventualului atacator.
Foloseşte neapărat un firewall şi un wrapper. Pe Linux, perechea TIS - TCP
Wrapper este aproape imbatabilă (mai ales ultimul, este un program excepţional,
scris de Wietse Wenema). Ai grijă la felul în care utilizatorii de la distanţă
(sau chiar locali) pot afla informaţii despre reţeaua ta. Ai văzut deja câte
pot afla folosind comanda host. Dar oricine poate afla informaţii despre o maşină
folosind servicii ca uptime, ps, showmount, host, netstat… nu ezita să
le dezactivezi pe cele care nu sunt necesare.
Dacă ai fost atacat, vei descoperi urme în fişierele-jurnal. Contactează imediat
ISP-ul atacatorului şi - foarte important - dacă atacul a fost o formă de concurenţă
neloială, ai de-a face cu un caz penal! Nu ştiu de vreo reglementare specială
pentru atacurile DoS în România, dar peste hotare ea este ilegală - iar în România,
dacă eşti în căutare de distracţii ca acestea, vei avea probleme cu ISP-ul.
Lecţia? Ca de obicei, încearcă tehnicile numai pe sistemul tău!
Toceala…
Mâine am lucrare la chimie şi mă întorc, deci, la caiet şi la obişnuita toceală.
Pentru toceala ta, ar trebui să încerci www.astalavista.com
Nu trebuie să-mi spui, înregistrarea costă, dar se menţine tradiţia hackerilor
adevăraţi: accesul la informaţii de valoare nu este condiţionat de calitatea
de membru. Acolo vei găsi informaţii despre DoS (şi programe-exemplu). De asemenea,
poţi consulta revista Phrack! (www.phrack.org).
Este o revistă care apare practic anual, revistă mai mult cu numele - de obicei
are în jur de 3-400 de pagini, mai ceva ca manualul meu de mate☺ - care
conţine informaţii despre orice are legătură cu securitatea.
OK… cam atât pentru ziua de azi. Uraţi-mi succes mâine!
|