DOS útok: Simulácia
a obrana

1.1   Informácie k cvičeniu

Cvičenie má predpripravený virtuálný stroj Ubuntu, ktorý si študent spustí cez VMware.

      • Ubuntu – verzia 22.04.2 64bit, user:tuke, password secret, viac info. -> úvodné cvičenie
      • Kali – verzia 2022.4, 64bit, user kali, password kali, viac info. –> úvodné cvičenie
      • LOIC 1.0.8 – predpriravený vo VM kali, v adresári ~/Downloads
      • Mono 6.8.0.105 – nainštalovaný vo VM kali
      • Iftop 1.0 pre4 – nainštalovaný vo VM Ubuntu
      • Fail2Ban v0.11.2 – nainštalovaný vo VM Ubuntu

1.2   Motivácia

Na tomto cvičení sa študent oboznámi s Denial of Service (DoS) útokom. Rozlíši klasický útok od distribuovaného a prakticky simuluje DoS útok pomocou nástroja Low Orbit Ion Cannon (LOIC). Nakoniec získa stručný prehľad nad mitigáciou týchto hrozieb a nasadí základné protiopatrenia v cielenom systéme na odrazenie DoS útoku cez HTTP protokol.Ciele cvičenia.

1.3   Ciele cvičenia

  1. Študent sa oboznámi s DoS a DDoS útokom
  2. Klasifikovať typy DoS útokov a identifikovať protiopatrenia
  3. Prakticky simulovať DOS útok pomocou nástroja Low Orbit Ion Cannon (LOIC)
  4. Aplikovať protiopatrenia voči DOS útoku.

1.4   Denial of Service – DoS

Upozornenie: Z legálnych dôvodov nevykonávajte tento typ útoku mimo vašej vlastnej siete alebo bez súhlasu administrátora. Tento útok by sa mal používať na testovanie zraniteľnosti systému.

DOS útok, v slovenskom význame – poprenie alebo odmientutie služby, je taký druh útoku, ktorého cieľom je znemožniť alebo obmedziť používateľom prístup k zariadeniu alebo sieti, ktorá ponúka nejakú službu.

Zaujímavosť: Spomeňte si ako to je pri zápise predmetov do rozvrhu v systéme Mais. Server je spomalený pretože je naň vysoký dopyt požiadaviek. Zaujímavosťou je to, že takýto akt hoci aj vopred dohodnutý nie je považovaný za DOS útok.

Ak ste sa stretli s CIA triádou, tak tento útok je smerovaný na dostupnosť systému.
Typickým príkladom DOS útoku môže byť preťaženie web-servera enormným množstvom HTTP požiadavok. Rozlišujeme tieto druhy DOS útokov:

  • Buffer overflow útok – Útok na preplnenie vyrovnávacej pamäte – je odoslanie sieťou viac dát ako programátori systému navrhli spracovať, súčasťou týchto dát môže byť nebezpečný kód, ktorý sa následne spustí a vykonáva príkazy, na ktoré má daný program práva.
  • ICMP flood – taktiež známy ako ping flood, je odosielanie veľkého množstva požiadavok na otestovanie konektivity medzi sieťovými zariadeniami.
  • SYN/HTTP/UDP Flood – odosielanie enormného množstva požiadaviek (TCP/UDP/HTTP) o pripojenie na server bez ukončenia „handshaku“.
  • Slowloris – udržiavanie veľkého množstva aktívnych pripojení na server, ktoré spotrebúvajú zdroje servera. Tento útok využíva zraniteľnosť http protokolu tým, že odosiela nekompletné http requesty na server.

 

Distributed Denial of Service – DDoS

Z názvu tohto typu útoku je implicitne jasné, že útok bude distribuovaný, tzn. útočník použije skupinu synchronizovaných zariadení na vykonanie DOS útoku na cielený stroj. Útočník može použiť skupinu vlastných strojov alebo získaných pomocou malvéru.

Malvér infikuje iné zariadenia, ktoré na pozadí budú mať spustenú aplikáciu na vykonanie útoku a aktívne budú čakať na správu od mastera – útočníka. Infikované zariadenie sa nazýva zombie a skupina infikovaných zariadení sa nazýva Botnet. Výhodou je znovupoužiteľnosť.

Iný malvér môže obsahovať IP adresu cieľa a čas vykonania útoku už v zdrojovom kóde malvéru. Takýmto typom útoku útočník nepotrebuje riešiť komunikáciu s infikovaným hostom. Jedná sa o staticky definovaný útok.

Majitelia infikovaných strojov netušia, že ich zariadenia sú infikované pretože zariadenie sa správa tak ako zvyčajne.               

DDoS útok ma množstvo výhod:

  • Vyššia efektívnosť útoku (viac zdrojov, viac požiadavok).
  • Útočníka je ťažké identifikovať, pretože je distribuovaný medzi rôznymi strojmi a lokáciami.
  • Je ťažké tento útok odraziť, pretože veľké množstvo zombie strojov s nížším počtom flood požiadavok sa môžu zdať ako legitímni používatelia.
  • Škálovateľnosť – ak obeť využije ako protiopatrenie využitie väčšieho množstva zdrojov, útočník je schopný použiť viac infikovaných strojov na posilnenie útoku.

1.5   Detekcia DoS útoku

Náročnosť detekovania tohto útoku je variabilná na základe mnohých faktorov ako je typ, sila, spôsob útoku atď. Medzi typické metódy odhalenia útoku patria:

  • Monitoring sieťovej prevádzky
  • Monitoring využitia zdrojov
  • Logovanie aplikácie, ktorá je spustená na serveri
  • Spomalené správanie aplikácie
  • Nefunkčnosť aplikácie, internal server error hlásenia

1.6   Ako mitigovať útok

Medzi najdôležitejšie body ako mitigovať DoS/DDoS útok patria:

  • Zvýšenie širky pásma siete (network bandwidth)
  • Distribúcia aplikácie na viacero zariadení
  • Rate Limit – obmedzenie počtu požiadaviek z jedného zdroja
  • Použitie pravidel Firewallu
    • na blokovanie konkrétnych IP adries / subnetov
    • na povolenie prístupu do aplikácie len konkrétnym IP adresám / subnetom
  • Implementácia Intrusion prevention system

1.7   Nástroje na vykonanie DoS útoku

1.7.1    Low Orbit Ion Cannon

Low Orbit Ion Cannon (LOIC) je dostupný, open source softvér, ktory bol vytvorený spoločnosťou Praetox Technologies. Jeho hlavným zámarom je testovanie siete, ale aj možnosť vykonať DoS alebo DDoS útok.

LOIC poskytuje útok zahltenia siete pomocou TCP/UDP alebo HTTP GET požiadavkami. Aj keď jeden stroj nie je schopný zahltiť sieť úplne pomocou tohto nástroja, tak dobre koordinovaný DDoS útok áno.

Zaujímavosť:  Jeden z najznámejších útokov, ktorý bol vykonaný pomocou LOIC DDoS je Operation payback, ktorý bol cielený od internetových aktivistov “Anonymous” na rôzne spoločnosti, banky a úrady ako odveta za obmedzovanie slobody prejavu na internete, obranu WikiLeaks a ďalším dôvodom.

Nástroj vyzerá takto. UI je jednoduchý treba označiť cieľ (IP adresu alebo URL hosta), následne si zvoliť typ útoku, počet vlákien a rýchlosť zahltenia a následne stlačiť tlačidlo „IMMA CHARGIN MAH LAZER“.

1.7.2    High Orbit Ion Cannon

High orbit Ion Cannon (HOIC), je taktiež voľne dostupný, open source nástroj, ktorý tentokrát vznikol skupinou hacktivistov – Anonymous. Zámerom vzniku tohto nástroja bola náhrada LOIC a pridanie nových funkcionalít na silnejšie a maskované útoky.

Medzi vylepšenia HOIC oproti LOIC patria:

  • Maskovanie zdroja správy
  • Zvýšená sila útoku

HOIC sa zameriava výlučne na útok prostredníctvom prokotolu HTTP na GET/POST požiadavky. Zvýšena sila útoku je možná pomocou „boosterov“. Booster je funkcia ktorá umožňuje aby sa jedno zariadenie predstavovalo ako viacero zariadení tým, že útočník špecifikuje zoznam dát, ktoré budú náhodne vkladané do hlavičky požiadaviek.

Zaujímavosť: Skupina anonymous prvýkrát použila HOIC pri operácií Megaupload.

Nástroj vyzerá takto, pre pridanie cieľa potrebujeme kliknut na tlačidlo (+) a následne zvoliť cieľ, booster a silu útoku. Nakoniec zvolime počet vlákien a stlačíme tlačídlo “FIRE THE LAZER!”.

Poznámka: Inštalácia tohto nástroja vo virtuálnom stroji kali si vyžaduje nástroj wine na spustenie .exe súborov s architektúrou win32 v prostredí Linux. Na cvičení tento nástroj používať nebudeme.

1.7.3    Aircrack-ng

Aircrack-ng je súbor nástrojov, ktorý sa využíva na testovanie bezpečnosti WiFi sietí. Zamieriava sa na monitoring, útoky, testovanie a crackovanie sieťových protokolov. Je to bezplatný open-source nástroj.

Medzi najznámejšie útoky pomocou aircrack-ng patria:

  • Deauth packet flood
  • Fake access pointy
  • Injection attack
  • Útok na WEP,WPA/WPA2 šifrovanie

1.8   Simulácia DoS útoku pomocou nástroja LOIC

Na simuláciu sme si zvolili nástroj LOIC. Tento nástroj je predpripravený vo vašom virtuálnom stroji Kali.

Poznámka: Na inštaláciu v rámci vlastného etického záujmu si potrebujete stiahnuť LOIC napr. zo stránky sourceforge. Keďže tento nástroj vznikol pre OS Windows, potrebujete si nainštalovať softvér Mono (sudo apt-get install mono-complete). Mono nám umožňuje spúšťať aplikácie medzi rôznymi platformami.

Spustite si VM Ubuntu, zistite si IP adresu tejto VM a uložte si ju. Následne si skontrolujte či funguje váš webserver.

$ ifconfig

Keďže ste sa v teoretickom rámci naučili, že jeden stroj nie je schopný zahltiť sieť, tak preto si spustíme nástroj iftop ktorý monitoruje sieťovú prevádzku v reálnom čase a budeme analyzovať nárast požiadaviek na náš webserver.

$ sudo iftop

 

Spustite si VM Kali a cez webový prehliadač sa pripojte cez http na webserver. A následne analyzujte, či bola odchytená sieťová prevádzka v nástroji iftop v Ubuntu.

 

Poznámka: iftop po chvílke vymaže zachytenú prevádzku, v prípade, ak sa chcete na webserver dotazovať znova a iftop vám nezachytáva pripojenie tak si vyčistite vyrovnávaciu pamäť prehliadača a skúste znova.

Takto vyzerá rozhranie nástroja iftop, ip adresa 192.168.145.128 na tomto obrázku je IP adresa inštancie virtuálneho stroja Kali, ktorá sa pripojila na webserver cez prehliadač. Všimnite si, že alokácia zdrojov z webservera bola pomerne nízka (283b). Poďme si teda overiť čo sa stane ak z jedného zariadenia (VM kali) použijeme nástroj LOIC a zahltíme webserver veľkým množstvom TCP požiadaviek.

 

Vo VM Kali, v adresári ~/Downloads nájdete súbor LOIC.exe. Spustite ho:

$ mono LOIC.exe

 

Zadajte IP adresu vášho webservera, kliknite na tlačidlo Lock on, zvolte Method TCP a napr. 2 vlákna.

Následne kliknite na tlačidlo IMMA CHARGIN MAH LAZER.

Nižšie si všimnite Attack status, kolko packetov je odoslaných.

 

Nechajte bežať váš flood a otvorte si VM Ubuntu a skontrolujte sieťovu prevádzku v nástroji iftop.

Tu si môžete všimnúť, že alokácia zdrojov už bola náramne vyššia.

Poznámka: Logy prístupu do apache webservera su zachytené v súbore: /var/log/apache2/access.log

Zastavte flooding.

Poznámka: Samozrejme, dá sa zvýšiť počet vlákien alebo využiť iná metóda útoku, ale poznamenáme, že niekedy sa tento útok vie zaseknúť pretože nemá dostatok zdrojov.

Keďže náš webserver je pomerne jednoduchý a útok z jedného zariadenia nedokáže zhodiť systém, dokáže ho minimálne obmedziť. Ak by sme si predstavili distribuovaný útok z viacerých zariadení naraz dokázali by sme tomuto webserveru znemožniť komunikovať s inými zariadeniami.

1.9  Fail2ban

V tejto časti sa pokúsime odraziť DoS útok na náš webserver pomocou nástroja Fail2ban. Tento nástroj je open-source a slúži na zabezpečenie serverov pred rôznymi hrozbami. Je navhrnutý primárne na blokovanie brute force útokov na SSH,FTP a HTTP protokoly. Prvotné vydanie bolo v roku 2004 a je naprogramovaný v programovacom jazyku Python. Hlavným účelom tohto nástroja je monitorovať log súbory a automaticky reagovať na potencionálne hrozby rôznymi akciami, ako je napríklad blokovanie  konkrétnej IP adresy. Výhodou tohto nástroja je, že si ho administrátor dokáže prispôsobiť na základe vlastných požiadaviek.

Poznámka: Existuje množstvo iných Intrustion Detection-Prevention systémov,  ktoré sú zamerané viac na komplexnú ochranu proti hrozbám. Napríklad WAF (Web application firewall), dokáže detekovať útoky ako je SQL injection, Cross-site scripting, Brute force útoky atď.

Fail2ban funguje na 3 základných konfigurovateľných komponentoch:

  • Jail – slúži na nastavenie toho čo ideme monitorovať, za akej podmienky, v akých intervaloch a akú akciu použiť v prípade detekcie hrozby.
  • Filter – slúži na filtrovanie logov pomocou regulárnych výrazov
  • Action – slúži na vykonanie akcie nad získaným hostom

 

Príklad:

  • Jail (sshd) – Chráni SSH službu pred brute force útokom monitorovaním /var/log/auth.log a /var/log/secure
  • Filter (sshd-auth) – Filtruje logy definované v jaile, identifikuje nepodarené pokusy o prihlásenie
  • Action (iptables-multiport) – V prípade detekovania hrozby definuje do IP tables firewall rule na blokovanie danej IP adresy získanej z filtra
  • Action (sendmail-whois) – V prípade detekovania hrozby odošle mail administrátorovi

 

 

V našom príklade, ktorý použijeme v cvičení, si môžeme v krátkosti popísať ako je konfigurovaný jail:

  • [http-get-dos] – určuje meno jailu
  • enabled = true
  • port = http,https
  • logpath = /var/log/apache2/access.log – určuje aký log monitorujeme
  • filter = http-get-dos – určuje aký filter použijeme na náš log
  • maxretry = 300 – počet dovolených pokusov o pripojenie v intervale
  • findtime = 300 – je okno v ktorom maxretry počítadlo sa resetuje
  • bantime = 600 – čas v sekundách na koľko chceme odstaviť IP
  • action = iptables[name=HTTP, port=http, protocol=tcp] – určuje akciu ktorú treba vykonať so vstupnými parametrami

 

Filter, ktorý použijeme získa IP adresu ktorá sa snaží pripojiť na náš apache webserver

failregex = ^<HOST> -.*"GET.*

Taktiež použijeme predefinovanú akciu iptables, ktorá zablokuje špecifickú IP adresu.

 

Predefinované konfigurácie fail2ban

 

  • V adresári /etc/fail2ban/jail.d sa nachádza zoznam predefinovaných jailov taktiež v súbore /etc/fail2ban/jail.conf sa nachádza hlavný „out of the box“ jail konfiguračný súbor.
  • V adresári /etc/fail2ban/action.d sa nachádza zoznam predefinovaných akcií.
  • V adresári /etc/fail2ban/filter.d sa nachádza zoznam predefinovaných filtrov.

Vo VM Ubuntu by ste mali mať nainštalovaný nástroj fail2ban. Overte si to pomocou príkazu:

$ fail2ban-client --version

 

Vytvorte si vlastný jail, vložte doň celý obsah zo súboru jail.local:

$ sudo vim /etc/fail2ban/jail.local

 

Poznámka: jail.local, slúži na vlastnú modifikáciu jail pravidiel. Poskytovateľ odporúča aby sme priamo nemodifikovali súbor jail.conf.  Tzn. pravidla v jail.conf sú „overridnuté“ pravidlami z jail.local súboru.

Vytvorte si vlastný filter a vložte doň dáta zo súboru http-get-dos.conf:

$ sudo vim /etc/fail2ban/filter.d/http-get-dos.conf

 

Reštartujte službu fail2ban:

$ sudo service fail2ban restart

 

Skontrolujte si či fail2ban pozná váš nový jail:

$ sudo fail2ban-client status http-get-dos

Mali by ste mať zobrazený podobný výsledok:

 

V opačnom prípade sa vám môže zobraziť takýto výsledok:

Vráťte sa do VM kali a skúste zaútočiť znova pomocou LOIC na webserver.
– zvoľte HTTP útok na port 80 s jedným vláknom

 

Poznámka: Pravdepodobne vám útok zlyhal a tentokrát sa neviete pripojiť na webserver.

Vo VM ubuntu skontrolujte list zabanovaných IP adries.

$ sudo fail2ban-client status http-get-dos

 

V Banned IP list možete vidieť IP adresu VM Kali.

1.10   Zdroje

1.11  Dotazník / Kvíz

Dotazník resp. kvíz je hodnotený 0.5 bodom k zápočtu. Na jeho vyplnenie máte čas do 12. novembra. Odkaz na dotazník nájdete tu.