Teória útokov SQL injection, XSS, DoS a protiopatrenia

Z Kiwiki
Skočit na navigaci Skočit na vyhledávání

V práci sa budem ďalej zaoberať hlavne útokmi typov SQL injection, Blind SQL injection, XSS, DoS a DDoS, pretože tieto typy útokov sú najaktuálnejšie a veľa webových aplikácií a serverov nemá dostatočné zabezpečenie proti nim.

SQL injection

Je technika vloženia kódu, ktorá využíva bezpečnostné nedostatky vyskytujúce sa v databázových vrstvách aplikácie. Ak sa do parametra podarí útočníkovi vložiť škodlivý kód, tak tento kód môže byť vykonaný externým systémom akoby z poverenia webovej aplikácie. Zraniteľnosť sa objaví, keď je užívateľský vstup buď nekorektne filtrovaný od riadiacich znakov v SQL príkazoch, alebo ak nie je pevne natypovaný a tým neočakávane vykonaný. Táto chyba vzniká vo všeobecnosti vždy, keď je jeden skriptovací jazyk vložený do ďalšieho. Tento typ zraniteľnosti sa dá zneužiť rôznymi formami:

Nesprávna alebo žiadna filtrácia znakov ','

Táto forma vznikne, ak na užívateľskom vstupe nie sú filtrované úvodzovky, potom je možné do tohto vstupu vložiť SQL príkaz. Toto vloženie príkazu môže vyvolať manipuláciu s databázou webovej aplikácie. Nasledujúci riadok obsahuje kód, na ktorom je možné vidieť túto zraniteľnosť:

   príkaz = "SELECT * FROM users WHERE name = '" + userName + "';"

Tento SQL kód je navrhnutý na výpis záznamu podľa daného mena užívateľa z tabuľky užívateľov. Avšak ak je premenná „userName“ zmanipulovaná útočníkom, tak tento SQL príkaz môže vykonať viac ako bol autorov úmysel. Teda ak nastavíme premennú „userName“ takto a' or 't'='t a vložíme to do SQL príkazu:

   SELECT * FROM users WHERE name = 'a' OR 't'='t';

Použitím takto upraveného príkazu v overovacom postupe, bude násilne vybrané platné meno používateľa, pretože vyhodnotenie 't'='t' je vždy pravda.

Nasledujúca hodnota „userName“ v nižšie uvedenom príkaze vyvolá zmazanie tabuľky „users“ a taktiež výber všetkých informácií z tabuľky „userinfo“, to znamená odhalenie všetkých informácií o každom používateľovi. Použitie API umožňuje zložené príkazy:

   a';DROP TABLE users; SELECT * FROM userinfo WHERE 't' = 't

Vstup vložený do konečného SQL príkazu:

   SELECT * FROM users WHERE name = 'a';DROP TABLE users; SELECT * FROM userinfo WHERE 't' = 't';

Väčšina SQL serverových riešení umožňuje vykonať zložené príkazy takýmto spôsobom, avšak niektoré SQL API ako napríklad PHP's mysql_query() toto neumožňuje kvôli bezpečnostným dôvodom. Takáto prevencia bráni útočníkovi vložiť jednotlivé príkazy ale nebráni pred modifikáciou príkazov. [2]

Nesprávne použitie typu premennej

Táto forma nastane, ak užívateľské pole nie je pevne natypované alebo nie je overované na typové obmedzenia. Teda ak je napríklad do číselného poľa zapísaná iná ako číselná hodnota a programátor neoverí správnosť tejto hodnoty poskytnutej na užívateľskom vstupe.

   statement := "SELECT * FROM userinfo WHERE id = " + a_variable + ";"

Z tohto príkazu je jasné, že autor zamýšľal použiť a_variable ako číselnú premennú pre pole „id“. Avšak ak je typu string, tak útočník môže manipulovať s príkazom podľa svojej vôle, t.j. obíde sa nutnosť použitia úvodzoviek. Príklad príkazu, ktorý zmaže tabuľku users:

   SELECT * FROM userinfo WHERE id=1;DROP TABLE users;

Blind SQL injection

Názov Blind SQL Injection napovedá, že sa jedná o typ zraniteľnosti, pri ktorej je webová aplikácia zraniteľná na SQL injection, a to tak že sa výsledok útoku nie je viditeľný pre útočníka. Avšak z webovej aplikácie je možné vybrať dáta v závislosti na legitímnosti vloženého SQL kódu. Pre tento typ zraniteľnosti boli vytvorené programy, ktoré dokážu automaticky vyhľadať bezpečnostný nedostatok a stiahnuť cieľové dáta. [3]

Útok použitím podmienenej reakcie

Jedná sa o typ blind SQL injection, ktorý prinúti databázu vyhodnotiť logický výraz v bežnom okne aplikácie.

   SELECT booktitle FROM booklist WHERE bookId = 'OOk14cd' AND 1=1;

Následkom tohto príkazu bude otvorenie bežnej strany, zatiaľ čo výsledkom príkazu

   SELECT booktitle FROM booklist WHERE bookId = 'OOk14cd' AND 1=2;

bude odlišný, ak je stránka zraniteľná na SQL injection. Vloženie takéhoto príkazu útočníkovi naznačí možnosť blind SQL injection. Potom útočník môže zostrojiť príkazy, ktoré vyhodnotia pravdu alebo nepravdu založenú na obsahu ďalšieho stĺpca alebo tabuľky za príkazom SELECT.

Útok použitím podmienenej chyby

Ďalší typ blind SQL injection, spôsobujúci SQL chybu nútením databázy vyhodnocovať príkaz, ktorý vyvolá chybu ak je príkaz WHERE pravda.

   SELECT 1/0 FROM users WHERE username='Ralph';

Delenie nulou bude vyhodnotené ako chyba, iba ak bude existovať používateľ Ralph.

Útok použitím časového oneskorenia

Je to taktiež typ blind SQL injection, ktorý spôsobí dlhé vykonávanie požiadavky alebo časové oneskorenie príkazu závislom na logickom vložení. Útočník potom môže zmerať čas, ktorý je potrebný na vyhodnotenie vloženého príkazu ako pravda.

Obrana proti SQL injection

Užívateľský vstup nesmie byť priamo vložený do SQL príkazov. Namiesto toho sa musia použiť parametrizované príkazy alebo užívateľský vstup starostlivo odfiltrovať od riadiacich znakov.

Parametrizované príkazy

U väčšiny vývojových platforiem sú parametrizované príkazy použité pre prácu s parametrami, namiesto vloženie užívateľského vstupu do príkazu. V mnohých prípadoch je SQL príkaz pevne daný a každý parameter je skalár. Vstup užívateľa je potom priradený k parametru. Toto je príklad použitia Java a JDBC API:

  PreparedStatement prep = conn.prepareStatement("SELECT * FROM USERS WHERE USERNAME=? AND PASSWORD=?");
  prep.setString(1, username);
  prep.setString(2, password);
  prep.executeQuery();

Podobne v C#:

    using (SqlCommand myCommand = new SqlCommand("SELECT * FROM USERS WHERE USERNAME=@username AND PASSWORD=HASHBYTES('SHA1', @password)", myConnection))
    {
        myCommand.Parameters.AddWithValue("@username", user);
        myCommand.Parameters.AddWithValue("@password", pass);
 
        myConnection.Open();
        SqlDataReader myReader = myCommand.ExecuteReader())
        ...................
    }

Vo verzii PHP 5 a vyššie, existuje viac možností pre použitie parametrizovaných príkazov. PDO databázová vrstva je jedným z nich:

   $db = new PDO('pgsql:dbname=database');
   $stmt = $db->prepare("SELECT priv FROM testUsers WHERE username=:username AND password=:password");
   $stmt->bindParam(':username', $user);
   $stmt->bindParam(':password', $pass);
   $stmt->execute();

Existujú aj predajné špecifické metódy, ako napríklad použitie rozšírenia mysqli pre MySQL 4.1 a vyššiu verziu, ktorým sa vytvoria parametrizované príkazy:

   $db = new mysqli("localhost", "user", "pass", "database");
   $stmt = $db -> prepare("SELECT priv FROM testUsers WHERE username=? AND password=?");
   $stmt -> bind_param("ss", $user, $pass);
   $stmt -> execute();


Tieto riešenia nie vždy pracujú s parametrami, ktorých hodnota je tabuľka, práve tak ako pravá strana výrazu IN. Mnoho prostredí neumožňuje mať SELECT * FROM WHERE ex_users username ('Alice', 'Bob') parametrizované ako SELECT * FROM ex_users WHERE username IN ? s otáznikom (?) odkazujúcim na pole predávané aplikácii. Jedna z možností spočíva v budovaní SQL za behu, v cykle pomocou polí a vyhýbajúc sa špeciálnym znakom. Ďalšie riešenie zahŕňa balenie do reťazcov v aplikácii a ich vybaľovanie pomocou uložených procedúr na serveri. [4]

Posilnenie na úrovni databázy

V súčasnej dobe iba H2 Database Engine podporuje schopnosť presadiť požiadavku parametrizácie. Avšak, jednou nevýhodou je, že požiadavka na príklade nie je možná a praktická, pretože je ťažké implementovať požiadavku na príklade parametrizovaných požiadaviek. [5]

Posilnenie na úrovni kódovania

Použitím objektovo-relačného mapovania (ORM) knižnice sa dá vyhnúť nutnosti písania SQL kódu. ORM knižnica bude v skutočnosti generovať parametrizované SQL príkazy z objektovo orientovaného kódu.

Vyhnúť sa špeciálnym znakom

Táto snaha vyhnúť sa znakom s riadiacim významom v SQL je náchylná na chyby. Manuál pre SQL DBMS vysvetľuje, aké znaky majú špeciálny význam, čo umožňuje vytváranie komplexnej čiernej listiny znakov, ktoré potrebujú preklad. Napríklad, každé jednoduché úvodzovky (') v parametri musia byť nahradené dvoma apostrofmi ('') podľa platnej formy presného SQL reťazcu. V PHP je napríklad obvyklé vyhnúť sa parametrom pomocou funkcie mysql_real_escape_string ešte pred odoslaním SQL požiadavky:

   $query = sprintf("SELECT * FROM Users where UserName='%s' and Password='%s'",
                  mysql_real_escape_string($Username),
                  mysql_real_escape_string($Password));
   mysql_query($query);

Toto je náchylné na chyby, pretože je ľahké zabudnúť na vyhnutie sa danému reťazcu.

Opatrenia podľa metodiky OWASP

Dôsledná kontrola vstupov, tri úrovne blokovania: vysoká (úvodzovky) - pomocou firewallovej technológie, stredná (úvodzovky plus príkazy OS) a nízka (zamietnutie príkazov OS), zamedzenie volania externých zdrojov (system, exec, fork, Runtime.exec, SQL queries alebo čohokoľvek, čo vytvára syntax požiadavky na interpreter).

Ďalším opatrením je organizovanie činnosti webovej aplikácie len s minimálnymi, nevyhnutne potrebnými právami (teda nie root - administrátorskými právami pre webový server alebo dbadmin pre databázu). V prípade nutnosti použitia externého príkazu sa musí informácia vkladať do príkazu čo najprísnejšie a musí sa čo najpresnejšie kontrolovať. [6]

Cross-site scripting (XSS)

Je to typ útoku, kedy sa skriptovaním na strane klienta pomocou java skriptov pozmení časť kódu zobrazovanej web stránky tak, aby bol nebezpečný skript útočníka spustiteľný a vykonal určitú akciu, napríklad získal a odoslal dáta z cookies obete. Útočník tak po nahratí dát z cookies, ktoré získal od obete, často získa prístup do webovej aplikácie bez toho aby poznal prihlasovacie údaje. XSS sa rozdeľuje na tri typy zraniteľností:

  1. Lokálny (Local)
  2. Nestály (Non-persistent)
  3. Stály (Persistent)

Lokálny typ (Local)

Taktiež označovaný ako DOM-based, to znamená, že jeho základom je document object model. Jedná sa o najzákladnejšiu formu XSS. Pri tejto forme je kód spustený na strane klienta, kedy sa využije časť JavaScript kódu namiesto parametra v URL a za pomoci tohto JavaScriptu je stránka pozmenená. Útočníkov kód sa vykoná na strane klienta po inicializácii prehliadača obete a pozmení web stránku. Obrana proti tomuto typu je možná v prehliadači firefox za pomoci pluginu NoScript.

Nestály typ (non-persistant)

Táto forma XSS musí použiť aj tzv. social engineering. Princíp spočíva v tom, že sa využíva dynamicky generovaný obsah na základe užívateľskej aktivity (AJAX, AJAJ atď.) spolu s predpokladom, že stránka neošetruje dáta premenou HTML kódu na entity, ale umožňuje priame zadanie kódu, ktoré je pri vygenerovaní interpretované a vykonané užívateľovým prehliadačom a takto umožní útočníkovi prístup k citlivými dátam ako sú napríklad cookies alebo sessions. Tento útok práve kvôli nutnosti použitia veľkej dávky social engineeringu nie je považovaný väčšinou vývojárov za príliš nebezpečný.

Stály typ (persistant)

Táto forma umožňuje najsilnejší typ útoku (infikuje najväčšie množstvo obetí). Taktiež sa označuje ako HTML injection (infikovanie HTML). Pre tento typ útoku sa využíva uschovanie nebezpečného kódu na strane serveru napríklad v databáze, pričom vstup ani výstup nie je ošetrovaný za pomoci premeny HTML kódu na entity. Najbežnejším príkladom sú guestbooky (knihy návštev), kedy nie je vstup ani výstup chránený proti HTML injection a tak sa nebezpečný kód automaticky interpretuje pri vygenerovaní stránky až do odstránenia majiteľom. Táto metóda sa považuje za najnebezpečnejšiu, pretože sa odhaduje pri jej použití najväčšie množstvo obetí, pričom nebezpečný kód stačí použiť len raz. Aj pri tejto metóde je nutné použiť malé množstvo social engineeringu, t.j. vytvoriť zaujímavý odkaz, ktorý pritiahne veľké množstvo ľudí a donúti ich otvoriť tento odkaz.

Ďalšou výhodou útoku je, že útočník pre zber dát nepotrebuje vlastnú stránku, stačí mu využiť napríklad logovanie do súboru na infikovanom serveri, email alebo inú formu pre dočasné uloženie výsledkov.

CSRF

CSRF je veľmi podobný útoku XSS. Útok využíva metódu GET pre predanie argumentov stránke obeti, čo znamená že parametre sú posielané priamo v url. Tento typ útoku nie je chybou internetového prehliadača ani užívateľa a je podstatou samotného http protokolu. Http protokol je veľmi jednoduchý, server na jeho základe nedokáže identifikovať návštevníka. Na identifikovanie návštevníka slúžia cookies. Avšak je potrebné mať na zreteli, že metóda POST je rovnako postihnutá. Celý problém spočíva v neoveriteľnej výmene informácií, ktorú vykoná prehliadač, a preto jeho jediná možnosť, ako overiť návštevníka, je použiť cookies. Avšak ak obeť cookies pošle a zhodujú sa z uloženými dátami o užívateľovi, tak je možné vykonať prakticky akúkoľvek zmenu. [7]

Obrana proti XSS

Kontrola a validácia všetkých vstupných parametrov aplikácie, t.j. hlavičiek, cookies, skrytých a aj vstupných polí formulárov, vzhľadom na prípustné množiny ich hodnôt. Účinným opatrením je tiež odmietnutie akýchkoľvek HTTP požiadaviek obsahujúcich kód, t.j. znaky „<, >“. A taktiež jedným z účinných opatrení je zamietnutie skriptov v internetovom prehliadači alebo použitie pluginu NoScript, ktorý je vytvorený pre prehliadač Firefox. Ako najlepšia ochrana proti CSRF sa osvedčili tokeny inicializované pri prvom načítaní z prihlasovacej stránky. Po vypršaní session je nutné znova inicializovať token.

Denial of service (DoS)

Útokom odmietnutia služby (DoS) alebo aj distribuovaným DoS útokom (DDoS) sa útočník snaží znefunkčniť určitú službu, tak že vyčerpá počítačové zdroje, aby jej neboli k dispozícii. Hoci prostriedky na realizáciu, motívy a ciele útoku DoS sa môžu líšiť, vo všeobecnosti sa jedná vždy o úsilie osoby alebo ľudí zabrániť internetovej stránke alebo službe efektívne fungovať alebo ju dočasne odstaviť z prevádzky. Typické ciele páchateľov útokov DoS sú stránky alebo služby hostené na webových serveroch typov high-profil, ako sú banky, úverové brány kartou, a dokonca aj root nameservery. [8]

Jedna bežná metóda útoku je zaplnenie cieľového zariadenia externou komunikáciou plnou žiadostí. Ak sa tak stane, tak zariadenie nemôže legitímne reagovať v prevádzke, alebo reaguje tak pomaly, že niektoré služby nemôžu byť poskytnuté účinne. Zo všeobecného hľadiska sú DoS útoky vykonávané, buď nútením cieľového počítača vykonať reštart, alebo skonzumovať svoje zdroje tak, že už nemôže poskytovať svoje služby určené na zabezpečenie, alebo brániť komunikácií medzi určeným používateľom a obeťou, aby už nemohli adekvátne komunikovať.

DoS útoky taktiež porušujú politiku správneho používanie internetu, a tiež porušujú prijateľné užívateľské pravidlá prakticky všetkých internetových služieb. Taktiež predstavujú porušenie právnych predpisov jednotlivých krajín. [9] The United States Computer Emergency Response Team definuje príznaky DoS útokov takto:

  • Neobvykle pomalý výkon siete (otváranie súborov alebo prístup k webovej stránky)
  • Nedostupnosť konkrétnej webovej stránky
  • Neschopnosť prístupu k akejkoľvek webovej stránke
  • Dramatický nárast počtu nevyžiadaných e-mailov (tento typ útoku DoS je považovaný za e-mail bombu) [10]

DoS útoky môžu tiež viesť k problémom v sieti 'pobočiek' v okolí napadnutého počítača. Napríklad sa môže spotrebovať šírka pásma smerovača medzi internetom a LAN takýmto útokom. To by ohrozilo nielen daný počítač, ale aj celú sieť.

Ak je útok vykonávaní s dostatočne širokým záberom na zariadenia, tak môžu byť ohrozené celé geografické oblasti internetového pripojenia. Čo môže byť spôsobené slabými znalosťami útočníka alebo zlou konfiguráciou siete alebo aj nekvalitným zariadením v sieťovej infraštruktúre. Útok DoS je charakterizovaný, ako výslovný pokus útočníka zabrániť legitímnemu používateľovi služby v používaní tejto služby. Útoky môžu byť zamerané na akékoľvek sieťové zariadenia, vrátane útokov na smerovacie zariadenia a web, elektronickú poštu, alebo na servery systému doménových mien. DoS útok môže byť spáchaný mnohými spôsobmi. Toto je päť základných typov útoku:

  1. Spotreba výpočtových zdrojov, ako sú šírka pásma, miesto na disku, alebo času procesora
  2. Narušenie konfiguračných informácií, napríklad informácií o smerovaní
  3. Narušenie stavových informácií, ako je nevyžiadané resetovanie TCP sessions
  4. Narušenie fyzickej siete komponentov
  5. Bránenie komunikácií medzi určeným používateľom a obeťou, aby nemohli dostatočne komunikovať

Útok DoS môže zahŕňať aj vykonávanie škodlivých programov (malware) určených na:

  • Maximálne využitie procesora, s cieľom zabrániť akejkoľvek práce
  • Spúšťanie chyby v mikrokóde daného zariadenia
  • Spúšťanie chýb inštrukcií v sekvenciách, aby sa počítač dostal do nestabilného stavu alebo úplne uzamkol
  • Využite chýb v operačnom systéme, čo spôsobí nedostatok hardvérových prostriedkov pre všetky dostupné zariadenia, tak že nebude možné vykonávať žiadnu prácu
  • Pád samotného operačného systému

ICMP flood

Jeden variant DoS flood útoku na verejnom internete je Smurf attack. Opiera sa o zle nakonfigurované sieťové zariadenia, ktoré umožňujú zaslať pakety na všetky počítače na danej sieti prostredníctvom adries siete. Sieť potom slúži ako Smurf rozosielač. V takomto útoku, budú páchatelia posielať veľké množstvo IP paketov s falošnou zdrojovou adresou, tak aby vyzerala ako adresa obete. Sieťová šírka pásma je rýchlo vyčerpaná a bráni prístupu legitímnym paketom na miesto určenia. [11] Brániť sa proti tomuto DoS útoku na internete je možné odstránením nesprávnej konfigurácie sietí u poskytovateľov služieb, alebo prijať vhodné opatrenia, ako je filtrovanie.

Ping flood

Je založený na posielaní veľkého množstva paketov typu ping, obvykle pomocou príkazu „ping“ z prostredia Unix, pretože v systémoch Windows má tento príkaz oveľa menej zhubné funkcie. Uskutočniť tento útok je veľmi jednoduché, stačí si prioritne vyžiadať väčšiu šírku pásma, ako obeť.

SYN flood

Posiela záplavu paketov TCP / SYN, často s vykonštruovanou adresou odosielateľa. Každý z týchto paketov je riešený ako požiadavka na pripojenie, čo spôsobí, že server vytvorí z polovice nechránené pripojenie zaslaním TCP / SYN-ACK paketu a čaká na pakety ako reakciu z adresy odosielateľa. Avšak, pretože je adresa odosielateľa neexistujúca, tak reakcia nepríde. Toto z polovice nechránené pripojenie sa zaplní množstvom pripojení a server ich nie je schopný vykonať, takže prestane reagovať na oprávnené požiadavky až do skončenia útoku.

Teardrop útoky

Teardrop zahŕňa odosielanie znetvorených IP fragmentov s prekrývaním sa a tým vyťaží cieľový počítač. To môže spôsobiť pád rôznych operačných systémoch kvôli chybe v TCP / IP fragmentácii re-assembly kódom. Avšak tento typ útoku bol možný len na operačných systémoch Windows 3.1x, Windows 95, Windows NT a Linux do verzie 2.1. [12]

Peer-to-peer útok

Útočníci našli spôsob, ako využívať množstvo chýb v peer-to-peer serveroch a tým sa začala éra DDoS útokov. Najagresívnejší z peer-to-peer DDoS útokov, ktorý využíva DC++. Peer-to-peer útoky sa líšia na základe botnet útokov. Útočník pôsobí len ako premostiteľ pripojenia klientov na veľkých peer-to-peer serveroch, kde vlastne odpojí všetkých klientov od svojej peer-to-peer siete a pripojí ich k webovej stránke obeti. V dôsledku toho sa môže niekoľko tisíc počítačov agresívne pokúšať pripojiť k cieľovej stránke. Zatiaľ čo typický webový server môže spracovať niekoľko stoviek pripojení za sekundu, v okamihu pripojenia takéhoto veľkého množstva počítačov zlyhá. Väčšina webových serverov zlyhá takmer okamžite. S mierne veľkým peer-to-peer útokom by mohol byť server zasiahnutý až s 750000 pripojeniami v krátkom slede. Daný web server bude odpojený kvôli obrovskému množstvu prichádzajúcich spojení.

Kým peer-to-peer útoky sa dajú ľahko identifikovať podľa podpisov, veľké množstvo IP adries, ktoré musí byť blokované, znamená, že tento typ útoku môže premôcť obranu. Aj v prípade zmierňovacieho zariadenia, ktoré dokáže trvalo blokovať IP adresy, treba zvážiť aj iné problémy. Napríklad, existuje krátky okamih, kedy je pripojenie nechránené na strane servera ešte pred príchodom podpisu. Ak je len raz spojenie nechránené, môže byť identifikujúci podpis zaslaný a odhalený, a tým toto spojenie strhnuté. Dokonca sa môžu strhnúť aj spojenia so serverovými zdrojmi a poškodiť server. Tento spôsob útoku môžeme predísť tým, že v P2P protokole spresníme, ktoré porty sú povolené a ktoré nie. Ak port 80 nie je povolený, tak sú možnosti útoku na webové stránky veľmi obmedzené.

Permanentné DoS útoky

Stály DoS (PDoS), taktiež známy ako phlashing (ničiteľ firmwaru a BIOS-u), je útok, ktorý poškodí systém, tak že to vyžaduje výmenu alebo reinštalácii systému. Na rozdiel od distribuovaného DoS útoku , PDoS útok využíva bezpečnostné chyby, ktoré umožňujú vzdialenú správu na riadiacej úrovni hardvéru obete. Medzi takéto zariadenia patria routery, tlačiarne alebo sieťové zariadenia. Útočník používa nahradenie firmwaru zariadenia svojím pozmeneným firmwarom, alebo chybným firmwarom (tento proces sa nazýva flashing). Týmto sa spôsobí, že zariadenie je nepoužiteľné na svoj pôvodný účel, až kým ho nebude možné opraviť alebo vymeniť.

PDoS je čisto hardvérovo mierený útok, ktorý môže byť oveľa rýchlejší a vyžaduje menej prostriedkov ako používanie botneta pri útoku DDoS. Kvôli týmto vlastnostiam, potenciálu a vysokej pravdepodobnosti, že sa využijú bezpečnostné nedostatky Network Enabled embedded zariadení (NEEDs), priťahuje táto technika pozornosť početných hackerských komunít. Rich Smith vytvoril nástroj PhlashDance, ktorý slúži na detekciu PDoS zraniteľností.

Záplavy (Floods) na aplikačnej úrovni

Niektoré DoS spôsobia pretečenie vyrovnávacej pamäte, čo môže spôsobiť, že softvér serveru zostane zmätený a zaplní miesto na disku alebo spotrebuje všetku dostupnú pamäť alebo naplno vyťaží procesor.

Banana attack

"Banánový útok" je ďalší konkrétny typ DoS. Jedná sa o presmerovanie odchádzajúcich správ od klienta späť ku klientovi, predchádzajúc tak vonkajšiemu prístupu, tak ako zaplavovaním klienta posielaním paketov.

Distribuovaný DoS útok (DDoS)

Väčšina druhov DoS sa spoliehajú predovšetkým na hrubú silu, zaplavenie cieľa s obrovským tokom paketov, zaplnenie šírky pásma pripojeniami alebo vyčerpaním zdrojov cieľového systému. Zaplavenie šírky pásma sa spolieha na útočníkovu väčšiu šírku pásma ako obeť, ktorú musí mať k dispozícii. Bežným spôsobom ako to dosiahnuť je dnes Distributed Denial of Service (DDoS), zamestnávajúci botneta. Ostatné záplavy môžu používať špeciálne typy paketov alebo požiadavky na pripojenie k nasýteniu obmedzených zdrojov, ako je napríklad voľné miesto na disku alebo počet možných pripojení. DDoS nastane, keď viacero systémov zaplaví šírku pásma alebo zdroje daného systému, zvyčajne jedného alebo viac webových serverov. Tieto systémy sú ohrozované útočníkmi pomocou rôznych metód.

Je dôležité si uvedomiť rozdiel medzi DDoS a DoS útokom. Ak útočník spraví útok z jedného hostiteľa, tak je to kvalifikované ako útok DoS. V skutočnosti by akýkoľvek útok proti dostupnosti mal byť klasifikovaný ako DoS útok. Na druhú stranu, ak útočník používa tisíce systémov súčasne pre spustenie Smurf útokov proti vzdialenému hostiteľovi, tak je tento útok klasifikovaný ako DDoS útok. Medzi útočníkove hlavné výhody používania distribuovaných DoS útokov patrí, že viac počítačov môže generovať viac útočných prevádzok ako jeden počítač, viaceré útočné stroje sú ťažšie vypnuteľné ako jeden, a že správanie každého útočiaceho stroja môže byť utajenejšie, čím je ho ťažšie vypátrať a vypnúť. Druhy botnetov sú popísané nižšie.

Malware

Takýto škodlivý program môže niesť mechanizmus DDoS útoku. Jeden známy príklad tohto bol Mydoom. Jeho DoS mechanizmus bol spustený v konkrétny čas a dátum. Tento typ DDoS spojil tvrdé naprogramovanie cieľovej IP adresy s vopred dohodnutým oslobodením malwaru. Potom už nie je potrebná žiadna ďalšia interakcia, aby sa mohol spustiť útok.

Trojan

Systém môže byť taktiež ohrozený trójskym koňom, ktorý umožňuje útočníkovi stiahnuť zombie agenta alebo aj samotný trojský kôň môže jedného obsahovať. Útočníci môžu tiež preniknúť do systémov pomocou automatizovaných nástrojov, ktoré zneužívajú chyby v programoch, ktorými sa dá odpočúvať spojenie zo vzdialeného počítača. Tohto scenára sa obávajú predovšetkým systémy pracujúce, ako servery na internete.

Stacheldraht

Je klasický príklad nástroja DDoS útoku. Využíva vrstvenú štruktúru, kde útočník používa klientsky program pre pripojenie na manipulátory, ktoré vydávajú príkazy pre zombie agentov, čo uľahčuje DDoS útok. Agenti sú ovládaný útočníkom, prostredníctvom automatizovaných rutín na zneužitie chýb v programoch. Tieto programy musia akceptovať vzdialené pripojenie bežiace na cieľovom vzdialenom počítači. Každý manipulátor môže ovládať až tisíc agentov. [13]

Všetci títo botnety (DDoS nástroje) ako aj stacheldraht stále používajú klasickú metódu DoS útoku zameranú na falšovanie IP a rozširovanie sa ako Smurf útoky a Fraggle útoky (tieto sú tiež známe ako zaplňovače šírky pásma). SYN záplavy (tiež známe ako útoky na spotrebu zdrojov) môžu byť taktiež použité. Novšie nástroje môžu používať DNS servery pre účely DoS.

Odrazený útok (DRDoS)

Distributed Reflection Denial of Service zahŕňa zasielanie žiadostí niektorých typov na veľké množstvo počítačov, ktoré budú na ne odpovedať. Pomocou sfalšovaného internetového protokolu, je zdrojová adresa nastavená na danú obeť, čo znamená, že všetky odpovede pôjdu na ňu a teda ju zaplavia.

ICMP Echo Request útok

Tieto útoky možno považovať za jednu formu DRDoS útoku. Je to záplava hostiteľa posielaním ozveny žiadostí na adresy zle nakonfigurovaných sietí, čo láka mnoho hostí poslať paket ozveny odpovede k obeti.

Mnohé služby možno zneužiť ako reflektory, niektoré je ťažšie blokovať než iné. DNS rozšírenie útokov zahŕňa nový mechanizmus, ktorý zvýšil účinok použitím oveľa väčšieho zoznamu DNS serverov.

Útok degradácie služby

"Pulzujúci" zombie agenti sú zameraní na spúšťanie občasných a krátkych povodní na webové stránky obete s úmyslom iba spomaľovať. Tento typ útoku je ťažšie odhaliteľný ako pravidelné zombie invázie a môže narušiť alebo brániť pripojeniu na webové stránky, prípadne spôsobovať väčšie škody ako koncentrovaná záplava. Je komplikované rozoznať, či je stránka napádaná týmto útokom alebo či ide len o zvýšenú návštevnosť webovej stránky.

Útok DoS Level 2

Cieľom DoS L2 útoku, je zapríčiniť spustenie obranného mechanizmu, ktorý blokuje segmenty siete, z ktorej tento útok pochádza. V prípade distribuovaného útoku alebo zmenenej IP hlavičky, bude úplne blokovať napadnutú sieť pred internetom, ale bez kolízie systému.

Blind DoS útok

Útočník musí byť schopný prijímať prevádzku dát od obete, aby mohol, buď podkopať smerovacie štruktúry obete alebo musí použiť vlastnú IP adresu. Buď bude poskytovať príležitosť pre obeť sledovať útočníka alebo odfiltruje svoju prevádzku. Pri tomto útoku útočník používa sfalšované IP adresy, čo sťažuje obeti odfiltrovať útočníkove pakety. TCP SYN flood útok je príkladom slepej útoku.

Obrana proti DoS a DDoS a reakcie na DoS

Firewally

Firewally majú jednoduché pravidlá, t.j. povoliť alebo zakázať protokoly, porty alebo IP adresy. Ale niektoré DoS útoky sú veľmi komplexné pre dnešné firewally. Napríklad, ak je útok vedený na port 80, tak brána firewallu nebráni tomuto útoku, pretože nevie rozlíšiť dobrú prevádzku od zlej prevádzky útoku DoS. Okrem toho sú firewally zabudované príliš hlboko v hierarchii siete. Smerovače môžu byť ovplyvnené útokom ešte pred bránou firewallu. Avšak firewally účinne bránia používateľa pred spustením jednoduchých útokov záplavových typov spoza firewallu.

Niektoré lepšie firewally ako pF od OpenBSD, môžu pôsobiť ako proxy pre pripojenie a overovať nadväzovanie spojenia s klientom namiesto jednoduchého prenosu paketov na miesto určenia. V tomto kontexte sa nazývajú synproxy.

Prepínače

Väčšina prepínačov má nejaké obmedzenia prenosu a schopnosť access control list (ACL). Niektoré prepínače poskytujú automatické alebo aj systémovo rozšírené obmedzenia rýchlosti, formovanie prevádzky, oneskorené odosielanie, hĺbkovú inšpekciu paketov a filtrovanie falošných IP adries.

Smerovače

Majú podobne ako prepínače obmedzenia prenosu a schopnosť ACL. Aj oni sú ručne nastavované. Väčšina smerovačov môže byť ľahko premožená útokom DoS. Ak sa pridajú aj pravidlá pre štatistiky tokov, tak i naďalej DoS spomaľuje a komplikujú prenos. Avšak existujú aj také smerovače, ktoré majú nastaviteľné vlastnosti, ktoré umožňujú obranu pred povodňami. Smerovač Cisco IOS je jedným z nich.

Aplikácie inštalované pred cieľovým hardvérom

Takouto aplikáciou je vlastne inteligentný hardvér umiestnený v sieti pred serverom, tak aby bol schopný zachytiť prevádzku pred vstupom do servera. Môže byť použitý na sieťach v spojení s smerovačmi a prepínačmi. Tento hardvér teda analyzuje dátové pakety pred vstupom do systému, potom ich identifikuje podľa priority, pravidelnosti, alebo nebezpečia. Existuje viac ako 25 riadených šírok pásma od dodávateľov. Hardvérové urýchľovanie je kľúčom k riadeniu šírky pásma.

Prevencia založená na IPS

Preventívne systémy voči vniknutiu (IPS) sú účinné v prípade, že útoky majú pripojené podpisy. Avšak trend medzi útokmi je mať legitímny obsah ale zlý úmysel. IPS, ktoré pracujú na základe validácie obsahu, nemôžu blokovať správanie založené na DoS útokoch. ASIC založený na základe IPS dokáže odhaliť a blokovať DoS útoky, pretože má výpočtový výkon a rozčlenenie pre analýzu útokov a správa sa ako automatizovaný istič.

Hodnotenie založené na IPS (RBIPS) musí analyzovať rozčlenenie prevádzky a priebežne monitorovať prevádzku a tým určiť, či má prevádzka anomálie. Musí ponechať legitímnu prevádzku a zároveň blokovať útok DoS na prevádzku.

Prevencia prostredníctvom proaktívneho testovania

K dispozícii sú testovacie platformy ako Mu Dynamics 'Service Analyzer. Táto platforma dokáže vykonať simulovaný útok DoS, ktorý sa použije na vyhodnotenie obranného mechanizmu. Testuje IPS, RBIPS a aj populárne zmiernenie DoS od Arbor Networks. Príkladom proaktívneho testovania DoS je škrtiaca schopnosť, ktorá bola implementovaná do prepínača v roku 2008. Prepínač Juniper EX 4200 obsahuje túto schopnosť.

Blackholing / Sinkholing

Pomocou blackholing pošlete všetku prevádzku, ktorá bola poslaná na napadnutú DNS alebo IP adresu, do "čiernej diery", tzn. na neexistujúci server. Ak chcete byť pohotovejší a zamedziť ovplyvnenie vášho pripojenia k sieti, môže to byť zriadené vaším ISP. Sinkholing presmerováva na overovaciu IP adresu, ktorá analyzuje prevádzku a zamieta škodlivú prevádzku. Sinkholing nie je efektívna prevencia pre väčšinu vážnych útokov.

Čisté rúrky (Clean pipes)

Všetka prevádzka je nasmerovaná do "upratovacieho centra" cez proxy, v ktorom sa oddeľuje škodlivá prevádzka a ďalej sa posiela iba legitímna prevádzka. Poskytovateľ potrebuje centrálne pripojenie k Internetu pre správu tohto typu služby. Prolexic a Verisign sú poskytovatelia tejto služby.

Spätný rozptyl - vedľajší účinok útoku DoS

V oblasti bezpečnosti počítačovej siete je spätný rozptyl vedľajším účinkom útoku DoS. V tomto druhu útoku, útočník falšuje zdrojovú adresu v IP paketoch poslaných k obeti. Vo všeobecnosti platí, že môže zariadenie obete nerozlišuje medzi falošnými paketmi a legitímnymi, takže obeť reaguje normálne na falošné pakety. Tieto reakcie sa nazývajú spätný rozptyl. Ak útočník falšuje zdrojové adresy náhodne, tak spätný rozptyl bude reagovať na pakety obete tak, že budú zasielané späť na náhodné ciele. Tento efekt môže byť použitý sieťou ďalekohľadov ako nepriamy dôkaz takýchto útokov.