Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
VOLUME PRIMO
Introduzione
Nella società contemporanea l’utilizzo dei sistemi informatici permette di
realizzare, coadiuvare e controllare la maggior parte delle attività
umane. Per questo motivo risulta di fondamentale importanza
comprendere quale sia l’attuale protezione dei sistemi informatici e
soprattutto quanto deve essere ancora fatto dal punto di vista della
sicurezza per poter rendere questi sistemi sufficientemente protetti.
Ovviamente la situazione diventa sempre più critica ed estremamente
difficile da controllare con l’aumento sempre crescente del numero di
informazioni in forma digitale che vengono scambiate. Per tale motivo la
sicurezza dell’informazione ha attraversato un lungo periodo di
gestazione nella quale veniva equiparata a un’arte piuttosto che ad una
scienza: bisognava apprenderla non attraverso lo studio ma con
l’esperienza. Questa condizione, associata alla difficoltà effettiva della
materia, è alla base del fatto che la maggior parte degli approcci
riguardanti il tema della sicurezza sono impostati, piuttoso che su regole
raffinate, sulla sperimentazione pratica e sulle conoscenze relative ad
analisi effettivamente realizzate. Di contro la crittografia, proveniendo da
studi seminali intrapresi dalle prime civiltà evolute, è l’unico settore della
sicurezza informatica che può vantare una lunga tradizione nell’uso di
metodi formali dal momento che ha avuto il tempo per svilupparsi in
3
modo lineare. Infatti, ad oggi, la crittografia rappresenta una tecnica
indispensabile per la vita di tutti i giorni e costituisce anche l’unico
campo della sicurezza che può vantare una condizione avanzata e
stabile. Per tutti gli altri settori, invece, questo metodo pragmatico di
procedere ha funzionato per anni fino a quando lo sviluppo esplosivo dei
sistemi collegati in rete e di dispositivi con potenza, varietà e versatilità
impensabili solo fino a qualche anno fa, ha reso urgente ed
imprescindibile lo sviluppo di un'ingegneria della sicurezza informatica,
dove il termine “ingegneria” va inteso nel suo tradizionale senso di
scienza applicata, con descrizione formale di concetti ed applicazione di
metodi e tecniche conosciute, esplorate da un’ampia letteratura
scientifica che ne permette la diffusione a livello mondiale.
Nella società attuale, data l’importanza crescente dell’utilizzo dei sistemi
informatici, è di fondamentale importanza comprendere quanto questi
siano protetti e quanto è ancora bisogna fare per raggiungere un grado
sufficiente di sicurezza. La situazione diventa sempre più complessa
quanto maggiore è il grado di informazioni in forma digitale che vengono
scambiate. Inizialmente la sicurezza dell’informazione veniva
considerata un’arte piuttosto che una scienza, per cui doveva essere
appresa tramite l’esperienza e non attraverso lo studio. Questa
situazione, insieme alla difficoltà intrinseca della materia, porta a
comprendere il motivo per cui la maggior parte degli approcci che hanno
come tema la sicurezza si basano sulla sperimentazione pratica e sulle
conoscenze relative ad analisi realizzate concretamente piuttosto che su
regole precise. Il solo settore della sicurezza informatica che può
vantare una lunga tradizione nell'uso di metodi formali è la crittografia, in
quanto deriva da studi effettuati nel tempo dalle società più evolute;
questo le ha permesso di svilupparsi in maniera piuttosto lineare, tanto è
vero che oggi la crittografia è l’unico ramo della sicurezza che può
ostentare una situazione avanzata e stabile e che al tempo stesso è
diventata una tecnica indispensabile nella vita di tutti i giorni.
In quest’ultimo periodo, però, lo sviluppo vertiginoso dei sistemi collegati
in rete ha reso indispensabile lo sviluppo di una ingegneria della
sicurezza informatica, dove il termine ingegneria va inteso come scienza
4
applicata, con descrizione formale di concetti ed applicazione di metodi
e tecniche conosciute.
Per poter comprendere che cosa è la sicurezza informatica è
indispensabile capire per prima cosa la differenza e il rapporto che
esiste tra dati e informazioni, cioè i due elementi centrali attorno ai quali
la sicurezza informatica nasce ed acquista significato: i dati raffigurano
le informazioni, mentre le informazioni sono la conoscenza racchiusa
nei dati.
Le informazioni sono il supporto sul quale si basa e viene regolata
l'odierna attività economica, cioè sono commercialmente, socialmente e
personalmente sensibili per lo sviluppo di un’azienda. Di conseguenza,
le informazioni sono un bene di grande valore per l'azienda e devono
essere adeguatamente protette. La “Sicurezza”, intesa nella sua forma
più generale, riguarda la protezione di tutti i beni aziendali e quindi la
sicurezza informatica è il ramo che si focalizza sulla protezione di
questo particolare tipo di bene. Questa definizione implica che l'azienda
conosca con precisione tutti i propri beni ed il loro valore, ma
l'esperienza insegna che nella complessità di una realtà aziendale in
molti casi non è così. Questa osservazione generale è necessariamente
vera anche per la sicurezza informatica, ecco perché l'analisi dei rischi è
parte integrante e essenziale del disegno di sviluppo della sicurezza
nella sua globalità. La “Sicurezza”, intesa nella sua forma più generale,
riguarda la protezione di tutti i beni aziendali e quindi la sicurezza
informatica è il ramo che si focalizza sulla protezione di questo
particolare tipo di bene. Questa definizione implica che l'azienda
conosca con precisione tutti i propri beni ed il loro valore, ma
l'esperienza insegna che nella complessità di una realtà aziendale in
molti casi non è così. Questa osservazione generale è necessariamente
vera anche per la sicurezza informatica, ecco perché l'analisi dei rischi è
parte integrante e essenziale del disegno di sviluppo della sicurezza
nella sua globalità. Le tecniche fino ad oggi predisposte possono offrire
alti standard di sicurezza, tuttavia non sono infallibili e soprattutto non
possono uscire dai confini della struttura stessa. Per questo motivo il
concetto di “sicurezza dell’informazione” deve essere esteso ben oltre
5
l’informatica in senso ristretto, ovvero l’hardware, il software e le reti di
computer, andando ad includere l’intero processo di gestione dei dati e
delle informazioni messo in atto da un’organizzazione e da tutte le
persone che ci lavorano quotidianamente.
Possiamo dunque definire la sicurezza informatica come la relazione
che intercorre tra prevenzione ed individuazione di azioni non
autorizzate verso il sistema informatico. Gli obiettivi di prevenzione ed
autorizzazione si concretizzano nelle “Politiche di sicurezza” e nei
“Meccanismi di sicurezza”, ovvero un insieme di regole e procedure che
sanciscono a tutti i livelli quali azioni sono permesse e quali proibite. Alla
luce di questi concetti diventa chiaro che proteggere un sistema non è
solo un fatto tecnico, non sarà dato solo dalle cose da fare o rispettare:
allargando il concetto fino a considerarlo nella sua accezione più
generale, si può con certezza affermare che si tratta di una questione di
stile, di mentalità, che se non è già insito in noi, per educazione e
cultura, è necessario acquisire fin dal momento in cui di decide di
servirsi di strumenti informatici per svolgere le proprie attività lavorative
o personali. I concetti devono rapidamente trasformarsi in “forma
mentis” perché la vera sicurezza è nel pensiero, nei comportamenti,
nelle azioni, anche e soprattutto le più semplici e ripetitive. Per
raggiungere l’obiettivo di un’adeguata protezione di un sistema bisogna
dunque sviluppare una corretta attitudine, prima ancora che una buona
preparazione tecnica. Può sembrare uno stereotipo ma buon senso ed
esperienza fanno più di qualsiasi antivirus o firewall ma, chiaramente,
nel mondo dell'informatica mancano sia l'uno che l'altro a causa della
relativa giovinezza della disciplina, ma anche della costante e veloce
crescita tecnologica.
Si può affermare, senza timore di essere smentiti, che la cultura della
sicurezza è uno degli indicatori dell’evoluzione di una azienda ma anche
della società.
Negli ambienti di vita e di lavoro diventa necessario porre in primo piano
la crescita di una mentalità diffusa e diretta a considerare la sicurezza
un aspetto essenziale. Il primo compito di un buon amministratore di
rete consiste nel cercare di sensibilizzare gli impiegati, i manager e
6
chiunque abbia accesso all’uso dei computer, ad un comportamento
consapevole dal momento che viene messa a repentaglio la stabilità e
l’immagine di tutta l’azienda. Per preservare la buona salute dell’attività
è richiesto un impegno di tutte le parti coinvolte che devono, dunque,
disporre di notevole preparazione per utilizzare gli strumenti in modo
idoneo. Questa situazione causerà, come prima conseguenza, delle
complicazioni nelle consuetudini d’uso di ciascun utente che dovrà
modificare comportamenti errati come l’utilizzo di password troppo corte
e riconducibili al proprio nome, data di nascita ecc. oppure, peggio
ancora, post-it con password incollate sul monitor del PC che vanificano
qualsiasi tentativo di protezione. Dal canto suo, l’amministratore di rete
deve comprendere la necessità di proteggere le informazioni ma, al
tempo stesso di renderle accessibili e, dunque, trovare un
compromesso tra la sicurezza del sistema e l’applicabilità che deve
essere semplice e comoda in modo da non pesare sul lavoro
quotidiano.
Investire tempo e denaro sulla formazione del personale affinché ogni
utente comprenda adeguatamente le problematiche di protezione
diventa un processo fondamentale per la crescita di una “mentalità della
sicurezza”.
7
Capitolo 1: Le reti
8
Comunicazioni analogiche e digitali
Nelle reti la comunicazione può essere sia analogica che digitale. Un
esempio di trasmissione analogica è il telefono; infatti il suo
funzionamento avviene attraverso trasmissione di corrente elettrica, il
cui valore riproduce le variazioni di pressione dell’aria causate dalla
voce umana. Quindi la telefonia utilizza segnali analogici, ovvero
variabili con continuità, senza interruzioni, entro determinati intervalli di
valori di frequenza e di corrente. Il segnale elettrico telefonico è dunque
analogo al segnale acustico della voce (ne segue fedelmente le
variazioni).La frequenza e l’intensità del suono sono tradotte dal campo
acustico al mondo elettrico mediante il microfono e viceversa attraverso
l'auricolare; gli amplificatori assicurano che il segnale arrivi al ricevitore
con potenza adeguata. Al contrario il telegrafo si basa su segnali
digitali, cioè segnali che possono assumere solo determinati valori
discreti. Nella situazione più semplice si limita a trasmettere impulsi di
corrente di valore costante. La corrente è zero quando il tasto del
telegrafista è alzato, mentre assume un certo valore quando il
telegrafista preme il tasto per trasmettere un punto (impulso breve) o
una linea (impulso lungo). Quindi l’informazione è fornita dalle
successioni che compongono le sequenze di impulsi, secondo il codice
introdotto da Morse. Nella sua forma originaria, il telegrafo usa “0”
(assenza di corrente) e “1” (trasmissione di corrente) come segnali
digitali. In una forma più evoluta, lo “0” e l’”1” possono essere
rappresentati da qualsiasi coppia di segnali distinti (tensione, frequenza,
ecc.).
A prima vista potrebbe sembrare che i segnali analogici siano superiori
ai segnali digitali, vista la comodità con cui si può trasmettere la voce
per telefono rispetto alla lentezza e macchinosità di comunicare in
codice Morse. Infatti con un segnale analogico si possono trasmettere
informazioni con la massima fedeltà possibile, per esempio
riproducendo nei minimi dettagli le variazioni d’intensità e di frequenza
dei suoni.
Tuttavia, le comunicazioni digitali si dimostrano superiori quando si
tratta di riconoscere e correggere errori di trasmissione in quanto in tal
9
caso la scelta è ridotta all’assenza o presenza di segnale, per cui è
molto più semplice ricostruire fedelmente il segnale trasmesso.
10
All’atto di una chiamata, la centrale interpreta il numero dell’utente
chiamato e provvede a realizzare un circuito fisico che collega
l’apparecchio di chi chiama a quello di chi risponde.
Questa è la tecnica cosiddetta a commutazione di circuito ed è valida
non solo per le conversazioni telefoniche, ma anche per la trasmissione
dati: il terminale dell’utente è collegato alla centrale telefonica (o a
qualche altra apparecchiatura con funzioni simili, come ad esempio un
PABX), la quale provvede a stabilire un circuito fisico tra il DTE
chiamante ed il DTE remoto che si vuol contattare.
La più antica forma di commutazione è proprio quella tramite centrale
telefonica pubblica: c’è una fase iniziale di chiamata, necessaria
affinché il numero dell’utente chiamato arrivi alla prima centrale urbana
e questa inoltri il segnale su una linea di uscita diretta verso un’altra
centrale; il procedimento segue fino a raggiungere la centrale cui è
connesso l’utente chiamato; in questo modo, le varie centrali (urbana, di
settore, di distretto, di compartimento) mettono in serie segmenti di cavo
trasmissivo (o, in alternativa, il loro equivalente su un cavo a banda
larga, nel quale quindi ad ogni conversazione viene riservato un canale,
ossia una certa banda di frequenze) fino a formare il circuito completo
tra utente chiamante e utente chiamato.
Una volta realizzato tale circuito, la comunicazione può avere luogo. La
tariffa di tale circuito può essere applicata in vari modi; in generale, essa
cresce proporzionalmente alla distanza ed al tempo di attivazione del
circuito.
Da notare che le centrali hanno un ruolo puramente passivo: ad
esempio, nel caso della trasmissione dati, esse non memorizzano i
messaggi trasmessi né, salvo funzioni di valore aggiunto
espressamente richiamate dall’utente, convertono il protocollo di linea
utilizzato. Se, a causa di un sovraccarico di lavoro, non dispongono di
linee di uscita libere, esse bloccano il collegamento direttamente in fase
di chiamata.
La figura seguente esprime la logica con cui una centrale urbana
controlla le linee degli utenti locali per determinare e realizzare il circuito
fisico tra utente chiamante e utente chiamato.
11
Si definisce off-hook l’azione con cui si avverte la centrale che si intende
fare una chiamata: se si tratta di una conversazione telefonica, per cui si
usa l’apparecchio telefonico, l’off-hook consiste semplicemente nel
sollevare la cornetta, il che lascia partire un impulso elettrico di avviso
verso la centrale; nel caso, invece, di una trasmissione dati, per la quale
si usa tipicamente un modem collegato alla linea telefonica, la funzione
di off-hook è svolta dal modem stesso.
In centrale è presente un registro in cui viene memorizzato il numero
dell’utente chiamato: se c’è un registro disponibile, significa che la
centrale è in grado di effettuare la chiamata, per cui la centrale
restituisce all’utente un segnale di linea pronta, indicante appunto la
possibilità di procedere. Se invece non c’è alcun registro disponibile,
bisogna riprovare.
Una volta ottenuta la linea libera, si compone il numero dell’utente con
cui si vuol comunicare e tale numero viene registrato nell’apposito
registro selezionato nella fase precedente. Segue
l’importante fase per la determinazione del percorso, che assume una
particolare rilevanza nel caso in cui la chiamata è interurbana, il che
significa che saranno coinvolte almeno due centrali urbane. Per fare un
esempio concreto, supponiamo che tra la centrale X dell’utente
chiamante e la centrale Y dell’utente chiamato si possano scegliere due
strade: quella che passa per le centrali intermedie M ed N e quella che
passa per le centrali intermedie P, Q ed R. A prescindere dalla distanza
fisica tra le centrali, è ovvio che la seconda possibilità comporta sia un
12
allungamento del tempo complessivo della fase di chiamata, dato che
sono coinvolte 3 centrali anziché 2, sia anche un maggior onere della
rete, dato che il circuito fisico da realizzare impegna parte delle risorse
di 5 centrali anziché di 4.
Questo esempio aiuta a capire la criticità degli algoritmi di
instradamento delle chiamate: un buon algoritmo di instradamento
dovrebbe cercare sempre di individuare il percorso con il minor numero
di nodi intermedi e ricorrere agli altri solo quando la prima scelta non
risultasse agibile (ad esempio a causa del malfunzionamento di una o
più centrali). Il cosiddetto segnale di occupato viene inviato all’utente
chiamante solo quando nessuna strada in uscita risulta disponibile.
Una volta riscontrata la disponibilità di una linea tra l’utente chiamante e
la centrale dell’utente chiamato, quest’ultima riceve il numero dalla
centrale dell’utente chiamante; questo consente di individuare
direttamente l’utente chiamato. A questo punto, segue una ulteriore
verifica: bisogna vedere se la linea dell’utente chiamato è libera. In caso
negativo, il chiamante riceve i toni di occupato. Se, invece, la linea è
libera, viene inviato al chiamato un segnale che faccia suonare il
telefono. Non appena l’utente chiamato alza la cornetta, la connessione
viene istantaneamente stabilita e quindi può partire la conversazione.
Quindi, in definitiva, quando si parla al telefono, il segnale elettrico, che
rappresenta i suoni raccolti dal microfono, continua a passare senza
interruzione sul cavo collegato alla vicina centrale telefonica.
Apparentemente il tutto sembra avvenire in maniera molto semplice, ma
nella sua forma elementare una connessione analogica monopolizza il
mezzo trasmissivo, consentendo una sola conversazione alla volta;
questo implica che gli altri utenti che chiamano un numero già
impegnato in una conversazione, ricevono il segnale di occupato. Le
funzioni di una centrale digitale permettono servizi di avviso di chiamata
e di conferenza, ma il filo tra centrale e normale utente telefonico resta
dedicato a un segnale analogico bidirezionale. Si parla, in questo caso,
di sistema a commutazione di circuito, poiché la centrale smista le
chiamate aprendo e chiudendo circuiti fisici.
L’ADSL (Asymmetric Digital Subscriber Line) è un particolare tipo di
comunicazione in quanto sfrutta un segnale analogico, composto dal
13
segnale audio telefonico e da decine di portanti di frequenze diverse
modulate da segnali digitali. Tuttavia, anche le comunicazioni digitali
iniziarono occupando un intero canale di trasmissione, come nel caso
delle linee telegrafiche che collegavano le due stazioni agli estremi della
linea. Oggi le reti locali interconnettono anche migliaia di computer e, a
livello geografico, l’interconnessione coinvolge circa un miliardo di
persone (gli utenti Internet). Per connettere un gran numero di utenti
non ci si può affidare a linee dedicate una sola conversazione per
volta, quindi si ricorre a tecnologie che permettono di far passare più
comunicazioni simultanee su ciascuna linea di trasmissione.
Tralasciando le tecniche di multiplexing usate nel campo delle
telecomunicazioni, che sfruttano segnali elettrici, radio e luminosi (fibre
ottiche) per mescolare e separare molti canali di frequenze diverse, qui
poniamo attenzione sul modo in cui sono confezionate le informazioni
nel mondo digitale, per esempio dentro i computer e sulle reti locali. Se
una telefonata blocca una connessione per tutto il tempo, in una rete di
computer un utente può conversare con tanti altri utenti
“contemporaneamente”, come quando si aprono diverse finestre
browser per eseguire diverse interrogazioni simultanee. Ciò che
permette questo uso efficiente delle risorse hardware è la suddivisione
delle informazioni in piccole unità, così che molti utenti (persone,
applicazioni software, dispositivi hardware) possano condividere
simultaneamente le risorse hardware. In questo caso ci parla di reti a
commutazione di pacchetto.
La commutazione di pacchetto (packet switching), ha i seguenti
obbiettivi fondamentali:
multiplazione del traffico su più linee;
bilanciamento del traffico;
tempi ottimali di attraversamento della rete;
alta affidabilità dei collegamenti (tramite l’uso di strade alternative);
distribuzione dei rischio mediante l’uso di svariati nodi intermedi;
condivisione delle risorse.
In primo luogo, la tecnica a commutazione di pacchetto prevede l’uso di
diversi nodi intermedi, il che diminuisce l’incidenza della eventuale
caduta di un singolo componente sull’efficienza dell’intera rete.
14
Il termine pacchetto significa semplicemente che la lunghezza massima
dei messaggi è prefissata. Il pacchetto contiene, in una propria testata
(header) di livello 3 (livello network della pila ISO-OSI), l’indirizzo del
destinatario. Il generico nodo che riceve il pacchetto dall’utente mittente
decide verso quale altro nodo intermedio inoltrare il pacchetto, a
seconda dell’indirizzo del destinatario, degli algoritmi di instradamento di
cui è dotato e delle condizioni di traffico della rete.
In queste reti sono dunque possibili percorsi alternativi, il che aumenta
l’affidabilità dell’intera struttura: infatti, nel caso un determinato
pacchetto debba passare per un determinato nodo e quest’ultimo, però,
vada fuori servizio, è sempre possibile trovare per il pacchetto una
strada alternativa che lo farà comunque arrivare al destinatario.
Inoltre, una qualsiasi linea tra due nodi, dopo essere stata utilizzata per
l’inoltro di un pacchetto di un utente, viene successivamente utilizzata
per trasmettere pacchetti di altri utenti: il traffico sfrutta quindi in modo
condiviso le risorse di rete, massimizzando il rendimento delle linee.
Sulle linee che collegano vari nodi viene resa possibile la trasmissione
di pacchetti di utenti diversi, secondo una tecnica che, in pratica, risulta
molto simile al Time Division Multiplexing (TDM).
C’è anche un altro vantaggio, che è quello per cui i terminali possono
essere collegati in modo permanente al nodo più vicino, eliminando, per
quanto li riguarda, il tempo della fase di chiamata, che invece abbiamo
visto essere una delle principali caratteristiche delle tecniche a
commutazione di circuito.
Grazie all’instradamento dinamico (detto anche adattativo), il traffico
complessivo risulta quindi bilanciato sulle varie risorse di rete, premessa
anche per un buon tempo di attraversamento della rete.
L’utente ha la certezza che la spedizione dei suoi pacchetti verso un
altro utente della rete venga effettuata, anche se non viene dedicato ai
due alcun circuito reale: poiché la capacità di instradamento dei nodi
assicura la consegna, nelle reti a commutazione di pacchetto si parla di
connessioni tra due utenti tramite circuito virtuale.
Parecchie aziende ricorrono oggi alla rete pubblica a commutazione di
pacchetto anziché a quella a commutazione di circuito, poiché tale rete
è più affidabile della rete telefonica commutata e sono inoltre maggiori le
15
velocità raggiungibili. Tra l’altro, nel caso di collegamenti su distanze
elevate, si ha spesso un significativo vantaggio economico, in quanto
sulle reti pubbliche a commutazione di pacchetto il costo del traffico è
proporzionale al numero di pacchetti trasmessi e non alla durata della
connessione né alla distanza tra i due utenti connessi dal circuito
virtuale. Ci sono poi aziende che, sempre per motivi di convenienza,
hanno ritenuto utile impiantare una rete propria a commutazione di
pacchetto.
Per comprendere i vantaggi della commutazione di pacchetto,
principalmente in termini di utilizzazione delle linee, si può considerare
la figura seguente:
17
sempre disponibili (senza svuotarsi, né saturarsi) per compensare le
fluttuazioni momentanee di velocità. Occorre marcare i pacchetti
identificandone mittente e destinatario, in modo che solo il destinatario
li utilizzi e lo faccia sapendo chi è il mittente che li ha spediti.
Il concetto di protocollo
Un protocollo è la descrizione formale del formato dei messaggi e delle
regole che due o più macchine devono rispettare per scambiare quei
messaggi: in pratica è “l’insieme di regole che governano la
comunicazione” implementate in software, hardware, o una
combinazione dei due.
Un protocollo può contenere, infatti, regole estremamente dettagliate
come quelle che identificano il significato di ogni singolo bit nella
costruzione di un messaggio, oppure fornire uno scenario di più alto
livello, come per esempio definire come avviene il trasferimento di file da
un computer all’altro. Così come in un qualsiasi linguaggio di
programmazione, le regole più dettagliate devono essere seguite alla
lettera (provate a tralasciare un punto e virgola in un listato scritto in
19
Java per rendervene conto), mentre quelle di alto livello vanno costruite
nel modo corretto, pena errori nella struttura logica del programma, allo
stesso modo le regole imposte da un protocollo di trasmissione devono
essere seguite per evitare errori nella comunicazione.
La scheda di rete
La scheda di rete è un'interfaccia digitale che viene inserita solitamente
all'interno di un Personal Computer, Server, Stampante, Router ecc.,
che svolge tutte le elaborazioni o funzioni necessarie a consentire la
connessione ad una rete informatica. All’interno dell’interfaccia è
contenuto un indirizzo prefissato (in effetti si tratta di un numero a 48 bit)
che identifica la scheda. Questo è chiamato indirizzo Ethernet o
indirizzo MAC ed ha le caratteristiche di essere univoco ed espresso in
esadecimale. Gli indirizzi vengono assegnati ai dispositivi dal loro
produttore e vengono talvolta chiamati "indirizzi burned-in". I primi tre
ottetti identificano l'organizzazione o il produttore che ha emesso
l'identificatore e rappresentano l'Organizationally Unique Identifier (OUI).
I successivi tre ottetti (EUI) sono assegnati dal produttore che deve
rispettare il solo vincolo dell'univocità.
20
Il modello architetturale OSI
Il modello OSI (Open System Interconnection), sviluppato alla fine degli
anni ’70 dall'organismo internazionale ISO (International Standard
Organization), ha come obiettivo principale la realizzazione di sistemi
aperti, fra i quali sia possibile trasferire dati indipendentemente dal
costruttore e dalla configurazione dei sistemi considerati.
Il modello OSI definisce come sistema un insieme di uno o più
elaboratori con il relativo software, periferiche e terminali.
Un'applicazione è invece l'elemento (es. programma software) che
svolge effettivamente l'elaborazione dei dati.
Lo standard OSI si occupa dello scambio di informazione tra sistemi e
tra gli altri elementi che contribuiscono alla connessione di tali sistemi
(strutture ed apparati di telecomunicazioni).
Esso si propone i seguenti scopi:
Fornire una base comune per la realizzazione di standard nel
settore dell'interconnessione di sistemi informatici e di
telecomunicazione.
Facilitare l'interconnessione tra apparati prodotti da diverse
aziende.
Costruire una struttura di riferimento per realizzare una rete aperta
e trasparente per l'utente.
L'architettura generale del sistema OSI è basata su tre componenti
principali:
1. I sistemi che contengono le applicazioni.
2. I processi applicativi per lo scambio di informazione.
3. Le connessioni che permettono lo scambio di informazioni.
Per semplificare la descrizione e la progettazione di un sistema, lo
standard OSI utilizzauna struttura a livelli. Questo tipo di approccio è
oggi comune a tutti gli standard per learchitetture di rete, mentre
possono variare il numero di livelli, il loro nome e lefunzionalità.
21
L'architettura di un qualunque sistema per il trasferimento
dell’informazione viene divisa dal modello OSI nei seguenti sette strati
funzionali, detti layer (livelli):
1. Livello fisico
2. Livello di collegamento (data link)
3. Livello di rete
4. Livello di trasporto
5. Livello di sessione
6. Livello di presentazione
7. Livello di applicazione
23
sopra il precedente. Fra un tipo di rete ed un altra, possono essere
diversi:
il numero di livelli;
i nomi dei livelli;
il contenuto dei livelli;
le funzioni dei livelli.
C’è però un principio generale sempre rispettato: lo scopo di un livello è
offrire certi servizi ailivelli più alti, nascondendo i dettagli su come tali
servizi siano implementati.
Topologia di rete
Il metodo con cui la rete rende possibile il collegamento fisico tra i vari
elaboratori influenza notevolmente le caratteristiche della rete stessa
soprattutto relativamente alla tolleranza ai guasti ed ai costi. La
topologia definisce il modo nel quale viene configurata la risorsa
trasmissiva condivisa dagli utenti. E’ opportuno distinguere tra topologia
logica delle reti locali e topologia fisica. La prima discrimina il modo nel
quale un segnale emesso da una stazione raggiunge tutte le altre,
mentre la seconda descrive la reale topologia descritta dai cavi che
collegano le stazioni.
29
Topologia a bus
La rete a bus é il metodo più semplice utilizzato per collegare in rete due
o più computer. Consiste in un singolo cavo che connette tutti i
computer, i server e le varie periferiche in un singolo segmento di rete.
Gli host su una rete a bus, comunicano tra loro immettendo sul cavo le
informazioni, le quali vengono indirizzate all'indirizzo fisico della scheda
di rete usata per connettere il computer destinatario al segmento di rete.
Questo indirizzo fisico prende il nome di indirizzo MAC (Media Access
Control). I dati immessi sulla rete vengono inviati a tutti i computer che
fanno parte della rete stessa. Ciascun computer esamina questi dati,
per verificare se l'indirizzo di destinazione delle informazioni corrisponde
al proprio indirizzo MAC. In caso affermativo, il computer legge le
informazioni, altrimenti le scarta. Le reti Ethernet costituiscono
l'implementazione più comune delle reti a bus. Esse si servono di un
metodo chiamato "Carrier Sense Multiple Access with Collision
Detection" (CSMA/CD). Ciò significa che un solo computer per volta può
inviare dati sulla rete a bus. Se un host volesse trasmettere dati e
scopre che vi sono già altri dati in transito sulla rete, esso deve
aspettare che questa sia libera prima di trasmettere le proprie
informazioni.
31
Topologia a doppio anello
Le reti a doppio anello, sono un’evoluzione delle più semplici token ring.
Al posto di un singolo anello che collega i vari host, gli anelli utilizzati
sono due (l’anello principale e l’anello secondario). Nelle normali
operazioni, tutti i dati fluiscono sull’anello principale, mentre quello
secondario rimane spesso inattivo. Quest’ultimo serve solo nel caso in
cui si verifichi una rottura sull’anello principale. L’anello, quando è
necessario, riconfigura sé stesso automaticamente, in modo da
utilizzare il circuito secondario, continuando pertanto a trasmettere.
32
Topologia a maglia
E’ una configurazione che sfrutta i collegamenti punto-punto,
consentendo, per ogni elaboratore, anche più di due connessioni con
altri nodi della rete. Si parla di maglia completa quando tutti i nodi sono
collegati con ogni altro nodo della rete.
33
Topologia a stella
Tutte le stazioni sono collegate ad una stazione centrale (centro stella) e
tali connessioni sono di tipo punto-a-punto. Nel caso delle reti 10BaseT
o 100BaseT, il centro-stella prende il nome di HUB.
I vantaggi della topologia a stella sono essenzialmente i seguenti:
alte prestazioni: essendo i collegamenti di tipo punto-a-punto, non
c’è mai contesa sul mezzo trasmissivo, il quale quindi, a differenza
di altre soluzioni, è praticamente sempre disponibile per una
stazione che voglia trasmettere;
semplicità di protocollo, per lo stesso motivo di cui al punto
precedente;
facilità di controllo: il controllo è tutto concentrato (centralizzato) in
un unico punto della rete il centro stella appunto;
l’eventuale andata fuori uso di una stazione (che non sia
ovviamente il centro stella) non ha alcuna influenza sul
funzionamento della rete;
è possibile disporre di più hub in cascata in modo da aumentare il
numero di porte che collegano gli host alla pila di hub. In questo
modo, le reti a stella, possono diventare di grandi dimensioni;
per effettuare le connessioni con gli hub si possono utilizzare
differenti tipi di cavo;
se si utilizza un hub attivo, è possibile controllare in via
centralizzata l’attività ed il traffico sulla rete, per mezzo di protocolli
per la gestione della rete, come il Simple Network Management
Protocol (SNMP).
A fronte di questi vantaggi, ci sono i seguenti svantaggi:
in caso di intenso traffico, il nodo centrale può risultare
sovraccaricato di lavoro e questo potrebbe portare al blocco delle
richieste di connessione;
analogamente, l’affidabilità dell’intero sistema dipende tutta
dall’affidabilità del componente centrale: si parla di single point of
failure.
34
Tipi di rete
I più diffusi tipi di rete sono:
LAN
MAN
WAN
36
MAN (Metropolitan Area Network)
E’ una rete che si estende nell’area di una città collegando singoli
computer o reti locali (LAN). Una caratteristica delle reti Man è la grande
velocità di connessione, di solito sono reti di fibra ottica o altri supporti
digitali. Le reti Man sono più estese delle reti Lan e utilizzano tecnologie
simili a quelle delle reti locali, avendo però mezzi trasmissivi messi a
disposizione da un gestore pubblico.
37
modalità di instradamento dei dati sono di pertinenza del network
provider rendendo trasparente all'utente l'utilizzo della rete.
Dispositivi di rete
Ripetitore
Il ripetitore opera al livello 1 del modello OSI e si occupa di rigenerare il
segnale che successivamente viene poi rilanciato nel tratto successivo.
L'introduzione del ripetitore si deve al fatto che ciascun cavo (elettrico o
fibra) ha delle limitazioni sulla propagazione del segnale. Per superare
queste limitazioni è necessario introdurre un ripetitore. Il numero di
ripetitori che si possono introdurre in una rete con cavo in rame segue la
regola chiamata del 5 – 4, cioè non possono esserci più di 4 ripetitori tra
due host estremi della rete e quindi non si possono avere più di 5 tratti
di cavo; tutto questo per evitare la latenza di rete cioè il ritardo.
HUB
L’hub è un ripetitore con più porte che consente di ripetere il segnale al
di fuori di tutte le sue porte attive eccetto quella da cui è pervenuto il
segnale. Anche questo dispositivo opera al livello 1 del modello OSI.
L'introduzione di questo dispositivo ha portato la topologia fisica a
cambiare da bus a stella. Gli hub possono essere di vario genere: attivi,
passivi ed intelligenti. Non processano il dato che viaggia ma si limitano
a "riamplificare" il segnale attenuato facendolo uscire dalle restanti
porte.
BRIDGE
Il bridge opera al livello 2 del modello OSI. Le versioni di base sono
fornite di sole due porte. Questo dispositivo consente di suddividere la
rete in due segmenti. E’ importante sottolineare che opera a livello 2 del
modello OSI poiché processa i FRAME, cioè legge gli indirizzi fisici
(MAC sorgente e destinazione) contenuti nel frame. Inoltre questo
dispositivo, leggendo il MAC sorgente quando un host comunica in rete,
apprende dietro quale porta sono ubicati gli host e quindi provvede a
38
smistare il frame in base al MAC di destinazione, consultando la sua
CAM table (tabella che associa i MAC appresi a ciascuna porta). Se
l'host di destinazione è posto dietro la stessa porta (stesso segmento)
dove è sito l’host mittente il bridge non fa passare il frame, al contrario
se non sa dove è ubicato l'host di destinazione, cioè non ha informazioni
sul MAC del destinatario, lascia passare il frame. L'operazione di
smistamento del frame (switching) viene eseguita a livello software.
SWITCH
Gli switch operano al livello 2 del modello OSI e sono definiti come dei
Bridge a multiporte. Infatti essi offrono le stesse possibilità di
connessione offerte dagli hub, ma con la garanzia aggiuntiva di un
incremento notevole a livello di prestazioni.
Per capire perché gli switch funzionano meglio degli hub, è necessario
considerare la logica da essi utilizzata e confrontarla con la logica
utilizzata da un hub. Uno switch consente a ciascun dispositivo della
rete locale di comunicare con qualsiasi altro dispositivo, operazione
analoga a quella consentita da un hub, ma quando riceve un frame, lo
switch esamina l’indirizzo Ethernet di destinazione. Quindi inoltra il
frame solo attraverso una determinata porta, l’unica porta che consente
di raggiungere l’indirizzo di destinazione.
Uno switch, a differenza di un hub, non si limita a ripetere il segnale
elettrico verso tutte le altre porte. Al contrario, uno switch inoltra i frame
selezionando la destinazione e inviandoli quindi solo dove necessario.
Lo switch, in realtà, non fa altro che esaminare il contenuto del frame
Ethernet e individuare l’indirizzo MAC Ethernet di destinazione, in modo
da poter inviare i frame in modo selettivo. La differenza fra switch e hub
consiste nella modalità di selezione del traffico da inoltrare. Per
prendere una decisione di inoltro, uno switch utilizza una tabella in cui
sono elencati gli indirizzi MAC presenti in rete e denominata tabella
dello switch oppure tabella degli indirizzi MAC.
39
ROUTER
Un router è un dispositivo che gestisce la connessione tra due o più reti.
È un dispositivo fondamentale per collegare reti anche di tipo diverso,
attraverso le quali gestisce l’instradamento dei messaggi. I router
operano al livello 3 del modello OSI. Il loro compito è quello di
processare il pacchetto, cioè di capire, basandosi sull'indirizzo logico di
destinazione (indirizzo IP del destinatario nel nostro caso), quale rotta
scegliere e su quale porta d'uscita far uscire il pacchetto (path
determination e path selection).
ACCESS-POINT
L’access – point è un dispositivo che opera tra i livelli 1 e 2 del modello
OSI. Questo dispositivo presenta un'antenna per la connettività degli
host WIFI e una presa LAN per la connessione alla rete cablata. Si dice
40
che operi al livello 1 del modello OSI poiché si limita a trasformare il
segnale radio in segnale elettrico. La scheda di rete si dice che operi ai
livelli 1 e 2 del modello OSI poiché comprende il MAC address ma non
processa il frame.
cavi coassiali
cavi twisted-pairs
cavi in fibre ottiche
41
Cavi coassiali
I cavi coassiali si dividono sostanzialmente in due tipi diversi:
42
Cavi twisted-pairs
Si tratta di quello che in Italia é generalmente chiamato col nome di
“doppino”. Così come per i cavi coassiali, anche i cavi twisted-pairs sono
suddivisi in due diverse categorie:
Entrambi i tipi di cavo sono formati da 8 fili, intrecciati tra di loro in modo
da formare 4 coppie. L’ampiezza di banda garantita da un rete di cavi
twisted-pairs può arrivare fino a 100 Mbps. La topologia di rete a cui
questi cavi sono applicati è solitamente quella della rete a stella, in
quanto possono essere soltanto due gli host collegati al singolo
segmento.
43
Il cavo UTP si differenzia dall’STP esclusivamente per il fatto di non
essere schermato. Può essere di cinque categorie differenti:
44
Il cavo STP è un cavo schermato, dunque la distanza raggiungibile dal
segnale sul singolo segmento è all’incirca doppia rispetto all’UTP e
raggiunge i 200 metri.
45
Cavi in fibre ottiche
A differenza dei cavi visti in precedenza, quelli in fibra ottica non
trasmettono impulsi elettrici, ma impulsi luminosi. Questa tecnica
permette di raggiungere grandi distanze senza che il segnale decada,
con una velocità prossima a quella della luce. Il principio di
funzionamento dei cavi in fibra ottica è concettualmente semplice. Il
trasmettitore converte gli impulsi elettrici da inviare in segnali luminosi.
Questi fasci di luce vengono immessi nel cavo, da dove, sfruttando i
fenomeni fisici della rifrazione e della riflessione, viaggiano verso il
destinatario. Una volta raggiunto l’host destinatario, una serie di
fotocellule raccolgono l’impulso e lo riconvertono in una grandezza
elettrica pronta per essere elaborata dal PC. A causa del costo ancora
proibitivo, attualmente i cavi in fibra ottica non vengono utilizzati per la
cablatura di reti locali. Tuttavia, molte dorsali di reti estese sfruttano già
ora questa tecnologia.
46
Lo standard Ethernet
Lo standard Ethernet è il più diffuso standard di rete locale esistente al
mondo; tuttavia, il fatto che l’Ethernet sia diventato uno standard
internazionale, non implica che esso sia la migliore tecnologia in
assoluto. Sicuramente, però, si tratta della più economica e della più
semplice da implementare. La storia della tecnologia Ethernet ha inizio
nei primi anni settanta presso il Palo Alto Research Center, il laboratorio
di ricerca della Xerox, per merito di Robert Metcalfe e David Bloggs. Il
loro lavoro iniziò nel 1972, ma solo quattro anni più tardi essi arrivarono
a pubblicare una prima definizione pubblica di Ethernet. Il nome, ideato
e registrato da Xerox, doveva suggerire l’idea dell’etere, di quella
sostanza incorporea che in passato si supponeva pervadesse tutta l’aria
e consentisse il propagarsi della luce. La prima versione commerciale
della tecnologia risale al 1980 ed è dovuta all’iniziativa congiunta di
Xerox, Digital Equipment e Intel. Due anni dopo (1982), esce la
tecnologia Ethernet 2, detta anche DIX. Ormai diffusissima in svariati
ambienti, le tre grandi aziende sentirono la necessità di affidarne la
standardizzazione ad un ente al di sopra delle parti. Il ruolo di arbitro fu
quindi affidato all’IEEE di New York, Istituto che ne gestisce a tutt’oggi
l’evoluzione. Originariamente il sistema di trasmissione basato su
tecnologia Ethernet utilizzava un solo cavo per collegare decine di
stazioni di lavoro, ciascuna delle quali riceveva contemporaneamente, o
quasi, tutte le informazioni che attraversavano la rete. Solo una stazione
alla volta, invece, aveva la possibilità di trasmettere. Si tratta della
topologia a bus, abbinata alla tecnica CSMA/CD. In realtà, al giorno
d’oggi, Ethernet gestisce alla perfezione anche reti LAN basate su di
una topologia a stella. Il CSMA/CD, comunque, rimane la prerogativa
preponderante di questo standard.
47
48
Domande di comprensione del capitolo 1
Rispondere alle domande che seguono per verificare di aver appreso
tutti i concetti illustrati in questo capitolo.
Le risposte alle domande sono riportate nell’allegato A alla fine del libro.
Se qualche risposta data dovesse risultare errata, si consiglia di
rivedere i concetti specifici dove si sono commessi errori.
1. Con quale formato si presenta l’indirizzo MAC?
a. Numero binario a 32 bit
b. Numero esadecimale a 48 bit g
c. Numero decimale di lunghezza variabile
2. Da quanti livelli è composto il modello ISO/OSI?
a. 9
b. 8
c. 7 g
d. 4
e. 3
3. Le reti Token Ring hanno una topologia…
a. A bus
b. A stella
c. Ad anello g
4. Quale dispositivo invia i pacchetti a tutti i dispositivi della rete
indipendentemente dall’indirizzo del reale destinatario?
a. Hub g
b. Switch
c. Router
5. Quali, tra i seguenti cavi, è schermato?
a. Cavo coassiale
b. UTP
c. STP g
49
Capitolo 2: Infrastruttura di
rete TCP/IP
Il modello TCP/IP
Il nome completo è “TCP/IP Internet Protocol Suite”. Il modello
TCP/IP, il quale prende il nome da i due protocolli principali di Internet
progettati nel 1974 da Robert E. Kahn e Vinton G. Cerf a Berkeley,
descrive il processo di trasmissione dati riassumendo i 7 livelli del
modello ISO/OSI.
50
- Network (Rete): rappresenta i layer Data Link e Phisical
del modello OSI, lavora a stretto contatto con l'hardware.
Questo livello si occupa di prelevare ed immetere i frame
dati, diversi a seconda della tipologia di rete, sul cavo di
rete e di controllarne la correttezza tramite un algoritmo
CRC (cyclic redundancy check). Rispetto al modello
ISO/OSI non ci sono distinzioni tra schede di rete e driver
con il vantaggio di poter implementare TCP/IP su ogni tipo
di rete;
51
protocolli, tratta una parte specifica dei problemi di
trasmissione.
Il concetto di stratificazione poggia su un principio basilare il
quale, in sostanza, afferma che lo strato ennesimo alla stazione
destinazione deve ricevere un pacchetto identico a quello che è
uscito dal medesimo livello alla stazione sorgente. I due
principali esempi di modelli stratificati sono rappresentati dal
Open System Interconnection (OSI) dell'ISO e dal TCP/IP. Si
può pensare al software di una macchina come costituito da
tanti strati ognuno dei quali svolge una funzionalità specifica
propria.
Inoltre è importante sottolineare che uno strato comunica
soltanto con uno strato immediatamente superiore od
inferiore, tramite delle interfacce standard, mentre all'interno
dello strato la comunicazione può avvenire in un qualunque
modo; per poter comunicare da uno strato n ad uno strato n-2
(n+2) bisogna necessariamente passare attraverso lo strato
intermedio n-1 (n+1).
Concettualmente, mandare un messaggio da un programma su
una macchina ad un programma su un'altra, significa trasferire
tale messaggio giù attraverso tutti i vari strati fino al livello di
rete e, tramite l'hardware, raggiungere l'altra macchina, risalire
gli strati software in successione fino al livello di applicazione
dell'utente destinazione.
53
Internet Layer (IP): Questo livello gestisce la comunicazione tra
una macchina ed un'altra; accetta una richiesta di inoltro di un
pacchetto da un livello di trasporto insieme all'identificazione
della macchina alla quale il pacchetto deve essere inviato.
È il livello più caratteristico della internet, detto appunto IP
(internet protocol) che crea il datagramma di base della rete,
sostanzialmente, riceve e trasferisce senza garanzie i pacchetti,
che gli arrivano da sopra, verso la macchina destinataria.
Esso accetta i pacchetti TCP, li spezzetta se necessario e li
incapsula nei datagramma di base IP, riempie gli header
necessari ed usa l'algoritmo di rouiting per decidere a chi deve
mandare questo pacchetto, in particolare se si tratta di un caso
di routing diretto o indiretto.
Il livello Internet gestisce anche i datagrammi in ingresso,
verifica la loro validità ed usa l'algoritmo di routing per decidere
se il datagramma deve essere inoltrato o processato
localmente; in quest'ultimo caso il software elimina l' header del
datagramma e sceglie quale protocollo di trasporto gestirà il
pacchetto.
In tale fase non solo si svolge la funzione di instradamento, ma
si verifica anche la validità dei pacchetti ricevuti.
Inoltre questo livello gestisce integralmente i messaggi ICMP in
ingresso ed uscita.
55
cosicché ricerca e sviluppo possono procedere
concorrentemente su ognuno dei tre livelli.
57
NetBIOS
La maggior parte dei servizi e delle applicazioni che girano sotto il
sistema operativo Windows, utilizzano l’interfaccia NetBIOS per la
comunicazione tra processi (IPC, Interprocess Communications). Il
NetBIOS sfrutta inoltre una convenzione denominata UNC (Universal
Naming Convention) per gestire un collegamento tra due macchine
collegate in rete, risolvibile per mezzo di nomi (nomi NetBIOS) al posto
dei meno mnemonici indirizzi IP. Quando si parla di NetBios, NetBEUI e
SMB si rischia spesso di far confusione fra protocolli, livelli di
applicazione, definizione e contesti. Non è un caso, questi sono
argomenti di fatto anomali, nel mondo del networking, che si trascinano
dietro due decenni di utilizzi in rete e relative implementazioni.
Cerchiamo di chiarire le cose a grandi linee, in modo da poter meglio
individuare gli argomenti che ci interessano e contestualizzarli
correttamente.
Microsoft ha iniziato ad usare NetBEUI come protocollo di rete su
Windows for Workgroup (Windows 3.1) e poi su tutte le versioni
successive ma, al contempo, con la diffusione di Novell IPX e di IP, si è
iniziato a veicolare NetBios anche su IPX e IP, oltre che su altri
protocolli.
E' quindi possibile trovare NetBios (tipicamente proposto come
protocollo a livello di sessione) nella sua incarnazione originaria, come
58
NetBIOS Frames Protocol (NBF) detto anche semplicemente NetBios o
NetBEUI, che copre i livelli di network e trasporto, oppure incapsulato su
IPX o TCP/IP con questi ultimi a gestire il network e transport layer e
NetBios posizionato come session layer.
Il protocollo Server Message Block (SMB) e il suo derivato Common
Internet File System (CIFS) agiscono a livello applicativo, direttamente
su NetBEUI, NetBios su IPX o NetBios su IP (chiamato anche NBT o
NetBT), CIFS, invece, nelle sue recenti versioni può anche essere
trasportato direttamente dal TCP/IP, senza layer NetBiosintermedio.
L'indirizzamento di NetBios è flat, basato sul semplice nome di un host
(generalmente fino a 15 caratteri) e senza elementi gerarchici (come il
DNS) che di fatto lo rendono inadatto per gestire il routing fra network
diversi. Per impedire che due host nella stessa rete abbiamo lo stesso
nome viene utilizzato il protocollo Name Management Protocol (NMP),
tramite il quale, a colpi di broadcast, un host annuncia la sua presenza
in rete e avverte quando un nuovo host con lo stesso nome prova ad
apparire.
Nella comunicazione fra host si usano lo User Datagram Protocol (UDP,
diverso dall'UDP usato su IP), basato su datagrammi fino a 512 byte e il
Session Management Protocol (SMP), bidirenzionale, e basato su
sessioni che vengono stabilite fra due host.
Attualmente la forma maggiormente utilizzata è quella di NetBios
incapsulato su TCP/IP (NetBios over TCP/IP o NBT). Questo standard è
definito nelle RFC 1001 e RFC 1002 dove si affrontano le problematiche
relative all'associazione di un nome di host ad un indirizzo IP (broadcast
o server di nomi centralizzato) e i metodi di comunicazione (a
datagrammi o a sessioni).
Le porte utilizzate per questi servizi sono:
netbios-ns137/udp #NETBIOSNameService
netbios-dgm138/udp#NETBIOSDatagramService
netbios-ssn139/tcp #NETBIOSSessionService
59
OpenSource del protocollo che è utilizzabile su gran parte degli Unix in
circolazione.
60
L’insieme dei protocolli del TCP/IP
Ora che è più chiaro lo schema logico del modello a strati TCP/IP,
specifichiamo i protocolli che vi sono implicati facendo riferimenti alle
comunicazioni internet.
61
Internet Protocol (IP)
Il protocollo IP è senza connessione (connectionless). Affinché due host
comunichino utilizzando il protocollo IP, non è necessario che prima
stabiliscano una sessione. I due sistemi si scambiano i dati per mezzo di
un sistema di consegna ottimizzato; si tratta, infatti, di un servizio di tipo
“best effort” piuttosto che di tipo “servizio garantito”. La consegna best
effort descrive uno scenario di rete nel quale non è fornita nessuna
garanzia sulla consegna dei dati ma tutte le comunicazioni avvengono
con il massimo impegno possibile. Le conseguenze di questa politica di
consegna sono bitrate e tempi di consegna variabili a seconda del
traffico che deve gestire la rete.
L’Internet Protocol fornisce tutti gli indirizzi logici degli host. Ciascun host
ha in dotazione un indirizzo IP univoco per la rete sulla quale sta
lavorando.
Come accade per qualsiasi protocollo che fornisce l’indirizzamento in
rete, l’Internet Protocol include sia i componenti della rete sia quelli
dell’host. Confrontando l’indirizzo IP di un computer destinatario con
l’indirizzo IP della propria origine, l’IP può determinare se il pacchetto
deve essere instradato verso l’host destinatario o se è possibile
mandarglielo direttamente.
Indirizzo IP
Il protocollo IP si occupa di fornire un metodo di indirizzamento logico e
di gestione frammentazione/riassemblaggio per la trasmissione dati tra
gli host di una rete.
Il protocollo IP, descritto nella RFC 791, nasce negli anni '70 grazie a
una serie di ricerche fatte dalle università americane su richiesta del
ministro della difesa, allo scopo di realizzare una rete in grado di
trasportare diversi tipi di informazioni. L'IP protocol definisce una tecnica
di trasmissione dati non orientata alla connessione (connectionless) e
senza riscontro (non c'è garanzia che i pacchetti giungano a
destinazione e nella sequenza corretta). Esso prevede che le
informazioni vengano strutturate in unità chiamate datagrammi IP (IP
datagram), di lunghezza massima 65535 byte, suddivise in due aree: il
campo dati (data) che contiene il messaggio da inviare e l'intestazione
(header) che contiene le informazioni necessarie per instradare il
pacchetto.
62
L’indirizzo IP viene diviso in due parti. La prima, chiamata “identificativo
di rete” identifica la rete in cui si trova la macchina, e la seconda,
chiamata “identificativo dell’host”.
Per ottimizzare il numero di indirizzi IP gestibili (considerando lo spreco
delle prime assegnazioni e la scarsità di indirizzi liberi), la porzione di
indirizzo IP relativa alla rete non è fissa. Originariamente, erano state
previste reti di classe A, B e C, nelle quali l’indirizzo di rete era lungo
rispettivamente 1, 2 e 3 ottetti, lasciando così 3, 2 e 1 ottetti per il
numero di host. Togliendo gli indirizzi riservati e i bit utilizzati per
indicare la classe, ne risulta che si possono avere 126 reti di Classe A,
ciascuna con 16,777,214 possibili host; 16,384 reti di Classe B,
ciascuna con 65,534 possibili host e 2,097,152 reti di Classe C,
ciascuna con 254 possibili host. Esistono anche una Classe D, destinata
a comunicazioni multicasting (a gruppi di host - indirizzi che iniziano con
1110), e una classe E (indirizzi che iniziano con 1111) per uso
sperimentale. La maschera di rete (subnet mask) è un numero di 32 bit
diviso in due parti: la prima parte, con i bit tutti posti a uno, indica quale
parte dell’indirizzo IP identifica la rete; la seconda parte, con tutti i bit a
zero, indica la parte di indirizzo riservata all’identificazione dell’host
all’interno della rete. Per le classi A, B e C, le subnet mask sono,
rispettivamente: 255.0.0.0, 255.255.0.0 e 255.255.255.0. Storicamente,
gli indirizzi IP e le classi sono stati distribuiti con eccessiva larghezza,
senza prevedere la crescita del numero di reti e di host che si è
verificata con l’esplosione dell’utilizzo di Internet. Tra le misure per
correre ai ripari, quella più radicale è lo sviluppo del nuovo protocollo IP
versione 6 (IPv6), che utilizza indirizzi di 128 bit capaci di identificare un
numero praticamente illimitato di reti e host. La sperimentazione di IPv6
dura da parecchi anni a livello internazionale, soprattutto a partire dagli
enti legati alla ricerca. La transizione a IPv6 appare onerosa per la
necessità di aggiornamento o sostituzione delle apparecchiature di rete,
quindi non è, al presente, una soluzione generalizzabile. Un importante
contributo per guadagnare tempo a fronte della scarsità di indirizzi IP
liberi, è venuto dall’uso di indirizzi IP privati, ovvero degli intervalli di
indirizzi che, per convenzione (la RFC 1918), non sono visibili su
Internet. Questi intervalli sono: da 10.0.0.1 a 10.255.255.254, da
172.16.0.1 a 172.31.255.254 e da 192.168.0.1 a 192.168.255.254.
All’interno delle aziende si usano, solitamente, intervalli di indirizzi
privati, così da non dover impegnare blocchi di indirizzi pubblici (detti
anche indirizzi legali), di cui c’è scarsità.
63
Il formato di un pacchetto IP appare come nella figura seguente:
64
L'intestazione di un pacchetto IP è suddivisa nei seguenti
campi:
65
un suo multiplo;
Data: i dati trasportati dal protocollo.
66
Il protocollo ICMP può svolgere le seguenti funzioni:
fornire messaggi di eco e di risposta per verificare
l’attendibilità di una connessione tra due host.
Questo, in genere, si fa con il comando PING
(Packet Internet Groper);
reindirizzare il traffico per fornire un instradamento
più efficiente, quando un router è intasato a causa di
un traffico eccessivo;
emettere un messaggio di tempo scaduto quando il
datagramma di un’origine ha superato il tempo di
durata in vita che gli era stato assegnato e viene
scartato;
emettere annunci di instradamento per determinare
l’indirizzo di tutti i router in un segmento di rete;
fornire un messaggio di inibizione dell’origine per
dire ad un host di rallentare le proprie
comunicazioni, nel caso che queste stiano
saturando un router o un collegamento di rete WAN;
determinare quale maschera di sottorete è in uso su
di un segmento di rete.
67
Internet Group Management Protocol (IGMP)
A volte, invece di inviare le informazioni da un host origine ad un singolo
host destinatario, occorre inviarle a più host destinatari. Un sistema
consiste nell’utilizzare il metodo di trasmissione “broadcasting”, che,
però, presenta due problemi principali. Come prima cosa, tutti gli host
sulla rete devono esaminare il pacchetto per determinare se è destinato
a loro. Come seconda cosa, molti instradatori sono configurati in modo
da non inoltrare questi broadcast ad altri segmenti di rete. Questi due
problemi possono causare congestioni sulla rete. Un’alternativa al
broadcasting, è il “multicasting”. Invece che considerare come
destinazione di un pacchetto IP tutte le macchine sulla rete, si può fare
in modo che la destinazione sia uno specifico gruppo di
computer. La consegna dei pacchetti multicast avviene tramite UDP.
Pertanto, è possibile che si verifichino smarrimenti o ritardi durante il
transito. Di seguito, troviamo alcune considerazioni sui gruppi multicast
IP:
tutte le attribuzioni di indirizzi multicast si basano su
indirizzi IP di classe D, che vanno da 224.0.0.1, fino
a 239.255.255.255;
l’indirizzo 224.0.0.1 è riservato e rappresenta il
gruppo “tutti gli host”. Questo gruppo comprende
tutti gli host e gli instradatori IP che partecipano ad
un multicasting IP su di un segmento di rete;
un host IP può aderire o uscire dinamicamente da
un gruppo multicast IP in qualsiasi momento;
gli indirizzi multicast IP devono apparire solo come
indirizzi di destinazione. E’ raro che essi appaiano
come indirizzi dell’origine, poiché di solito non sono
vincolati alle schede di rete. Alcune forme di UNIX
permettono comunque queste funzionalità. In questi
casi, un indirizzo multicast può effettivamente
apparire come indirizzo dell’origine.
68
multicast (valore 1) o una risposta inviata da un host
IP (valore 2);
il campo Checksum: questo campo è una somma di
controllo per l’intero messaggio IGMP. Serve ad
assicurare che le informazioni non si siano
danneggiate durante il transito. Per calcolare le
somme di controllo IGMP, si usa lo stesso algoritmo
che serve per il calcolo delle somme di controllo
dell’intestazione IP;
il campo Group Address: questo campo contiene il
multicast IP del gruppo al quale un host dichiara di
appartenere. Nel caso di un interrogazione di gruppo
multicast, questo campo è impostato su valori tutti
uguali a zero.
69
se una nuova voce non è riutilizzata nei primi due
minuti della sua vita, viene rimossa dalla cache
ARP;
in alcune implementazioni TCP/IP, il valore del
tempo di durata in vita è reimpostato sul suo valore
iniziale ogni volta che si riutilizza una voce della
cache ARP;
ciascuna implementazione di TCP/IP stabilisce un
numero massimo di voci per la cache ARP. Se
questa è piena e deve aggiungere una nuova voce,
elimina la voce più vecchia per fare spazio a quella
nuova (struttura di tipo first-in-first-out, FIFO).
70
Gli indirizzi MAC vengono ottenuti utilizzando una richiesta
broadcast di rete, ovvero una forma di domanda del tipo "Qual è
l'indirizzo MAC per una periferica configurata con l'indirizzo IP
riportato?".
Una volta ottenuta risposta alla richiesta ARP, sia l'host che ha
inviato la risposta che l'host richiedente originale registrano
l'indirizzo IP e l'indirizzo MAC delle reciproche periferiche come
voci in una tabella locale, definita cache ARP, a scopo di
riferimento futuro.
All’interno dell’architettura TCP/IP, sono due i protocolli che lavorano al
livello del trasporto:
TCP: che necessita di una connessione, e
garantisce il corretto invio dei dati;
UDP: protocollo connectionless, che spedisce dati
senza richiesta di conferma, garantendo una
spedizione “al meglio”.
73
Flags (6x1 bits): i flags rappresentano delle informazioni
supplementari :
o URG: se questo flag è a 1 il pacchetto deve essere trattato
urgentemente.
o ACK: si il flag è a 1 il pacchetto è un'accusa di ricezione
o PSH (PUSH): se il flag è a 1, il pacchetto funziona secondo il
metodo PUSH.
o RST: se il flag è a 1, la connessione viene rinizializzata.
o SYN:il flag TCP SYN indica una richiesta di connessione.
o FIN: se questo flag è a 1, la connessione si interrompe
Finestra (16 bits): campo che permette di conoscere in numero di
bytes che il ricevitore desidera ricevere senza accusa di ricezione
Somma di controllo ( (Checksum o CRC): la somma di controllo
è realizzata facendo la somma dei campi di dati dell'intestazione,
per poter verificare l'integrità dell'intestazione
Puntatore di emergenza (16 bits): indica il numero d'ordine a
partire dal quale l'informazione diventa urgente
Opzioni (Dimensione variabile): opzioni diverse
Riempimento: si riempe lo spazio rimanente dopo le opzioni con
degli zero per avere una lunghezza multipla di 32 bits
74
Porte e socket
Ecco ora una breve carellata delle porte e sockets più utilizzate dai vari
protocolli:
Porta Descrizione
1/tcp TCP Multiplexor
2/tcp compressnet Management Utility
3/tcp compressnet Compression Process
7/tcp Echo Protocol
7/udp Echo Protocol
9/tcp Discard Protocol
9/udp Discard Protocol
13/tcp Daytime Protocol
17/tcp Quote of the Day
19/tcp Chargen Protocol
19/udp Chargen Protocol
20/tcp FTP - Il file transfer protocol – data
21/tcp FTP - Il file transfer protocol – control
22/tcp SSH - Secure login, file transfer (scp, sftp) e port forwarding
23/tcp Telnet insecure text communications
25/tcp SMTP - Simple Mail Transfer Protocol (E-mail)
53/tcp DNS - Domain Name Server
53/udp DNS - Domain Name Server
BOOTP Bootstrap Protocol (Server) e DHCP Dynamic Host
67/udp
Configuration Protocol (Server)
75
BOOTP Bootstrap Protocol (Client) e DHCP Dynamic Host
68/udp
Configuration Protocol (Client)
69/udp TFTP Trivial File Transfer Protocol
70/tcp Gopher
79/tcp finger Finger
80/tcp HTTP HyperText Transfer Protocol (WWW)
88/tcp Kerberos Authenticating agent
104/tcp Dicom - Digital Imaging and Communications in Medicine
110/tcp POP3 Post Office Protocol (E-mail)
113/tcp ident vecchio sistema di identificazione dei server
119/tcp NNTP usato dai newsgroups usenet
123/udp NTP usato per la sincronizzazione degli orologi client-server
137/udp NetBIOS Name Service
138/udp NetBIOS Datagram Service
139/tcp NetBIOS Session Service
143/tcp IMAP4 Internet Message Access Protocol (E-mail)
161/udp SNMP Simple Network Management Protocol (Agent)
162/udp SNMP Simple Network Management Protocol (Manager)
389/tcp LDAP
411/tcp Direct Connect Usato per gli hub della suddetta rete
443/tcp HTTPS usato per il trasferimento sicuro di pagine web
Microsoft-DS (Active Directory, share di Windows, Sasser-
445/tcp
worm)
445/udp Microsoft-DS SMB file sarin
465/tcp SMTP - Simple Mail Transfer Protocol (E-mail) su SSL
76
514/udp SysLog usato per il system logging
NNTP Network News Transfer Protocol (newsgroup Usenet) su
563/tcp
SSL
FileMaker 6.0 Web Sharing (HTTP Alternate, si veda la porta
591/tcp
80)
IPP / CUPS Common Unix printing system (Il server di stampa
631/udp
sui sistemi operativi UNIX/Linux)
636/tcp LDAP su SSL
666/tcp Doom giocato in rete via TCP
993/tcp IMAP4 Internet Message Access Protocol (E-mail) su SSL
995/tcp POP3 Post Office Protocol (E-mail) su SSL
77
Le applicazioni che si servono di UDP devono fare da sé per assicurarsi
che i dati siano consegnati con successo all’host ricevente. L’unica
protezione che esiste in un pacchetto UDP è un valore di controllo nella
sua intestazione, il quale assicura che i dati non si siano danneggiati
durante il transito. Una tipica analogia che serve a paragonare i
protocolli TCP e UDP è l’ufficio postale in confronto ad un corriere
espresso. L’ufficio postale funziona un po’ come il protocollo UDP.
Quando si scrive una lettera per un amico e la si imbuca, non è
garantito che essa giungerà a destinazione, anche se la maggior parte
delle volte lo farà. Questo meccanismo può andare bene finché si deve
scrivere una qualche sciocchezza: infatti, che essa arrivi o non arrivi non
ha grande importanza. È in compenso molto rapido ed efficiente per le
applicazioni "time-sensitive". Ad esempio, è usato spesso per la
trasmissione di informazioni audio o video.
TCP è un protocollo orientato alla connessione, ovvero prima di poter
trasmettere dati deve stabilire la comunicazione, negoziando una
connessione tra mittente e destinatario, che viene esplicitamente chiusa
quando non più necessaria. Esso quindi ha le funzionalità per creare,
mantenere e chiudere una connessione.
Il protocollo TCP possiamo vederlo invece come un corriere espresso,
che garantisce sempre e comunque la consegna, oltretutto entro un
determinato lasso di tempo. Ovviamente, il costo del corriere è superiore
rispetto a quello del postino tradizionale. In materia di protocolli, il
maggior costo si rileva come maggior traffico sulla rete, in quanto, oltre
all’invio del frammento, il TCP richiede che venga inviata al mittente la
conferma di ricezione.
78
Si tratta di un protocollo funzionante in modalità connessa,
incapsulato in una trama TCP/IP. La posta è consegnata
direttamente al server di posta del destinatario. Il protocollo
SMTP funziona grazie a dei comandi testuali inviati al server
SMTP (per default sulla porta 25). Ognuno dei comandi inviati
dal client (validato dalla stringa di caratteri ASCII CR/LF,
equivalente ad un pressione del tasto invio) è seguito da una
risposta del server SMTP composta da un numero e da un
messaggio descrittivo.
Ecco uno scenario di richiesta di invio di mail ad un server
SMTP
All'apertura della sessione SMTP, il primo comando da
inviare èHELO seguito da uno spazio (sigla <SP>) e dal
nome del dominio del vostro terminale (come
dire"buongiorno sono il tal terminale"), poi validare con
invio (sigla <CRLF>). Dall'aprile del 2001, le specifiche del
protocollo SMTP definite nella RFC 2821, impongono che
il comando HELO sia sostituito dal comando EHLO.
Il secondo comando è "MAIL FROM:" seguito dall'indirizzo
email del mittente. Se il comando è accettato il server
rinvia il messaggio "250 OK"
Il comando seguente è"RCPT TO:" seguito dall'indirizzo
email del destinatario. Se il comando è accettato il server
rinvia il messaggio "250 OK"
Il comando DATA è la terza tappa dell'invio. Esso
annuncia l'inizio del corpo del messaggio. Se il comando è
accettato il server rinvia un messaggio intermedio
numerato 354 che indica che l'invio del corpo della mail
può cominciare e considera l'insieme delle linee seguenti
fino alla fine del messaggio individuata da una linea
contenente unicamente un punto. Il corpo della mail
contiene eventualmente alcune delle seguenti
intestazioni :
o Date
o Subject
o Cc
o Bcc
o From
Se il comando è accettato il server rinvia il messaggio" 250 OK"
Questo è un esempio di transazione tra client (C) e un
server(SMTP):
79
S: 220 smtp.xxxxx.net SMTP Ready
C: EHLO terminale1.xxxxxx.net
S: 250 smtp.xxxxxxx.net
C: MAIL FROM:<webmaster@xxxxxxxx.net>
S: 250 OK
C: RCPT TO:<tizio@tizio.net>
S: 250 OK
C: RCPT TO:<caio@caio.fr>
C: Subject: Ciao
C: Ciao tizio,
C: come va?
C: A presto!
C: <CRLF>.<CRLF>
S: 250 OK
C: QUIT
R: 221 smtp.xxxxxx.net closing transmission
80
Post Office Protocol version 3 (POP3)
Il protocollo POP (Post Office Protocol tradotto con "protocollo
dell'ufficio postale") permette come indicato dal suo nome di andare a
recuperare la propria posta su un server remoto (server POP). E'
necessario per le persone che, non essendo connesse in permanenza
ad internet, devono consultare le proprie mail off-line.
Esistono due versioni principali di questo protocollo, POP2 e POP3, alle
quali sono attribuite rispettivamente le porte 109 e 110 e che funzionano
attraverso dei comandi testuali radicalmente diversi.
Esattamente come nel caso del protocollo SMTP, il protocollo POP
(POP2 e POP3) funziona grazie a dei comandi testuali inviati al server
POP. Ciascuno dei comandi inviati dal client (validato dalla sequenza
CR/LF) è composto da una parola-chiave, eventualmente
accompagnata da uno o più argomenti ed è seguito da una risposta del
server POP composta da un numero e da un messaggio descrittivo.
I comandi del POP3 sono:
Comando Descrizione
Questo comando permette di autentificarsi.
USER Esso deve essere seguito dal nome
identificativo dell'utente. cioè da una stringa di caratteri
che identificano l'utente sul server. Il
81
comando USER deve precedere il
comando PASS.
83
Telnet
Il protocollo Telnet è un protocollo standard di internet che permette
l'interfacciamento di terminali e di applicazioni attraverso internet.
Questo protocollo fornisce le regole di base per permettere di collegare
un client (sistema composto da una visualizzazione e una tastiera) a un
interprete di comando (lato server).
Il protocollo Telnet si basa su una connessione TCP per inviare dei dati
in formato ASCII codificati a 8 bits fra i quali si intercalano delle
sequenze di controllo Telnet. Esso fornisce inoltre un sistema orientato
comunicazione, bidirezionale (half-duplex), codificato a 8 bits, di facile
realizzazione.
Il protocollo Telnet si basa su tre concetti fondamentali :
Il paradigma del terminale rete virtuale (NVT, Network Virtual
Terminal) ;
Il principio di opzioni negoziate;
Le regole della negoziazione
Questo protocollo è un protocollo di base, sul quale si basano alcuni altri
protocolli della serie TCP/IP (FTP, SMTP, POP3,…). Le specifiche di
Telnet non fanno menzione dell'autentificazione dato che Telnet è
totalmente separato dalle applicazioni che la usano (il protocollo FTP
definisce una sequenza di autentificazioni al di sopra di Telnet). Inoltre il
protocollo Telnet è un protocollo di trasferimento di dati non certi, cioè i
dati che veicola circolano in chiari sulla rete (in modo non cifrato).
Quando il protocollo Telnet è usato per connettere un host remoto al
terminale sul quale è implementato come server, questo protocollo è
assegnato alla porta 23.
Tralasciando le opzioni e le regole di negoziazione associate, le
specifiche del protocollo Telnet sono basiche. La trasmissione di dati
attraverso Telnet consiste unicamente nel trasmettere i bytes nei flussi
TCP (il protocollo Telnet precisa anche che i dati da default, cioè se
nessuna opzione precisa il contrario, devono essere raggruppati in un
TAMPONE... CASH?? prima di essere inviati. Più esattamente significa
che i dati sono inviati linea per linea da default). Una volta che il byte
255 è trasmesso, il byte seguente deve essere interpretato come un
comando. Il byte 255 è anche detto IAC (Interpret As Command,
tradotto Interpretare come un comando).
84
Crea problemi per l’autenticazione in quanto i dati passano in chiaro,
motivo per cui è stato abbandonato.
85
Con ssh, si utilizza la tecnologia crittografica a chiave pubblica per
autenticarsi remotamente in maniera sicura (senza mai trasferire in
chiaro un nome utente né una password, e permettendo anche di
verificare l’identità delle macchine). Inoltre, può essere usato anche per
rendere sicuri molti altri servizi, fornendo un tunnel crittato usato per
trasferire tutto il traffico di rete. La suite di programmi ssh più diffusa è
OpenSSH, parte del progetto OpenBSD. Il pacchetto include i
programmi lato client come ssh, scp, e sftp e il componente lato server,
sshd.
86
molto utilizzate le mailing list e quando queste superavano una decina di
utenti registrati, ogni processo di spedizione metteva a dura prova le
capacità del server che doveva provvedere ad inoltrare il tutto. Si pensò
così di ideare un protocollo che alleggerisse tutto questo lavoro. A tal
fine, nel 1986 venne proposto l'NNTP, descritto da Brian Kantor e Phil
Lapsley nella RFC 977. Il protocollo, opportunamente aggiornato, é
ancora molto utilizzato anche ai giorni nostri. L'NNTP é stato progettato
affinché tutti gli articoli (in gergo "post") risiedano su di un server
dedicato e permettano all'utente di leggere soltanto i post che gli
interessano, potendo avere in anteprima il titolo del messaggio ed il
nome del mittente. Al giorno d'oggi, tutti i più diffusi software che
gestiscono la posta elettronica hanno anche la funzione di news-reader.
Tranne Internet All-in-One, nel quale abbiamo dovuto tralasciare la parte
NNTP per esigenze puramente temporali.
87
Nel modello, il protocollo utente inizializza il controllo della connessione
(control connection), che sfrutterà il protocollo Telnet. All'avvio della
connessione, i comandi FTP standard sono generati dall'user-PI e
trasmessi al server. La risposta viene quindi spedita dal server-PI
all'user-PI. I comandi FTP specificano i parametri per instaurare la
trasmissione dati effettiva (data connection), come ad esempio il
numero di porta TCP da utilizzare (solitamente la 25), oltre alla natura
delle "file system operation" (store, retrieve, delete, append, ecc...).
L'user-DTP si mette dunque in ascolto sulla porta ed il server-DTP inizia
la sua trasmissione, in accordo con i parametri ricevuti
precedentemente.
89
Domain Name Service (DNS)
92
DHCPDISCOVER (per localizzare i server DHCP
disponibili)
DHCPOFFER (risposta del server ad un pacchetto
DHCPDISCOVER, che contiene i primi parametri)
DHCPREQUEST (richiesta diversa del client ad esempio
per prolungare il suo contratto di affitto)
DHCPACK (risposta del server che contiene dei parametri
e l'indirizzo IP del cliente)
DHCPNAK (risposta del server per segnalare al client che
il suo contratto di affitto è scaduto o se il client annuncia
una configurazione di rete errata)
DHCPDECLINE (il client annuncia al server che l'indirizzo
è già utilizzato)
DHCPRELEASE (il client libera il suo indirizzo IP)
DHCPINFORM (il client chiede dei parametri locali,
avendo già il proprio indirizzo IP)
Il primo pacchetto emesso dal client è un pacchetto di tipo
DHCPDISCOVER. Il server risponde con un pacchetto
DHCPOFFER, in particolare per sottoporre un indirizzo IP al
client. Il client stabilisce la propria configurazione, poi fa un
DHCPREQUEST per validare il proprio indirizzo IP (richiesta
in broadcast dato che DHCPOFFER non contiene il proprio
indirizzo IP). Il server risponde semplicemente con un
DHCPACK con l'indirizzo IP per conferma dell'attribuzione.
Normalmente, ciò è sufficiente per far si che un client ottenga
una configurazione di rete efficace, ma questa procedura
può essere più o meno lunga a seconda se il client accetti o
meno l'indirizzo IP...
93
Point-To-Point Protocol (PPP)
PPP significa Point to Point Protocol, tradotto protocollo punto a
punto. Si tratta di un protocollo molto più elaborato di SLIP
(ragione per cui l'ha sostituito), nella misura in cui trasferisce
dei dati supplementari, più adatti alla trasmissione di dati su
internet (l'aggiunta di informazioni in una trama è in gran parte
dovuta all'aumento della banda passante).
94
PPP è in realtà un insieme di tre protocolli :
un protocollo di incapsulamento di datagrammi
un protocollo di controllo di collegamento (LCP, Link
Control Protocol), che permette dei controlli di test e di
configurazione della comunicazione
un insieme di protocolli di controllo di rete (NCP, Network
Control Protocol), che permette dei controlli d'integrazione
di PPP all'interno di protocolli di livelli superiori
I dati incapsulati in una trama PPP sono detti pacchetti (o
packets in inglese). Questi pacchetti sono generalmente dei
datagrammi, ma può succedere che siano anche di altra
natura (da qui la denominazione specifica di pacchetti invece
di datagrammi). Quindi, un campo della trama è riservata al
tipo di protocollo a cui appartiene il pacchetto.
I dati di riempimento servono ad adattare la lunghezza della
trama per alcuni protocolli.
Una sessione PPP (dall'inizio alla sua chiusura) si svolge in
questo modo :
Alla connessione, viene inviato un pacchetto LCP
In caso di richiesta di autentificazione da parte del server,
può essere inviato un pacchetto corrispondente a un
protocollo di autentificazione (PAP, Password
Authentification Protocol, o CHAP, Challenge Handshake
Authentification Protocol o Kerberos)
Una volta stabilita la comunicazione, PPP invia delle
informazioni di configurazione con il protocollo NCP
I datagrammi da inviare sono trasmessi sotto forma di
pacchetti
Alla disconnessione, si invia un pacchetto LCP per
terminare la sessione
95
Approfondimento dei meccanismi
dell’infrastruttura di rete TCP/IP: l’incapsulamento
Per meglio comprendere cosa s’intende per incapsulamento, un
esempio di reale utilizzo può tornare utile. Analizziamo l’intero processo
di una richiesta di pagina Web, questa volta partendo dalla cima dello
stack dei livelli: la richiesta viene generata sul computer per mezzo del
browser e tramite il protocollo http; viene “passata” al livello sottostante,
che le aggiunge un’intestazione (detta header) contenente le
informazioni proprie del protocollo. Nel caso di TCP queste sono, tra le
altre, le porte/socket coinvolte, e i numeri di sequenza, informazioni di
cui il browser non conosce né deve conoscere nulla (ha già altro di cui
preoccuparsi). Il pacchetto, incapsulato in quello di livello inferiore,
prende il nome di payload di quest’ultimo. Il pacchetto TCP diventa
quindi il payload del pacchetto IP, che lo instraderà a destinazione, dove
risalirà la pila fino al server, che risponderà in maniera analoga
ripercorrendo il percorso nella direzione opposta (alcuni nodi attraversati
durante il tragitto potrebbero cambiare, ma questo è affare di IP). Un
esempio reale di incapsulamento potrebbe essere quello di una persona
che scrive una lettera di carta e la consegna alla segretaria, dicendole di
inviarla a “Pinco Pallino”. La persona addetta imbusterà la lettera,
scriverà l’indirizzo del signor Pallino sulla busta e la imbucherà. Il
postino si occuperà del trasferimento.
L’incapsulamento è mostrato nel dettaglio nella figura che segue dove i
dati vengono incapsulati durante la discesa dal livello applicativo fino al
livello fisico.
96
Domande di comprensione del capitolo 2
Rispondere alle domande che seguono per verificare di aver appreso
tutti i concetti illustrati in questo capitolo.
Le risposte alle domande sono riportate nell’allegato A alla fine del libro.
Se qualche risposta data dovesse risultare errata, si consiglia di
rivedere i concetti specifici dove si sono commessi errori.
1. Da quanti livelli è composto il modello TCP/IP?
a. 9
b. 8
c. 7
d. 4g
2. A quale livello del modello TCP/IP lavora il protocollo HTTP?
a. Network
b. Internet
c. Application
3. Quale protocollo permette di risolvere l’indirizzo ip in u nome di
computer all’interno di una rete Microsoft?
a. DNS
b. SMTP
c. Netbios g
4. Con quale notazione è scritto un indirizzo ip?
a. Decimale puntata g
b. Esadecimale
c. Decimale variabile
5. Indicare la corretta sequenza di scambio di pacchetti del Three
Way Handshake?
a. Syn – Syn/Ack – Ack g
b. Syn –Ack - Syn /Ack
c. Ack – Syn/Ack - Syn
97
Capitolo 3: Identificare
potenziali rischi
98
Tipologie generali di attacco
Gli attacchi si possono suddividere in due grandi categorie:
Attacchi passivi
Attacchi attivi
I primi non sono finalizzati a corrompere i dati o servizi della rete o dei
computer collegati alla rete, maservono solo a ottenere informazioni e
stimare le modalità possibili dell'intrusione remota.
Gli attacchi attivi, invece, sono finalizzati alla penetrazione remota della
rete oppure dei computer collegati alla rete, al furto dei dati o
all'esecuzione di attacchi allo scopo della perturbazione di
funzionamento del sistema operativo.
Un’ulteriore distinzione si può fare considerando lo scopo che
l’attaccante vuole raggiungere. Senza tenere in considerazione la
tecnica utilizzata, l’attacco è finalizzato al raggiungimento di tre obiettivi
che producono altrettante tipologie di attacchi:
Attacchi di accesso
Iniziamo presentando i più importanti attacchi di accesso.
Dumpster Diving
Tradotto alla lettera tale termine significa “Immergersi nei cassonetti”. Si
tratta di una tecnica largamente utilizzata per scoprire i segreti di una
società o di un privato semplicemente andando a rovistare nella loro
spazzatura dopo una giornata lavorativa. Tale azione può sembrare
molto banale ma spesso serve a scoprire informazioni molto importanti e
99
segrete come regole interne di un azienda, password amministrative,
contatti, e-mai, configurazione di firewall, IDS (Intrusion Detection
System), proxy, mappe del network (intranet, configurazione di router,
hub). Si basa sul principio che documenti ufficiali e privati
vengonobuttati tranquillamente all’interno dei cestini, senza prima aver
provveduto al taglio degli stessi. Per tutelarsi da questo problema è
sufficiente acquistare una di quelle macchine che permettono di tagliare
finemente tutti i documenti (frantumatori) e che ormai possono essere
trovate anche al supermercato a cifre che si aggirano al di sotto dei 100
€. Ovviamente nel caso in cui si debbano proteggere dei documenti
assai riservati è necessario l’utilizzo di una straccia-documenti
professionale, con taglio fino a 1×5 mm, misura utilizzata per tagliare i
documenti riservati del Governo Usa.
Eavesdropping
Consiste nell’atto di ascoltare le conversazioni (anche telefoniche)
oppure il traffico di rete per carpire informazioni utilizzabili per
un’eventuale azione hacker; è una tecnica abbastanza comune e di
banale applicazione che mette bene in evidenza tutti gli attuali limiti di
sicurezza di alcune tecnologie.
Ad esempio è applicabile nel wireless, dove un malintenzionato cerca di
catturare passivamente i segnali radio decodificando, o cercando di
decodificare, i dati trasmessi. Le stesse componenti hardware che sono
utilizzate per trasmettere e ricevere dati (schede di rete e
quant’altro),possono essere modificate in modo da intercettare il traffico
trasmesso su un particolare canale o sua una certa frequenza della rete.
Basta che un malintenzionato si trovi nel raggio di trasmissione wireless
e, con questi apparecchi scanner, è in grado di raccogliere tutti i dati
relativi alla trasmissione: range del segnale, utilizzatori della rete,
periodo di attività e inattività della stessa e altro ancora, che possono
essere impiegati per pianificare un attacco mirato alla rete anche se le
comunicazioni sono crittografate. In alcuni test effettuati si è evidenziato
come con tecniche di Eavesdropping si possano intercettare dati anche
a 16 chilometri di distanza. A volte individuare un potenziale punto di
accesso può richiedere tecniche meno sofisticate dello scanning
100
attraverso apparecchi hardware. Basta guardarsi un pò intorno per
individuare antenne o cavi di rete che inequivocabilmente indicano la
presenza di una rete Wi-Fi. Una tecnica simile all’Eavesdropping è il
Jamming. In questo caso si mira a creare delle interferenze per rendere
inutilizzabile un canale di comunicazione via radio. A volte il Jamming
può essere causato anche incidentalmente da alcuni elettrodomestici in
uso che disturbano le frequenze di trasmissione. Una caso tipico è
quello dei telefoni cordless che possono disturbare le frequenze degli
apparecchi utilizzati per ripetere il segnale televisivo da un apparecchio
all’altro. Il Jamming potrebbe essere un ottimo modello, ad esempio, di
attacco terroristico. Un’intera area può cessare le comunicazioni via
wireless se attaccata in questo modo.Infatti, in tal caso, i vari
apparecchi, non sono in grado né di ricevere né di inviare. Tuttavia
questa tecnica richiede l’utilizzo di hardware di notevole potenza.
Mediante tale tecnica si possono anche dirottare le comunicazioni tra il
client e il punto di accesso wireless, convogliandole su un altro punto di
accesso, per scopi evidentemente non troppo edificanti, che, invece,
vengono fatti figurare come legittimi.
Per difendersi da tecniche di intercettazione come l’ Eavesdropping, il
sistema più diffuso è quello di crittografare i dati trasmessi, in modo che,
se anche intercettati, non possano essere letti. Fino a qualche tempo fa
il modo più diffuso per scongiurare attacchi sullo standard 802.11 era
quello di crittografare i dati trasmessi con chiave WEP (Wired Equivalent
Privacy), tuttavia questa chiave si è rivelata molto debole e facilmente
attaccabile. Il problema dell’assoluta inaffidabilità della chiave WEP
risiede nella fase stessa di progettazione in cui si è pensato di utilizzare
una chiave statica per entrambe le postazioni: quella che trasmette e
quella che riceve. Successivamente in fase di analisi dell’algoritmo di
cifratura RC4 si sono evidenziati numerosi punti deboli che, di fatto,
consentono di ricostruire la chiave dopo avere intercettato una porzione
di traffico davvero limitata.
Un altro campo di applicazione dell’Eavesdropping è il VOIP. La fonia
over IP “consumer” è ormai largamente basata sul protocollo SIP.
Questo protocollo gestisce la signalizzazione delle chiamate
101
indifferentemente sia attraverso le porte UDP che attraverso quelle TCP,
mentre lo stream audio è trasportato via UDP grazie al protocollo RTP. Il
tutto viaggia completamente in chiaro, senza alcuna crittazione. La
tecnica di Eavesdropping applicata a questa tecnologia è leggermente
diversa da quella tradizionalmente applicata ai dati, ma il concetto base
è lo stesso: intercettare il traffico all’interno di una rete lan. Nello
specifico “si va a catturare” la signalizzazione e lo streaming audio delle
conversazioni in modo da riversare il tutto in comodi file WAV.
Snooping
L’attaccante cerca di guardare documenti cartacei e/o elettronici con la
speranza di carpire informazioni. Questa tecnica comprende sia l’atto di
frugare fisicamente all’interno di un ufficio e/o abitazione, che quello di
cercare tra i dati in un PC.
103
Una protezione contro la saturazione delle risorse da parte degli utenti
consiste nel fare in modo che non si possano consumare più di una
certa quota delle risorse condivise (ad esempio, la memoria di un
sistema multiutente, o la banda della connessione Internet aziendale).
Per poter implementare un tale meccanismo è necessario, però, un
processo di autenticazione; questo è possibile all’interno di
un’organizzazione, ma non lo è quando il servizio è anonimo o l’attacco
è praticabile prima dell’autenticazione. In questo caso l’attacco è difficile
da contrastare, e le contromisure si riducono a strumenti per individuare
l’attaccante e bloccarlo (se è uno), o all’interruzione o limitazione del
servizio attaccato per proteggerne altri. Una caratteristica della maggior
parte degli attacchi di negazione del servizio è che, dato che l’attaccante
non cerca di accedere al sistema bersagliato, la maggior parte degli
attacchi ha origine da indirizzi falsi (spoofed). Il protocollo IP ha una
lacuna nel suo schema di indirizzamento: non verifica l’indirizzo del
mittente al momento in cui il pacchetto viene costruito. Di conseguenza,
il cracker nasconde la propria ubicazione falsificando l’indirizzo del
mittente. La maggior parte degli attacchi di negazione del servizio, per
essere efficace, non ha bisogno di alcun traffico di ritorno al reale
indirizzo del cracker.
L’attacco DoS che tenta di esaurire la banda della vittima esiste in molte
varianti che vengono affrontate in maniera dettagliata nei paragrafi
successivi.
104
problemi di congestione a livello della connessione di rete usata
dal sito Web;
un carico di lavoro eccessivo per il server applicativo.
Qualunque limite venga raggiunto per primo, il sito comincerà a
manifestare disservizi osservabili per l'utente normale. Il primo tipo di
esito, ossia la saturazione della connessione di rete del sito sotto
attacco, è possibile solo se l'attaccante dispone di una banda pari o
superiore a quella del sito, così da essere in grado di generare un flusso
di richieste complessivamente insostenibile per il sito "vittima". Tale
condizione è improbabile per siti commerciali. Più realistica è la seconda
minaccia, qualora il server non abbia capacità di calcolo, memoria, disco
e I/O adeguatamente proporzionati alla banda verso Internet. Infatti, se il
numero di richieste inviate per unità di tempo supera la capacità di
evasione del sito, quest’ultimo comincerà ad esserne subissato. Le
richieste in arrivo (comprese quelle degli utenti "normali") inizieranno ad
essere accodate, causando progressivamente, a seconda dell'entità
dell'"ingorgo", ritardi sempre più grandi, la saturazione della coda, con
perdita delle nuove richieste, o addirittura, in casi estremi, il blocco del
sistema. Di conseguenza, il servizio normalmente erogato dal sistema
risulta sospeso, inaccessibile agli utenti: di qui la definizione Denial of
Service (letteralmente, "negazione di servizio"). La principale forma di
difesa per i fornitori del servizio consiste nel predisporre barriere
preventive (spesso sui firewall) per limitare il numero di richieste in
entrata a un valore sostenibile. In tal modo, il "volume di fuoco"
scatenato dai pirati viene bloccato, o per meglio dire "modulato", da
questa prima linea di difesa, assai più capace di resistere rispetto al
server vero e proprio. Non si tratta tuttavia di una soluzione
soddisfacente, in quanto protegge il server dal rischio di collassare per
l'eccessiva quantità di richieste, ma non interrompe l'attacco, che
continua a congestionare la connessione di rete usata dal sito, e quindi
non garantisce che il servizio riesca a mantenere un throughput normale
(per throughput s’intende la quantità di lavoro che un computer riesce a
svolgere per unità di tempo). In alternativa, si può tentare d’identificare
la macchina usata per mandare i messaggi di disturbo e "bandirla",
ossia cominciare a ignorare sistematicamente qualsiasi messaggio
105
provenga dal suo indirizzo. L'attaccante può tuttavia neutralizzare tale
difesa mediante tecniche di "spoofing", ossia falsificando l'indirizzo del
mittente in tutti i pacchetti che manda. Se in ogni pacchetto viene
inserito un indirizzo casuale, ogni volta diverso, un analizzatore di
traffico posto a difesa del sito non potrà identificare nessun mittente
specifico da "bandire" e non potrà quindi identificare e scartare i
pacchetti usati per l'attacco. Non solo, ma anche ammettendo che
l'attaccante non usi la contromossa spoofing, la strategia di
"imbavagliare" un sito mittente per arginare l'attacco è troppo
"sbrigativa" in quanto rischia di penalizzare utenti "innocenti" provenienti
dallo stesso sito: essi vedrebbero infatti rifiutate le loro richieste, che in
base all'indirizzo di provenienza sarebbero tecnicamente considerate
come partecipanti all'attacco. Ma si tratta solo di misure palliative: l'unica
difesa efficace consisterebbe nell’impedire l'attacco all'origine, ad
esempio ottenendo l’identificazione del responsabile mediante il
contributo del system administrator del sistema da cui provengono le
richieste (cosa questa non sempre banale tecnicamente, per non
parlare degli aspetti legali connessi al tema della privacy).
106
"normali" provenienti dagli stessi indirizzi. Senza contare che gli indirizzi
di provenienza indicati nei pacchetti delle richieste potrebbero essere
fasulli. Per "convincere" migliaia di sistemi a "partecipare"
inconsapevolmente a un attacco DDoS, gli hacker possono per esempio
immettere in rete un virus programmato per rimanere quiescente e
diffondersi rapidamente fino a una certa data prestabilita, per poi
attivarsi improvvisamente e simultaneamente in tutto il mondo,
indirizzando un volume abnorme di richieste a un solo sito Web
prefissato.
A questo scopo, la tecnica più diffusa consiste nell’attaccare
preventivamente un gran numero di sistemi, poco protetti (sistema
operativo non aggiornato, carenze di firewall e antivirus) ma ben
connessi (possibilmente, con banda larga), assumendone il controllo e
installandovi degli agenti software che rendono questi sistemi degli
zombie agli ordini dell’attaccante. L’insieme degli zombie è controllato in
modo centralizzato dall’attaccante, il cui software può ordinare a tutti di
attaccare contemporaneamente un singolo sistema, inondandolo di
107
pacchetti SYN spoofed diretti alla porta 80 del server.
108
operativi (in particolare di Windows) agli attacchi provenienti da Internet.
In ultima analisi, proteggere il proprio sistema perché non cada sotto il
controllo altrui è una responsabilità individuale (anche civile) premiata
con la sicurezza collettiva.
Attacco Smurf
Un'altra tecnica che gli aggressori possono impiegare per aumentare il
proprio potere di disturbo è detta "smurfing" e sfrutta sottilmente una
particolarità di funzionamento del comando PING e del modo in cui sono
trattati i suoi pacchetti. L'idea consiste nell’usare una rete R di svariati
host come "cassa di risonanza" e di rovesciare poi il "suono amplificato"
sull'host H da attaccare. Per questo, l'attaccante invia un pacchetto
PING, in cui ha falsificato l'indirizzo del mittente inserendo quello
dell'host H, verso l'indirizzo di broadcast della rete R. I pacchetti
vengono in tal modo inviati a tutti gli host della rete R. Ciascuno di essi
risponderà al ping mandando un pacchetto di risposta all'indirizzo del
mittente che come abbiamo detto è stato impostato all'indirizzo di H.
Questo effetto "moltiplicatore" consente all'attaccante di amplificare il
proprio potere di disturbo e di asservire intere reti al proprio fine,
inondando l'host attaccato di risposte PING provenienti da una pluralità
d’indirizzi origine. Le difese contro questo tipo di attacco richiedono che i
router delle varie reti "non si prestino al gioco" e blocchino
automaticamente flussi di traffico di natura chiaramente sospetta
quando li rilevano. Ma reti e router su Internet sono centinaia di migliaia
o milioni ed è sempre possibile che ve ne sia qualcuna non
perfettamente protetta e che l'hacker la scopra e tenti di sfruttarla.
109
Syn Flooding
Il SYN Flood è un attacco DoS che ha come scopo ultimo l'esaurire le
risorse del sistema vittima. Fino a qualche anno fa il SYN Flood era
molto temuto, ma adesso molti sistemi incorporano delle protezioni che
permettono loro di essere immuni a questo tipo di attacco. Quando un
client vuole instaurare una connessione, spedisce al server una
pacchetto SYN. Quando il server riceve questo pacchetto alloca una
certa quantità di risorse per una futura connessione e spedisce il
pacchetto SYN/ACK aspettandosi il pacchetto ACK necessario per
completare la connessione. Se il terzo e ultimo pacchetto non arriva
entro un certo tempo il server libera le risorse allocate in precedenza. Il
problema sfruttato da SYN Flood è che i server, anche se molto potenti,
esauriscono velocemente le risorse usate per la realizzazione dei
110
collegamenti, quindi, se in una certo lasso di tempo vengono ricevute
molte richieste parziali di connessioni il server esaurisce le risorse. Ad
esempio a sistemi, che sono in grado di gestire migliaia di connessioni
contemporaneamente, possono bastare poche decine di richieste
parziali di connessioni pendenti per esaurire questo tipo di risorsa.
L'idea dell'attacco è spedire una serie di pacchetti SYN in un breve
lasso di tempo in modo da consumare tutte le risorse del server. C'è
solo un particolare da tenere in considerazione, e cioè che i pacchetti
che l'attaccante spedisce devono avere l'indirizzo sorgente Spoofato
con un indirizzo di un host inesistente o spento. Questo si spiega con il
fatto che se l'host esiste, non appena riceverà il pacchetto SYN/ACK
spedito dal server, risponderà con un pacchetto di reset ed il server
libererà le risorse rendendo vani gli sforzi dell'attaccante. Ad un
attaccante basterà spedire qualche pacchetto SYN ogni 10 secondi per
tenere il server in una situazione di sovraccarico delle risorse. In una
situazione di questo tipo infatti il server non riuscirà mai a liberare le
risorse in quanto non appena sarà passato il tempo necessario per
deallocare un po’ di risorse arriverà subito un pacchetto SYN che le
riallocherà. Come si può capire questo attacco è molto pericoloso in
quanto si può attuare anche con una connessione lenta, inoltre
spoofando gli indirizzi IP sorgenti diventa quasi impossibile risalire
all'attaccante.
111
Ping of Death
I Denial of Service non si ottengono solo saturando le risorse del
bersaglio, ma anche, più semplicemente, causando malfunzionamenti.
Un esempio è stato il Ping of Death. Negli anni passati molte
implementazioni dello stack TCP/IP non sono state in grado di gestire
correttamente pacchetti ICMP Echo Request di grandi dimensioni. Il
risultato era l’invio di un pacchetto ping di dimensioni illegali (oltre
65.507 ottetti nel campo dati del pacchetto) che, dopo essere stato
frammentato per l’invio, a destinazione veniva riassemblato in modo
scorretto, con la possibilità di causare un overflow in memoria oltre i
65.535 byte massimi previsti per il pacchetto. I dati andavano, quindi, a
ricoprire altre informazioni (per esempio, l’indirizzo di ritorno di una
funzione) con conseguenti crash di sistema, reboot, kernel dump, e altri
effetti indesiderati. Più in generale, i buffer overflow si verificano quando
un’applicazione omette di controllare che i dati copiati nello spazio di
memoria riservato a una variabile non superino lo spazio allocato. Una
lunga serie di vulnerabilità di questo genere è stata scoperta, nel corso
degli anni, nei sistemi operativi e nel software applicativo. Spesso, tali
vulnerabilità sono state pubblicate e sono state sfruttate dai cracker
prima di essere corrette dai produttori.
Alcuni approcci per difendersi contro gli attacchi DoS sono i seguenti:
Sniffing
L'attività di monitorare i pacchetti di rete che arrivano al proprio
computer si chiama sniffing. Ogni sistema su una rete IP scambia
informazioni con altri sistemi tramite singoli pacchetti che hanno un IP
sorgente e un IP destinazione. Tipicamente un computer analizza e
processa solo i pacchetti che arrivano al suo dispositivo di rete (una
scheda ethernet, un modem ecc.) che hanno come IP di destinazione il
proprio oppure che sono pacchetti di broadcast, indirizzati cioè ad ogni
indirizzo IP attivo nello stesso network IP.
115
L'attività di sniffing il più delle volte è necessaria per monitorare e
diagnosticare problematiche di rete ma può essere impropriamente
utilizzata per intercettare informazioni sensibili di terzi, come login e
password di accesso ad un determinato servizio.
Si possono sniffare pacchetti su ogni interfaccia di rete, ma tipicamente
viene fatto su una scheda ethernet, per la quale possono esistere due
tipi di ambienti tipici:
Rete shareata, dove tutte le schede di rete dei computer nella rete
locale ricevono TUTTI i pacchetti, anche quelli destinati ad altri
indirizzi IP. In questo caso (rete ad anello con cavo coassiale
oppure rete a stella con un hub centrale) le schede di rete dei PC
normalmente selezionano solo i pacchetti destinati a loro e
scartano tutti gli altri che attraversano il mezzo trasmissivo a cui
sono collegati.
Rete switchata, dove ogni PC riceve solo i pacchetti di broadcast o
quelli destinati al proprio IP. Questa è tipicamente una rete a stella
con uno switch al centro, che provvede autonomamente ad
effettuare il forward ad ogni sua singola porta solo i pacchetti
destinati all'IP del dispositivo collegato a quella porta, oltre ai
broadcast, che vengono sempre propagati su tutte le porte.
116
le login e le password che sono state intercettate, altri sono più orientati
alla risoluzione di problematiche di rete (Ethereal, simile al Windows
Network Monitor) e permettono l'analisi di tutti i pacchetti intercettati, altri
hanno funzioni di monitoring e analisi a volte limitandosi a considerare
solo le intestazioni dei pacchetti (tcpdump, snoop, iptraf, ntop).
Il motivo principale per cui si preferisce cercare di criptare ogni
passaggio di login e password in rete (https, ssh, pop3s, sftp ecc.) è
proprio per evitare che qualcuno, tramite sniffing, li possa intercettare e
facilmente scoprire.
Spoofing
Per comprendere cos’è e come funziona lo spoofing, rivediamo la
composizione dei pacchetti IP e TCP.
117
Usando uno degli innumerevoli tools, un aggressore può facilmente
modificare questo indirizzo, in particolare l'indirizzo del mittente.
L' IP può essere pensato come un contenitore per il trasporto del TCP,
livello di rete ISO/OSI 4. Le caratteristiche principali del TCP sono: la
creazione di una connessione (protocollo orientato alla connessione); la
gestione di connessioni punto-punto; la garanzia che i dati trasmessi
giungano a destinazione in ordine e senza perdita di informazione
(tramite il meccanismo di acknowlegment e ritrasmissione); offre
funzionalità di controllo di flusso e controllo della congestione, vitali per il
buon utilizzo della rete IP che non offre alcuna garanzia in ordine alla
consegna dei pacchetti, al ritardo ed alla congestione; una funzione di
gestione delle connessioni ottenute attraverso il meccanismo delle
porte.
119
molto più blandi di quelli manifesti. In questo senso lo spoofing ha un
enorme vantaggio rispetto alle vulnerabilità vere e proprie, quindi
richiede maggiore attenzione e applicazione per difendersi
efficacemente.
Le tecniche di spoofing sono diverse, le più note e adoperate sono: ·
Spoofing dell'IP
Spoofing del DNS
Spoofing dell'ARP
Web Spoofing
SMS Spoofing
Mail Spoofing
IP Spoofing
L'Ip spoofing è l'attacco più diffuso dal momento che è il più facile da
eseguire. Tale attacco è reso possibile dal fatto che la maggior parte dei
router all'interno, per esempio, delle reti aziendali controllano durante la
richiesta di accesso ai servizi, solo l'indirizzi IP di destinazione e non
quello di provenienza. Nell'intestazione di un pacchetto IP si trova, come
detto in precedenza, il Source Address dove si trova l'indirizzi IP del
mittente. Se chi attacca, modifica questo campo può far credere, al
sistema bersaglio, che un pacchetto IP sia stato trasmesso da una
120
macchina differente ricevendo le risposte direttamente sul falso IP. Gli
attacchi di IP Spoofing possono essere divisi in tre categorie:
121
Hijacking
L'Hijacking è una tecnica molto raffinata che permette di intromettersi in
una connessione esistente e prenderne il controllo. Il fenomeno
dell'Hijacking viene trascurato in quanto trovandosi già nella sottorete
dell'host che si vuole impersonare basterebbe usare uno sniffer per
catturare username e password per poi collegarsi "legalmente". Tuttavia
è possibile trovarsi in situazioni in cui, ad esempio, vengono usate
password "usa e getta" e quindi, anche se l'attaccante riuscisse a
sniffarne qualcuna, quando andrà ad usarle queste saranno già
scadute.
IP Spoofing Cieco
Quando si parla di IP Spoofing solitamente ci si riferisce all'IP Spoofing
cieco. Con questa tecnica l'attaccante cerca di farsi passare per un host
qualunque d'internet, non facente parte della sottorete in cui si trova. In
questo caso si parla di Spoofing cieco in quanto l'attaccante non avrà
nessuna possibilità di vedere i pacchetti mandati in risposta ai pacchetti
(spoofati) che ha spedito. Questi ultimi infatti saranno indirizzati all'host
che egli sta impersonando, impedendogli quindi di venire a conoscenza
del Acknowledgement number e Sequence number corretti per
122
continuare la connessione. Come si può dedurre le possibilità dello
Spoofing cieco sono infinitamente inferiori a quelle che si potevano
avere con lo Spoofing non cieco. Molte volte alcuni server danno un
accesso privilegiato a degli host fidati attraverso servizi di “rlogin” senza
password o servizi simili. In un caso di questo tipo l'unico controllo è
fatto sul numero IP sorgente della connessione, quindi se un attaccante
riuscisse ad aprire una connessione spoofando il proprio IP potrebbe
lanciare dei comandi al server facendogli credere di essere l'host fidato.
Se un attaccante tentasse di instaurare una connessione con il proprio
IP Spoofato, non sarebbe in grado di vedere il pacchetto di risposta del
server, ovvero il secondo dei 3 pacchetti. Questo è il problema, in
quanto sono sapendo il Sequence number del pacchetto 2 non saprà
mai qual è l' Acknowledgement number corretto del pacchetto 3 e quindi
l'instaurazione della connessione non potrà andare a buon fine. L'unica
soluzione a questo problema è cercare di predire il Sequence number
corretto
Prima di iniziare a trattare questi tre tipi di attacchi facciamo una breve
introduzione sul DNS: il DNS (Domain Name Server) è il sistema
utilizzato per effettuare la conversione tra indirizzo IP e il nome dell'
host. Esso può essere considerato come un database di grandi
dimensioni distribuito tra più host in internet. Il servizio permette così di
utilizzare i nomi e le parole di uso comune per ricercare ad esempio un
sito internet. I dati richiesti e/o inviati da un DNS viaggiano sulla rete
utilizzando il protocollo UDP. Le garanzie vengono affidate al protocollo
123
del DNS stesso: tale protocollo ha però delle vulnerabilità. deve fare
una richiesta. La risposta a questa richiesta, contiene lo stesso ID. Il
campo che interessa agli Spoofer è il campo "Questions" : ogni
domanda ha un type, ed ogni risposta ha un type (per Type si intende la
corrispondenza tra IP address e canonical name). Dato il formato
dell'header di un pacchetto DNS, si ha che l'autenticità delle risposte è
fondamentale. Le garanzie che vengono offerte sono:
Cache poisoning
Il DNS cache poisoning è un attacco ad un server dns in modo che
chiunque richieda un dominio venga tuttavia reindirizzato ad un altro
server, senza che se ne accorga. Tale attacco si basa sul fatto che tutti i
DNS archiviano le richieste in una memoria cache, che include un TTL
(Time to Live, vale a dire una parte dell' IP Header che determina il
numero massimo di router che possono essere attraversati da un
pacchetto). Con un TTL grande e una mappatura scorretta di alcuni
indirizzi IP si ottengono informazioni altrettanto scorrette. Supponiamo
che: • dns.my.org sia un "name server" con molti client • dns.my.org
accetta richieste ricorsive • pippo.net sia sotto il controllo del nemico •
client.my.org sia un client che usa per server DNS dns.my.org
124
client.my.org invia una richiesta al DNS per un dominio per cui
dns.my.org non è autoritativo. dns.my.org accetta la richiesta ricorsiva e
risale la gerarchia dei nomi per chiedere al server autoritativo.
dns.my.org, ricevuta la risposta, la invia a client.my.org. Quella appena
descritta è la procedura normale che ogni richiesta dovrebbe seguire.
Vediamo ora come avviene l'attacco. Chi controlla pippo.net fa una
richiesta a dns.my.org per l'indirizzo IP di www.pippo.net, dns.my.org
non ha il record in cache, quindi richiede al server autoritativo di
pippo.net, ns.pippo.net, l'informazione richiesta. Questa richiesta
contiene l'ID che sarà semplicemente implementato per le prossime
richieste: in questo modo il nemico è venuto a conoscenza dell' ID! Noto
a questo punto l'ID, il nemico chiede a dns.my.org l'indirizzo
www.microsoft.com (supponendo che l'indirizzo non sia in cache),
immediatamente dopo si spaccia per il "name server" autoritativo di
microsoft, grazie all'IP Spoofing e spedisce una serie di risposte con l'ID
che aveva ottenuto precedentemente, incrementandolo di volta in volta.
Se l'attacchi riesce dns.my.org avrà in cache la corrispondenza
www.microsoft.com con l'indirizzo IP diverso da quello vero. Un attacco
di questo tipo poteva essere fatto per un lungo periodo senza che ci si
potesse accorgere facilmente di essere sotto attacco. Come prevenire
allora tale attacco ? E' necessario che il server DNS stesso sia sicuro.
Per minimizzare i rischi ogni organizzazione e ogni responsabile per un
dominio dovrebbero assicurarsi che il "name server" utilizzato non sia
vulnerabile al cache poisoning.
Spoofing dell'ARP
Questo tipo di Spoofing è una variante sul tema dello spoofing IP e
sfrutta un punto debole molto simile. Un computer collegato a un
network basato su IP/Ethernet ha due indirizzi: uno è l'indirizzo fisico
della scheda di rete ed è chiamato MAC address, mentre il secondo è
l'indirizzo IP. -L'indirizzo fisico o MAC Address è , in teoria, un indirizzo
unico e non sostituibile, che è immagazzinato all'interno della scheda di
rete. In teoria con particolari software è possibile intervenite all'interno
della ROM della scheda di rete e modificare il MAC address. Il rischio,
peraltro molto remoto, è che se dovreste incontrare nella vostra lan
un'altra scheda di rete con lo stesso MAC address ci sarebbe con
conflitto di instradamento ed entrambe le due schedi di rete non
riuscirebbero a ricevere pacchetti. L'indirizzo IP è virtuale, rappresenta
un'astrazione per permettere di costruire applicazioni senza obbligare a
conoscere quale tecnologia di network viene utilizzata, e viene
assegnato via software. Su un segmento di rete è necessario che ogni
macchina abbia un indirizzo univoco, ed assegnato solo a quella
macchina. Nel caso in cui due macchine abbiano lo stesso indirizzo IP
entrambe le macchine non riusciranno più a comunicare con il resto
della rete. IP e Ethernet lavorano (e devono lavorare) insieme dato che
il protocollo IP comunica attraverso la costruzione di pacchetti che non
possono essere consegnati senza la presenza del layer di rete. Infatti
nel nostro caso i pacchetti IP sono consegnati attraverso Ethernet, il
quale divide i pacchetti nei frame, aggiunge l'header ethernet per la
consegna e spedisce i pacchetti attraverso il cavo di rete fino allo
switch. Lo switch decide a quale delle sue porte deve spedire il frame,
126
comparando l'indirizzo di destinazione del frame con gli indirizzi
memorizzati nella sua tabella interna, nel quale "mappa" la porta
ethernet al MAC Address della scheda a cui è collegato. Quando un
frame ethernet viene costruito, deve essere costruito partendo da un
pacchetto IP. Ovviamente, in quel momento durante la costruzione del
frame, il protocollo ethernet non ha idea di quale sia il MAC address di
destinazione della macchina a cui il frame deve essere spedito, e
questo dato è necessario per costruire l'header ethernet che come detto
prima contiene il MAC address di destinazione e sorgente del frame.
L'unica informazione che è disponibile è l'IP di destinazione, che come
detto sopra è virtuale e non è univoco (possono esistere X computer nel
mondo con l'indirizzo 192.168.1.1, ma "dovrebbe" esistere solo e solo
una scheda di rete con un indirizzo fisico.) ed è quindi necessario
trovare un modo per cui partendo da questo dato, il protocollo ethernet
possa arrivare a trovare il corretto MAC address della macchina di
destinazione. Quindi dato l'indirizzo IP (virtuale, astratto) trovare un
modo per risalire all'indirizzo fisico (reale, univoco) di computer
all'interno di una inter-rete complessa. Questo meccanismo si chiama
ARP, ovvero Address Resolution Protocol, e che è quello che adesso
vediamo. Il protocollo ARP o semplicemente ARP, lavora inviando verso
l'esterno con un broadcast un pacchetto " ARP request ". Un pacchetto
ARP request in poche parole, invia a tutti i computer della rete una
domanda: " Il tuo indirizzo IP è x.x.x.x? se si inviami indietro il tuo
indirizzo MAC ". Come detto questo pacchetto viene spedito in
broadcast a tutti i computer sulla rete che sia una LAN (Local Area
Network) che uno "switched lan" (rete complessa) e ciascun computer
esamina il pacchetto, verifica se ha assegnato in quel momento
l'indirizzo ip richiesto nel pacchetto ARP, e se questa condizione è
verificata, invia indietro alla macchina richiedente un pacchetto " ARP
reply" contenente il proprio MAC address. A questo punto la macchina
che deve inviare il frame ethernet riceve il pacchetto ARP reply, estrae
l'indirizzo MAC (quindi fisico, non astratto come l'indirizzo IP) e completa
l'header del frame e lo invia alla macchina destinataria attraverso la rete.
Per ridurre al minimo il numero delle richieste ARP che vengono inviate
su un segmento di rete, i sistemi operativi (e con essi router e switch)
127
immagazzinano una cache delle entry ARP che ha finora ricevuto.
associazione IP address / MAC address e siccome l'ARP è protocollo
“senza sessione” ed è un protocollo “inaffidabile” (nel senso che il
protocollo ARP non apre la sessione, invia i dati, e chiude la sessione
ma invia solo la parte dadi ed inoltre inaffidabile perché se il pacchetto
ARP non giunge a destinazione non viene re-inviato ad oltranza) molti
sistemi operativi e dispositivi che necessitano di fare cache delle entry
ARP (router appunto) aggiornano la propria tabella solo nel caso in cui
alla macchina giunge una risposta alla sua request (ovvero quando ad
un ARP Request, riceve la relativa ARP Reply). Date queste premesse
iniziamo a spiegare cos'è l'ARP Spoofing ovvero l'invio "forzato" di
pacchetti ARP reply, in cui il computer che riceve questo pacchetto ARP
reply viene messo in condizione tale per cui crede di spedire i frame
ethernet al computer A (ovvero quello legittimo destinatario della
connessione) ma che invece fisicamente lo spedisce al computer B il
quale ha "spoofato" la entry ARP. Questo processo di "forzare l'update
di una macchina bersaglio" con delle entry ARP è chiamato "ARP
Poisoning", letteralmente avvelenamento ARP.
Web Spoofing
Il web spoofing consiste nel far credere ad un utente che sta visitando il
sito web desiderato, con la pagina richiesta, mentre invece, ne guarda
un'altra modificata. Questa tecnica fa un uso massiccio di script
realizzati con il linguaggio JavaScript. Supponiamo di visitare il sito
www.acquisti.net; al momento della connessione al sito, la falsa pagina
principale, residente sul server web attaccante e creata opportunamente
simile all'originale, si colloca immediatamente tra il nostro browser web
e le altre pagine richieste successivamente al server fidato: la finta
pagina si comporterà, quindi, come un server proxy non voluto e non
visibile. Così, l'attaccante, potrà vedere tutto ciò che vede il visitatore del
sito: informazioni, moduli e password. Usando JavaScript, chi attacca, è
in grado di reindirizzare la connessione, modificare la barra di stato del
browser, disabilitare alcune funzioni dei menu del browser e impedire la
visualizzazione del codice della pagina. La soluzione al problema è
128
drastica, bisognerebbe disattivare, dal browser web, il supporto di
JavaScript, ma soprattutto visitare solo siti veramente fidati, assicurarsi
che la riga degli indirizzi del browser sia sempre visibile, ed infine Fare
attenzione all’indirizzo URL visualizzato dal browser, assicurandosi che
punti sempre al server a cui si pensa di essere connessi.
SMS Spoofing
Lo spoofing SMS consiste nell'invio di SMS (Short Message Service) il
cui mittente è falso oppure inesistente. Tutti gli operatori di telefonia
mobile offrono il servizio di invio SMS attraverso appositi Gateway SMS
raggiungibili via modem. È possibile collegarsi via telefono a questi
gateway ed ottenere il servizio di invio SMS attraverso uno specifico
protocollo di comunicazione. Due sono i protocolli usati per comunicare
con i gateway SMS: • TAP (Telematic Application Program) • UCP
(Universal Computer Protocol) composto da:
<STX>HEADER/DATA/CRC<EXT><STX> è l'inizio del messaggio
<EXT> è la fine del messaggio I campi dell'header del messaggio,
separati da “/”, sono: • TNR [numeric char]: intero tra 0 e 99. è il numero
di transazione casuale • LNG [5 numeric char]: è il numero di char tra
<STX> e <EXT> • O/R [1 char]: O è la richiesta di servizi, R è la risposta
alla richiesta del servizio • OPN [2 numeric char]: codice del servizio
richiesto. La lista completa dei servizi è elencata nel documento Ufficiale
di UDP, “ETS 133-3”, redatto da ETSI (European Technology Standard
Institute). I servizi soggetti a SMS spoofing sono:
1. invio di sms singolo
2. invio di sms multiplo. Il campo DATA cambia da servizio a servizio.
Per il servizio 1 (invio di sms singolo) in DATA avremo:
AdC [string of numeric char]: indica il destinatario (non è
possibile inserire il carattere “+”)
OadC [string of numeric char]: indica il numero sorgente
del messaggio • OAC [string of char]: indica il codice di
autenticazione del mittente (vuoto)
MT [1 numeric char]: indica il tipo di sms inviato
129
AMsg [string of char]: indica il messaggio vero e proprio.
Come detto sopra, Amsg è il messaggio da inviare, i
caratteri che compongono il messaggio non sono inviati
in chiaro, ma vengono codificati in stringhe IA5: la
codifica IA5 non fa altro che trasformare un carattere nel
corrispondente codice ASCII. In rete esistono diversi
programmi per comunicare con i server SMS, il più
diffuso è SMS Client. Per fortuna ormai quasi tutti i server
che provvedono allo smistamento e all'instradamento
degli SMS sono immuni a questo tipo di attacco.
Mail Spoofing
Con mail spoofing si fa apparire un allegato di una mail come se fosse
di un tipo diverso da quello che è realmente. Questo attacco si basa su
una vulnerabilità dei MIME TYPE, usati per inviare e-mail (il MIME Type
specifica il tipo di dati che vengono trasferiti attraverso il protocollo
HTTP o SMTP). Questo tipo di Spoofing è una tecnica molto semplice, i
cui effetti possono essere disastrosi: basta modificare in maniera
opportuna il nome dell'allegato da inviare: esempio pratico: il nome
allegato è “pippo.exe”, cambiando il nome da: “pippo.exe” a “pippo.jpg
(255 spazi vuoti) .exe” Quando l'e-mail arriva, il client interpreterà il
nome dell'allegato solo come pippo.jpg. L'ignaro utente cercherà di
visualizzare il file, ma in realtà eseguirà involontariamente pippo.exe.
L'esecuzione di un programma creato ah hoc può portare alla perdita di
dati oppure all'apertura di una back-door sulla macchina della vittima.
L'unica soluzione di difesa a questo tipo di attacco consiste nel NON
aprire mai gli allegati di persone non fidate.
130
Attacco al numero di sequenza
Consideriamo cosa accade in un attacco di tipo IP spoofing. Il cracker
prima identifica il suo bersaglio; contemporaneamente, deve
determinare l’incremento usato per l’initial sequence number (ISN), il
numero d’ordine iniziale dei pacchetti TCP che serve a riconoscere i
pacchetti. L’ISN è previsto essere pseudo casuale per ogni nuova
connessione, ma molte implementazioni si sono limitate a incrementare
il numero di sequenza, permettendo di prevedere il prossimo ISN e
agevolando lo spoofing. In ogni caso, il tipo di numerazione adottata può
essere determinata eseguendo una serie di connessioni legittime con il
sito target, e notando gli ISN che vengono restituiti durante
l’handshaking iniziale. In questa fase, il cracker accetta il rischio di
mostrare il suo vero indirizzo IP. Una volta stabilito il modo di
incrementare l’ISN, il cracker invia al target un pacchetto TCP SYN con
l’indirizzo del mittente falsificato (spoofed). Il target risponde col
pacchetto TCP SYN ACK, che viene inviato all’indirizzo fasullo e non è
visto dal cracker. Il pacchetto SYN ACK contiene l’ISN del sistema preso
di mira; per stabilire una connessione TCP completa, l’ISN deve ricevere
un ACK (riconoscimento) basato sull’ISN ricevuto. Il cracker deve
indovinare l’ISN in base al tipo di incremento che ha osservato, e invia
un TCP ACK con il mittente falso e il riconoscimento dell’ISN. Se tutto
131
questo avviene in modo “corretto”, il cracker riesce a stabilire una
connessione legittima con il sistema bersaglio. Sarà in grado di inviare
comandi e informazioni al sistema, ma non potrà vedere le risposte. Un
caso interessante, ampiamente utilizzato e che esemplifica il problema,
è costituito dagli attacchi cosiddetti smurf, che prendono il nome del
programma che è stato utilizzato. Lo scopo dell’attacco è saturare la
banda disponibile per un certo indirizzo x.x.x.x, pur non disponendo
della banda necessaria. Per realizzare questo attacco, occorre
individuare una rete che abbia a disposizione una banda maggiore di
quella della rete da saturare, e che abbia la caratteristica di
“amplificatore di smurf”: deve accettare pacchetti ICMP Echo Request
(ping) verso il proprio indirizzo di broadcast (che indichiamo come
y.y.y.y), e includere un numero elevato di host disposti a rispondere. Per
attuare l’attacco, il cracker invia dal proprio sistema dei pacchetti ping
con mittente x.x.x.x falsificato e destinatario y.y.y.y. Il pacchetto è
instradato verso l’amplificatore di smurf, dove viene distribuito in
broadcast. Ognuno dei sistemi che risponde invia, quindi, un pacchetto
ICMP Echo Replay all’indirizzo x.x.x.x. Maggiore è il numero di host che
rispondono sulla rete, maggiore è il fattore di amplificazione dell’attacco
(da cui il nome amplificatore di smurf). In questo modo l’attaccante,
inviando pochi pacchetti all’amplificatore, può riuscire a inviare migliaia
di pacchetti alla vittima x.x.x.x, con l’effetto di saturazione voluto. Un
altro esempio di IP spoofing prevede l’attacco a un sistema configurato
per offrire i servizi remoti di rlogin (connessione come utente remoto) o
rsh (remote shell – uso remoto del sistema). In questi casi, l’indirizzo IP
di origine è un elemento importante nel determinare chi è autorizzato ad
accedere al servizio. Gli host remoti che sono accettati su tali
connessioni sono chiamati fidati. Se un cracker riesce a usare l’IP
spoofing per ingannare il sistema bersaglio, facendogli credere che i
messaggi vengono da un sistema fidato, è possibile che riesca a
ottenere accesso e compromettere il sistema. Se il cracker trova un
sistema X che ha una relazione di fiducia con un altro sistema Y, e che
si trova su una rete accessibile al cracker, allora può usare l’IP spoofing
per avere accesso al sistema X. Tuttavia, il cracker deve prima risolvere
un problema: la vittima invierà pacchetti al sistema fidato in risposta ai
132
pacchetti spoofed (con indirizzo del mittente falsificato). In base alle
specifiche del protocollo TCP, il sistema fidato risponde con un
pacchetto RST (reset), perché non gli risulta che sia in atto una
connessione. Il cracker deve impedire che il sistema fidato riesca a
inviare questo pacchetto.
133
c. Denial of Service g
3. Perché Il dns spoofing è pericoloso?
a. Un malintenzionato può accedere ad un server al posto
nostro
b. Un malintenzionato può rubarci l'indirizzo IP
c. Possiamo essere reindirizzati su un sito Web falso g
4. Se qualcuno ruba il nostro nome utente e password di posta per
entrare nella nostra casella di posta elettronica, di che tipo di
attacco si tratta?
a. Spoofing
b. Replay attack g
c. Denial of Service
5. Quali, tra i seguenti attacchi, utilizza pacchetti ICMP?
a. Syn Flooding
b. Spoofing
c. Ping of death g
134
Capitolo 4: Il codice maligno
I programmi nocivi
Sempre più spesso si sente parlare, nell’ambito informatico, di frode, di
sicurezza, di virus e di programmi che “eliminerebbero” tutto questo.
Come tutti sappiamo il pc è una macchina che esegue degli ordini che
gli andiamo ad impartire partendo dal semplice avvio.
I programmi
Bisogna partire sicuramente dalla definizione di programma nocivo
(dall’inglese MALWARE).
Il malware è un nome generico che sta ad indicare tutti quei programmi
nocivi pericolosi per la vostra macchina.
135
Rientrano in questa fattispecie gli ADWARE, BACKDOOR, ROGUE,
TROYAN, VIRUS, WORM.
Tutti questi malware ovviamente sono scritti con diversi linguaggi
informatici e ovviamente ad essi gli vengono impartiti comandi di
esecuzione differenti in base alle conseguenza che provocano sulle
macchine!!
Ovviamente i principali programmi attaccabili sono quelli scritti in
linguaggi generici che si appoggiano sul sistema operativo, proprio
come quelli eseguibili o binari. Queste tipologie di programmi
interagiscono direttamente con il sistema operativo. Ovviamente se su
una macchina sono impostati limiti, difficilmente valicabili, se non in
possesso dei privilegi di amministratore, i programmi nocivi hanno più
difficoltà a essere eseguiti su quel pc.Il rischio è quindi proporzionato ai
privilegi di utente di chi esegue il programma. In ambiente Linux le cose
sono molto più sottili: impostando opportunamente i permessi Set-User-
ID (SUID) sul file eseguibile, è possibile fare in modo che a un
determinato programma, seppur eseguito da un utente non privilegiato,
vengano concessi durante l'esecuzione diritti equivalenti a quelli che
avrebbe se fosse stato eseguito dall'amministratore. Naturalmente
l'impostazione di tali diritti è possibile solo all'amministratore. Purtroppo,
falle di security o programmi ingannevoli possono essere sfruttati per
ottenere privilegi di super-user giusto per il tempo sufficiente al fine
d’impostare i permessi SUID sul programma. Altri tipi di programma
realizzati con le stesse tecniche di base, ma mirati a gestire periferiche
(driver) o a implementare funzioni comunemente utilizzate da più
programmi (librerie condivise) sono memorizzati in file che in ambiente
Windows presentano estensioni come .SYS o .DLL, mentre in Linux i
suffissi, non sempre presenti, possono essere .sa, .so, .lib. I programmi
appartenenti a questa categoria possono facilmente acquisire "pieni
poteri", e vengono mandati in esecuzione a seguito d’impostazioni
presenti nei file di configurazione del sistema operativo stesso, come ad
esempio, in ambiente Windows, il file SYSTEM.INI o lo stesso Registro
di Sistema.
136
Un’altra tipologia di programmi è quella degli script. Generalmente negli
script si possono individuare diverse caratteristiche importanti per la
validità e sicurezza della macchina:
- Complessità relativamente bassa
- Integrazione di processi di configurazione automatica del sistema
- Utilizzo di un linguaggio interpretato
- Linearità
- Richiamo ad altri programmi
- Mancanza di interfaccia grafica
Può essere di tipo Batch e cioè, consiste in un file contenente una
successione, o gruppo di istruzioni uguali ai comandi che l'utente può
impartire interattivamente da una finestra DOS (Prompt dei comandi)
o, in Linux, da una finestra terminale; può essere di tipo Shell e in
questo caso individua uno script per la stessa shell o per l’interprete
della riga di comando di un sistema operativo. Non è da configurarsi
ovviamente con un linguaggio di programmazione con il quale non
bisogna fare confusione.
C’è un ambiente di lavoro WSH(Windows Scripting Host) che
descrive un’esecuzione di script eseguiti in vari linguaggi come il
VBScrispt e JScript:
139
Vie di accesso al PC
Uno dei modi per scatenare effetti indesiderati nei programmi
sfruttandone difetti e vulnerabilità consiste nel fornire dati
"opportunamente" scelti in input. Ma quali sono le strade attraverso le
quali può passare questo flusso di dati? E in quali circostanze tali strade
risultano effettivamente aperte e percorribili?
Una modalità di sfruttamento di un input non controllato è nella fornitura
di input troppo lunghi tali da provocare un buffer overrun o overflow
ossia il debordare dei dati forniti nello spazio di memoria riservato
all’esecuzione di una query (richiesta) al database residente sul server,
permettendogli così di alterarne il contenuto sfruttando la via di accesso
aperta dall’applicazione (vedi più avanti una spiegazione dettagliata di
“buffer overflow”). Gli attacchi che mirano a prendere il controllo del
programma o della macchina facendo leva su questa vulnerabilità si
chiamano attacchi buffer overflow ed è probabilmente la tecnica che
ultimamente sta generando il maggior numero di minacce alla sicurezza
del software (e che, parallelamente, sta costringendo i produttori
all'emissione di una serie interminabile di patch per la sicurezza,
aggiornamenti critici e Service Pack).
140
In particolare, in C, se si usano per l'input/output le librerie standard,
numerose funzioni non hanno la possibilità di verificare se l'area di
memoria di destinazione dei dati (generalmente un array di caratteri) ha
dimensioni sufficienti per contenerli tutti. Esse comprendono:
142
comunque già eseguito ed è stato proprio quel software a chiederci di
cambiare disco e riavviare. Sfortunatamente tale sistema fa sì che se un
virus riesce a installarsi nel settore di boot di un floppy, nello scenario
sopra descritto sarà eseguito prima che ce ne accorgiamo. Oltretutto i
virus di questo tipo sono astutamente progettati in modo da emettere
esattamente il "normale" messaggio di disco non avviabile, così da non
mettere in allarme l'utente. Una volta apparso il messaggio, insomma, il
nostro sistema è potenzialmente già infettato dal virus, che ha
immediatamente provveduto a trascriversi su qualche area del disco
fisso (per esempio, il relativo settore di boot) quando il floppy sarà
rimosso dal lettore.
Ovviamente ci sono una serie di soluzioni che porterebbero almeno ad
una prima difesa a queste tipologie di attacchi.
Andiamoli ad analizzare:
143
Evitare di aprire gli attachment di e-mail senza averli prima
esaminati con un antivirus e disattivare sul programma di posta
elettronica ogni eventuale funzione di anteprima messaggio. Se
presente, utilizzare la funzione che disabilita il caricamento delle
immagini presenti nelle mail. Caricare le immagini solo dopo aver
verificato che la mail proviene da un indirizzo fidato.
Nell'installare e configurare un nuovo programma, diffidare delle
opzioni "anteprima" e di quelle che abilitano l'esecuzione
automatica di script e macro all'apertura dei documenti; riflettere
sempre anche sulla reale necessità di attivare quelle che
comportano connessioni automatiche a siti Web da parte del
programma.
Durante la navigazione Web e nella lettura delle mail: o diffidare
delle URL misteriosamente lunghe e contenenti lunghe sequenze
di valori esadecimali o, peggio, codice javascript; o diffidare dei
dialog box che propongono l'installazione di plug-in, "viewer" e
applicativi vari, anche se firmati in modo digitale, se l'autore è
ignoto; o tenere il browser impostato su un livello di sicurezza
"medio" o "alto"
Evitare sempre di avviare il sistema con un floppy di dubbia
provenienza (o usato in precedenza su altri sistemi poco
controllati). Tenere sempre a disposizione un disco di avvio,
protetto da scrittura, che sia stato controllato con un antivirus
aggiornato. ..e, naturalmente, eseguire sempre regolarmente il
backup dei propri dati, per essere preparati all'evenienza che le
misure preventive sopra suggerite non fossero sufficienti.
144
Adware
Adware è l'abbreviazione di "advertising-supported software". Sono per
la maggior parte Software gratuiti in cui sono inserite delle pubblicità, di
solito banner, che rallentano la navigazione.
Questo fa sì che il produttore del software possa trarre profitto dal suo
lavoro senza che l'utente finale sia costretto a pagare il software.
Molti poi danno l'opzione attraverso cui è possibile pagare una somma
per rimuovere i banner.
Ovviamente è una forma alquanto discutibile ma molto adottata.
145
Spyware
Teconologia che mira a raccogliere informazioni su di una persona
senza che questa ne sia a conoscenza. Di solito si tratta di software che
viene installato sul PC ad insaputa della persona, ad esempio nascosto
in alcuni programmi shareware come Kazaa.
Alcune persone considerano i cookies degli spyware ma questi, a
differenza, sono largamente conosciuti ed i browser sono solitamente
equipaggiati per poterli evitare.
Le conseguenze degli spyware sono:
Diffusione dei dati riguardanti le nostre navigazioni e del nostro indirizzo
mail a compagnie che sommergeranno la casella di posta con pubblicità
"mirate"
Installazione di dialer, ovvero programmi per la connessione a numeri
con tariffazione maggiorata
Modifica delle impostazioni del browser: blocco della pagina di avvio in
Internet Explorer
I sintomi sono rispettivamente ai casi su esposti:
Nel primo caso ci ritroveremo la casella di posta sommersa da un giorno
all'altro di pubblicità mai richiesta, magari riguardante gli argomenti dei
siti visitati il giorno prima.
Nel secondo caso o ci accorgeremo che al momento di connetterci il
numero è stato cambiato (non inizia più con 700), oppure sentiremo
comporre un numero ben più lungo di quello usato normalmente
(sempre che sia udibile la composizione del modem) o ci arriverà a casa
una bolletta salatissima.
Nel terzo caso anche impostando una diversa homepage il
cambiamento non verrà salvato, oppure qualunque indirizzo digitiamo
accederemo sempre allo stesso che reclamizza qualcosa, o comunque
avremo delle "limitazioni nella navigazione"
Ovviamente ci sono anche dei rimedi a questi problemi.
146
In caso di programmi di composizione telefonica (dialer) controllare se è
possibile disinstallarli da Start > Impostazioni > Pannello di
controllo>Installazioni Applicazioni
Scaricare e utilizzare programmi gratuiti specifici per il problema (il
vostro antivirus non è adatto!) quali Adware o Spybot.
Se i due programmi precedenti hanno fallito provare con CWSHredder
Controllare che non vi siano programmi estranei all'avvio dal pannello
"Esecuzione automatica" che appare digitando in Start > Esegui il
comando msconfig, oppure avvalendoci di programmi come Startup
Control Panel.
Se siete esperti nel maneggiare il registro di windows controllate queste
chiavi (fate sempre una copia di backup di quello che state per
modificare) e cercate nomi di programmi "strani". Se eliminandoli la
pagina di Explorer (o comunque ciò che vi dava noia) si sblocca, allora
avete cancellato la cosa giusta. Altrimenti rimettete tutto com'era e
riprovate con un'altra voce ;)
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVers
ion\Run
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVers
ion\RunOnce
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVers
ion\RunServices
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVers
ion\RunServicesOnce
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersi
on\Run
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersi
on\RunOnce
Un software specifico per la scansione delle voci del registro alla ricerca
di spyware è HijackThis
Tipi di file
In ambiente Windows ogni volta che in una finestra di Esplora risorse
(Windows Explorer) viene selezionato e aperto un file, l'azione da
compiere dipende dal suo tipo, rivelato dal suffisso del suo nome. Se si
tratta di una delle varie tipologie di file eseguibili oppure di uno script
(quindi con estensioni come EXE, COM, BAT, VBS, PL, TCL..), l'effetto
di Apri è quello di mandare direttamente in esecuzione il programma o
script contenuto nel file selezionato. Se invece il file è un file di dati,
"aprirlo" significa in realtà lanciare un programma in grado di trattarlo e
poi fare in modo che sia quel programma a caricare in memoria il file e
ad elaborarlo nel modo dovuto. Per fare questo, Windows Explorer ha
bisogno di una tabella che associ un programma ad ogni possibile
suffisso di file. La tabella contiene già un buon numero di associazioni
standard quando Windows viene installato, ma successive installazioni
di nuovi programmi tipicamente comportano l'aggiunta di nuovi tipi di file
noti, con suffissi diversi da quelli già trattati, e nuove righe in tabella. In
alcuni casi, la nuova applicazione installata in realtà è in grado di gestire
tipi di file per i quali era già presente una applicazione idonea (è il caso,
per esempio, dell'installazione di un player multimediale). Tuttavia, per
ogni tipo di file deve esserci una sola applicazione registrata. Pertanto in
tal caso, tipicamente, il programma di installazione della nuova
applicazione chiede il permesso di registrarsi sui tipi di file per i quali
risulta già registrato un altro programma. Autorizzandolo a farlo,
l'applicazione precedente rimarrà installata, ma non sarà più chiamata in
causa automaticamente all'apertura di un file seppure di tipo da essa
gestibile.
148
Codice virale
Nel campo del codice virale esistono categorie canoniche ben
identificate sia per quanto riguarda la tecnica di dissimulazione o
infezione (trojan horse e virus) sia per quanto riguarda lo scopo del
codice stesso (worm, dialer, oltre agli spyware a cui si è già accennato).
I Worm
I worm (letteralmente "vermi") sono programmi di disturbo che non
danneggiano le informazioni presenti sul sistema, ma lo sfruttano per fini
particolari o lo rallentano eseguendo operazioni inutili oppure riempiono
il disco d’informazioni inutili. Lo scopo può essere semplicemente di
disturbare l'utente del sistema senza creare reali danni "acuti" come la
perdita di dati, oppure quello più insidioso di sfruttare la potenza di
calcolo dei computer altrui per scopi più o meno illeciti (vedi più avanti i
trojan horse, alias cavalli di Troia). Possono essere di due tipi:
- Write Once Read Many: tipo di disco ottico che consente di
registrare i dati anche in diverse sessioni, ma ogni file rimane
definitivamente archiviato e non modificabile. Un raggio laser
debole serve per leggere i dati, mentre un raggio laser più potente
viene utilizzato per scrivere.
- Virus auto-replicante che, in generale, non altera i file presenti ma
si stabilisce in memoria e si duplica. Spesso ci si accorge di essere
infetti da un virus worm quando il duplicarsi del virus consuma così
tante risorse di sistema da rallentare gli altri task.
Dialer
Come suggerisce il nome, un dialer è un programma che "compone un
numero di telefono" per mezzo del modem. E’ quindi un programma per
computer che crea una connessione ad Internet o ad un altro computer
tramite la comune linea telefonica o un collegamento ISDN.
Questi programmi sono giunti all'attenzione di tutti perché in grado, se
149
configurati con l'intento di frodare, di connettersi a numerazioni a
tariffazione speciale come i numeri esteri.
Molti di questi dialer maliziosi non indicano i reali costi delle connessioni
lasciando all'utente la sorpresa della bolletta astronomica a fine mese.
Alcuni dialer nella forma di ActiveX scollegavano la connessione via
modem attiva collegandosi a nuova connessione con un semplice clic.
Non venivano dati avvisi di sorta.
Il fenomeno dei dialer, imprecisamente inteso, è scoppiato nel
2003,dopo numerose denunce sollecitate dalle associazioni dei
consumatori.
Virus
Un programma o del codice che si replica autocopiandosi o utilizzando
un programma per copiarsi. Alcuni virus si rivelano subito, appena il
codice viene eseguito, altri rimangono latenti fino a che non si verificano
alcune circostanze (alcuni virus si attivano solo ad una certa ora di un
preciso giorno dell'anno, spesso per "commemorare" una qualche
ricorrenza importante per il virus writer). Qualche volta sono benigni,
non danneggiano il sistema infettato ma si manifestano con immagini o
suoni, altre invece sono di carattere maligno. questi possono cancellare
dati, rendere il pc scarsamente utilizzabile (con riavvii frequenti e
indesiderati) o danneggiare il sistema ospite. Proprio come quelli
biologici, i virus per computer sono costituiti essenzialmente da un
programma (equivalente del DNA) e dalle risorse necessarie per
impiantarsi nell'organismo ospite e per iniziare a riprodursi sfruttandone
le risorse ai propri fini, per poi diffondere all'interno e all'esterno di esso
innumerevoli nuove copie identiche (o mutanti) di se stessi. Oltre a
quello di riprodursi e diffondersi, i virus possono avere lo scopo di
danneggiare o spiare le informazioni o i programmi presenti sul sistema
su cui risiedono. Un virus per computer non è altro che un particolare
tipo di programma: quindi, come tutti i programmi, per poter agire ha
bisogno di essere mandato in esecuzione, in questo caso però
all'insaputa dell'utente. Per questo è tipico che un virus si autoinstalli in
modo tale da essere eseguito automaticamente all'avvio del sistema
oppure all'avvio di qualche programma usato di frequente. In ogni caso il
151
virus ha bisogno di sopravvivere alla riaccensione del sistema, quindi
deve memorizzarsi su memoria non volatile scrivibile (hard disk, floppy
disk, flash drive) e qui, come sappiamo, può essere localizzato da
programmi (gli antivirus) che ispezionino il contenuto di tutti i file alla
ricerca della sequenza di codici corrispondente al programma di un virus
noto. E’ tassativamente necessario aggiornare costantemente e
frequentemente il proprio antivirus, scaricando e installando i "pattern
file" (o "signature file") aggiornati dal sito del produttore (in molti casi,
per accedervi è necessario sottoscrivere un abbonamento). Un antivirus
non aggiornato difende solo dai virus creati (e noti) fino a una certa
data, ma non da quelli comparsi successivamente, che oltretutto sono
proprio quelli con cui è più probabile entrare in contatto, in quanto,
essendo ancora rari i sistemi attrezzati per identificarli e bloccarli, la loro
diffusione trova pochi ostacoli. Il principio base da tenere sempre
presente è che i virus si diffondono mediante esecuzione di programmi
infetti. Come già osservato, un virus non può riprodursi e non può creare
danno se non esplicitamente eseguito (anche se magari in modo
inconsapevole). In passato, quindi, era sufficiente prestare attenzione ai
nuovi programmi prima di mandarli in esecuzione. Esistono tuttavia da
tempo numerosi programmi di larghissima diffusione (come la stessa
suite Office) che risultano programmabili (funzione "Macro") per
automatizzare attività frequenti, per personalizzare l'effetto di menu o
bottoni, o per rendere più o meno "attivo" il contenuto dei documenti. Il
problema sta nel fatto che in certi casi il loro linguaggio di
programmazione è talmente potente da permettere anche la
realizzazione di un virus, e infatti tale possibilità, ove presente, è stata
subito sfruttata, dando luogo a una vera e propria ondata di "virus delle
macro di X" dove "X" è il nome del particolare programma per cui questi
virus sono stati scritti. Tali virus vengono attivati per il semplice fatto di
aprire con il programma X un file di dati, in quanto, a seconda dei
programmi, all'apertura del file certe macro possono essere eseguite
automaticamente. (Riquadro Macro a esecuzione automatica in Office) I
virus delle macro sfruttano questa proprietà per installarsi stabilmente
nel programma e per replicarsi negli altri file o documenti che verranno
aperti con esso. La difesa consiste nella disabilitazione delle macro
152
(spesso offerta, con opzione da esercitare interattivamente, dal
programma stesso all'atto dell'apertura di un file contenente macro ad
esecuzione automatica) oppure nell'esame con antivirus dei file di dati o
del programma stesso. La minaccia dei virus delle macro è tale che, per
esempio, in Microsoft Word è disponibile addirittura un dialog box
espressamente dedicato al problema del controllo di esecuzione delle
macro. Vi si accede dalla schermata Opzioni, scheda
Protezionemediante il pulsante "Protezione Macro". Nel dialog box che
appare sono disponibili tre livelli di protezione. Al livello più elevato sono
accettate esclusivamente macro dotate di firma digitale riconosciuta e
appartenente a un soggetto fidato. In caso di firma valida, ma autore
sconosciuto, sarà visualizzato il certificato digitale e richiesto all'utente
se autorizzare l'esecuzione. Si tratta dell'impostazione più prudenziale,
ovviamente, anche se per lo scambio di documenti con macro in ambito
aziendale è difficile pensare che ogni collega si sia premunito di un
certificato digitale, lo abbia reso noto a tutti i colleghi e sappia o voglia
farne uso ogni volta che scrive una macro. Per questa ragione è
probabilmente un'impostazione un po’ troppo drastica, che può perfino
impedire il funzionamento di eventuali documenti che dipendono in
modo essenziale dalle macro. Se si dispone di un antivirus aggiornato
regolarmente e riconosciuto da Word allora può essere considerato
sufficiente il livello intermedio, al quale l'apertura di un documento con
macro viene segnalata e si chiede all'utente se desidera autorizzarne il
funzionamento o bloccarle.Per quanto riguarda l’uso improprio delle
macro bisogna dire che un primo caso è quello di applicazioni anche
apparentemente estranee all'esecuzione di codice, come i word
processor, che grazie alla loro capacità di eseguire macro possono
essere sfruttate per l'attacco. In tal caso il codice maligno entra nel
nostro sistema nascosto nei documenti: l'ingresso può avvenire
mediante download (ad esempio, quando uno dei risultati di un motore
di ricerca è in formato DOC o PPT anziché HTML) oppure come allegato
di un messaggio di posta elettronica. In qualche caso il linguaggio
macro dispone di potenzialità notevoli, come quella di eseguire comandi
di shell o chiamare librerie di sistema. La contromisura principale
153
consiste nel disabilitare del tutto le macro o nel condizionarne
l'esecuzione a una esplicita autorizzazione da richiedere all'utente.
Altra sicurezza incrinata dal progresso riguarda la diffusione dei virus
mediante posta elettronica. In passato, la semplice ricezione di un
messaggio di posta elettronica con allegato "infetto" non costituiva in sé
alcun pericolo, fino a quando non fosse stato consapevolmente eseguito
o aperto l’allegato. Purtroppo, con il tempo, sistemi operativi e
programmi sono stati notevolmente sofisticati per renderli più
"amichevoli" e facili da usare, creando però, parallelamente, occasioni di
"aggancio" per i progettisti dei virus. Alcuni programmi di posta
elettronica, infatti, possono mostrare una anteprima del contenuto degli
allegati di un’e-mail. Per generare ciò che viene mostrato come
anteprima (immagine o testo), in genere essi devono aprire "dietro le
quinte" l'allegato con il programma che gestisce quel particolare tipo di
file. In virtù dei meccanismi che abbiamo visto, già questa operazione,
per certi tipi di file, può bastare a infettare il computer senza che l'utente
abbia aperto intenzionalmente alcun allegato. Per questo è consigliabile
disattivare, se possibile, la funzionalità di "mostra anteprima", o usare un
diverso programma di posta elettronica che non la offra o che almeno
consenta di escluderla. Per esempio, in Outlook, un programma che
proprio per questa ragione, soprattutto in passato, è risultato molto
esposto a questa minaccia, l'opzione si chiama Anteprima.
154
Tipologie di codice maligno
Si calcola che esistano più di 1000 varietà virali in circolazione; tuttavia,
se si considerano le varianti dei virus di base, il numero sale
vertiginosamente fino a 20.000. Le varianti possono essere anche
minime, con risultati finali leggermente diversi, ma questo basta a
moltiplicare il numero di virus conosciuti e le procedure antivirus che
dovranno contrastarli.
Di seguito, cercheremo di catalogare tutte le tipologie.
Virus innocui
Vengono chiamati virus in quanto penetrano nei PC altrui senza che i
proprietari ne siano al corrente, e lanciano programmi che disturbano le
normali procedure.
Possono essere testi che appaiono sullo schermo, o immagini, o icone
che cadono dal desktop. Sono innocui, ma spesso fastidiosi. Uno degli
esempi più comuni è il virus Marijuana, completamente innocuo, che fa
apparire sullo schermo del computer la parola Legalise.
Successivamente qualcuno ha modificato il codice originale in modo che
il virus scriva la parola Legalize.
Ecco che, ritornando al conto precedente, i virus sono già diventati due.
155
Virus Polimorfici
I virus polimorfici nascondono se stessi auto-codificandosi, si
trasformano in qualcos'altro, in modo da evitare l'intercettazione da
parte dell'antivirus. Il virus è composto da una procedura di attacco, e
una di codifica-decodifica. Il virus entra in un Pc con la propria porzione
di attacco codificata in modo da sfuggire ai controlli. Una volta che la
procedura di decodifica è attiva nel Pc, questa richiama la procedura di
attacco. A questo punto l'attacco virale può avere luogo.
156
I Virus Stealth (invisibili)
Un virus Stealth può essere o non essere di tipo parassitario: attacca sia
i file che i settori di boot dei dischi e per rendersi invisibile manipola le
funzioni di sistema o i risultati delle interrogazioni del sistema operativo.
Virus Retro
Il virus Retro è un virus che tenta di sfuggire all'antivirus attaccandolo
direttamente. Questo tipo di virus è anche chiamato virus-anti-virus
proprio per il suo funzionamento.
158
Il virus Retro funziona in maniera perfetta se entra in un Pc prima
dell'antivirus. A questo punto, quando l'antivirus viene installato, il Retro
vi si copia dentro e lo blocca disattivandolo.
ricopiati su disco.
Gli antivirus sul mercato bloccano i virus multiparte basandosi sul fatto
che essi sono solitamente più grandi dei virus normali. E' però più
probabile prevenire un'infezione e non debellarla.
Virus Phage
159
I Virus Phage modificano i file originari invece di nidificarvisi. Sono
chiamati così perché esiste un virus biologico che opera allo stesso
modo chiamato Phage. I Virus Phage sostituiscono il codice
dell'eseguibile originario con un virus. Nel momento in cui richiamate il
file eseguibile entra in funzione il virus invece del software lanciato.
Virus Companion
Questi virus sono programmi virali che modificano i file eseguibili
originali (*.exe) creando un file com (*.com) che viene eseguito prima
che venga aperto un programma. A questo punto il Virus si diffonde
infettando il sistema. Si trovano spesso abbinati ai Virus Phage.
Worm (verme)
Questo programma colpisce solo i computer con sistema operativo
Windows installando una copia di se stesso nella cartella System e
modificando la libreria di sistema WSOCK3.DLL, che gestisce le
connessioni a Internet in Windows 95 e 98. Il più noto virus worm si
chiama Happy99, forse ne avrete già sentito parlare o lo avete ricevuto
direttamente in posta.
Uno degli effetti di Happy99 è che ogni volta che spedite un messaggio
di posta elettronica, lui ne cancella il testo e allega una copia di se
stesso al messaggio: il tutto senza che voi possiate accorgervene (in
compenso se ne accorge chi riceve il vostro messaggio con annesso il
regalo).
160
Se invece avete commesso l'imprudenza di aprirlo senza prima
esaminarlo con un software antivirus aggiornato, niente panico: esiste
una procedura molto semplice per liberarsene.
Hoaxes
Il termine, in inglese, significa "bufala". Si tratta di notizie false, a volte
anche "leggende metropolitane", generalmente inoltrate via e-mail. Sono
proclami di virus fasulli creati per diffondere il panico oppure per
ingannare l’utente in modo da fargli installare un falso antivirus che sarà,
questa volta, un vero malware. Questa tecnica mette in risalto come la
loro pericolosità sia pari ad un vero malware!
161
In effetti però il vero primo virus efficace fu creato solo negli anni ’80 e
per la precisione nel 1982 da Richard Skrenta e si chiamava “ELK
CLONER” ed era assolutamente innocuo e girava su dispositivi APPLE”
164
antagoniste porta a ritenere che sia molto improbabile che la situazione
volga decisamente a favore degli attaccanti o dei difensori.
167
senza il rischio di dimenticare di riattivarla, in quanto ciò avverrà
automaticamente al termine del periodo scelto. In questo modo si potrà
lanciare l'operazione di copia che verrà eseguita a piena velocità grazie
al temporaneo snellimento dei controlli real time.
170
Domande di comprensione del capitolo 4
Rispondere alle domande che seguono per verificare di aver appreso
tutti i concetti illustrati in questo capitolo.
Le risposte alle domande sono riportate nell’allegato A alla fine del libro.
Se qualche risposta data dovesse risultare errata, si consiglia di
rivedere i concetti specifici dove si sono commessi errori.
1. Indicare quali, tra le seguenti, sono estensioni di file pericolose
a. .mp3
b. .txt
c. .bat g
d. .com
2. Cos’è un Adware?
a. Tipo di virus che s’insinuano attraverso la porta 25
b. Banner pubblicitari che compaiono nell’interfaccia grafica
dell'applicazione g
c. Programmi spia
3. In quali file si nascondono i macro virus?
a. Documenti di Word
b. File multimediali
c. In tutti i documenti presenti nella suite Microsoft Office g
4. Qual è l’azione svolta da un dialer?
a. Il reindirizzamento verso un sito web che contiene codice
maligno
b. La composizione di un numero di telefono a pagamento g
c. L’invio d’informazioni private ad un hacker
5. Quali, tra i seguenti malware, utilizza una codifica mutevole del
proprio codice?
a. Worm
b. Trojan Horse
c. Virus polimorfici g
171
SOMMARIO
172
CAPITOLO 2: INFRASTRUTTURA DI RETE TCP/IP ....................................................................... 50
NetBIOS .....................................................................................................................................................................58
Indirizzo IP .................................................................................................................................................................62
Telnet ........................................................................................................................................................................84
173
Dynamic Host Control Protocol (DHCP)......................................................................................................................91
Sniffing ....................................................................................................................................................................115
Spoofing ..................................................................................................................................................................117
IP Spoofing ..............................................................................................................................................................120
Hijacking ..................................................................................................................................................................122
174
SMS Spoofing ..........................................................................................................................................................129
I programmi nocivi...................................................................................................................................................135
I programmi .............................................................................................................................................................135
Adware ....................................................................................................................................................................145
I Worm ....................................................................................................................................................................149
Dialer .......................................................................................................................................................................149
Virus ........................................................................................................................................................................151
175