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.
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...
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...
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.
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).
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.
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.
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.
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.
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.