Denial of Service

Un attacco Denial of Service (DOS)[1] ha essenzialmente lo scopo di di mettere fuori uso o completamente negare un servizio agli utenti legittimi. Un servizio può essere inteso come una o più componenti di un sistema informativo quali banda Internet, sistemi hardware e software. In quest'ottica l'accattante potrebbe voler saturare tutta la banda disponibile ad un sito, provocare il crash di un server, creare malfunzionamenti in un software.

Gli attacchi DOS sono basati principalmente su exploit relativi a debolezze di progettazione e/o implementazione di un sistema hardware e software. Un esempio può essere il protocollo TCP/IP che fu progettato per essere usato in una comunità fidata e che adesso, con le sue debolezze, è alla base di molti tipi di attacchi DOS.

Per avere un'idea della potenza e dei danni provocati da un attacco DOS possiamo  citare alcuni esempi: Un ulteriore problema che hanno le vittime di un attacco DOS è che di norma gli attaccanti usano tecniche che consentono di mascherare gli indirizzi sorgente in modo da rendere il risalire alla loro identità il più difficile possibile. L'uso di queste tecniche può rendere virtualmente impossibile l'individuazione degli attaccanti.

Motivazioni degli attaccanti

Sono diverse le motivazioni che spingono un individuo a portare un attacco DOS e possono essere classificate come psicologiche, personali, pratiche o filosofiche in relazione a differenti scenari.
A volte è la frustrazione, causata dal non riuscire a forzare un sistema informatico ben protetto, a spinge l'attaccante a decidere di mettere fuori uso un servizio. Di norma questo accade quando l'attaccante non ha le necessarie capacità tecniche. Questo fa capire anche perché gli informatici davvero esperti non vedono di buon occhio né gli attacchi DOS né chi li mette in pratica.
Altre volte i motivi sono squisitamente di ordine pratico. Infatti nella maggior parte dei sistemi Windows NT è necessario fare un reboot per rendere effettivi alcuni cambiamenti di impostazioni. L'attaccante che, con altri metodi, è riuscito ad acquisire i diritti di superuser, e ha bisogno di renderli effettivi, usa un attacco DOS per far ripartire o mandare in crash un sistema NT.
L'amministratore di sistema di norma è ben contento di poter far ripartire il suo server e constatando che dopo tutto ricomincia a funzionare correttemente, ignaro che adesso ci può essere qualcun altro ad avere il controllo del sistema.
Un'altra campo d'applicazione del DOS é il terrorismo informatico (Cyberterrorismo). In questo caso le vittime sono enti e organizzazioni che possono avere in qualche modo attirato propositi di vendetta di singoli o gruppi organizzati. Esempi di questo tipo sono gli attacchi ai siti istituzionali di FBI o MPAA.
L'ultimo motivo, come espresso anche dal creatore di un potente tool DOS, può essere di carattere filosofico. Con un attacco DOS si vuole mostrare non solo che la rete è intrinsecamente insicura ma che gli amministratori di sistema non prendono tutte le necessarie precauzioni per garantire la sicurezza dei loro siti. In un periodo in cui sulla rete circolano i soldi (veri) degli utenti privati questo non è certo molto rassicurante...

Tipologie di attacchi DOS


Vediamo ora di seguito alcune modalità e tecniche usate per un attacco DOS.

Bandwidth consumption: Essenzialmente consiste nel generare una quantità di traffico tale da consumare tutta la banda a disposizione di un sito, tagliandolo fuori dalla rete. Esistono due situazioni. 
Nella prima gli attaccanti hanno a disposizione una banda molto più ampia delle vittima. In questo caso è facile per gli attaccanti saturare tutta la banda a disposizione della vittima inondando quest'ultima di una quantità enorme di traffico privo di senso.
Nella seconda avviene in contrario. E' la vittima ad avere più banda degli attaccanti. Questi ultimi però non si danno certo per vinti e, usando delle tecniche di "amplificazione" del traffico, riescono comunque a generarne tanto da saturare la banda della vittima.

Resource starvation:  Rispetto al tipo di attacco precedente si tende a saturare altre risolse del sistema piuttosto che i link di rete. Tali componenti possono essere tempo di CPU, memoria di sistema , spazio su disco, handles di file, etc. In generale un sistema sotto questo attacco diventa inusabile oppure collassa.

Bug software:  L'attaccante sollecita il sistema della vittima in modo da attivare situazioni che sono gestite scorrettamente dal software di sistema. Esempi di questo tipo di attacchi sono quelli che si basatno sui bug presenti nello stack di rete (WinNuke, IP frag overlap), sul buffer overflow o errori presenti in HW dedicato. 
L'attacco Ip fragmentation overlap si basa su una vulnerabilità presente nelle implementazioni software dello stack IP, per quanto riguarda il riassemblaggio della sequenza dei pacchetti. La tecnica consiste nel generare una sequenza di pacchetti costruita "ad arte" in modo da provocare il crash o il reboot del sistema.
Un altro tipo di esempio è un bug presente in una istruzione dei processori Pentium di Intel che era capace di mandare in crash un sistema indipendentemente dal sistema operativo utilizzato

Attacchi basati su routing o DNS: L'attaccante manipola le tabelle di routing (o la cache di un server DNS) in modo da deviare tutto o parte del traffico della rete verso una destinazione diversa o verso un "buco nero".

Schema di attacco basato sul routing...

Menų dei comandi

Schema di attacco basato sul DNS

Menų dei comandi



Tecniche Utilizzate

Procediamo ad illustrare le principali tecniche utilizzate durante un attacco DOS.

Spoofing.
L'attaccante manipola il pacchetto che sta trasmettendo in modo da cambiare il valore presente nel campo sorgente del pacchetto. Il destinatario crederà che il mittente di un pacchetto ricevuto sia diverso da quello reale.

Menų dei comandi

Nell'esempio in figura l'utente presente su PC1 vuole spedire un messaggio oltraggioso verso l'utente su PC3. Per non farsi scoprire crea un pacchetto di dati con il campo di origine modificato con l'indirizzo di un terzo utente, PC2, ignaro di tutto. PC3 riceve il messaggio credendo che il mittente sia PC2 e di conseguenza la sua reazione sarà diretta verso PC2 e non verso il verso mittente del messaggio.

Smurfing/Ping broadcast.
Si tratta di una tecnica di amplificazione del traffico e basa la sua efficacia sulla scorretta o non accurata configurazione del routing in una rete. L'amplificazione si ottiene trasmettendo un pacchetto ICMP (ping) ad un indirizzo di broadcast di una rete, mediante un PING.
Il PING e una piccola utility di sistema che trasmette un pacchetto di controllo ICMP ad un destinatario e ne aspetta la risposta. In genere viene usato per controllare la raggiungibilità di una destinazione o per calcolare le prestazioni della rete (Round trip delay).

Menų dei comandi

Un indirizzo di broadcast non può essere assegnato ad uno specifico elaboratore e in genere consiste nell'ultimo indirizzo IP di una rete/sottorete. La particolarità di questo indirizzo è che i pacchetti spediti verso tale indirizzo vengono inoltrati a tutti gli indirizzi IP della rete di appartenenza.

Menų dei comandi

Un attacco Smurf fa uso di una rete "amplificatrice" che è mal configurata nel senso che risponde ad un ping effettuato su un indirizzo di broadcast. Lo schema è mostrato in figura.

Menų dei comandi

L'attaccante camuffa l'indirizzo IP dei pacchetti che trasmette usando lo spoofing e mettendo nel campo sorgente dei pacchetti ICMP l'indirizzo IP della vittima. A questo punto sceglie una rete amplificatrice e comincia a spedire quanti più pacchetti può verso l'indirizzo di broadcast della rete.
Il router di questa rete, appena comincia a ricevere i pacchetti sull'indirizzo di broadcast, li inoltra verso tutti gli indirizzi IP della sua sottorete. Ogni computer presente nella sottorete riceve un pacchetto ICMP e risponde con un altro pacchetto ICMP diretto al mittente del pacchetto ricevuto che, come abbiamo visto, l'attaccante ha modificato con quello della vittima. Si noti come tutti i computer della rete amplificatrice siano completamente all'oscuro di quello che sta succedendo. A questo punto la vittima comincia a ricevere un quantità enorme di pacchetti ICMP, specialmente se i PC nella rete amplificatrice sono numerosi.

Quanto può essere dannoso? Facciamo un piccolo esempio numerico: L'attaccante ha un modem analogico e riesce a generare 33.600 Kbit di traffico al secondo. Ha però a sua disposizione una (o più) reti amplificatrici con molta banda e circa 100 PC presenti nella sottorete. Il traffico che la vittima riceve è quindi 100 volte maggiore di quello che genera l'attaccante, cioe'; 3,36 Mbit/sec... che non è poco.

Menų dei comandi

Fraggle attack:[5]
E' una variante dello smurfing che usa il protocollo UDP al posto di quello ICMP. La tecnica consiste nel trasmettere un pacchetto UDP verso una porta della "ECHO". Se il PC è configurato risponde con un altro pacchetto UDP "echo reply". Nel caso in cui invece non sia configurato per rispondere il PC ritorna un pacchetto ICMP "unreachable". Il vantaggio di questo attacco è che genera comunque traffico e funziona anche sulle reti che non permettono il ping broadcast.

SYN flooding:
Questo attacco usa una debolezza nella implementazione/configurazione del protocollo di connessione "three way handshake", usato per aprire una sessione. Ha un grande vantaggio nel fatto che necessita di pochissima banda per ottenere l'effetto voluto.
Il protocollo di connessione tra due PC normalmente funziona in tre fasi.
 

Menų dei comandi

  1.  A vuole comunicare con B e per aprire una sessione gli manda un pacchetto "SYN" e aspetta una risposta da B. 

  2.  
  3.  Quest'ultimo ricevuta una richiesta di connessione cambia il suo stato da "LISTEN" in "SYN RECEIVED", cioè si rende conto che c'è una richiesta da parte di A e mette la sua richiesta di in una coda delle connessioni potenziali, ma non ancora stabilite. Per concludere allora B spedisce ad A un pacchetto con "SYN/ACK" e attende da A la conferma della connessione.

  4.  
  5.  Quando A riceve il "SYN/ACK" di B spedisce a sua volta un altro ACK e ritiene la connessione stabilita. B riceve l'altro ACK di A e passa dallo stato "SYN RECEIVED" in "ESTABILISHED" e cancella A dalla coda delle richieste potenziali.
Durante un attacco la vittima è B. L'attaccante gli spedisce dei SYN il cui indirizzo sorgente è un "buco nero", cioè una macchina non raggiungibile. in questo modo le risposte della vittima vengono tutte perse. L'attaccante spedisce continuamente richieste di connessione allo scopo di far riempire la coda delle connessioni ?potenziali? fino ad esaurire tutte le risorse allocate allo scopo, che normalmente sono limitate. Infatti sebbene un server possa accettare moltissime richieste di servizio normalmente è configurato per avere una coda delle connessioni "potenziali" molto limitata.

Menų dei comandi



Evoluzioni

Le tecniche utilizzate per un attacco DOS sono in continua evoluzione; di seguito vengono illustrate quelle pių recenti.

Attacco stream:
E' una variante del SYN flooding che consiste nello spedire pacchetti TCP con ACK o SYN-ACK contemporaneamente presenti. Siccome questi pacchetti anomali non fanno parte di alcuna connessione, prendono un certo tempo per essere gestiti dalla vittima. Se il numero di pacchetti di questo tipo ricevuti è elevato, l'host che li deve gestire può sovraccaricarsi ed andare in crash.

Confondere IDS (Intrusion Detection System): 
La tecnica consiste nell'inserire nel traffico diretto alla vittima particolari stringhe che possono essere scorrettamente interpretate dall'IDS come tentativi di intrusione, generando falsi allarmi. Se la quantità e il tipo di tali pacchetti sono appropriati l?IDS si sovraccarica e va in crash. Il vantaggio di un attacco di questo tipo è che si elimina una difesa della vittima.

Attacchi DOS Distribuiti

Un attacco DOS effettuato in modo distribuito consiste, come per le challenge DES, RSA, nel dividere il carico di attacco su diverse macchine sparse per la rete, mentre una o più sovrintendono allo svolgimento dell'attacco. Si vuole anche dimostrare ad esempio che saturare un link piuttosto grande non è difficile quanto si crede. In conclusione è un sistema per automatizzare e coordinare un attacco DOS nel quale gli attaccanti siano molteplici.
Il concetto di DOS distribuito era già presente in pacchetti commerciali che effettuavano il calcolo del CAPACITY MANAGEMENT, che in pratica sono dei benchmark usati per analizzare le prestazioni di un sistema informatico a regime, sotto carico. In pratica si avevano delle stime utili agli amministratori di sistema per sapere quando, cosa e in che modo modificare il sistema per aumentare le prestazioni del sistema stesso.