Premessa: questo non è un tutorial
Eseguire attacchi DoS è illegale.
Le motivazioni degli attacchi sono varie, dal carattere economico a quello politico, da caratteri morali a caratteri immorali.
Negli ultimi anni si è sentito parlare molto spesso di attacchi DoS da parte di hacktivists (Anonymous, LulzSec, ecc..), a volte le motivazioni sono vaghe, a volte chiarissime, a volte giuste e a volte sbagliate, ma non se ne entrerà in merito in questo articolo, che si pone il solo scopo di dare un’idea generale di che tipo di attacchi si parla e quali categorie ci sono.
Cos’è un DoS
Denial of Service può facilmente essere tradotto come “Negazione del servizio, che è in sostanza quello che avviene durante l’attacco.
E’ un termine generico per definire una categoria di attacchi che non è volta all’intrusione o al furto di dati, ma solamente a rendere non disponibile un certo servizio, tipicamente un web server.
Principalmente il tutto è eseguito sfruttando il fatto che ogni server ha un limite di banda/CPU/RAM disponibili, e una volta saturate, non potrà servire altri utenti.
DoS e DDoS
Ci sono due casi principali da distinguere:
Il DoS, proviene da un solo Host.
Il DDoS (Distributed Denial of Service) proviene da più Host.
La provenienza di un DDoS è varia.. principalmente:
- Tanti Host consenzienti:
In questo caso, la maggior parte delle volte, si tratta di Hacktivism. - Una Botnet:
Una botnet è una rete formata da computer collegati ad Internet e infettati da malware, gestita da un’unica entità, il botmaster. - Varie Botnet:
E quindi anche vari botmasters, e quindi vari Host consenzienti che gestiscono botnet di host non consenzienti.
Tipologie di DoS
Ci sono 4 tipologie di DoS:
- Bandwidth consumption:
L’obiettivo di un DoS di questo tipo è saturare la banda di connessione del bersaglio.
Nel caso in cui l’attaccante disponga di per sè di più banda della vittima, va tutto liscio.
Nel caso in cui sia la vittima a disporre di più banda, l’attaccante utilizza delle tecniche per aumentare notevolmente la propria “banda di attacco”. - Resource starvation:
Rispetto al tipo di attacco precedente si tende a saturare altre risolse del sistema piuttosto che la banda. Ad esempio la CPU, la RAM, spazio su disco, cache, etc.
Una volta saturato, il sistema può o diventare non disponibile o crashare, in base a come è gestita la saturazione e alla risorsa saturata. - Bug software:
L’attaccante sollecita il sistema vittima in situazioni note essere a rischio bug, in modo da creare un crash del sistema. Ad esempio gli attacchi che sfruttano i bug dello stack di rete (WinNuke, IP frag overlap), o bud di tipo buffer overflow o anche errori presenti nell’HW del sistema.
L’attacco Ip frag overlap si basa su un bug presente nella gestione dello stack IP.
L’attaccante costruisce ad arte una serie di pacchetti che andranno a generare un crash nel sistema. - Attacchi di 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 la vittima.
Le Tecniche
A fine articolo trovate una breve spiegazione di tutte le nozioni necessarie a capire i vari attacchi, ad esempio ciò che è utile sapere riguardo il TCP-IP e ICMP.
Le tecniche utilizzate sono svariate, vediamo le principali:
- Spoofing
In generale, questa tecnica consiste nell’utilizzare come indirizzo mittente l’indirizzo della vittima, e mandare pacchetti ad altri host ignari, in modo che essi rispondano alla vittima pensando che sia il mittente, creando quindi una saturazione. In generale viene utilizzato oltre che per mascherare il proprio IP, anche per amplificare la propria banda, sfruttando delle reti di riflessione che satureranno poi la banda del mittente (che è la vittima, e non l’attaccante). - Syn-Flood
Siamo in un contesto di TCP-IP.
Quest’attacco è teoricamente semplice: Cosa avviene se al posto che inviare un solo pacchetto SYN, ne inviamo a migliaia? Semplicemente, il server invia ACK finchè può, poi, inizia a non rispondere più, e quindi anche i “veri” utenti che vogliono accedere al servizio, non possono.
Proteggersi da questo tipo di attacco è semplicissimo, ma proprio per la sua banalità, a volte i servizi non prendono le dovute precauzioni, considerando questo attacco obsoleto e non più utilizzato.
Questa tecnica può essere utilizzata in combinazione con lo spoofing: vengono mandati degli spoofed-SYN verso un host, che risponderà verso la vittima con un SYN-ACK. La vittima non risponderà in quanto non ha mai aperto la connessione, e l’host continuerà a inviare SYN-ACK pensando che il precedente si sia perso.
- Smurfing
Questo attacco utilizza pacchetti ICMP verso una rete mal configurata: una rete non configurata a ignorare a ICMP di broadcast.
L’attaccante manda un pacchetto ICMP verso la rete, utilizzando lo spoofing. Ogni host della rete risponderà al ping, saturando quindi la banda della vittima. - Fraggle attack:
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”.
Se invece non è configurato risponde con un pacchetto ICMP “unreachable”.
Il vantaggio di questo attacco è che genera in ogni caso traffico e funziona anche sulle reti che non permettono il ping broadcast, quindi è utilizzabile anch’esso in combinazione con lo spoofing. - Botnet:
Una Botnet è una rete di Host infetti, controllati da un botmaster.
Il btmaster ha un backdoor aperta negli host infetti, e potrà quindi controllarli, facendoli attaccare la vittima.
La botnet può essere utilizzata in combinazione con altre tecniche, o in contemporanea ad alte botnet, per creare via via tecniche sempre più sofisticate.
Tutte queste tecniche vengono combinate fra loro in modo da creare combinazioni sempre più potenti. Con il progresso delle tecnologie web, anche le tecniche aumentano. Ogni nuovo servizio web può essere sfruttato per creare nuovi attacchi DoS.
Digital Attack Map
Una mappa creata da Google che visualizza in tempo reale tutti i DDoS in atto.
Questo per comprendere quanto questi attacchi siano ancora una realtà presente e non trascurabile.
Il TCP-IP
Il TCP-IP è un protocollo (in realtà la combinazione di due protocolli, il TCP e l’IP) di livello di trasporto (TCP livello 4 e IP livello 3), che si occupa di gestire la comunicazione tra due host.
Ciò che ci interessa è questo:
Il client inizia la connessione verso il server inviando un pacchetto TCP contrassegnato con il flag “SYN“;
Il server invia una notifica di ricezione della richiesta generando un pacchetto con flag “SYN/ACK“;
Di seguito la connessione viene stabilita e mantenuta con dei pacchetti aventi il flag “ACK“.
La fine della connessione è determinata dalla generazione di un pacchetto “FIN“.
ICMP
I pacchetti ICMP (ping) sono utilizzati per verificare la presenza di un host: il mittente invia un ping ad un indirizzo, e quell’indirizzo risponde.
Normalmente, una rete viene configurata a non rispondere a pacchetti di ping su indirizzi di broadcast. (Un indirizzo di broadcast è un indirizzo che non rappresenta un host, ma una rete e tutti gli host presenti in essa).
Se così non fosse, una volta inviato un ping di broadcast ad una rete, rispondono TUTTI gli host di quella rete.