Introduzione 5
riuscendo in pochissimo tempo a farle cooperare per ottenere il massimo
guadagno. E si potrebbe continuare per ore...
Ma cosa succederebbe se questi flussi di informazioni venissero in
qualche modo intercettati, alterati o addirittura interrotti? Il piccolo studente
probabilmente non riuscirebbe a fare i compiti a casa, e chi voleva prenotare
un viaggio dovrebbe recarsi di persona all’agenzia di viaggi o alla stazione
oppure potrebbe capitargli di prenotare un volo che non esiste! I due
scienziati farebbero le stesse scoperte mettendoci più tempo, o magari,
deviati da un flusso di informazioni deformate, giungerebbero a conclusioni
completamente errate. La cooperazione tra le diverse sedi della grande
azienda multinazionale verrebbe a mancare, o peggio, sarebbe sabotata o
spiata, con evidenti perdite economiche.
Di pari passo allo sviluppo della comunicazione via Internet, si è
sviluppata anche la capacità di spiare o modificare fraudolentemente le
informazioni in transito, di interrompere un flusso di informazioni, in generale
di impedire il corretto accesso ai servizi resi comunemente disponibili dalla
rete delle reti tanto ai privati quanto ai grandi soggetti commerciali.
In questo lavoro, nel capitolo primo, si leggerà una breve panoramica
sulle tipologie di attacco alle reti, ovvero le modalità attraverso le quali è
possibile minare la riservatezza dei dati contenuti nelle informazioni
scambiate, gli strumenti grazie ai quali è possibile modificare le informazioni
in transito, turbandone l’integrità, e maggiormente ci si soffermerà sui metodi
usati per impedire l’accesso a talune informazioni, limitandone la
disponibilità; si introdurrà anche una classificazione dei metodi di difesa
impiegati per limitare o reagire ad eventuali attacchi appartenenti a
quest’ultima categoria.
Seguirà, nel capitolo secondo, la descrizione più approfondita di una
classe specifica di sistemi di difesa, i sistemi passivi, e maggior attenzione
sarà dedicata ad uno di questi particolarmente efficace quanto semplice da
studiare: SNORT
TM 2
.
2
http://sourceforge.net
Introduzione 6
Un’introduzione ai sistemi di difesa pro-attivi, nel capitolo terzo, sarà
invece il preludio alla descrizione di ASSYST, un sistema attualmente ancora
in via di sviluppo, al quale il presente lavoro pretende di dare un contributo in
termini di implementazione; contributo, infine, diffusamente descritto nel
capitolo quarto: si tratta dell’interfaccia attraverso la quale al sistema di
difesa sarà notificata un’eventuale intrusione e i parametri che la descrivono.
Stabilito che i componenti di un meccanismo attivo di rilevazione degli
attacchi debbano essere parte del nucleo di un sistema operativo, per
l’implementazione dell’interfaccia sono state adottate le tecniche di
programmazione apposite per lo sviluppo di moduli del kernel di Linux: in
particolare è stata realizzata una device attraverso la quale il sistema di
rilevazione trasmette i parametri descrittivi di un eventuale attacco in corso;
si è fatto uso dell’innovativo sistema delle tasklet per rendere asincrona la
conseguente elaborazione delle informazioni ricevute; e si è fatto ricorso ad
apposite funzioni di callback per limitare al minimo l’uso di memoria
aggiuntiva usata per gestire le situazioni d’attacco.
Capitolo 1
Attacchi Denial of Service
Secondo la letteratura corrente
3
, i parametri in base ai quali è
possibile discriminare il grado di sicurezza di una rete di calcolatori sono tre:
• la riservatezza,
• l’integrità,
• la disponibilità.
La riservatezza, o segretrezza, è la caratteristica per la quale alcune
risorse sono ad esclusivo appannaggio degli utenti autorizzati: è questo il
caso di qualunque informazione la cui visibilità debba essere consentita solo
ai legittimi proprietari, dal momento in cui questi riceverebbero danno per il
solo fatto che qualcun altro riuscisse a prenderne visione.
L’integrità riguarda invece i cambiamenti al contenuto delle
informazioni trattate: eventuali modifiche ai dati devono essere permesse
solo agli utenti in possesso dei privilegi appropriati; infatti un’eventuale
variazione delle informazioni in oggetto da parte di utenti non autorizzati
renderebbe inconsistente il contenuto informativo.
La disponibilità, infine, è quel requisito che garantisce la reale
possibilità, da parte di un utente, di accedere ad una specifica risorsa;
qualora tale disponibilità venisse a mancare, verrebbe meno il senso stesso
della condivisione delle risorse in una rete di calcolatori, essendo
impossibilitato un qualunque utente ad usufruire di un servizio offerto.
3
[1]
Capitolo 1 - Attacchi Denial of Service 8
Al fine di garantire i requisiti di riservatezza e integrità, i numerosi studi
fin qui compiuti
4
hanno fornito notevoli strumenti atti alla protezione delle
informazioni a prescindere dalla disponibilità: gli odierni algoritmi di
crittografia garantiscono non tanto che le informazioni non vengano rivelate,
quanto il fatto che, volendo ricavarle senza i permessi necessari, il tempo
impiegato alla decrittazione tramite elaborazione al computer sia
sufficientemente lungo da renderne comunque vani i tentativi.
Purtuttavia esistono casi in cui utenti ingenui o amministratori di rete
inesperti si rendono inconsapevolmente complici di un attacco ai suddetti
requisiti, lasciandosi carpire informazioni riservate e utili ad un
malintenzionato per sferrare attacchi informatici.
Inoltre parte delle responsabilità per le quali alcuni attacchi informatici
hanno esito positivo sono da ricercarsi nei cosiddetti bug
5
del software,
ovvero in malfunzionamenti non previsti in fase di progettazione e che
mettono in condizione un eventuale assalitore di manipolare
fraudolentemente un sistema informatico: è questo il caso dei famigerati
buffer overflow e, in genere, degli exploit, problemi di cui ancora oggi
soffrono molti software commerciali diffusi in tutto il mondo. Le aziende che
creano e aggiornano questi software devono preoccuparsi, di tanto in tanto,
di pubblicare una patch, letteralmente una pezza, attraverso la quale è
possibile aggiornare il programma ed evitare così il rischio di intrusioni.
1.1 Tassonomia degli attacchi DoS
Concordemente a quanto stabilito dal CERT/CC
6
, un qualunque
assalto al requisito di disponibilità di un sistema, che sia intenzionale o anche
non intenzionale, deve essere ritenuto un attacco di tipo Denial
7
of Service.
Tale definizione volontariamente esula dalle cause che contribuiscono alla
indisponibilità del sistema lasciando di fatto ampio margine alle
4
http://www.pgpi.org
5
dall’inglese, letteralmente, bug = insetto, e fam., microbo
6
Computer Emergency Response Team/Coordination Center: http://www.cert.org
7
Dall’inglese, letteralmente, denial = diniego, rifiuto.
Capitolo 1 - Attacchi Denial of Service 9
problematiche, oggetto dei nostri studi, riguardanti la corretta individuazione
di un attacco e le possibili contromisure da adottare.
In base all’obiettivo prescelto dall’assalitore, alla tipologia di attacco
portato e al numero di sorgenti di aggressione, è possibile classificare gli
attacchi di tipo DoS in differenti categorie.
1.1.1 Obiettivi degli attacchi DoS
Si vuole qui sottolineare che la disponibilità all’offerta di servizi di un
qualunque sistema informatico dipende sì fortemente dal valore commerciale
delle apparecchiature hardware utilizzate ma soprattutto che,
indipendentemente dal costo, le capacità risentiranno sempre e comunque
un limite fisico invalicabile.
Ed è esattamente questo limite fisico che gli attacchi di tipo DoS
ambiscono a sfruttare; ciò induce una prima classificazione degli attacchi in
base alla specifica risorsa cui l’assalitore mira:
• la banda, intesa come capacità di trasmettere informazioni a distanza in
tempi brevi, è uno degli obiettivi più frequenti di un attacco;
• il tempo di CPU
8
, ovvero il tempo che un processore userebbe per
evadere le legittime richieste di servizio, potrebbe essere sfruttato al solo
fine di consumarlo;
• la memoria, sia volatile sia di massa, usualmente dimensionata in
quantità sufficiente per le normali richieste, sarebbe esaurita
dall’assalitore al fine di negarla al servizio che ne facesse legittimamente
richiesta.
Per stabilire di quali e quante risorse un sistema informatico dispone,
un attacco DoS è generalmente preceduto da un apposito attacco di tipo
probe
9
, un attacco, cioè, attraverso il quale è possibile ricavare un gran
numero di informazioni sull’obiettivo da aggredire. I probing sono considerati
oggi dei veri e propri attacchi sebbene il loro unico scopo sia quello di
8
CPU, Central Processing Unit, il cuore dell’elaborazione di qualunque calcolatore elettronico.
9
dall’inglese, letteralmente, probe = sonda
Capitolo 1 - Attacchi Denial of Service 10
raccogliere quante più notizie possibili sulla vittima: mediante l’uso di appositi
tool, quale ad esempio nmap
10
, si riescono ad ottenere informazioni
dettagliate sul tipo e versione del sistema operativo in esecuzione sulla
macchina vittima, in modo da adattare sapientemente l’attacco da sferrare.
Dunque la rilevazione di un attacco di tipo probing è sintomo di un imminente
attacco di altro tipo.
Un’altra classificazione degli attacchi DoS riguarda l’obiettivo
dell’aggressione: un singolo elaboratore oppure un’intera rete di computer.
L’aggressione al singolo host potrebbe non arrecare alcun danno agli altri
computer presenti sulla stessa rete ed è indubbiamente di più semplice
attuazione che non un attacco ad un’intera rete di calcolatori.
1.1.2 Tipologie di attacchi DoS
Se la risorsa che l’assalitore mira a consumare è la capacità della
vittima di trasmettere per offrire servizi, allora si parla di attacchi ad
esaurimento di banda. Questa tipologia prevede l’invio verso l’obiettivo
dell’attacco di un flusso di dati superiore a quello gestibile, per cui la banda
usualmente riservata all’erogazione del servizio offerto viene consumata
impedendo la normale fruizione delle risorse. Nel caso in cui per
l’aggressione fosse necessaria allo stesso assalitore una banda maggiore di
quella che ha già a disposizione, questi può coinvolgere nell’attaco altri host,
dai quali si farà aiutare consapevolmente o meno.
In altri casi l’attacco ambisce a consumare le risorse interne all’host
prescelto come vittima: generalmente l’assalitore guadagna un accesso
autorizzato a queste risorse ma ne abusa consumandole ulteriormente. Un
attacco ad esaurimento di risorse vuole quindi saturare lo spazio disponibile
sui dischi, oppure accaparrarsi l’uso esclusivo della CPU per lungo tempo,
10
Network MAPper (www.insecure.org/nmap/) è uno strumento utilizzato dagli amministratori di rete
per individuare i punti deboli del sistema informatico; nelle mani di un eventuale assalitore
assumerebbe compiti molto meno pacifici...
Capitolo 1 - Attacchi Denial of Service 11
ed, in generale, negare le risorse ai processi che ne fanno uso per offrire un
servizio.
Infine alcuni attacchi sono specifici per i programmi in uso sulla
macchina della vittima: le aggressioni basate su software bug sfruttano
vulnerabilità risapute di ben noti programmi per la fornitura di servizi. Alcune
vecchie implementazioni del protocollo di rete IP o nel protocollo di trasporto
TCP non sono in grado di gestire anomalie presenti nei dati riguardanti la
trasmissione stessa senza ricorrere in errori gravi e crash
11
del sistema: gli
attacchi denominati Land e Teardrop, descritti nel seguito del capitolo,
sfruttano proprio queste vulnerabilità. Altri assalti invece traggono illeciti
vantaggi da errori di programmazione presenti in alcune versioni di un ben
noto web-server
12
: anche alcuni attacchi di questo tipo (Apache2 e Back)
saranno brevemente descritti nel seguito.
1.1.3 Sorgenti di attacchi DoS
Gli attacchi DoS possono essere ulteriormente catalogati in base al
numero di sorgenti da cui parte l’attacco, ovvero in base alla quantità di host
assalitori. Alcuni attacchi vengono sferrati da una singola macchina
generalmente provvista di sufficienti risorse di sistema e notevole banda di
connessione. Altri attacchi invece sono portati verso una o più vittime da una
moltitudine di sorgenti di aggressione: in questo caso si parla di attacchi
DDoS, cioè di attacchi DoS distribuiti, il cui effetto più evidente è nella
quantità superiore di danni apportati, nella rapidità e continuità di attuazione
e nel fatto che, essendo le sorgenti organizzate in maniera gerarchica, è più
difficile risalire fino ai mandanti.
1.1.4 Come sferrare un attacco
11
dall’inglese, letteralmente, crash = arresto
12
programmi che fanno da sorgente per la diffusione di contenuti web, come, ad esempio, le pagine
html.
Capitolo 1 - Attacchi Denial of Service 12
Le autorità competenti e le leggi in vigore non vedono certo di buon
occhio gli attacchi informatici ed è quindi una questione di primaria
importanza, per un aggressore, far perdere le proprie tracce prima, durante e
dopo un attacco informatico. Per questo una delle prime incombenze di cui ci
si occupa è quella di individuare uno o più calcolatori estranei che siano
controllabili a distanza al fine di lanciare l’attacco attraverso questi piuttosto
che attraverso macchine da cui sarebbe facile risalire all’utente
malintenzionato. La ricerca si focalizza in modo particolare su calcolatori sui
quali siano in funzione dei programmi server con vulnerabilità note di tipo
buffer overflow: l’uso di un exploit su una macchina del genere garantisce
con buona probabilità la disponibilità di una root shell controllabile da remoto,
ovvero, la possibilità di gestire tutte le funzionalità di quel calcolatore tramite
la stessa connessione ad Internet, standosene comodamente seduti ad un
altro elaboratore, magari lontano migliaia di chilometri. In effetti, quindi, le
macchine individuate come base di partenza per l’azione d’attacco sono esse
stesse vittime di un assalto preliminare.
Compiuto questo primo passo, è possibile far svolgere ai calcolatori
compromessi le più svariate operazioni di cui si compone l’attacco vero e
proprio: si inizia dal probing attraverso appositi scanner
13
in grado di
scandire le reti alla ricerca di obiettivi sensibili da attaccare; si possono usare
vari sniffer
14
, coi quali cercare di catturare nel traffico spiato le password di
altri utenti e tantissime altre informazioni utili; si possono distribuire worm
15
,
particolari virus autoreplicanti che permettono di ottenere il completo
controllo sulle macchine infette; infine si possono gestire liste di host
compromessi al fine di coordinare le eventuali azioni d’attacco portate con i
più disparati strumenti a seconda del tipo di aggressione preferita.
Inoltre esiste anche un’altro sistema per avvicinarsi maggiormente
all’obiettivo di non essere scoperti: l’address spoofing
16
. Con l’uso di questa
tecnica si modifica il campo contenente l’indirizzo IP del mittente in ogni
13
dall’inglese, letteralmente, scanner = dispositivo d’esplorazione
14
dall’inglese, letteralmente, sniffer = ventosa
15
dall’inglese, letteralmente, worm = vite senza fine
16
dall’inglese, letteralmente, address spoofing = falsificazione di un indirizzo
Capitolo 1 - Attacchi Denial of Service 13
pacchetto di dati spedito verso la vittima dell’attacco. Questo modo di
procedere è piuttosto agevole nel caso in cui non sia necessario stabilire una
connessione bidirezionale (TCP) con la controparte: infatti l’instaurazione di
una connessione TCP prevede una fase iniziale, il 3-way-handshake
17
[cfr.
§1.2.6], durante la quale l’aggressore scambia informazioni di
sincronizzazione con la vittima: se l’indirizzo IP del mittente (dell’assalitore)
fosse appositamente modificato, la vittima cercherebbe di comunicare con il
presunto mittente che richiede la connessione, e non con l’assalitore, il
quale, quindi, non riuscirebbe a stabilire la connessione desiderata.
fig. 1.1 – address spoofing e manomissione delle tabelle di un router
(l’attacker A invia pacchetti alla vittima B attraverso il router R; B risponde a C, poiché il pacchetto
che gli arriva ha C come indirizzo mittente; anche il router R normalmente invierebbe i pacchetti
provenienti dalla vittima verso C, l’host corrispondente all’indirizzo spoofato, invece, poiché sono
state manomesse le sue tabelle di routing, invia il pacchetto ad A)
Ma tra gli hacker
18
, coloro che si preoccupano generalmente di
mettere a dura prova la sicurezza delle reti informatiche, c’è sicuramente chi
17
dall’inglese, letteralmente, 3-way-handshake = stretta di mano a 3 vie
18
la maggior parte delle persone intende impropriamente il termine hacker, pensando ad un criminale
informatico nell’accezione più semplice del termine; in realtà le comunità di hacker si pongono
l’obiettivo ambizioso di testare la sicurezza informatica, sferrando attacchi al solo fine di contribuire
alla scoperta e soluzione delle falle di sicurezza delle reti di calcolatori.
Capitolo 1 - Attacchi Denial of Service 14
si occupa a tempo pieno di queste problematiche, e anche in questo caso è
stata approntata una soluzione.
I pacchetti di dati inviati tra l’aggressore e la vittima transitano
attraverso calcolatori intermedi, detti router
19
, i quali, mediante l’uso delle
apposite tabelle di routing instradano i pacchetti verso il destinatario
identificato dall’indirizzo IP; ebbene, se un assalitore riuscisse a modificare a
bella posta le suddette tabelle di routing, potrebbe allora fare in modo di farsi
recapitare anche i pacchetti di dati che non gli sarebbero destinati e
procedere correttamente nell’instaurazione della connessione TCP
nonostante l’address spoofing. L’effetto è quello mostrato in figura 1.1.
1.2 Attacchi DoS
Vengono di seguito brevemente descritti alcuni attacchi DoS rientranti
nella categoria di quelli ad unica sorgente (cfr. §1.1.3).
1.2.1 Apache2
Apache è il nome di un famoso web-server, le cui versioni precedenti
alla 2 soffrivano di un bug nel software. Per richiedere una pagina web è
necessario che l’utente invii, tramite il suo browser di navigazione, una serie
di richieste verso un web-server, un programma in esecuzione su un
calcolatore remoto; le richieste, strutturate secondo le specifiche del
protocollo HTTP
20
, contengono una sezione, chiamata header
21
, nella quale
si specificano le caratteristiche della risorsa richiesta. E’ possibile inviare in
una singola richiesta più di un solo header; ma inviarne molti induce in errore
il demon
22
httpd, un programma di cui si compone il web-server, che si
interrompe e quindi non può più processare neanche le richieste legittime.
19
dall’inglese, letteralmente, router = instradatore, dispositivo di base in Internet per l'indirizzamento
20
RFC dell’HTTP
21
dall’inglese, letteralmente, header = intestazione
22
un programma che agisce senza interazione da parte dell’utente