Denial of service

Da Wikipedia, l'enciclopedia libera.
Schema DDoS

La locuzione denial of service ( in italiano letteralmente negazione del servizio abbreviato in DoS) nel campo della sicurezza informatica indica malfunzionamento dovuto ad un attacco informatico in cui si esauriscono deliberatamente le risorse di un sistema informatico che fornisce un servizio, ad esempio un sito web, fino a renderlo non più in grado di erogare il servizio.[1][2]

Oltre al senso primario di denial of service come azione deliberata ci si può riferire ad esso come azione accidentale, in seguito per esempio ad una errata configurazione,[3][4] o come nel caso dell'effetto Slashdot.[5]

Caratteristiche[modifica | modifica wikitesto]

Gli attacchi vengono abitualmente attuati inviando molti pacchetti di richieste, di solito ad un server Web, FTP o di posta elettronica saturandone le risorse e rendendo tale sistema "instabile", quindi qualsiasi sistema collegato ad Internet e che fornisca servizi di rete basati sul TCP è soggetto al rischio di attacchi DoS. Inizialmente questo tipo di attacco veniva attuato da "hacker", come gesto di dissenso etico nei confronti dei siti web commerciali e delle istituzioni.

Gli attacchi DoS hanno la connotazione decisamente più "criminale" di impedire agli utenti della rete l'accesso ai siti web vittime dell'attacco. Per rendere più efficace l'attacco in genere vengono utilizzati molti computer inconsapevoli, detti zombie, sui quali precedentemente è stato inoculato un programma appositamente creato per attacchi DoS e che si attiva ad un comando proveniente dal cracker creatore. Se il programma maligno si è diffuso su molti computer, può succedere che migliaia di PC violati da un cracker, ovvero una botnet, producano inconsapevolmente e nello stesso istante un flusso incontenibile di dati che travolgeranno come una valanga anche i link più capienti del sito bersaglio.

Non solo i sistemi server possono essere vittime di un attacco DoS ma anche semplici utenti e client, sebbene questi attacchi siano molto meno frequenti e di nessun interesse per i cosiddetti cracker.

La probabilità sempre minore di incontrare sistemi veramente vulnerabili ha fatto sì che siano diminuiti gli attacchi DoS più eclatanti, però si è scoperta un'estrema vulnerabilità della rete per l'aumento costante della potenza operativa degli attuali personal computer e dell'accesso ad Internet tramite i sistemi DNS. L'implementazione del protocollo TCP/IP, che non garantisce particolare sicurezza sull'identificazione dei mittenti di pacchetti ma anzi ne protegge l'anonimato, può essere sfruttata per mascherarne la vera provenienza.

Trattandosi di connessioni apparentemente legittime, è impossibile bloccarle senza interrompere anche il flusso realmente inoffensivo. Però, limitando drasticamente il numero di sessioni aperte simultaneamente, l'impatto dell'attacco si riduce considerevolmente senza limitare il flusso dei pacchetti regolari. Anche limitando il discorso al blocco di un sito web esistono, e sono stati utilizzati, parecchi modi di ottenere questo risultato.

Tassonomia dell'attacco[modifica | modifica wikitesto]

Lo scopo di questo attacco è saturare la backlog queue con richieste di attivazione di un servizio (TCP SYN settato) oltre la scadenza dei relativi timeout e non consentendo alla vittima di completare il 3-way handshake; in questo modo non sarà in grado di gestire i SYN leciti a cui verrà negato il servizio.

Tipi di attacco[modifica | modifica wikitesto]

  • Attacco diretto: l'attaccante interagisce direttamente con la vittima. In questo caso l'attaccante si dice reale e la vittima si dice di primo livello.
  • Attacco indiretto: l'attaccante sfrutta terze parti per colpire la vittima. In questo caso l'attaccante si dice riflesso, le terze parti si dicono vittime di secondo livello e la vittima finale si dice vittima di primo livello.

Attacchi portati da un singolo host[modifica | modifica wikitesto]

Questi tipi di attacco, provenendo da un'unica fonte, sono potenzialmente rintracciabili.

Syn-Flood[modifica | modifica wikitesto]

Storicamente il Syn-Flooding rappresenta il capostipite degli attacchi DoS, che trova le sue dirette radici nel Ping of Death. Il termine Syn Flooding, letteralmente tradotto con "inondazione di pacchetti di tipo Syn", nasce dal fatto che tutte le volte che un utente fa click su di un link di una pagina web richiede l'apertura di una connessione (di tipo TCP) verso quel sito; questo avviene seguendo una serie di passi, il primo dei quali consiste nell'invio di un pacchetto TCP che richiede l'apertura di una connessione.

Tutte le regole di funzionamento del protocollo TCP esigono che il sistema risponda allocando alcune risorse (in pratica memoria) per la connessione. Se si programma opportunamente un semplice PC, è possibile richiedere l'apertura di diverse migliaia di connessioni al secondo, che "inondando" il server, ne consumano rapidamente tutta la memoria, bloccandolo o mandandolo in crash.

Il punto debole di questo tipo di attacco è che il computer attaccante deve poter mandare il flusso di pacchetti attraverso la connessione ad Internet fino al server attaccato.

Diversamente, l'utente malintenzionato deve poter fornire delle "credenziali" di accesso valide per usufruire della vulnerabilità insorta nel sistema operativo e portare a termine, efficacemente, l'attacco al sito bersaglio.

I pacchetti dannosi predisposti con un indirizzo IP, falsificato rispetto all'originale, procureranno al computer "vulnerabile" una situazione, temporanea, di Denial of Service, poiché le connessioni che sono normalmente disponibili, sia per i buoni che per i cattivi, sono lente, questo diventa impossibile[non chiaro].

Un esempio potrebbe essere il seguente: l'attaccante, identificato dal nome STE, invia una serie di richieste alla sua vittima, identificata col nome CRI: la macchina server, sulla quale vengono eseguiti dei servizi, non sarà in grado di gestire tutte le richieste e i servizi stessi andranno in crash, risultando prima molto rallentati e poi, successivamente, inaccessibili. In questa maniera, un utente qualunque (identificato dal nome UTENTE) non sarà in grado di accedere ai servizi, ricevendo un errore di richiesta scaduta o timeout.

L'attacco Syn-Flood usa strumenti che rientrano nella categoria Tribe Flood Network (TFN) ed agisce creando delle connessioni che si rivelano aperte a metà.

Il protocollo classico usato nei DoS è il ping: inviandone a milioni si riuscirà a bloccare l'operatività di qualunque sito Internet, ma trattandosi di un modello di attacco "uno a uno", ad un pacchetto in uscita corrisponderà la ricezione di un solo pacchetto al sistema attaccato.

Occorrerà quindi che i cracker possano disporre di un gran numero di PC client "controllati", ma non è così facile "inoculare" il codice maligno in un numero tanto elevato di macchine grazie all'azione specifica di antivirus, patch di sicurezza e tecnici informatici.

Smurf[modifica | modifica wikitesto]

Una modalità di attacco più sofisticata, detta Smurf attack, utilizza un flusso di pacchetti modesto, in grado di passare attraverso una normale connessione via modem, ed una rete esterna, che sia stata mal configurata, che agisce da moltiplicatore di pacchetti, i quali si dirigono infine verso il bersaglio finale lungo linee di comunicazione ad alta velocità.

Tecnicamente, vengono mandati uno o più pacchetti di broadcast verso una rete esterna composta da un numero maggiore possibile di host e con l'indirizzo mittente che punta al bersaglio (broadcast storm).

Ad esempio può venir usata una richiesta echo ICMP (Internet Control Message Protocol) precedentemente falsificata da chi attua materialmente l'attacco informatico.

Si noti che questo tipo di attacco è possibile solo in presenza di reti che abbiano grossolani errori di configurazione dei sistemi (nello specifico nella configurazione dei router) che le collegano tra loro e con Internet.

Attacchi da più host[modifica | modifica wikitesto]

In questi attacchi il bersaglio viene attaccato contemporaneamente da più fonti, rendendo difficile rintracciare l'attaccante originario.

DDoS[modifica | modifica wikitesto]

Una variante di tale approccio è il DDoS (Distributed Denial of Service), dal funzionamento identico ma realizzato utilizzando numerose macchine attaccanti che insieme costituiscono una botnet.

Gli attaccanti tendono a non esporsi direttamente, dato che per le forze dell'ordine sarebbe relativamente semplice risalire ai computer utilizzati per l'attacco. Gli attaccanti, per evitare di essere individuati e per avere a disposizione un numero sufficiente di computer per l'attacco, infettano precedentemente un numero elevato di computer con dei virus o worm che lasciano aperte delle backdoor a loro riservate. I computer che sono controllati dall'attaccante vengono chiamati zombie.

Tutti i computer infettati entrano a far parte di una botnet, a libera disposizione dell'attaccante: una nota interessante è data dalla distinzione tra le macchine che eseguono un Sistema Operativo Windows (definiti, in gergo, rxbot) e quelle che invece eseguono un sistema Unix, particolarmente adatte all'UDP Flooding (Flooding sul protocollo UDP).

Una particolarità degli zombies Windows è data dalla possibilità, per l'attaccante, di programmare un trojan in grado di diffondersi automaticamente a tutta una serie di contatti presenti sul computer infettato (definita, in gergo, funzione di auto-spreading): contatti contenuti nella rubrica degli indirizzi e nei contatti di programmi di Instant Messaging, come Microsoft Messenger, permettendo così al computer zombie di infettare, in maniera completamente autonoma, altre macchine che, a loro volta, diverranno parte della botnet dell'attaccante.

Quando il numero di zombies è ritenuto adeguato, o quando viene a verificarsi una data condizione, i computer infetti si attivano e sommergono il server bersaglio di richieste di connessione. Con l'avvento della banda larga il fenomeno dei DDoS sta assumendo proporzioni preoccupanti, dato che attualmente esistono milioni di persone dotate di una connessione ad Internet molto veloce e permanente ma con scarse o nulle conoscenze e contromisure riguardanti la sicurezza informatica.

Il danno maggiore dell'attacco di tipo DDoS è dovuto principalmente alla "asimmetria" che si viene a creare tra "la" richiesta e le risposte correlate in una sessione DNS (Domain Name System). Il flusso enorme di risposte generato provocherà nel sistema una tale "inondazione" di traffico rendendo il server inadeguato alla gestione delle abituali funzioni on-line.

Inoltrando al sito preso di mira una risposta di alcuni Kilobyte per ogni richiesta contenente solo pochi byte, si ottiene un'amplificazione esponenziale tale da saturare i canali dati più capienti, raggiungendo con il DDoS livelli finora inattuabili con gli altri tipi di attacco DoS.

Le configurazioni predefinite, standard e quelle "consigliate" di Firewall si rivelano utili a contrastare solo gli "attacchi" sferrati dall'esterno, ad esempio di un'azienda, ma poiché il traffico in Rete gestito tramite sistema DNS è vitale, per fronteggiare questo tipo di attacco non si potranno attuare le stesse strategie impiegate nei confronti degli attacchi ai Ping. Di conseguenza, il Network manager dovrà tenere scrupolosamente sotto controllo e monitoraggio i canali di flusso dati e, per escludere l'intervento o contrastare l'azione di un cracker, riconfigurerà il DNS responsabile del sito.

DRDoS[modifica | modifica wikitesto]

Una particolare categoria di DDoS è il cosiddetto Distributed Reflection Denial of Service (DRDoS). In questa particolare tipologia di attacco, il computer attaccante produce delle richieste di connessione verso server con connessioni di rete molto veloci utilizzando come indirizzo di provenienza non il proprio bensì quello del bersaglio dell'attacco. In questo modo i server risponderanno affermativamente alla richiesta di connessione non all'attaccante ma al bersaglio dell'attacco. Grazie all'effetto moltiplicatore dato dalle ritrasmissioni dei server contattati, che a fronte della mancanza di risposta da parte del bersaglio dell'attacco (apparentemente l'iniziatore della connessione) provvederanno a ritrasmettere (fino a 3 volte solitamente) il pacchetto immaginandolo disperso, si entrerà così in un circolo vizioso che vedrà rapidamente esaurirsi le risorse del bersaglio.

Quest'ultimo tipo di attacco è particolarmente subdolo perché, a causa della natura delle risposte, è difficilmente schermabile dall'utente comune: infatti, se si filtrassero le risposte dei server, verrebbe compromessa la funzionalità stessa della connessione di rete impedendo, di fatto, la ricezione anche delle informazioni desiderate. Le risposte dei server, sollecitate dall'attaccante, sono infatti indistinguibili da quelle generate da una richiesta legittima della vittima. Il problema si sta presentando con maggiore incidenza da quando Microsoft ha deciso di rendere le "Raw Sockets", interfacce di accesso al TCP/IP, facilmente disponibili. Le RAW Sockets permettono appunto di cambiare l'indirizzo di provenienza del pacchetto per sostituirlo con quello della vittima, fatto che è strumentale per questo tipo di attacco.

Possibili soluzioni[modifica | modifica wikitesto]

Soluzioni che rispettano lo standard:

  • Dimensionamento dinamico della Backlog Queue;
  • Diminuire il TTL per le richieste in attesa (Half Open Connection).

Soluzioni che non rispettano lo standard:

  • Scartare TCP SYN casualmente;
  • Inserire le richieste solo al completamento del 3-Way Handshake (alla ricezione dell'ACK finale).

Altri dispositivi di protezione da attacchi DoS e DDoS[modifica | modifica wikitesto]

Filtraggio dei Dati in arrivo

Implementare i filtri che presiedono all'ingresso, nei propri router e firewall, dei pacchetti contenenti informazioni sulla provenienza dei dati alterati (cioè spoofed); non si otterrà un arresto dell'attacco DoS ma si potrà ricostruire il flusso di traffico qualificato come "malefico" in tempi relativamente brevi, per consentire la reazione difensiva degli Internet Service Provider (anti spoofing).

Limitazione del Traffico

Molti router consentono, attualmente, di limitare la quantità di banda utilizzata per la fornitura di un servizio attraverso il "campionamento" e l'analisi dei pacchetti che vi transitano. In caso di attacco non resterà attiva una quantità di banda sufficiente a provocare un danno cospicuo o a bloccare il flusso legittimo dei dati. Questa limitazione si otterrà ad esempio con l'utilizzazione di una macchina Linux che funga da Gateway attraverso un'azione CAR (Commited Access Rate); verrà così bloccato un attacco DDoS che usi pacchetti ICMP o TCP, SYN, poiché sarà considerevolmente limitata la banda utilizzabile da questi.

Sistemi di riconoscimento delle intrusioni

Si tratta di sistemi commerciali in grado di individuare Trinoo e TFN. Ad esempio l'FBI fornisce, gratuitamente, un prodotto definito Find DDoS in grado di scoprire i file system visti sopra, risultato dell'attacco Distributed Denial of Service. Attraverso tali sistemi di verifica (Intrusion Detection System) vengono individuati i malintenzionati che comunicano tramite slave, agent e master, scoprendo se alcune delle macchine nella propria rete vengono usate, malignamente, come pedine per sferrare l'attacco. In particolare i Network Auditing Tools sono programmi che consentono la verifica e l'analisi della rete aziendale alla ricerca di eventuali agenti in grado di provocare un attacco di tipo DDoS.

Esempi di attacchi DOS[modifica | modifica wikitesto]

Note[modifica | modifica wikitesto]

  1. ^ Rao, p. 13
  2. ^ (EN) Malware Protection Center - Glossary, microsoft.com. URL consultato il 2 marzo 2013.
  3. ^ (EN) Denial of Service, f5.com. URL consultato il 2 marzo 2013.
  4. ^ (EN) Todd Lammle, Wade Edwards, Tom Lancaster, Justin Menga, Eric Quinn, Jason Rohm, Carl Timm, Bryant Tow, CCSP Complete Study Guide, John Wiley & Sons, 2006, p. 14, ISBN 978-0-7821-5077-3.
  5. ^ (EN) Stacy Prowell, Rob Kraus, Mike Borkin, Seven Deadliest Network Attacks, Elsevier, 2010, p. 21, ISBN 978-1-59749-550-9.

Bibliografia[modifica | modifica wikitesto]

Voci correlate[modifica | modifica wikitesto]

Collegamenti esterni[modifica | modifica wikitesto]