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!
|