Introduzione agli attacchi DOS

 Con un attacco DOS (Denial Of Service) si cerca di “negare un servizio” mettendo il sistema vittima nell’impossibilità di erogare regolarmente il suo servizio.

Questo genere di attacchi non comporta la compromissione di un sistema, i suoi effetti si esauriscono nel momento in cui viene interrotto e, in vari casi, è tale da risultare quasi impossibile da evitare.
La natura di un simile attacco è a suo modo “violenta” e brutale e spesso non richiede particolari conoscenze e può essere esguito tramite strumenti e script reperibili in rete.
Un evoluzione di un attacco DOS è un DDOS (Distributed Denial Of Service), in cui gli IP da cui viene sferrato sono molteplici e permettono una amplificazione degli effetti.
Ha fatto notizia, nel Febbraio 2000, una serie di DDOS su siti particolarmente noti (Yahoo, Ebay, CNN…)
che un singolo individuo è riuscito a rendere inutilizzabili per alcune ore utilizzando centinaia di host di origine, a loro volta precedentemente violati.
La diffusione di questi attacchi deriva anche dal fatto che è molto più facile rendere una rete o un sistema impraticabile piuttosto che ottenerne l’accesso e, vista anche la diffusione di comodi tool per farlo, questo ha scatenato le velleità di molti aspiranti hacker che vedono in un DOS un modo veloce per ottenere effetti di cui vantarsi.

La definizione DOS attack si riferisce all’effetto finale che si intende raggiungere, il rendere impraticabile un servizio in rete, ma i modi con cui può essere ottenuto questo scopo sono vari:

ESAURIMENTO DELLA LARGHEZZA DI BANDA
E’ uno dei metodi più comuni, consiste nel saturare le linee che garantiscono la connettività dei sistemi bersaglio, in modo da rallentare enormemente il flusso di pacchetti legittimi.
Se l’aggressore può avere a disposizione sui sistemi da cui intende sfoderare il suo attacco una larghezza di banda superiore a quella del suo bersaglio, un simile attacco è facilmente realizzabile, volendo anche con un ping flood che per ogni ECHO REQUEST si aspetta un ECHO REPLY (salvo filtri di qualche firewall).
Più comune è il caso in cui l’attaccante ha a disposizione meno banda del bersaglio, in questo caso è comunque possibile cercare di saturarla utilizzando degli amplificatori.
Un tipico attacco di questo tipo era lo smurf in cui veniva inviato un pacchetto spoofato (con IP sorgente modificato in modo tale da corrispondere al bersaglio dell’attacco invece che all’host attaccante) direttamente all’indirizzo di broadcast di reti particolarmente affollate di host: per ogni pacchetto originario venivano reinviati al presunto mittente molti pacchetti di risposta.
Al giorno d’oggi un attacco smurf è molto improbabile, visto che sono state introdotte adeguate controdifese sulla maggior parte dei dispositivi in rete.

ESAURIMENTO DELLE RISORSE DI UN SISTEMA
Questi tipi di attacchi si differenziano da quelli basati sull’esaurimento della banda in quanto si punta a sovraccaricare il sistema della vittima, sottoponendo a sforzi insostenibili varie componenti quali CPU, memoria, spazio su disco ecc.
Questo effetto può essere ottenuto in vari modi, tutti fondamentalmente basati sul principio di generare il maggior carico possibile su un sistema remoto con il minimo delle risorse. Un SYN flood (inizio di una sessione TCP, con l’invio di un SYN, che non viene mai conclusa in quanto non si risponde al SYN ACK di risposta del bersaglio) può esaurire le socket disponibili di un sistema, una enorme quantità di GET ad una o più pagine Web dinamiche particolarmente pesanti da computare può riempire memoria e CPU di un sistema e contribuire ad allargare a dismisura i file di log (con rischio di esaurimento dello spazio su disco), altri mezzi possono esistere per rendere indisponibili altri servizi.
Anche un mail bombing a suo modo è una forma di DoS attack, sia al server di posta che riceve le mail, che al destinatario finale, che può vedersi esaurire la sua quota.

DIFETTI DI PROGRAMMAZIONE
Difetti di programmazione possono impedire ad un sistema di gestire una situazione eccezionale. Il mondo del software è pieno di bug che possono avere ripercussioni in termini di sicurezza e dare a luogo a vulnerabilità di varia natura. Alcune di questo possono essere tali da saturare la CPU time o causare il crash del sistema o del programma che eroga un servizio.
Tutti gli exploit in grado di sfruttare simili vulnerabilità di fatto costituiscono un attacco di tipo DoS.

ATTACCHI A ROUTING E DNS
Un attacco DoS basato sul routing consiste nella manipolazione da parte dell’aggressore delle tabelle di routing in modo da impedire il normale indirizzamento di pacchetti ai sistemi legittimi.
Alternativamente si può cercare di impedire ai server DNS autoritari per un dato dominio di svolgere correttamente la loro funzione e quindi di impedire la risoluzione degli indirizzi IP.
In entrambi i casi l’attacco non si concentra direttamente sul vero bersaglio (un sito web, per esempio) ma sui sistemi collaterali che sono indispensabili per renderlo accessibile: i router che ne gestiscono la connettività e i server DNS che ne conoscono l’indirizzo IP.

Smurf, il padre degli attacchi amplificati

Smurf è uno dei DOS attack che si basano sull’amplificazioni della banda più noti.
Anche se è un tipo di attacco diffuso da anni e se i suoi effetti sono facilmente individuabili sia per l’impotente vittima che per chi gestisce i network utilizzati per l’amplificazione, esistono tuttora varie reti che permettono di utilizzare questi tipi di attacco.

Smurf si basa su una tecnica di amplificazione dovuta alla natura del protocollo IP che può essere facilmente ovviata con una corretta configurazione dei dispositivi di rete.
L’amplificazione si ottiene inviando un pacchetto ICMP ECHO ad un indirizzo di broadcast di una rete, tramite il comando Ping.
Colui che vuole sferrare l’attacco innanzitutto si preoccuperà di spoofare il proprio indirizzo IP inserendo nel campo sorgente dei pacchetti IP l’indirizzo IP della vittima da lui selezionata. Prossimo passo sarà quello di scegliere una rete che faccia poi da amplificatore per l’attacco e cominciare a spedire quanti più pacchetti possibili verso
l’indirizzo di broadcast della rete prescelta.
Il router della rete selezionata, all’arrivo dei pacchetti inviati li inoltrerà verso tutti gli indirizzi IP facenti parte della sua sottorete.
Ogni computer che riceve il pacchetto ICMP risponde con un altro pacchetto ICMP diretto verso l’IP mittente che,
come abbiamo visto precedentemente, l’attaccante ha modificato con l’IP della vittima. Questo vale per tutti i computer presenti nella sottorete che a loro volta invieranno un pacchetto ICMP alla vittima occupandone la relativa banda Internet.
Si noti che il danno recato dai pacchetti ICMP sarà più elevato tanto quanti computer sono presenti nella rete.
Mettiamo di inviare un solo pacchetto ICMP a una rete contenente 100 sistemi configurati in modo da rispondere, l’aggressore riesce in pratica a moltiplicare il suo attacco DoS di ben 100 volte.

CONTROMISURE
Per evitare di essere utilizzati da terzi come amplificatore per il loro smurf, sarebbe bene disattivare sul proprio router esterno la funzione di risposta delle richieste ICMP mandate all’indirizzo di broadcast della rete dall’aggressore.
Il comando tipicamente utilizzato con router Cisco è il seguente: no ip directed-broadcast e va applicato a livello di interfaccia. Nelle versioni recenti dell IOS questo comando è attivo di default.
E’ inoltre possibile disabilitare questa funzione direttamente via software, dato che alcuni sistemi operativi quali Solaris, Linux, FreeBSD, AIX 4.x prevedono la possibilità di evitare queste richieste.

Linux:
Per impedire a un sistema Linux di rispondere alle richieste broadcast di ECHO, è possibile attivare il firewall a livello di kernel utilizzando iptables.

Unix:
Per impedire agli host di rispondere all’attacco Fraggle (una variante di Smurf che invece di usare un ECHO ICMP utilizza un ECHO sulla porta 7 UDP), disattivare echo e chargen in /etc/inetd/conf inserendo un # prima del nome dei servizi.

Durante l’attacco:
Abbiamo visto la grave minaccia rappresentata dalla possibilità di essere oggetto di un attacco smurf.
Come già detto prima sarebbe bene limitare il traffico ICMP e UDP in ingresso sui router esterni ai soli sistemi interni della rete che realmente necessitano questo servizio, e possibilmente solo per tipi ICMP prestabiliti.
E’ possibile limitare la banda da destinarsi al servizio di ICMP a valori accettabili attivando la funzione di CAR (Committed Access Rate) disponibile nelle versioni di Cisco IOS 1.1CC, 11.1CE e 12.0, restringendo tale banda a valori accettabili.
Se prevenire non è più possibile la migliore via di uscita è cercare di collaborare con il proprio ISP e con la società proprietaria della rete di amplificazione, ricordandosi comunque che per quanto risalire all’aggressore sia possibile non è affatto semplice.
Si inizia quindi con l’individuazione dell’interfaccia che ha ricevuto il pacchetto contraffatto e si risale in tal modo al router precedente, percorrendo al contrario gli hop del pacchetto inviato dall’aggressore fino a giungere alla rete originaria. Una simile procedura risulta nella maggior parte dei casi molto complicata in quanto richiede l’intervento di network administrator di diversi Autonomous Systems, eventualmente displocati su nazioni diverse.

Questo genere di attacco è destinato ad essere sempre meno diffuso anche grazie al contributo di alcuni progetti che nei loro siti web inseriscono gli IP delle reti che ancora permettono uno Smurf (e generalmente gengono notificati di questa misconfigurazione). Ovviamente questi siti possono essere utilizzati da un malintenzionato per trovare reti che ancora possono essere da lui utilizzati per simili attacchi.

Altra utile contromisura, che non evita che la propria rete possa essere vittima di un DOS attack, ma impedisce agli utenti della rete stessa di portare a termine molti attacchi basati sullo spoofing degli IP sorgenti, è quella di implementare filtri in uscita dalle proprie linee, che impediscano l’invio in rete di pacchetti spoofati che abbiamo un IP sorgente diverso da quelli presenti nella propria rete.