Sei sulla pagina 1di 174

Security Specialist Courseware

Manuale di sicurezza informatica per la preparazione alla CompTIA Security+ certification

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

Concetti di base delle comunicazioni


Nei primi sistemi la potenza di elaborazione e l’archiviazione dei dati
erano presente in un unico punto dell’azienda: il centro di calcolo.
Successivamente, con l’aumentare della potenza di calcolo e della
potenza d’immagazzinamento dei sistemi, si ebbe la necessità di
raggiungere i servizi del centro da ogni punto dell’azienda.
Questa situazione ha portato allo sviluppo delle prime soluzioni per la
comunicazione dati tra sistema e terminali.
Una rete di telecomunicazione può essere definita come l'insieme di
dispositivi, canali trasmissivi e procedure mediante le quali due o più
dispositivi, remoti ed attaccati alla rete, possono scambiarsi delle
informazioni.

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.

Commutazione di circuito e commutazione di


pacchetto
Normalmente le comunicazioni analogiche sono caratterizzate da un
flusso continuo d’informazioni.
La necessità della commutazione risulta evidente se pensiamo che,
senza di essa, ogni utente della rete telefonica pubblica dovrebbe avere
tante linee punto-a-punto permanenti quanti sono gli utenti della rete
con cui esso vuole parlare (al limite tutti gli utenti della rete). Al contrario,
essendo le centrali telefoniche pubbliche dotate della funzione di
commutazione, la cosa è più semplice: l’apparecchio telefonico di ogni
utente è collegato, tramite una linea dedicata, solo alla centrale urbana
più vicina:

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:

In figura 4 compaiono un certo numero di terminali, numerati


semplicemente con 1, 2, 3 e così via, connessi ad un certo numero di
nodi di rete, detti NCP (Nodi a Commutazione di Pacchetto). Ciascun
terminale è connesso ad un NCP tramite una linea dedicata
16
permanente3. Attraverso questa linea transitano i vari pacchetti
(rappresentati da “mattoncini”, ognuno contraddistinto dal numero
corrispondente all’indirizzo del terminale destinatario), sia quelli spediti
dal terminale sia quelli diretti al terminale.
I nodi di rete ricevono via via i pacchetti sia delle linee d’utente sia dalle
linee internodali; memorizzano questi pacchetti e, dopo aver controllato
la correttezza della trasmissione, li inoltrano sulle varie linee di uscita, a
seconda dell’indirizzo del destinatario e degli algoritmi di instradamento.
Un caso particolare si ha quando un pacchetto appena ricevuto da un
nodo è destinato ad una stazione
d’utente collegata allo stesso nodo: in questo caso, non c’è alcun
instradamento, se non quello sulla linea dell’utente destinatario.

E’ opportuno sottolineare che gli algoritmi che governano i dispositivi di


rete, permettono di scegliere per ogni pacchetto la rotta più propizia, in
termini di velocità e di costi, verso la destinazione. Se una tratta è
soggetta a congestione o guasto, ne viene scelta una alternativa. A
livello locale, i dispositivi di rete usano opportuni algoritmi, in modo da
trasmettere solo quando la linea è libera e, in caso di collisione,
provvedono a ripetere la trasmissione di un pacchetto fino alla conferma
dell’arrivo a destinazione.
In generale, le comunicazioni a pacchetto sono possibili quando si
verificano una serie di condizioni. Il flusso dei dati deve essere
“pacchettizzabile”, ovvero suddivisibile in frammenti. Ciò è sicuramente
vero se si tratta di trasferire dati archiviati su disco, per loro natura già
suddivisi in blocchi. La velocità di elaborazione e trasmissione dei dati
deve essere abbastanza elevata da non rallentare le operazioni. Questo
è essenziale nel caso dello streaming, la trasmissione di file audiovisivi
in tempo reale su Internet. I file in streaming sono immediatamente
fruibili on-line dall'utente senza la necessità di scaricarli prima sul PC,
simulando in tal modo la trasmissione di programmi radiofonici e
televisivi. Perché la trasmissione sia fluida, senza interruzioni e perdite
di dati (che si traducono in riduzione di qualità), l’intero canale
trasmissivo deve essere in grado di trasferire i dati a velocità adeguata
e, su tutto il percorso in rete, i buffer dei vari dispositivi devono essere

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.

Occorre avere una strategia di accesso al mezzo di trasmissione che


eviti che più dispositivi possano inviare dati contemporaneamente,
interferendo l’uno con l’altro. Nei casi più semplici, ogni dispositivo
“ascolta” il traffico sul mezzo trasmissivo e, prima di veicolare, attende
che il mezzo sia libero. Tale tecnica, applicabile sia alle trasmissioni via
cavo sia alle trasmissioni radio, è detta CSMA (Carrier Sense Multiple
Access, accesso al mezzo da parte di differenti sistemi previo controllo
della presenza della portante). Il limite delle tecniche CSMA sta nella
possibilità che i dispositivi accumulino i dati da trasmettere in attesa
che si liberi il mezzo trasmissivo e che, quando il mezzo cessa di
essere occupato, inizino a trasmettere contemporaneamente,
interferendo tra di loro. A questo si può ovviare in vari modi, il primo dei
quali è monitorare il segnale sul mezzo trasmissivo anche mentre si sta
trasmettendo, così da rilevare quando avviene una collisione e
ritrasmettere i dati dopo un intervallo di tempo casuale, per ridurre la
probabilità di una nuova collisione. La tecnica prende il nome di
CSMA/CD (Carrier Sense Multiple Access/Collision Detection), ed è
utilizzata dalle reti Ethernet (IEEE 802.3). L’uso della Collision
Detection (rilevazione delle collisioni) impone limiti alla distanza
18
massima fra due dispositivi di rete, che devono poter rilevare le
reciproche trasmissioni entro un tempo massimo. Alcune tipologie di
rete utilizzano la variante semplificata CSMA/CA (CA sta per Collision
Avoidance), che si basa sull’evitare le collisioni: ottenuto il via libera per
iniziare a trasmettere i dati, ogni dispositivo esegue un sorteggio per
vedere se trasmettere utilizzando valori che rendono tanto più difficile
trasmettere quanti più dispositivi sono presenti: ciò è simile a quanto
viene eseguito dalle reti CSMA/CD dopo una collisione.

Il sistema client – server


Il modello client – server è ampiamente utilizzato e rappresenta la base
di gran parte dell’utilizzo delle reti. Si può immaginare il sistema
informatico di un’azienda formato da uno o più archivi (database) e da
un certo numero d’impiegati che hanno bisogno d’accedervi dai loro
computer anche remotamente. In questo modello i dati sono
memorizzati su computer centrali ad alte prestazioni detti server che,
frequentemente, sono installati in un ufficio centrale e gestiti da un
amministratore di sistema.

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

L’insieme dei 7 layer garantisce tutte le funzioni necessarie alla rete


comunicativa tra sistemi, nonché una gamma molto ampia di funzioni
22
opzionali (come ad esempio la compressione e la cifratura dei dati): in
tal modo, si è in pratica suddiviso un compito complesso in un insieme
di compiti più semplici.
Il modello ha tre capisaldi:
 simmetria: la simmetria assicura che le funzioni logiche di due
qualsiasi sistemi interagenti siano le stesse, in accordo con gli
standard. La simmetria consente di bilanciare i carichi elaborativi
sui vari sistemi ed assicura che ogni richiesta, da qualunque parte
provenga, venga interpretata correttamente dalla controparte. Si
tratta dunque della base per i processi elaborativi di tipo
cooperativo e di tipo client-server;
 struttura gerarchica: i vari sottosistemi (livelli) sono organizzati in
una rigida gerarchia operativa; ogni livello riceve i comandi ed i
dati dal livello superiore, esegue per esso alcune sue specifiche
funzioni e, a sua volta, chiede servizi al livello subordinato. Il livello
gerarchicamente più alto è quello dell’applicazione (application
layer), ossia dell’utente: tutte le funzioni ed i servizi del modello
sono sempre attivati su esigenza di chi opera al livello più alto
(application layer); gli altri 6 livelli, in ordine decrescente di
gerarchia, sono così denominati: presentation, session, transport,
network, data link control e interfaccia fisica;
 modularità: la modularità garantisce che ogni livello abbia ben
definite non solo le proprie funzioni interne, ma anche le interfacce
con cui riceve o trasmette i comandi ed i dati verso i propri livelli
adiacenti. La definizione formale di queste relazioni assicura che
ogni livello funzionale abbia una propria caratteristica precisa, che
lo distingue nettamente dagli altri. Questo implica che, per
aggiungere opzioni o per permettergli prestazioni migliori grazie a
nuove tecnologie, non sia necessario modificare anche gli altri
livelli, il che significa, in altre parole, garantire la possibilità di
sviluppo, al crescere delle possibilità tecnologiche e delle esigenze
degli utenti.
Dal punto di vista della struttura gerarchica, per ridurre la complessità di
progetto, le reti sono in generale organizzate a livelli, ciascuno costruito

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.

Il Livello Fisico, o Phisycal Layer (livello 1) si preoccupa della


gestione del mezzo trasmissivo (cavo coassiale, cavi STP o UTP, fibre
ottiche) su cui avviene lo scambio di informazioni, occupandosi della
24
conversione del frame in una sequenza di bit e della successiva
trasmissione dei singoli bit. Esso definisce le modalità di connessione
tra il cavo e la scheda di rete e di conseguenza le caratteristiche cui i
mezzi di collegamento fisico devono sottostare, quali:

 caratteristiche fisiche, come il numero di piedini di un connettore;


 caratteristiche elettriche, come i valori di tensione per i livelli logici,
e di conseguenza la codifica, la sincronizzazione e la durata di
ogni bit;
 caratteristiche funzionali, come il significato dei pin di un
componente.
Il Livello di Collegamento Dati o Data Link Layer (livello 2) provvede
che la trasmissione sul mezzo fisico sia affidabile. A questo livello
diventa molto importante la topologia della rete e il possibile accesso. Il
Data Link si preoccupa inoltre dell’indirizzamento fisico, di ordinare e
incapsulare i dati in una struttura logica detta trama o frame e di
trasmetterla correttamente al sottostante livello Fisico. Il frame permette
infatti la connessione al successivo dispositivo di rete sul collegamento
fisico. Ogni frame da inviare viene delimitato aggiungendo dei caratteri
di controllo, quali i caratteri di Start, End, Parity, oppure CRC. In questo
modo è possibile riconoscere eventuali errori e ritrasmettere la trama
errata, o eliminare le trame duplicate. Il livello 2 gestisce la
sincronizzazione tra mittente e destinatario attraverso l’introduzione di
caratteri di sincronismo e modera lo scambio dei dati tra terminali di
potenza diversa.

In ricezione esso ha il compito di notificare eventuali errori e di inviare i


frame ricevuti dal livello Fisico al livello di Rete. Tra i protocolli più
conosciuti di questo livello vi sono il protocollo HDLC e il protocollo BSC.

Il Livello di Rete o Network Layer (livello 3) si occupa della traduzione


del nome logico dell’host destinatario in indirizzo fisico. Definisce
l’instradamento, determinando il percorso più breve, prima dell’invio dei
messaggi, attraverso la consultazione di tabelle di instradamento
statiche o dinamiche. Si occupa di gestire la comunicazione
controllando il flusso dei dati al fine di evitare la congestione della rete. I
25
dati ricevuti dal livello superiore sono organizzati in pacchetti o
datagramma, che contengono il network header con l’indirizzo logico
della sorgente e della destinazione. Provvede inoltre alla commutazione
del messaggio o dei singoli pacchetti che compongono il messaggio,
determinando se il cammino deve essere lo stesso per tutti i pacchetti,
oppure se ogni pacchetto può seguire un cammino diverso. Nelle reti
WAN e MAN questo livello gestisce la tariffazione, calcolata in base al
tempo di connessione. Come i due livelli sottostanti, questo livello
dipende dal modo in cui è realizzato il cablaggio della rete e dal tipo di
instradamento. Tra i protocolli forniti da questo livello vi è il protocollo IP
e il protocollo X25.

Il Livello di Trasporto o Transport Layer (livello 4) è il più basso dei 4


livelli superiori end-to-end, cioè in grado di stabilire una connessione
logica con i livelli paritari. Come gli altri livelli superiori, esso risulta
completamente indipendente dal tipo di rete implementata a livello
fisico. Questo livello incapsula i dati in segmenti in fase di trasmissione e
li riassembla in fase di ricezione. I messaggi lunghi vengono suddivisi in
più messaggi e attraverso la tecnica di multiplazione inviati su canali
diversi, mentre quelli corti vengono riuniti per essere inviati su un unico
canale di comunicazione. Il medesimo livello della stazione ricevente
ricostruisce i pacchetti e invia un messaggio di conferma alla stazione
trasmittente. La funzione principale è quindi quella di garantire che lo
scambio di informazioni sia affidabile e sicuro e che i pacchetti siano
ricevuti in sequenza e senza duplicati. Per questo motivo controlla il
flusso delle informazioni usando il meccanismo della finestra, invia i
segmenti nella sequenza corretta ed effettua il controllo e il recupero dei
pacchetti attraverso l’acknowledgment e la ritrasmissione. Il livello di
trasporto stabilisce, mantiene e chiude il circuito virtuale; per questo
motivo è detto connection-oriented.

Il Livello di Sessione o Session Layer (livello 5) si occupa di attivare


la connessione tra due stazioni, di mantenerla per tutta la durata del
trasferimento dei dati e di abbatterla a fine trasmissione. L’intero
processo è chiamato appunto sessione. Poiché i dati vengono trasmessi
su una rete a commutazione di pacchetto, questo livello ha il compito
26
fondamentale di definire la durata della trasmissione e il controllo del
dialogo decidendo quale delle due stazioni deve trasmettere. Specifica
cioè se la trasmissione deve essere alternata tra i due dispositivi in
comunicazione, o se entrambi possono inviare informazioni
simultaneamente (attenzione a non confondere questo con la modalità
di servizio HALF DUPLEX e FULL DUPLEX, che è gestita dal livello 2
del modello OSI). La trasmissione simultanea può provocare una
collisione a livello di sessione (attenzione a non confonderla con la
collisione sul mezzo fisico, gestito dal livello 1 del modello OSI), quando
uno o più messaggi oltrepassano un messaggio inviato
precedentemente, causando confusione su uno o su entrambi i sistemi
in comunicazione. Nella trasmissione simultanea, il livello di sessione
chiama altri livelli per gestire la conversazione. Se le collisioni
compromettono troppo la comunicazione, allora il controllo del dialogo
può optare per la comunicazione alternata; in tal caso, attraverso un
data token, permette ad ogni host di comunicare quando arriva il loro
turno (attenzione a non confonderlo con il Token Passing, gestito a
livello 2 del modello OSI). Il livello di sessione realizza inoltre una
sincronizzazione ad alto livello, introducendo dei checkpoint nel flusso
dei dati.

I protocolli più utilizzati nel livello 5 sono:

 RPC (Remote Procedure Call)


 ASP (AppleTalk Session Protocol)
 DNA SCP (Digital Network Architecture Session Control Protocol)
 X-Windows System.
Il Livello di Presentazione o Presentation Layer (livello 6) si
preoccupa di preparare le informazioni ricevute dal livello di
Applicazione in un formato adatto alla trasmissione. Lo stesso livello
della stazione ricevente, coinvolta nella comunicazione, trasforma il
formato in modo da renderlo compatibile con la stazione ricevente; in
particolare effettua la codifica dei dati, la conversione del set di caratteri
e l’espansione dei comandi grafici. Grazie a questo livello, le
applicazioni che girano su computer con sistemi diversi possono
comunicare tra loro in modo indipendente dalle applicazioni stesse. Al
27
livello 6 vengono infatti definiti gli standard ASCII ed EBCDIC per gestire
i file di testo, gli standard GIF (Graphic Interchange Format), JPEG
(Joint Photographic Experts Group) e TIFF (Tagged Image File Format)
per rappresentare le immagini, lo standard MPEG (Motion Picture
Experts Group) per la codifica e la compressione dei dati su memorie di
massa digitali, lo standard MIDI (Musical Instrument Digital Interface)
per l'audio digitale, lo standard Quick Time per i file con audio e video.
Questo livello gestisce inoltre i file binari delle applicazioni multimediali e
di FTP, e anche i file in formato HTML (Hypertext Markup Language)
usati dai vari web browser. Il livello 6 si occupa infine della
compressione dei dati (per ridurne la dimensione e velocizzare la
trasmissione) e della crittografia, per proteggere i dati da intromissioni
esterne; se sulla linea viaggiano crittografati, anche se intercettati da
"estranei", i dati non possono infatti essere interpretati senza la chiave di
decodifica.

Il Livello di Applicazione o Application Layer (livello 7) occupa lo


strato più alto della pila e per questo motivo non fornisce servizi agli altri
livelli, ma interagisce in modo diretto con le applicazioni usate
dall’utente, fornendo i servizi di rete. Al fine di soddisfare i servizi
richiesti dall’utente, esso verifica innanzitutto se vi sono sufficienti
risorse per comunicare tra i sistemi. E’ fornito di due interfacce, una
diretta e l’altra indiretta. Attraverso l’interfaccia diretta con il livello
sottostante, l’Application Layer serve le applicazioni tipiche di una rete,
quali lo scambio di e-mail, il trasferimento dei file, l’accesso ai database,
l’accesso ai siti Web, la gestione remota di applicazioni distribuite e
l’emulazione di terminali. Nel controllo dei sistemi remoti, per non
incorrere in problemi dovuti ai diversi tipi di terminali, viene definito come
standard il terminale VT100.

Ognuna delle applicazioni suddette utilizza un protocollo specifico


dell’Application Layer.

Un’interfaccia indiretta e un redirector vengono invece forniti per le


applicazioni stand alone (word processor, fogli di calcolo, programmi per
la gestione di database ecc.) in un ambiente LAN, per attivare la
28
funzionalità client-server. Il redirector è un protocollo che deve essere
attivato sul cliente di rete, che permette di condividere e mappare diversi
tipi di risorse. Esso entra per esempio in funzione ogni volta che un
utente chiede di salvare un file su un file server o di stamparlo su un
print server di rete. In tal caso il redirector rende l’applicazione, con cui è
stato creato il file, un client di rete, abilitando così l’archiviazione o la
stampa del file richiesto. In generale il redirector permette
all’amministratore di rete di impostare sul client locale un nome logico
per le risorse remote e di conseguenza abilita un client a utilizzare le
risorse di rete come se fossero locali.

Tra i redirector più comuni ricordiamo Apple File Protocol, Netbios,


Novell IPX/SPX, Network File System (NFS).

Nella comunicazione tra i processi il server mantiene generalmente la


connessione con il client solo per il tempo necessario a effettuare la
transazione, come il download di una pagina web o l’invio del file al print
server o al file server. Terminata la transazione, la connessione viene
abbattuta. In questa regola non rientrano tuttavia Telnet, né FTP.

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.

Topologia ad anello (Token Ring)


In una rete ad anello, tutti i computer sono collegati tra loro in un cerchio
logico. I dati viaggiano intorno al cerchio e passano attraverso tutti i
30
computer. Nella disposizione fisica, la rete ad anello sembra seguire lo
stesso schema della rete a stella. La differenza sostanziale è l’unità di
connessione, conosciuta come Multi-Station Access Unit (MAU). Nella
MAU, i segnali dei dati passano, in un anello, da un host a quello
successivo. I dati vengono trasmessi intorno all’anello per mezzo di un
metodo chiamato “passaggio del testimone” o “passaggio del gettone”
(in inglese, token passing). Quando un host deve trasmettere dei dati,
modifica il testimone con i dati che desidera inviare e lo configura con
l’indirizzo MAC dell’host destinatario. I dati passano attraverso tutti i
computer finché non raggiungono il reale destinatario del messaggio,
che, a sua volta, modifica il testimone per indicare di aver ricevuto
correttamente le informazioni trasmesse. Quando l’host mittente
constata l’avvenuta ricezione dei dati, il pacchetto dei dati viene rimosso
dalla rete. Il testimone è quindi rilasciato, in modo che un altro host sulla
rete possa trasmettere i dati. In una rete con topologia ad anello, esiste
un solo testimone. Se un client vuole trasmettere i dati ed il testimone è
già in uso, deve attendere che questo venga rilasciato. Sebbene sembri
un sistema poco efficiente, è bene far presente che il testimone viaggia
nell’anello ad una velocità prossima a quella della luce. Infatti se si
suppone che la lunghezza totale dell’anello sia di 400 metri, un
testimone sarebbe in grado di percorrerlo circa 5000 volte al secondo.

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.

Le reti a doppio anello supportano solitamente la tecnologia a fibre


ottiche, detta Fiber Distribucted Data Interface (FDDI). I cavi a fibre
ottiche presentano i seguenti vantaggi:

 trasmissione sicura: non vengono emessi segnali elettromagnetici


passibili di intercettazione;
 distanze maggiori: fino a 1600 metri su di un unico segmento,
senza bisogno di ripetitori che rafforzino il segnale;
 immunità al rumore elettromagnetico (EM noise).

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.

Si tratta di una soluzione estremamente efficace perché molto tollerante


ai guasti grazie all'esistenza di più percorsi alternativi per raggiungere
l'elaboratore di destinazione; per contro, la realizzazione è
particolarmente costosa. Le reti geografiche, come Internet, utilizzano la
topologia a maglia incompleta, dove, pur essendoci percorsi alternativi,
non tutti i collegamenti possibili vengono realizzati.

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

LAN (Local Area Network)


Una rete locale o LAN (Local Area Network) è un insieme di elaboratori
e di altri dispositivi elettronici interconnessi che si trovano all'interno
dello stesso edificio ed utilizzano mezzi trasmissivi dedicati e privati.
Una normale LAN è quindi una piccola rete che comunque non
attraversa il suolo pubblico con i propri mezzi trasmissivi; ciò esonera il
sistema dal puntuale rispetto degli standard della telefonia e della
trasmissione dati pubbliche. Le prime LAN (fine anni '70) avevano
topologia a bus o ad anello e utilizzavano cavi coassiali per realizzare le
connessioni; attualmente le reti sono strutturate secondo lo schema a
35
stella sfruttando gli economici doppini in rame o le veloci fibre ottiche. Le
reti locali stanno diventando così comuni che nella costruzione o
ristrutturazione di edifici si effettua normalmente quello che si chiama
cablaggio strutturato dell'edificio, la predisposizione cioè di tutti i
collegamenti di cui potrebbero avere bisogno gli utenti che andranno ad
occupare gli uffici; l'inserimento di un nuovo nodo nella rete si risolve
semplicemente collegando il cavo di rete dall'elaboratore alla presa
predisposta, in modo analogo al collegamento di una apparecchiatura
telefonica o elettrica. Quando la rete locale diventa fisicamente molto
grande e le distanze fra gli elaboratori aumentano considerevolmente,
vengono inseriti nella struttura della rete dei dispositivi (quali hub, bridge
o switch) che consentono di potenziare il segnale che fluisce attraverso i
cavi in modo che raggiunga in maniera comprensibile il destinatario. I
progressi tecnologici degli ultimi anni hanno reso possibile la
costruzione di reti prive di cablaggi, nella quali i nodi comunicano fra di
loro attraverso onde radio o raggi infrarossi. Le wireless (senza fili) LAN
si rivelano utili quando non sia possibile posare cavi (ad esempio in
edifici storici), oppure nel caso in cui si voglia consentire il
funzionamento della rete con l'elaboratore e l'utente in movimento
(magazzini, ospedali, sale conferenze, etc.).

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.

WAN (Wide Area Network)


Una rete formata da nodi che si trovano a notevoli distanze e che
utilizzano canali trasmissivi che attraversano il suolo pubblico viene
detta WAN (Wide Area Network). Le problematiche di una WAN sono
molto diverse di quelle di una LAN sia a causa dei vincoli imposti dagli
enti preposti al controllo delle telecomunicazioni, sia per i diversi mezzi
trasmissivi che il messaggio deve attraversare prima di raggiungere il
destinatario. Nelle reti geografiche vengono usati tutti i mezzi trasmissivi
disponibili, dai doppini telefonici alle fibre ottiche, utilizzando anche le
più moderne tecnologie satellitari; i veloci canali trasmissivi sono
logicamente suddivisi in molti canali virtuali a più bassa velocità per
poter soddisfare un'utenza molto numerosa. In effetti una WAN è
formata dalla connessione di un elevato numero di elaboratori singoli,
reti locali e MAN, e la sua efficienza si misura nel modo in cui permette
la comunicazione fra le varie reti di base. La topologia tipica di una rete
geografica è a maglia incompleta in modo da consentire il
funzionamento anche nel caso in cui qualche collegamento non fosse
disponibile. Dato che i canali trasmissivi sono pubblici, l'utente finale di
una WAN così come quello di una MAN, deve rivolgersi ad un gestore
pubblico di trasmissione dati (network provider) per poter accedere alla
rete stessa. Infatti tutti i problemi relativi al rispetto delle norme e alla

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.

Basi di cablaggio e cavi


Nell’implementazione di una rete locale, assume importanza
fondamentale il tipo di cablaggio da utilizzare. I cavi di rete si
suddividono fondamentalmente in tre categorie:

 cavi coassiali
 cavi twisted-pairs
 cavi in fibre ottiche

Ogni tipo di cavo possiede caratteristiche ben precise: lunghezza


massima del singolo segmento, impedenza, numero massimo di host
collegabili al singolo segmento, etc..

41
Cavi coassiali
I cavi coassiali si dividono sostanzialmente in due tipi diversi:

 cavi coassiali “thin ethernet” (denominati più comunemente


thinnet).
 cavi coassiali “thick ethernet” (denominati più comunemente
thicknet). Entrambi i tipi di cavo garantiscono un’ampiezza di
banda di circa 10 Mbit/sec.

Per molto tempo il cavo coassiale ha rappresentato la sola e unica,


anche e soprattutto per il fatto di essere abbastanza economico, da
usare nella cablatura di reti locali ad alta velocità. Infatti, rispetto al
classico doppino, garantisce una capacità di banda e, dunque, una
velocità di trasmissione superiore. Oggi è in progressivo disuso in
quanto sostituito dal doppino nelle reti locali e dalle fibre ottiche per
distanze maggiori.

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:

 cavi twisted-pairs STP (Shielded Twisted-Pairs);


 cavi twisted-pairs UTP (Unshielded Twisted-Pairs).

Figura 20: Cavo ethernet.

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:

 Categoria 1: usata nei tradizionali cavi telefonici. Trasporta solo il


traffico vocale e non i dati;
 Categoria 2: approvato per trasmissioni di dati fino a 4 Mbps (le
prime token ring);
 Categoria 3: approvato per trasmissioni di dati fino a 10 Mbps
(ethernet);
 Categoria 4: approvato per trasmissioni di dati fino a 16 Mbps
(token ring);
 Categoria 5: approvato per trasmissioni di dati fino a 100 Mbps
(fast ethernet). A seconda del tipo di cablaggio implementato,
servono connettori diversi per interfacciare i segmenti di cavo con
le schede di rete. I connettori RJ45 si accompagnano spesso al
cablaggio UTP. Essi assomigliano molto ai connettori telefonici,
ma rispetto a questi sono di dimensioni doppie. tra stazione ed
hub, infatti, difficilmente possono esserci più di 100 metri di
distanza.

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.

Il TCP implementa pienamente l'idea della comunicazione a pacchetti,


ma è indipendente dalla struttura hardware; esso introduce anche il
concetto di “gateway”, una macchina che deve fare da raccordo tra due
reti diverse.

Il TCP presenta i sette livelli dell’OSI racchiusi in quattro livelli:

- Application (Applicazione): rappresenta i layer


Application, Presentation e Session del modello OSI.
Questo livello si occupa di fornire alle applicazioni (FTP,
Telnet, Mail) i servizi di rete, compresi la
rappresentazione dei dati, ed il mantenimento di
sessioni;
- Transport (Trasporto): rappresenta l'omonimo layer del
modello OSI. Questo livello si occupa del trasporto
attraverso i protocolli TCP (Transmission Control Protocol)
di tipo connection-oriented e UDP (User Datagram
Protocol) di tipo connectionless permettendo quindi di
stabilire comunicazioni tra due host;
- Internet (Internet): rappresenta il layer Network del
modello OSI. Questo livello si occupa di indirizzare,
suddividere e instradare i pacchetti sulla rete. Il
protocollo IP lavora in questo layer offrendo un metodo di
indirizzamento ed un tipo di trasmissione
connectionless;

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;

Un modello organizzato in questo modo presenta diversi


vantaggi, infatti un nuovo protocollo in uno qualsiasi dei
layer TCP/IP deve interagire solamente con quello
adiacente a livello superiore od inferiore, semplificando e
conseguentemente riducendo la possibilità di errori nello
sviluppo e nella gestione.

Confronto con il modello OSI


Il modello a strati è una comoda rappresentazione dei sistemi di
rete che permette concettualmente di separare le diverse
funzionalità in strati di protocolli, permettendo così di studiare
più facilmente i protocolli di rete.
L'idea della stratificazione è fondamentale per poter disegnare
l'architettura software strutturata in livelli, ognuno dei quali con i
suoi
vari

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.

Il modello stratificato TCP/IP unifica lo strato fisico a quello del


collegamento dati del modello OSI, nello strato della rete
TCP/IP. Non fa distinzione tra le schede di rete in senso fisico
ed i loro driver e questo permette di implementare il TCP/IP in
qualunque topologia di rete.

 Lo strato Internet del modello TCP/IP corrisponde


allo strato della rete del modello di riferimento OSI.
Entrambi si occupano dei servizi di indirizzamento
ed instradamento;
 Lo strato del trasporto in tutti e due i modelli
permette che si stabiliscano sessioni di
comunicazione da un capo all’altro tra due host;
 Lo strato della sessione del modello TCP/IP
combina gli strati della sessione, della presentazione
52
e dell’applicazione del modello OSI. Il modello
TCP/IP comprende tutte le questioni che riguardano
la rappresentazione dei dati e il mantenimento delle
sessioni nell’ambito delle definizioni di una
applicazione.

Gli strati del modello TCP/IP


Per capire il funzionamento dell’architettura TCP/IP, vediamo la
funzione di ciascuno strato.

Network Interface Layer: Il quarto ed ultimo strato è costituito


da una interfaccia di rete che accetta il datagramma IP e lo
trasmette, previo incapsularlo in appositi frame, sull'hardware di
rete (il cavo) tramite, ad esempio, un transceiver.

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.

Transport Layer : Lo scopo primario del livello trasporto è


consentire la connessione in rete fra due utenti ovvero
permettere la comunicazione tra un livello applicativo ed un
altro; una comunicazione di questo tipo è spesso detta "end-to-
end".
Il software di tale livello divide il flusso di dati in pacchetti (di
solito di circa 500 byte) che vengono passati insieme
all'indirizzo di destinazione allo strato sottostante. Il livello di
trasporto deve accettare dati da molti utenti
contemporaneamente e, viceversa, deve smistare i pacchetti
che gli arrivano dal sotto ai vari specifici programmi; deve
quindi usare dei codici appositi per indicare le cosiddette porte.
Le routine di trasporto pacchetti aggiungono ad ogni di
pacchetto, alcuni bit in più atti a codificare, fra l'altro, i
programmi sorgente e destinazione.
Il livello di trasporto può regolare il flusso di informazioni e può,
nel caso del TCP (a differenza dell'UDP), fornire un trasporto
54
affidabile assicurando che i dati giungano a destinazione senza
errori ed in sequenza mediante un meccanismo di
acknowledgement e ritrasmissione.

Application Layer: A livello più alto, l'utente invoca i programmi


applicativi che permettono di accedere ai servizi disponibili
attraverso Internet; tale livello riguarda tutte le possibili opzioni,
chiamate, necessità dei vari programmi. In pratica gestisce
l'interattività tra l'utente e la macchina.

Un programma applicativo interagisce con uno dei protocolli di


livello trasporto per inviare o ricevere dati e li passa al livello
trasporto nella forma richiesta.

Da notare che se necessario il pacchetto può attraversare altre


macchine intermedie (router) prima di giungere a destinazione,
ma in queste penetra solo i due strati più bassi dell'interfaccia di
rete e del datagramma base IP.
Uno dei vantaggi più significativi di questa separazione
concettuale è che diventa possibile, entro certi termini,
sostituire una parte senza disturbare necessariamente le altre,

55
cosicché ricerca e sviluppo possono procedere
concorrentemente su ognuno dei tre livelli.

Windows Sockets (Winsock)


Una socket è una parte di codice che può sia trasmettere che ricevere
dati su un network TCP-IP. Una socket è univocamente determinata da
cinque parametri:
 Indirizzo IP del client
 Porta del client
 Indirizzo IP del server
 Porta del server
 Protocollo utilizzato (TCP o UDP)
In pratica una socket identifica una specifica connessione tra un client
ed un server su una determinata porta. Le porte qui nominate non sono
vere e proprie porte fisiche, ma porte logiche, cioè identificativi numerici
con i quali il TCP-IP è in grado di stabilire più connessioni
contemporanee sulla stessa macchina.
Vi sono due tipi di socket: stream socket e datagram socket. Queste
corrispondono ai due principali protocolli del TCP-IP: TCP e UDP. Nel
TCP, le due macchine (client e server) formano una connessione, si
scambiano i dati e chiudono tale connessione. L'UDP, al contrario, non
necessita di una connessione: una macchina invia semplicemente dei
dati ad un'altra. Le socket di tipo stream implementano il TCP e sono
usate nel caso in cui la quantità di dati da trasferire sia rilevante, oppure
quando sia importante l'ordine di arrivo dei dati. Le socket di tipo
datagramma implementano l'UDP e sono usate per trasferire piccole
quantità di dati che non debbano essere ricevute in un fissato ordine.
Uno dei principali vantaggi delle Winsock è la sua stretta relazione con
le sockets BSD. In teoria questo dovrebbe garantire una completa
portabilità delle applicazioni dalle Berekley sockets alle Windows
sockets. In realtà, queste non sono totalmente compatibili con le BSD,
tuttavia supportano un significativo sottoinsieme di funzioni comuni ad
ambedue.
La ragione di questa parziale incompatibilità risiede fondamentalmente
nel fatto che alcune delle funzioni delle Berkeley sockets sono native del
sistema operativo (chiamate di sistema), mentre altre, che risiedono in
librerie statiche, devono essere incluse in fase di sviluppo del
programma. Al contrario, le Winsock devono essere richiamate da
un'unica libreria dinamica (DLL) che dovrà essere importata in fase di
sviluppo del programma. Questo non permette una completa
56
integrazione col sistema operativo. Esistono varie realizzazioni di tale
libreria da parte di vari produttori, ma la compatibilità tra esse dovrebbe
essere garantita al 100%, almeno per quanto riguarda le specifiche
principali.
Riportiamo ora un elenco delle differenze più significative che
potrebbero compromettere la portabilità di una applicazione esistente
basata sulle BSD Sockets verso un sistema basato sulle Winsock:
 Gli handle delle sockets in Windows non sono equivalenti agli
handle dei file, come avviene nelle BSD. Questa differenza
sostanziale non ha permesso alle Winsock di rendere disponibili
alcune funzioni presenti in origine sulle BSD sockets.
 In ambiente Unix si è soliti chiamare la funzione select, passandole
dei puntatori nulli, come un timer di precisione. Questo non è più
possibile con le Winsock poichè se si passa un puntatore nullo, si
ottiene un errore di tipo WSAEINVAL.
 La funzione GetHostId() è assente. Con le Winsock è possibile
ottenere l'indirizzo IP locale chiamando in successione
GetHostName() seguito da GetHostByName().
 Le funzioni: Signal(), GetDomainName(), SetDomainName(),
SysLog(), PError(), StrError(), Bcmp(), Bcopy() ed altre ancora
non sono supportate dalle Winsock.
 La variabile globale ErrNo non è più disponibile e deve essre
sostituita dalla funzione WSAGetLastError().
 La versione 1.1 delle Winsock non supporta il modello IPC di Unix
(Inter Process Communication).
 Le convenzioni utilizzate per trattare i dati fuori banda (OOB), sono
diverse.
 L' opzione SO_DEBUG è considerata opzionale nelle Winsock.
Bisogna comunque tener presente che il maggior problema circa la
portabilità è rappresentato dal multitasking cooperativo di Windows a 16
bit, in quanto questo non permette di implementare sockets
completamente bloccanti.
In realtà, una buona programmazione delle Winsock si discosta molto
da quella utilizzata in Unix, in quanto usa prevalentemente sockets
asincrone per venire incontro alla natura di Windows orientata ai
messaggi.

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

SMB è un protocollo di livello applicativo utilizzato per la condivisione di


directory fra computer, la stampa via rete e lo scambio di file e
messaggi. Si basa su una struttura client-server ed ha una logica di tipo
request-response. Dalla sua introduzione originaria ha subito varie
modifiche e varianti che modificano e aggiungono nuovi SMB (Server
Message Blocks, di fatto i "comandi" utilizzabili). Su Windows 95 e NT
per esempio viene utilizzata la variante NT LM 0.12, che viene
supportata, fra gli altri, anche da Samba, un implementazione

59
OpenSource del protocollo che è utilizzabile su gran parte degli Unix in
circolazione.

TDI (Transport Driver Interface)


La Transport Driver Interface è un’effettiva interfaccia di
programmazione collocata al confine tra i componenti di protocollo dello
strato della sessione ed i componenti dello strato del trasporto. TDI
consente ad un programmatore di creare un componente per lo strato
della sessione, senza dover avere una conoscenza diretta dei
componenti del sottostante strato Trasporto e viceversa. Questa
interfaccia è specifica dell’implementazione Microsoft del TCP/IP.

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.

I protocolli dello strato internet


Nello strato internet del TCP/IP, lavorano quattro protocolli:
 IP: che gestisce l’indirizzamento dei pacchetti dati;
 ICMP: monitoraggio degli errori degli altri protocolli;
 IGMP: si occupa di spedire pacchetti in broadcast e multicast.
 ARP: risolve l’indirizzo logico (IP) in indirizzo fisico (MAC)
Andiamo ad analizzarli singolarmente.

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:

Version: campo di 4 bit, descrive la versione del protocollo;

IHL: campo di 4 bit, definisce la lunghezza dell'intestazione. Il


campo IHL(Internet Header Lenght) viene sottratto da Packet
Lenght per determinare l'inizio dei dati;
Service Type:
campo di 8 bit, che definisce le caratteristiche del servizio in
Precedence (importanza del pacchetto),
Delay, Throughput, Reliability (informazioni per il trasporto,
servono a determinare il percorso che il pacchetto farà);
Packet Lenght: campo di 16 bit, definisce la lunghezza totale
del pacchetto (Intestazione+Dati);
Packet Fragmentation: è formato da tre campi, identification
di 16 bit , flags di 3 bit e fragment offset di 13 bit i quali
permettono di suddividere il pacchetto in unità più piccole
quando esso deve passare attraverso una rete che prevede
frame di dimensioni minori, e di essere ricostruito all'uscita dalla
rete;
Time-to-live (TTL): campo di 8 bit, definisce il tempo massimo
di permanenza del pacchetto nella rete, ad ogni hop (router
attraversato) il suo valore diminuisce di uno, una volta
riaggiunto il valore zero il pacchetto viene scartato;
Protocol: campo di 8 bit, definisce il protocollo ad alto livello
utilizzato per creare il messaggio contenuto nel campo dati
(TCP, UDP, ICMP ecc);
Header Checksum: campo di 16 bit, definisce un checksum
per il controllo della correttezza dei dati contenuti
nell'intestazione del pacchetto;
Ip Address Source: campo di 32 bit, contiene l'indirizzo IP del
mittente;
Ip Address Destination: campo di 32 bit, contiene l'indirizzo IP
del destinatario;
Options: campo di dimensioni variabili, è opzionale, contiene
informazioni sulle operazioni che devono essere effettuate
durante il percorso;
Padding: campo di dimensioni variabili, è utilizzato per far
raggiungere all'area d'intestazione una dimensione di 32 bit o

65
un suo multiplo;
Data: i dati trasportati dal protocollo.

Internet Control Message Protocol (ICMP)


Si tratta di un meccanismo attraverso il quale i routers e gli
utenti comunicano per sondare eventuali problemi o
comportamenti anomali verificatisi in rete. Ricordiamo che il
protocollo IP, di per sé, non contiene nessuno strumento per
poter riscontrare, da parte della stazione sorgente né
destinazione, la perdita di un pacchetto o il collasso di una rete.
L'ICMP consente una comunicazione straordinaria tra routers
ed hosts permettendo lo scambio di segnali di errore o di
controllo attraverso le interfacce software dell'internet, senza
però arrivare su fino al livello degli applicativi; esso è una parte
necessaria ed integrante dell'IP ed è contenuto nell'area dati di
un datagramma IP.
L'ICMP include messaggi di source quench, che ritardano il rate
di trasmissione, messaggi di redirect, che richiedono ad un host
di cambiare la propria tabella di routing, e messaggi di echo
request/reply, che l'host può usare per determinare se la
destinazione può essere raggiunta (ping).
Un ICMP ha tre campi di lunghezza fissa alla testa del
messaggio: il type field (8 bits), che identifica il messaggio, il
code field (8 bits), che contiene informazioni circa il tipo del
messaggio, ed il checksum field (16 bits). I restanti campi del
formato ICMP variano in base al tipo di messaggio.

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.

Un pacchetto IGMP è composto dai seguenti campi:


 il campo Version: questo campo indica la versione
del protocollo in uso. Per i pacchetti IGMP è
impostato sul valore 1;
 il campo Type: questo campo indica se il messaggio
IGMP è un’interrogazione inviata da un instradatore

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.

Address Resolution Protocol (ARP)


Perché due host possano comunicare con successo su di un segmento
di rete, essi devono risolvere gli indirizzi hardware l’uno dell’altro.
Questa funzione ha luogo, nell’insieme di protocolli TCP/IP per mezzo
del protocollo di risoluzione degli indirizzi (Address Resolution Protocol,
ARP). ARP risolve un indirizzo IP di un host destinatario in un indirizzo
MAC ed inoltre si assicura che l’host di destinazione sia in grado di
risolvere l’indirizzo IP del mittente di un indirizzo MAC. Capita di
frequente, su una rete, che un computer client comunichi con un server
centrale (vedi tutte le reti non paritetiche). Invece di richiedere ogni volta
l’indirizzo MAC del server, il protocollo ARP si serve di un particolare
tipo di memoria cache, chiamata “cache ARP”. Questa tiene in archivio
un elenco di indirizzi IP risolti di recente in indirizzi MAC. Se l’indirizzo
MAC dell’indirizzo IP di destinazione si trova nella cache ARP, esso
viene utilizzato come indirizzo di destinazione per la comunicazione,
evitando così di sprecare il tempo necessario ad una nuova risoluzione.
Nel gestire la cache ARP, occorre rispettare le seguenti regole:
 ciascuna nuova voce è configurata con un valore
per il tempo di durata in vita (time-to-live, TTL). Il
valore reale dipende dal sistema operativo utilizzato.
Quando il valore del tempo di durata in vita
raggiunge lo zero, la voce viene rimossa dalla cache
ARP;

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).

I protocolli dello strato del trasporto


Il protocollo ARP (Address Resolution Protocol) è uno standard TCP/IP
obbligatorio, definito nel documento RFC 826 "Address Resolution
Protocol (ARP)". Il protocollo ARP risolve gli indirizzi IP utilizzati dal
software basato su TCP/IP in indirizzi MAC (Media Access Control)
utilizzati dall'hardware della LAN. Il protocollo ARP fornisce i seguenti
servizi di protocollo per gli host collocati nella stessa rete fisica:

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”.

Transfer Control Protocol (TCP)


TCP (che significa Transmission Control Protocol, cioè in italiano:
Protocollo di Controllo di Trasmissione) è uno dei protocolli principali del
livello trasporto del modello TCP/IP. Esso permette, a livello delle
applicazioni, di gestire i dati provenienti (o a destinazione) del livello
inferiore del modello (cioè il protocollo IP). Una volta che i dati sono
forniti al protocollo IP, quest'ultimo li incapsula in datagrammi IP,
fissando il campo protocollo a 6 (Per sapere se il protocollo applicato è
TCP…). TCP è un protocollo orientato connessione, cioè permette a
due terminali che comunicano di controllare lo stato della trasmissione
Le caratteristiche principali del protocollo TCP sono i seguenti :
 TCP permette di rimettere in ordine i datagrammi provenienti dal
protocollo IP
 TCP permette di verificare l'ondata di dati per evitare una
saturazione della rete
 TCP permette di formattare i dati in segmenti di lunghezza
variabile per "rimetterli" al protocollo IP
 TCP permette di multiplexare i dati, cioè di far circolare
simultaneamente delle informazioni provenienti da sorgenti
(applicazioni ad esempio) distinte su una stessa linea
 TCP permette infine di cominciare e finire una comunicazione din
modo cortese
71
Il protocollo TCP ha la responsabilità della trasmissione affidabile di dati
tra un nodo e l’altro di una rete. Questo processo, attraverso il quale si
stabilisce una sessione di comunicazione tra due macchine, è chiamato
“three way handshake”(letteralmente stretta di mano) a tre vie”. Si
dice “a tre vie” perché nel processo sono necessari tre passi:

 il client richiedente invia al server un segmento


(pacchetto) e specifica il numero di porta che vuole
usare ed il suo numero di sequenza iniziale (ISN);
 il server risponde con un segmento contente il suo
ISN ed un acknowledgement distinto dell’ISN client,
a cui è sommato il valore 1;
 il client riconosce l’ISN del server, dando inizio alla
sessione.

Il processo di handshaking a tre vie, stabilisce dunque il numero di porta


che dovrà essere usato ed i numeri di sequenza iniziali di ambedue le
parti. Affinché le macchine possano stabilire e mantenere una
connessione, esse debbono scambiarsi determinate informazioni. Ogni
pacchetto TCP inviato, contiene un numero di porta sorgente e
destinazione, un numero di sequenza per i messaggi che debbono
essere suddivisi in brani più piccoli ed un valore di controllo per
garantire l’invio delle informazioni senza errori. Inoltre, ogni pacchetto
contiene anche un numero di riconoscimento che dice alla macchina
mittente quali pezzi del messaggio siano effettivamente arrivati a
72
destinazione. Tutti questi accorgimenti, sono necessari per realizzare
una trasmissione realmente “affidabile”.
Grazie al protocollo TCP, le applicazioni possono comunicare in modo
sicuro (grazie al sistema di accuse di ricezione del protocollo TCP),
indipendentemente dai livelli inferiori. Questo significa che i router (che
lavorano a livello internet) hanno come unico ruolo l'invio dei dati sotto
forma di datagramma, senza preoccuparsi del controllo dei dati stessi,
dato che questo è realizzato dal livello trasporto (più particolarmente dal
protocollo TCP).
Al momento di una comunicazione con il protocollo TCP, i due terminali
devono stabilire una connessione. Il terminale emittente (quello che
chiede la connessione) è detta client, mentre il terminale ricettore è
detto server. Siamo allora in un ambiente client-server.
I terminali di un tale ambiente comunicano in modo connesso, cioè la
comunicazione avviene nei due sensi.
Per permettere il buon svolgimento della comunicazione e di tutti i
controlli che l'accompagnano, i dati sono incapsulati, cioè viene
aggiunta un'intestazione ai pacchetti di dati che permette di
sincronizzare le trasmissioni e assicurarne la ricezione.
Un'altra particolarità del TCP è di poter regolare la banda passante dei
dati grazie alla sua capacità di emettere dei messaggi di dimensione
variabile, questi messaggi sono detti segmenti.
Significato dei differenti campi :
 Porta sorgente (16 bits): porta relativa all'applicazione in corso su
un terminale sorgente
 Porta destinazione (16 bits): porta relativa all'applicazione in
corso su un terminale destinazione
 Numero d'ordine (32 bits): Quando il flag SYN è a zero, il numero
d'ordine è quello della prima parola del segmento in corso.
Quando SYN è a 1, il numero d'ordine è uguale quello iniziale
usato per sincronizzare i numeri di sequenza (ISN)
 Numero d'accusa di ricezione (32 bits): il numero dell'accusa di
ricezione anche chiamato numero di ricevimento corrisponde al
numero (d'ordine) del prossimo segmento atteso, e non del
numero dell'ultimo segmento ricevuto.
 Spostamento di dati (4 bits): permette di individuare l'inizio dei
dati nel pacchetto. Lo spostamento in questa fase è essenziale
dato che il campo di opzioni è di dimensione variabile
 riservato (6 bits): campo inutilizzato attualmente ma previsto per il
futuro

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

User Datagram Protocol (UDP)


UDP è un altro protocollo dello strato del trasporto a cui va la
responsabilità della trasmissione dati su una rete. A differenza del TCP,
però, si tratta di un protocollo che non necessita di connessione. Non
viene infatti stabilita alcuna sessione e l’UDP si limita soltanto a “fare del
suo meglio” perché la spedizione vada a buon fine. Questo protocollo
non cerca di verificare che l’host di destinazione abbia o meno ricevuto
le informazioni che gli sono state inviate. UDP è utilizzato da quelle
applicazioni che inviano piccole quantità di dati e che non hanno
bisogno di una consegna sicura. UDP è usato dal NetBIOS per i servizi
“Name service” e “Datagram”, che devono inviare piccolissime quantità
di dati. Anche questo protocollo utilizza i numeri di porta per fare
identificare un processo particolare ad un indirizzo IP specifico, ma le
porte UDP sono diverse da quelle TCP e possono pertanto coincidere
numericamente, senza causare conflitti.

Differenze tra TCP e UDP


UDP è un protocollo di tipo connectionless (non orientato alla
connessione).
Non offre nessuna garanzia dell'arrivo dei datagrammi né sul loro ordine
di arrivo. E’ considerato di minore affidabilità.

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.

I protocolli dello strato dell’applicazione


I protocolli che operano allo strato dell’applicazione sono svariati. Per la
gestione delle e-mail, infatti, esistono SMTP (invio), POP3 ed IMAP4
(ricezione). Per il trasferimento di file vi è l’FTP, mentre per la
visualizzazione di documenti si è affermato l’http.

Simple Mail Transfer Protocol (SMTP)


Il protocollo SMTP (Simple Mail Transfer Protocol, tradotto
Protocollo Semplice di Trasferimento della Posta) è il protocollo
standard che permette di trasferire la posta da un server ad un
altro con una connessione point to point.

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>

S: 550 No such user here


C: DATA
S: 354 Start mail input; end with <CRLF>.<CRLF>

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.

Il comando PASS permette di indicare al


PASS password password dell'utente il cui nome è
specificato ad un comando User
precedente.

STAT Informazione sui messaggi contenuti sul


server
RETR
Numero di messaggi da recuperare
DELE
Numero di messaggi da cancellare
LIST [msg]
Numero di messaggi da visualizzare

NOOP Permette di mantenere le connessioni


aperte in caso di inattività

Comando che visualizza n linee di


messaggio, il cui numero è dato in
TOP argomento. In caso di risposta positiva da
<messageID><n> parte del server, questo rinvia le
intestazioni del messaggio, poi una linea
vuota e infine le n prime linee del
messaggio.
Richiesta al server di rinviare una linea
contenente delle informazioni sul
messaggio eventualmente dato in
argomento. Questa linea contiene una
stringa di caratteri, detta listing
d'identificatore unico, che permette di
UIDL [msg]
identificare in modo univoco il messaggio
sul server, indipendentemente dalla
sessione. L'argomento opzionale è un
numero corrispondente ad un messaggio
esistente sul server POP, cioè un
messaggio non cancellato).
QUIT
82
Il comando QUIT chiede l'uscita del server
POP3. Esso implica la cancellazione di
tutti i messaggi segnati come eliminati e
rinvia lo stato di questa azione.

L'Internet Message Access Protocol (IMAP)


Protocollo per accedere alla lettura delle e-mail direttamente sul server
senza che queste vengano scaricate sul proprio computer. In questo
modo l’utente può decidere autonomamente quali e-mail scaricare,
visualizzandone il mittente, l’oggetto e altre caratteristiche.

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.

La soluzione per eccellenza è SSH (Secure SHell) con il relativo server


sshd che aumenta il livello di sicurezza utilizzando un canale crittato. Il
funzionamento è illustrato nella figura seguente.

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.

Network News Transfer Protocol (NNTP)


Nei primi anni 80, quando Internet si chiamava ancora Arpa net ed era
uno strumento riservato a pochi intimi, gli utenti si scambiavo le notizie
facendo un largo uso della posta elettronica. Si trattava senz'altro di un
metodo molto efficiente, ma che soffriva di diverse limitazioni, data
l'arretratezza dei primi server SMTP utilizzati. In particolare, venivano

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.

File Transfer Protocol (FTP)


L'FTP é un protocollo che garantisce il trasferimento di file tra due host,
in maniera affidabile ed efficiente. Esso si appoggia ai protocolli TCP e
Telnet per le connessioni, aggiungendo una interfaccia più complessa,
ma decisamente più affidabile. Questa interfaccia é riassumibile nello
schema qui sotto:

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.

Hyper-Text Transfer Protocol (HTTP)


Il protocollo HTTP (HyperText Transfer Protocol) è il protocollo più usato
su internet dal 1990. La versione 0.9 era destinata solo ai trasferimenti
di dati su internet (in particolare delle pagine web scritte in HTML. La
versione 1.1 del protocollo (la più usata) permette ormai di trasferire dei
messaggi con delle intestazioni che descrivono il contenuto del
messaggio utilizzando una codificazone si tipo MIME.
Lo scopo del protocollo HTTP è di permettere un trasferimento di file
(essenzialmente in formato HTML) localizzati grazie ad una stringa di
caratteri dettaURL tra un navigatore (il client) e un server web (detto http
d sui terminali UNIX).
La comunicazione tra il navigatore e il server avviene in due tempi :

 Il navigatore effettua una richiesta HTTP


 Il server tratta la richiesta poi invia una risposta HTTP
In realtà la comunicazione si effettua in più tempi se si considera il
trattamento della richiesta dal server.
88
Una richiesta HTTP è un insieme di linee inviate al server dal
navigatore. Essa comprende :
 Una linea di richiesta: è una linea che precisa il tipo di
documento richiesto, il metodo che deve essere applicato, e la
versione del protocollo usato. La linea comprende tre elementi che
devono essere separati da uno spazio :
o Il metodo
o L'URL
o La versione del protocollo usato dal client (generalmente
HTTP/1.1)
 I campi d'intestazione della richiesta: si tratta di un insieme di
linee facoltative che permettono di dare delle informazioni
supplementari sulla richiesta e/o il client (Navigatore, sistema
operativo,…). Ognuna di queste linee è composta da un nome che
qualifica il tipo di intestazione, seguito da due punti (:) e dal valore
dell'intestazione
 Il corspo della richiesta: è un'insieme di linee opzionali che
devono essere separate dalle linee precedenti da una linea vuota
e che permettono ad esempio l'invio di dati con un comando POST
al momento dell'invio dei dati al server con un formulario
Essendovi una richiesta vi è una risposta.
Una risposta HTTP è un insieme di linee inviate dal server al
navigatore. Essa comprende :
 una linea di stato: è una linea che precisa la versione del
protocollo usata e lo stato di trattamento della richiesta attraverso
un codice e un testo eplicativo. La linea comprende tre elementi
che devono essere separati da uno spazio :
o La versione del protocollo usata
o Il codice dello stato
o Il significato del codice
 I campi d'intestazione della risposta: si tratta di un insieme di
linee facoltative che permettono di dare delle informazioni
supplementari sulla risposta e/o il server. Ognuna di queste linee è
composta da un nome che qualifica il tipo di intestazione, seguito
da due punti (:) e dal valore dell'intestazione
 Il corpo della risposta: contiene il documento richiesto

89
Domain Name Service (DNS)

Ogni computer direttamente connesso a internet possiede almeno un


proprio indirizzo IP . Tuttavia, gli utenti non vogliono lavorare con degli
indirizzi numerici tipo 194.153.205.26ma con un nome di dominio o degli
indirizzi più espliciti (detti indirizzi FQDN) Così, è possibile associare dei
nomi in linguaggio corrente agli indirizzi numerici grazie ad un sistema
chiamato DNS (Domain Name System). Viene detta risoluzione dei nomi
di domini (o risoluzione di indirizzi) la correlazione tra gli indirizzi IP e il
nome del dominio associato.

Il meccanismo che consiste nel trovare l'indirizzo IP corrispondente al


nome di un host è detto « risoluzione di nome di dominio ».
L'applicazione che permette di realizzare questa operazione
(generalmente integrata al sistema operativo) è detta « resolver ».

Quando un'applicazione vuole connettersi ad un host conosciuto con il


suo nome di dominio (ad esempio « it.kioskea.net »), questa interroga
un server di nomi definito nella sua configurazione di rete. Ogni
terminale connesso alla rete ha in effetti nella sua configurazione gli
indirizzi IP dei due server di nomi del suo fornitore di accesso.

Una richiesta è quindi inviata al primo server di nomi (detto « server di


nome primario »). Se questo ha la registrazione nella sua cache, la invia
all'applicazione, in caso contrario interroga il server radice (nel nostro
caso un server radice che corrisponda al TLD « .net »). Il server del
nome radice rinvia un elenco di server di nomi che rappresentano
un'autorità sul dominio

Domain Name System (sistema di denominazione del dominio) traduce


il dominio Internet e i nomi di host in indirizzi IP. DNS implementa un
database distribuito per conservare le informazioni su nome e indirizzo
per tutti gli host pubblici sulla rete. DNS presuppone che gli indirizzi IP
non cambino (cioè sono assegnati staticamente piuttosto che assegnati
dinamicamente). Il database DNS risiede su una gerarchia di server
90
specializzati. Quando si visita un sito web o un altro componente sulla
rete, una parte di software chiamato il risolutore DNS (generalmente
incorporato nel sistema operativo di rete) per prima cosa contatta un
server DNS per determinare l'indirizzo IP del server. Se il server DNS
non contiene la mappatura di cui ha bisogno, inoltrerà ricorsivamente la
richiesta a un server DNS posto al livello immediatamente superiore
nella gerarchia. Dopo diversi inoltri e messaggi di accompagnamento
inviati all'interno della gerarchia DNS, l'indirizzo IP per il dato host è
eventualmente trasmesso al risolutore. DNS include anche il supporto
per la memorizzazione delle richieste nella cache e per la ridondanza.
La maggior parte dei sistemi operativi di rete consente a un utente di
entrare negli indirizzi IP dei server DNS primari, secondari o terziari,
ognuno dei quali può soddisfare le richieste iniziali provenienti dai client.
Molti fornitori di servizi internet (ISP) hanno i propri server DNS e usano
DHCP per assegnare automaticamente gli indirizzi di questi server ai
client dial-in, così la maggior parte degli utenti domestici non ha
necessità di conoscere i dettagli sulla configurazione DNS. I nomi di
dominio registrato e gli indirizzi devono essere rinnovati periodicamente,
e quando si accende una disputa tra due parti sulla proprietà di un
determinato nome, come ad esempio nel campo dei marchi
commerciali, può essere invocata la Uniform Domain-Name Dispute-
Resolution Policy approvata dalla ICANN. Il DNS è conosciuto anche
come Domain Name System, Domain Name Service, Domain Name
Server.

Dynamic Host Control Protocol (DHCP)


DHCP significa Dynamic Host Configuration Protocol. Si tratta di un
protocollo che permette ad un computer che si connette su una rete di
ottenere in modo dinamico (cioè senza intervento particolare) la sua
configurazione (principalmente, la sua configurazione di rete). Si deve
solo specificare al computer di trovarsi un indirizzo IP da solo attraverso
DHCP. Con lo scopo principale di semplificare l'amministrazione di una
rete.
Il protocollo DHCP serve principalmente a distribuire degli indirizzi IP su
una rete, ma è stato concepito inizialmente come complemento al
protocollo BOOTP (Bootstrap Protocol) che è usato ad esempio quando
si installa un terminale attraverso una rete (BOOTP è usato in stretta
91
collaborazione con un server TFTP su quale il cliente trova i file da
caricare e copiare sul disco rigido). Un server DHCP può rinviare dei
parametri BOOTP o di configurazione propri ad un dato host.
E’ un tipo di servizio basato sul modello client – server:
 Il Client DHCP: è un calcolatore che ha bisogno di
ottenere un indirizzo IP valido per la sottorete a cui è
collegato, e anche il programma che si occupa di
richiedere l'indirizzo IP e configurarlo.
 Il Server DHCP: è il calcolatore che assegna gli
indirizzi IP, e anche il processo che svolge questa
funzione. Talvolta questa funzione è incorporata in
un router.

DHCP utilizza il protocollo UDP con la porta 67 e 68


rispettivamente per il server ed il client. In un primo tempo si
ha bisogno di un server DHCP che distribuisce gli indirizzi IP.
Questo terminale servirà da base per tutte le richieste DHCP,
e anch'esso deve avere un indirizzo IP fisso. Su una rete, si
può avere quindi solo un terminale con indirizzo IP fisso, il
server DHCP.
Il meccanismo di base della comunicazione è BOOTP (con
trama UDP). Quando un terminale viene acceso, non ha
nessuna informazione sulla sua configurazione di rete, e
soprattutto, l'utente non deve fare niente di particolare per
trovare un indirizzo IP. Per fare questo, la tecnica usata è il
broadcast : per trovare e dialogare con un server DHCP, il
terminale emette semplicemente un pacchetto speciale di
broadcast (broadcast su 255.255.255.255 con altre
informazioni come il tipo di richiesta, le porte di
connessione,...) sulla rete locale. Quando il server DHCP
riceverà il pacchetto di broadcast, rinvierà automaticamente
un altro pacchetto di broadcast (non dimenticate che il client
non ha un obbligatoriamente il suo indirizzo IP e quindi non è
raggiungibile direttamente) con tutte le informazioni richieste
dal client.
Si potrebbe credere che un solo pacchetto possa bastare per
il buon funzionamento del protocollo. In effetti, esistono più
tipi di pacchetti DHCP suscettibili di essere emessi sia dal
client per il o i server, sia dal server verso un client :

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

Le motivazioni degli attacchi


I fattori di crescita e di evoluzione dell’ICT, con particolare riguardo allo
sviluppo di reti d’interconnessione tra i sistemi informativi, e la sua
diffusione in uno spettro di applicazione sempre più vasto impongono
una rigorosa attenzione agli aspetti legati alla sicurezza. Questo fattore
vale per tutto lo scenario delle applicazioni informatiche e di
telecomunicazioni, in particolare per le pubbliche amministrazioni. La
diffusione dell’utilizzo delle reti presenta ormai fattori di crescita
esponenziali e le applicazioni su reti aperte sono diventate una realtà
non più esclusiva del mondo imprenditoriale. Internet sta divenendo
sempre più il sistema di scambio di informazioni, di accesso alle grandi
banche dati, di esecuzione di transazioni e disposizioni finanziarie, di
sviluppo di attività professionali. Parallelamente si sta evidenziando
anche la sua fragilità. La sicurezza delle reti è una problematica che
nasce nel momento in cui si hanno più computer interconnessi fra loro:
essi, infatti, offrono diverse vulnerabilità sfruttabili, più o meno
facilmente, da terzi per intromettersi nel sistema ed intercettarne i dati.
Le tecniche utilizzate per violare le reti si sono sviluppate in varie
direzioni, in una moltitudine di tipologie differenti e, con il passare degli
anni, si sono fatte sempre più raffinate.

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: per accedere alle risorse del sistema;


 Attacchi di modifica o ripudio: per cambiare i dati del sistema;
 Negazione del servizio (Denial of Service): per interrompere i
servizi erogati dalla rete.

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.

Attacchi di modifica o ripudio


Questi attacchi comprendono l’inserimento, la cancellazione o la
modifica non autorizzata di informazioni che si cercherà di far apparire
come genuine. Molto difficili da scoprire, sono attacchi le cui motivazioni
spesso risiedono in una volontà di inserire informazioni fraudolente allo
scopo di un avanzamento di classe oppure di un guadagno economico.
Una variazione è l’attacco del ripudio che consiste nell’inviare
informazioni, documenti, e-mail o commenti a qualcuno spacciandosi
per un’altra persona in modo da creare imbarazzo o perdite economiche
e d’immagine ad una persona specifica oppure ad un’intera azienda. Si
tratta di una tipologia d’attacco pericolosa in quanto potrebbe causare
seri guai personali o legali!

Negazione del servizio (Denial of Service)


Un attacco di negazione del servizio ha come scopo finale quello di
escludere un determinato host dalla rete rendendolo irraggiungibile.
Così facendo si va a colpire la disponibilità delle risorse per gli utenti
102
legittimi, perché si causa un’interruzione del servizio (per esempio,
quello di un web server o di un mail server). In pratica, si tratta di
attacchi malevoli per negare accesso a un sistema, ad una rete, o ad
applicazioni e informazioni, agli utenti che ne hanno diritto. Gli attacchi
di questo genere formano una categoria molto vasta, perché possono
colpire qualsiasi risorsa informatica. Essi possono assumere varie
forme, ed essere lanciati da singoli host o da una moltitudine di sistemi.
Sulla base del fatto che le risorse informatiche sono generalmente
limitate, quando l’attaccante riesce a consumare un’intera risorsa
(pensiamo, ad esempio, alla larghezza di banda di una connessione di
rete), non resta alcuna disponibilità per i legittimi utenti. Se una risorsa è
condivisa tra più utenti, uno di essi, in assenza di limitazioni, può
consumarla tutta, impedendone l’utilizzo agli altri. Se la risorsa è di
pubblica disponibilità, l’attacco può essere praticato da chiunque.
Fondamentalmente esistono 3 categorie di negazione del servizio:

 Attacchi per l'esaurimento di banda: si basano sull'inondare la


rete dell'host bersaglio in maniera da consumare tutta la larghezza
di banda a lui disponibile. Questo attacco può essere attuato in
due differenti maniere: nel primo caso l'attaccante ha a
disposizione una connessione più veloce della vittima e riesce
dunque a saturarne la banda direttamente,nel secondo caso,
l'attaccante pur non avendo una connessione veloce, riesce a
saturare la banda della vittima grazie all'utilizzo di altri host che
hanno lo scopo di amplificare l'attacco .
 Attacchi per l'esaurimento delle risorse: hanno come scopo
quello di colpire il sistema piuttosto che la rete in cui si trovano. In
generale questo si traduce con il consumo di risorse come cicli di
CPU, della memoria, etc..
 Attacchi contro difetti di programmazione: vanno a colpire bug,
software o hardware. Solitamente si verificano quando vengono
spediti dei dati non previsti all'elemento vulnerabile. Molti attacchi
di tipo DoS per il loro funzionamento fanno uso dell'IP Spoofing
rendendo quasi impossibile capirne la provenienza.

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.

DoS (Denial of Service)


Gli attacchi DoS hanno lo scopo di mettere fuori uso un servizio su
Internet oppure di impedirne l'uso da parte di utenti legittimi. Anche se
questo tipo di minaccia vale per qualunque sito, la casistica più
clamorosa riguarda soprattutto siti commerciali (è ormai celebre e
paradigmatico il caso degli attacchi ai siti Amazon e Yahoo! avvenuti nel
febbraio 2000). La tecnica su cui si basa l’attacco consiste nell'inviare in
rapida successione un numero esageratamente alto di richieste che,
prese singolarmente, sarebbero del tutto normali. Ciò può provocare:

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).

DDoS (Distributed Denial of Service)


Un attacco DoS richiederebbe all’attaccante una notevole quantità di
risorse per saturare un grosso sito Internet, ben al di là delle possibilità
di una singola rete e della banda della sua connessione a Internet.
Per aumentare ulteriormente la violenza di questo tipo di attacchi, e per
aggirare le forme di difesa fin qui descritte, esiste la variante Distributed
Denial of Service (DDoS) in cui gli hacker fanno in modo di far provenire
le richieste, per esempio a rotazione, da un gran numero d’indirizzi
diversi (anche centinaia di migliaia); l’attacco viene, quindi, distribuito fra
una gran quantità di sistemi che, sotto il controllo dell’attaccante,
operano il loro attacco contemporaneamente per saturare le risorse del
sistema bersaglio in modo che da un lato risulti difficile individuare
chiaramente gli indirizzi responsabili dell'attacco, e dall'altro non risulti
accettabile bandire troppi indirizzi per il rischio di penalizzare gli utenti

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.

Gli attacchi DDoS, di solito, sono coordinati da un singolo sistema


master e da un singolo cracker. Possono limitarsi all’invio di un
pacchetto ping all’indirizzo di broadcast di una grande rete, con spoofing
dell’indirizzo del mittente per indirizzare le risposte verso il bersaglio
(caso dell’attacco smurf). Tuttavia gli attacchi DDoS sono diventati
notevolmente più sofisticati rispetto a quelli smurf. Nuovi strumenti di
attacco come Trinoo, Tribal Flood Network, Mstream e Stacheldraht
permettono a un cracker di coordinare gli sforzi di molti sistemi contro
una sola vittima. Questi strumenti utilizzano un’architettura a tre livelli.
Un cracker dialoga con un processo master o server da lui installato su
un sistema che ha compromesso (all’insaputa del proprietario). Il master
dialoga con i processi slave o client che sono stati installati su un gran
numero di altri sistemi compromessi (zombie). I sistemi slave attuano
l’attacco contro il sistema bersaglio. I comandi al master e tra il master e
gli slave possono essere cifrati, utilizzando pacchetti UDP o ICMP,
secondo gli strumenti usati. L’attacco vero e proprio può consistere di
un’inondazione di pacchetti UDP, di un SYN flood TCP, o di traffico
ICMP. Alcuni strumenti modificano in modo casuale l’indirizzo spoofed
del mittente dei pacchetti ostili, rendendoli estremamente difficili da
riconoscere. Fintanto che sono disponibili molti sistemi poco protetti,
come potenziali zombie, essi possono essere coordinati in un attacco
contro un singolo bersaglio. Per quanto ampia sia la banda della
connessione di un sito a Internet, gli attacchi DDoS possono
sommergerne le capacità operative se un numero sufficiente di sistemi
slave è coinvolto nell’attacco. Questo tipo di attacco crea due difficoltà: -
la possibilità di rintracciare l’origine dell’attacco è ridotta ulteriormente,
dato che i pacchetti provengono da più fonti, rendendo più arduo lo
sforzo di risalire al mittente; - per interrompere l’attacco è necessario
bloccare un numero significativo di zombie, mentre l’attaccante può
aggiungerne e toglierne dall’attacco in modo dinamico. La protezione è
particolarmente difficile senza accordi di collaborazione con i provider,
tuttavia sono stati fatti passi avanti nel ridurre la vulnerabilità dei sistemi

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.

Contromisure relative ai Denial of Service


Le strategie per affrontare un attacco DoS sono diversificate, e
contribuiscono a mitigare il rischio. Un sommario di misure preventive è
il seguente:

 disabilitare i servizi di rete superflui o non usati


 tenere backup regolari
 tenere e monitorare log giornalieri
 introdurre adeguate policy sulle password
 installare un Intrusion Detection System
 implementare filtri di routing per bloccare pacchetti ICMP
Frammentati
 vigilare sulla sicurezza fisica delle risorse di rete
112
 configurare filtri per i pacchetti IP spoofed
 installare le patch e gli aggiornamenti per gli attacchi noti, come il
TCP SYN
 abilitare il sistema delle quote d’uso autorizzate (per esempio sui
dischi), se supportato dal sistema operativo
 partizionare il file system per separare dati da applicazioni
 installare strumenti come Tripwire che segnalano cambiamenti nei
file critici (per esempio, i file di configurazione)
 utilizzare firewall con capacità di prevenzione contro gli attacchi più
diffusi
 investire in macchine “di riserva” da mettere rapidamente in
servizio se una macchina simile è stata messa fuori uso
 investire in configurazioni di rete ridondanti e fault-tolerant
(resistenza ai guasti).

Alcuni approcci per difendersi contro gli attacchi DoS sono i seguenti:

 aumentare temporaneamente le risorse disponibili, in modo da


assorbire l’attacco:
 riconoscere almeno in parte l’attacco e bloccarlo, al prezzo di
bloccare anche parte delle attività legittime;
 riconfigurare i sistemi in modo da rendere l’attacco inefficiente.

Alcune soluzioni per risolvere, almeno in parte, il problema del numero


di connessioni elevate al servizio sono le seguenti:

 limitare il numero di connessioni accettate da un singolo indirizzo


IP. Ciò limita l’efficacia dell’attacco, anche se l’attaccante può
utilizzare più indirizzi IP come bersagli. In questi contesti di attacco
non è frequente l’uso di IP spoofing, quindi l’attaccante deve avere
a disposizione un certo numero d’indirizzi validi.
 Aumentare il numero di connessioni accettate al momento
dell’attacco. Ciò aumenta la quantità di risorse che l’attaccante
deve utilizzare per il suo attacco, al prezzo di un possibile degrado
delle prestazioni del sistema.
 Bloccare dinamicamente gli indirizzi IP dai quali viene portato
l’attacco. E’ una delle soluzioni più efficaci, ma richiede il
monitoraggio continuo del traffico per riconoscere gli indirizzi
coinvolti.
113
Mettere in atto delle soluzioni per risolvere i problemi di syn flooding è
più arduo ma possibile. Se il flusso di pacchetti proviene da un indirizzo
IP legittimo, è relativamente facile identificare la fonte e bloccare
l’attacco. Se, però, l’indirizzo di origine è un indirizzo non routable
(appartenente a uno degli intervalli di indirizzi privati, come 192.168.x.x),
è molto più difficile individuare la fonte. Dato che un attacco SYN flood
richiede risorse limitate, aumentare il numero di connessioni incomplete
(semiaperte) accettate dal sistema non è un’arma efficace. Al contrario,
certi firewall limitano il numero di connessioni semiaperte che lo
attraversano, rifiutando ulteriori sessioni quando la soglia viene
superata. Una soluzione popolare è ridurre il timeout per la risposta al
SYN/ACK, o altri interventi analoghi, ma se l’attacco è attuato
efficacemente, il timer dovrebbe essere impostato a un valore talmente
basso da rendere il sistema quasi inutilizzabile. Vale ancora la
considerazione che per l’attaccante non è costoso aumentare la
potenza di fuoco. Questa soluzione è stata, comunque, praticata per
sistemi Windows; si può aggiungere la chiave di registro
HKEY_LOCAL_ MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\
Parameters\SynAttackProtect, e impostarla a 0, 1 o 2 in base a questi
criteri:

 0 (default): protezione tipica contro attacchi SYN


 1: protezione migliore, che utilizza altri valori descritti sotto
 2 (raccomandato): la massima protezione; questo valore aggiunge
ritardi nelle indicazioni di connessione, che fanno sì che le
richieste di connessione TCP abbiano un rapido timeout quando si
verifica un attacco SYN.

I valori opzionali che si possono aggiungere per avere maggiore


controllo sono i seguenti, di tipo DWORD (?):

 TcpMaxHalfOpen - default "100"


 TcpMaxHalfOpenRetried - default "80"
 TcpMaxPortsExhausted - default "5"
 TcpMaxConnectResponseRetransmissions - default "3"
114
Tali valori non sono necessari per utilizzare SynAttack- Protect. Le
modifiche di registro sono attuabili anche attraverso le utility di tweaking
del sistema. Prima di ogni modifica, è imperativo creare un backup dei
file di registro.

Debolezze dei protocolli


Fra i numerosi attacchi possibili su una rete, alcuni si basano sulle
debolezze dei protocolli sfruttate dai malintenzionati per danneggiare
host o intere reti. Ne prendiamo in considerazione alcuni.
Il protocollo TCP/IP, dalla sua comparsa ad oggi, e' stato analizzato dal
punto di vista della sicurezza, delle performance, dell'ottimizzazione e
degli stati indefiniti in maniera molto profonda. Nel corso del tempo varie
vulnerabilità sono state scoperte, sia nel protocollo in sé, che nelle varie
implementazioni disponibili (ossia gli stack TCP/IP dei sistemi operativi).
Tuttavia, una implementazione ben pensata del TCP/IP, e' ancora in
grado di fornire buoni livelli di sicurezza nel caso in cui siano state prese
tutte le precauzioni necessarie.

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.

Nel primo caso l'attività di sniffing permette di analizzare anche


pacchetti destinati e originati da indirizzi terzi, ampliando notevolmente
le possibilità di intercettare informazioni sensibili. In una rete switchata,
invece, quando si prova a sniffare i pacchetti che passano per
l'interfaccia di rete, si possono solo incontrare pacchetti originati dal o
destinati al computer locale, oltre ai soliti broadcast.
Esiste tuttavia una tecnica piuttosto evoluta (arp spoofing) tramite la
quale è possibile sniffare pacchetti di terzi anche in una rete switchata.
Quando si vogliono sniffare pacchetti destinati a terzi, si deve impostare
il "PROMISCUOUS MODE" sull'interfaccia di rete, in modo da farle
processare tutti i pacchetti indifferentemente.
Esistono diversi strumenti di sniffing, alcuni sono esplicitamente
realizzati per attività di hacking (Sniffit, Ettercap, Dsniff...) e evidenziano

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.

Esaminando un IP header, possiamo vedere che i primi 12bytes


contengono varie informazioni riguardanti il pacchetto. Gli otto byte
seguenti, invece, contengono il mittente e il destinatario del pacchetto.

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.

Come possiamo notare il TCP Header è molto differente dall'IP Header:


i primi 12bytes del pacchetto TCP contengono il numero di porta e
quello di sequenza. Come per l' IP anche i pacchetti TCP possono
essere manipolati usando specifici programmi. La porta sorgente e di
destinazione dipendono, normalmente, dall'applicazione di rete in uso
(per esempio la porta 80, usata per il protocollo HTTP). Quello che per
noi è importante, e che ci fa capire come avviene lo spoofing, sono il
numero di sequenza e il numero di “acknowledgement”. I dati contenuti
118
in questi campi accertano la consegna del pacchetto determinando se
un pacchetto debba essere resettato o meno. Il “sequence number” è il
numero del primo byte nel pacchetto corrente, che è relativo al flusso di
dati. L'acknowledgement number contiene il valore del numero
progressivo previsto. Questa relazione conferma, che i pacchetti sono
stati ricevuti correttamente. Il TCP è abbastanza differente dall'IP perché
il trasferimento è controllato abbastanza accuratamente. Ora che
abbiamo una descrizione sia del TCP che dell'IP, esaminiamo le
conseguenze dei vari problemi che possono insorgere. Ovviamente, è
molto facile mascherare l'indirizzo del mittente modificando l'IP header.
Questa tecnica è dunque usata per innumerevoli attacchi .
Indovinando o riuscendo ad ottenere le credenziali di autenticazione di
rete di un qualsiasi utente o comunque una qualsiasi entità, un
aggressore può creare una comunicazione completa sotto l'identità
dell'utente. La sostituzione di una persona rappresenta un'entità valida
in una comunicazione. Strettamente correlato è lo spoofing: per
spoofing si intende infatti “l'arte della contraffazione dei pacchetti,
intendendo per pacchetto una qualsiasi sequenza di dati distinta
trasmessa su di una rete”. In una rete di computer con il termine
“spoofing” s'intende il sistema che permette di creare un pacchetto IP,
ad hoc, nel quale viene falsificato l'indirizzo IP del mittente. Durante lo
spoofing, infatti, l'attaccante autentica la propria macchina nelle rete
bersaglio usando i pacchetti che provengono da un host “fidato”. Il
concetto di Spoofing, fu inizialmente discusso nei circoli accademici fin
dagli anni '80. Robert Morris, fu il primo a denunciare i problemi di
sicurezza del protocollo TCP legati al “sequence prediction”. In seguito
Stephen Bellovin discusse in modo approfondito tale problema nel
“Security Problems in the TCP/IP Protocol Suite”, dove viene analizzata
la struttura dei suddetti protocolli. Un altro attacco maligno fu effettuato
da Kevin Mitnick utilizzando sempre la tecnica della “sequence
prediction”.
Lo Spoofing è sempre intenzionale, ma di fatto, cattive configurazioni e
piccole disattenzioni nella propria rete possono causare lo stesso effetto
di un attacco deliberato. Gli attacchi subdoli, come lo Spoofing, sono

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:

 IP Spoofing non cieco: è attuabile in una rete LAN; quando chi


attacca cerca di farsi passare per un host che è nella sua stessa
sottorete .
 IP Spoofing cieco: quando l'attaccante cerca di farsi passare per
un host di una qualsiasi sottorete.
 Attacchi DoS: l'attaccante cerca di bloccare un host per impedire a
quest'ultimo di svolgere la normale attività oppure per prenderne il
controllo .

Spoofing non Cieco


Solitamente i vari host di una sottorete sono collegati da apparecchi
(HUB) che, per far arrivare un pacchetto ad un determinato host, lo
trasmettono in broadcast a tutti i computer della sottorete. Quando il
pacchetto arriva ad un determinato host, quest'ultimo esamina l'indirizzo
di destinazione contenuto nel pacchetto. Se questo indirizzo coincide
con quello dell'host stesso, il pacchetto viene processato, altrimenti
viene scartato in quanto era destinato ad un altro host. Tuttavia esiste
una modalità particolare in cui è possibile impostare la scheda di rete: la
modalità promiscua. Quando la scheda di rete si trova in questa
modalità, permette di processare tutti i pacchetti che arrivano. Come già
accennato sopra, nel caso dello Spoofing non cieco l'attaccante sta
cercando di farsi passare per un host che fa parte della sua sottorete;
quindi, impostando la scheda di rete in modo promiscuo, egli riesce a
leggere tutti i pacchetti indirizzati all'host che intende impersonare e può
così scoprire Sequence number e Acknowledgement number della
connessione in corso e cercare di inserirvisi. Alcuni tipi di attacchi che
possono essere messi a segno con questa tecnica sono la chiusura di
una connessione esistente e l'Hijacking.

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

Spoofing del DNS


Il DNS Spoofing è un termine che viene usato quando un DNS accetta
ed usa informazioni non corrette fornite da un host che non ne ha
l'autorità. Tale attacco può essere attuato in tre modi:
1. Cache poisoning
2. Simulazione delle risposte del DNS
3. Manomissione fisica del DNS

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:

 controllo del campo IDENTIFICATION


 risposta coerente con la domanda effettuata
 risposta inviata alla porta UDP scelta dal richiedente Un attacco
basato sulla simulazione delle risposte,deve essere in grado di
considerare tre variabili: l'id, la risposta e la porta: • l'ID: formato,
come detto in precedenza da 16bit, è piccolo e facile da prendere •
la risposta: poiché ci sono servizi che interrogano il DNS di
continuo, con un delay fisso tra le richieste, è possibile predire
anche il momento in cui viene fatta una richiesta al DNS • Porta
UDP: solitamente il BIND (ovvero il server DNS più usato in
internet) si affida al numero di porta progressivo fornito dal kernel.
Per difendersi da un attacco che simuli le risposte del DNS,
occorrerà semplicemente utilizzare un resolver che genera un "ID
truly random" e che scelga un numero di porta "truly random" in
modo da aumentare in maniera sostanziale la sicurezza del DNS.

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.

Attacco fisico del DNS


Per attuare tale attacco si altera la tabella del DNS, cambiando a mano
gli indirizzi IP che interessano. Per operare questo tipo di attacco
occorre avere accesso alla configurazione di un "name server"
autoritativo. L'attacco si svolge in quattro semplici passi:
1. assicurarsi che il name server sia autoritativo (deve essere
registrato presso interNIC)
2. forzare le regole: si applica al BIND un path malizioso, si ricompila
il tutto e si aggiungono i file.
125
3. attacco con jizz.c: con un piccolo script bash si rende più semplice
l'uso di jizz
4. supponiamo di conoscere i name server della vittima e
supponiamo che il name server sul quale ci si trovi sia autoritativo
per i name server della vittima, allora usando jizz forziamo il name
server ad inviare ai name server della vittima l'associazione
66.35.250.165 microsoft.com dove 65.35.250.165 corrisponde ad
un altro sito web.

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.

Domande di comprensione del capitolo 3


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 la giusta descrizione per l’attacco “Eavesdropping”?
a. L’atto di frugare nei cestini dell’immondizia
b. L’atto di ascoltare le conversazioni g
c. L’atto di carpire informazioni
2. Cosa significa DOS?
a. Distributed of Service
b. Digital of Service

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.

In effetti questo risulta sicuramente una cosa positiva per la velocità


delle operazioni, ma può portare, se non si ha un pc ben protetto a
essere invasi da programmi nocivi che possono impartire comandi
differenti, e ovviamente nocivi per la stabilità della macchina, come se
fosse l’utente utilizzatore a imporglieli.

Questi programmi come vedremo nel proseguo del capitolo hanno


svariatissime funzioni e sono molto intelligenti.

Possono portare ad una implementazione della macchina tale da non


essere più utilizzata, fino al completo uso a scopi finanziari!

Analizziamo adesso nel dettaglio tutti questi casi e tutte le possibili


minacce.

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:

 VBScript è sintatticamente analogo al Visual Basic, ma applicato,


in questo contesto, all'interazione con funzioni di sistema
attraverso chiamate a librerie (API: Application Program Interface)
piuttosto che alla realizzazione di applicativi. Gli script VBScript
prendono solitamente il suffisso .vbs.
 JScript risulta abbastanza affine a JavaScript, il linguaggio di
scripting inventato da Netscape per automatizzare certe classi di
operazioni nei browser web, come la validazione dei campi
presenti nelle moduli (form) da compilare in certe pagine web,
oppure per rendere parzialmente dinamici i contenuti delle stesse
pagine. Il suffisso è solitamente .js.

Praticamente è identico al comando per Dos del COMMAND oppure è


anche paragonabile a Internet Explorer per l'esecuzione degli script
137
Dynamic HTML, oppure ancora, in ambiente Linux, alle varie shell
esistenti, ognuna delle quali è in grado di eseguire script realizzati nel
corrispondente linguaggio.
Per l'esecuzione da consolle di script in ambiente WSH esistono i
comandi cscript e wscript. Il primo, che lavora in contesto consolle,
agevola il trattamento dei risultati dell'esecuzione dello script e consente
di eseguire programmi esterni il secondo Wscript lavora invece
indipendentemente dalla consolle, perciò in questo caso i risultati dello
script (anche se emessi come semplici messaggi di testo con il
comando echo) saranno mostrati in uno o più dialog box durante la sua
esecuzione. Di solito wscript è impostato come l'applicazione di default
per eseguire gli script, pertanto esiste il rischio di mandare
accidentalmente in esecuzione uno script molesto con un semplice
doppio clic sul relativo file .vbs.
Script di questo tipo, che possono accedere al registro, invocare
applicazioni Windows attraverso il modello COM (Common Object
Model), montare dischi di rete, perfino eseguire operazioni su computer
remoti (se sussistono le necessarie condizioni) hanno potenzialità
enormemente più ampie rispetto agli script .BAT di MS-DOS, e proprio
per tale motivo pongono rischi per la sicurezza assai maggiori poiché
possono essere sfruttati da malware (codice maligno) per instaurare
meccanismi subdoli con cui controllare la macchina o disturbarne il
funzionamento in vario modo. Anche per tale motivo è prevista la
possibilità di "marchiare" con firma digitale gli script WSH per
autenticare l'identità dell'autore. Altre possibilità per limitare i rischi sono
l'imposizione di restrizioni sulla facoltà di un utente di eseguire script
WSH o addirittura la disabilitazione totale di WSH.
I modi di mandare in esecuzione un programma o uno script in ambiente
Windows sono molteplici: tra quelli espliciti citiamo il doppio clic
sull'icona dell'eseguibile in una finestra di Explorer o il doppio clic su un
collegamento all'eseguibile. Esistono anche metodi impliciti, quali
l'inserimento di un collegamento all'eseguibile nel gruppo Esecuzione
automatica o nell'apposita sezione del file WIN.INI, e via dicendo. I
programmi antimalware elencano tra i propri scopi l’accurato controllo di
138
tutti i possibili agganci (hook) ed eventualmente la loro bonifica per
neutralizzare il malware associato, come vedremo più avanti. Un’altra
forma sotto la quale si può presentare un codice eseguibile consiste
nelle cosiddette macro. Si tratta di procedure scritte in una sorta di
linguaggio di scripting interno, riconosciuto da alcune applicazioni di
complessità medio - alta, tra cui la suite Office, i programmi CAD e
perfino certi editor. Applicazioni di questo livello sono capaci di eseguire
un gran numero di operazioni, che vengono di norma invocate in modo
interattivo dall'utente per mezzo dell'interfaccia grafica, con tastiera e
mouse. Ancora più importante, è possibile fare sì che una determinata
macro venga eseguita all'avvio dell'applicazione. Se paragoniamo
l'applicazione (per esempio Word) al sistema operativo (per esempio
Windows) e la macro a uno script, una situazione del genere
corrisponde a uno script “S” agganciato al gruppo Esecuzione
automatica: la macro sarà attivata all'avvio di Word, così come lo script
“S” viene attivato all'avvio di Windows. La conseguenza di tutto ciò è
inquietante: si apre infatti la possibilità di eseguire inavvertitamente un
programma solo per aver aperto un documento o anche solo
un'applicazione di uso normale e di per sé innocua. Come vedremo in
dettaglio più avanti, tale circostanza è stata naturalmente sfruttata dagli
autori dei cosiddetti "virus delle macro di X", dove X è il programma
interessato.

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:

 le funzioni per la lettura di righe di testo da tastiera (gets())


 le funzioni per la copia o concatenazione di stringhe (strcat(),
strcpy())
 le funzioni per l'emissione di messaggi di output su buffer in
memoria centrale (sprintf(),vsprintf())
 funzioni per interpretare stringhe ricevute da rete, disco o tastiera,
riconoscendo ed estraendone campi anche di tipo stringa (famiglia
di funzioni scanf())
Quando il programma è in esecuzione, il suo codice eseguibile e le sue
variabili sono ospitati in regioni ben precise della memoria. Inoltre,
quando nell'algoritmo una funzione F1 a un certo punto P della sua
esecuzione chiama un'altra funzione F2, vi è la necessità di ricordare
l'indirizzo dell'istruzione P, in modo tale che al termine della funzione F2
si possa riprendere l'esecuzione di F1 dall'istruzione successiva a
quella, P, in cui si era momentaneamente interrotta. L'indirizzo
dell'istruzione successiva a P, è detto "indirizzo di ritorno" o return
address (RA). Terminata l'esecuzione della funzione F2, il processore
eseguirà un salto all'indirizzo RA, dove ci si aspetta che si trovino nuove
istruzioni da eseguire (normalmente, come accennato, si tratta delle
istruzioni della parte restante della funzione F1).
Un computer è collegato con l'ambiente esterno tramite periferiche e
porte di rete. Va detto subito che non tutte presentano uguale criticità.
Alcune, come le connessioni di rete, possono essere esposte in modo
continuativo a intrusioni interamente dovute a cause esterne. Altre,
come le pen-drive usb, CD-ROM o floppy disk, possono rappresentare
una via d'entrata solo a condizione che l'inconsapevole utente inserisca
un supporto ed apra applicazioni o dati che vi sono presenti. Ciò
significa che le misure preventive dovranno avere modalità adatte alla
tipologia della via d'accesso. ultimamente si sta affermando una nuova
modalità di infezione che sfrutta la funzionalità tipica di Windows di
141
eseguire dei file da un supporto non appena questo viene inserito nel
computer. Questa funzione conosciuta come "autorun" è quella che, per
esempio, all'inserimento di un CD lancia in automatico l'installazione del
programma in esso contenuto. In sostanza Windows non fa altro che
controllare la presenza sul CD di un file denominato "autorun.inf" e, se lo
trova, procede ad eseguire le istruzioni contenute al suo interno che gli
indicano quale programma far partire. Vista la ormai capillare
diffusione delle chiavette USB, e dato che il meccanismo dell'autorun
interessa anch'esse, i creatori di virus non si sono fatti sfuggire
l'occasione per sfruttarle con lo scopo di diffondere le proprie creature.
Nella pratica quindi non appena si inserisce la pennetta USB su un PC
infetto il virus si trasmetterà su di essa, e da quel momento ogni volta
che sarà collegata ad un computer, senza alcun intervento da parte
dell'utente, il virus in essa contenuto si eseguirà automaticamente e
tenterà di infettare il PC su cui si trova. La soluzione è o un ottimo
antivirus che scansiona la penna USB appena inserita nella macchina o
la disabilitazione dell’AUTORUN.L'unica controindicazione alla
disattivazione dell'autorun è che, all'inserimento di un CD contenente un
programma da installare, Windows non lo lancerà più automaticamente
e pertanto sarà compito dell'utente cercare il file di installazione
(tipicamente denominato "Setup") ed eseguirlo manualmente.
Cosa analoga può succedere con il floppy disk.
Il maggior rischio con i floppy disk si corre quando li si dimentica nel
drive e si spegne il PC. Alla riaccensione, se non ci si ricorda di estrarre
il disco, il sistema tenterà anzitutto, nel 99% dei casi, di effettuare l'avvio
del sistema operativo (bootstrap) dal floppy, prima di ripiegare sul
"classico" avvio da hard disk. Questa è infatti l'impostazione più comune
a livello di BIOS. Come si sa, se il floppy non è avviabile, a seconda
della versione di DOS o Windows apparirà un messaggio del tipo "Non-
system disk or disk error. Please insert a valid boot disk and press any
key". Ciò che non tutti sanno è che tale messaggio non è visualizzato
dal BIOS, ma da un piccolo programma che si trova nel boot sector del
floppy stesso. In altre parole, nel momento in cui ci viene comunicato
che il floppy non è avviabile, del software residente su di esso è stato

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:

 Dotarsi di una soluzione antivirus efficace e tenere regolarmente


aggiornato il pattern file che contiene le firme per identificare i vari
tipi di virus; far eseguire periodicamente scansioni totali del
sistema; analizzare con l'antivirus programmi e file appena
scaricati prima di eseguirli o di aprirli.
 Installare uno strumento antimalware con protezione in tempo
reale; abilitare l'aggiornamento automatico; eseguire comunque
periodiche scansioni complete del sistema.
 Visitare regolarmente i siti dei produttori del sistema operativo e
del software applicativo utilizzato sul proprio sistema e scaricare e
installare gli eventuali aggiornamenti relativi alla sicurezza.
 Scegliere tutte le password in modo opportuno (e diverse tra loro)
e cambiarle periodicamente (vedi la lezione 2 per l’approccio
corretto nella scelta di una password).
 Installare un firewall e configurarlo con un insieme equilibrato di
restrizioni e controlli sul traffico di rete.
 Se possibile, evitare di lasciare il computer acceso e collegato in
rete quando non lo si usa. Disabilitare opzioni come la
condivisione di file e stampanti, se non necessarie.

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

Provate anche a effettuare ricerche per tutto il registro utilizzando come


valore il nome del sito o del programma da rimuovere. Magari fatevi
147
aiutare da un programma quale Regcleaner.

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.

Trojan horse (letteralmente "cavalli di Troia")


Il termine si dice sia stato coniato dall'hacker Dan Edwards e si rifà alla
mitologia greca: Il cavallo di troia. Infatti agli inizi si trattava di programmi
che si spacciavano per giochi o upgrades ma che in realtà
nascondevano altre nefandezze. In generale un Trojan è un virus che
viene mascherato all'interno di un'applicazione apparentemente
inoffensivo.

I Trojan vengono erroneamente considerati worm, ma a differenza di


essi, i cavalli di troia non sono in grado di autoreplicarsi. Si tratta di una
tecnica di dissimulazione in cui programmi in apparenza innocui (spesso
con un nome, una dimensione, un'icona ed altri particolari che li fanno
assomigliare in tutto e per tutto a programmi noti e diffusi) celano invece
algoritmi mirati a violare la sicurezza del sistema su cui vengono
eseguiti (per esempio cercando sul disco rigido file con informazioni
riservate, che vengono raccolte e poi inviate di nascosto a un apposito
sito di raccolta) o a minarne la stabilità, per esempio causando
intenzionalmente errori di sistema, per rallentare o paralizzare il normale
funzionamento del sistema operativo o di qualche programma in
particolare. Viste le sue proprietà, un trojan horse può funzionare da
"vettore virale" per installare di nascosto un virus o un dialer sul sistema.
In questo caso, però, al suo interno è necessariamente presente il
codice del virus o del dialer, e un programma antivirus o antimalware
150
con funzioni di prevenzione può rilevarlo e bloccarlo a meno che il trojan
non adotti tecniche crittografiche per occultarlo. In quest'ultimo caso il
rilevamento preventivo potrebbe risultare impossibile; dunque la
principale speranza di difesa consiste nell'effettuazione di scansioni
regolari con antivirus o antimalware, che dovrebbero almeno riuscire a
rilevare l'ospite indesiderato una volta installato. Naturalmente, meno
frequenti sono le scansioni integrali periodiche e più tempo avrà tale
ospite per apportare danni al sistema, per riprodursi o per installarsi in
modo non rilevabile.

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.

Logic Bomb (Bomba logica)


Il termine Logic Bomb (che può essere letteralmente tradotto con
"bomba logica") viene utilizzato per riferirsi ad una funzione che va a
danneggiare un sistema informatico al momento in cui si verifica una
condizione prestabilita. La logic bomb è una funzione che può essere
usata per attaccare (una vendetta di un dipendente al suo ex posto di
lavoro) o per difendersi (ad esempio la cancellazione di dati importanti
se mai qualcuno di non autorizzato dovesse riuscire ad entrare nel
sistema informatico in questione).

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.

L'evoluzione dei virus polimorfici ha fatto in modo che essi riescano a


cambiare la codifica da un'infezione a un'altra, come se il programma
modificasse se stesso dopo ogni attacco.

In questo modo in un Pc possono diffondersi decine di virus


formalmente diversi che in realtà sono lo stesso virus polimorfico
mutato. Per intercettare un virus polimorfico il vostro antivirus deve
possedere una funzione detta scansione crittografica che riesce a
intercettare il corpo criptato del virus. Gli ultimi software antivirus sono in
grado di farlo.

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.

Un virus Stealth riesce così a sfuggire facilmente ai controlli degli


antivirus. Quando però il virus è attivo e si trova nella memoria RAM,
diventa visibile. Gli antivirus di ultima generazione non solo cercano di
cogliere in fallo il virus Stealth quando questo è in memoria, ma
riescono a rilevarlo anche in fase di latenza, quando è addormentato,
con sofisticati strumenti di interrogazione.
157
I Virus Slow (lenti)
I Virus Slow sono virus parassitari che infettano solo i file, e non i
programmi eseguibili, e per questo risultano particolarmente difficili da
intercettare. In particolare entrano in funzione solo quando è l'utente ad
effettuare operazioni sui file (solitamente i file di sistema), diffondendosi
principalmente per via parassitaria attraverso copie ripetute.

Quando si modificano file di sistema e si salvano, il virus intercetta


l'operazione e si infila nella copia. L'antivirus rileverà la modifica e vi
avvertirà del fatto che è in atto un'infezione. Il virus slow si propaga
perché spesso l'utente non dà troppa importanza all'avvertimento
dell'antivirus.

Per intercettare un virus Slow il vostro antivirus deve essere dotato di


uno scudo di integrità (Integrity Shell) in grado di monitorare
costantemente la creazione di ogni file. L'antivirus tenta di modificare file
di sistema COM e file EXE traendo in inganno il virus slow che esce allo
scoperto per replicarsi. A questo punto scatta la trappola e il virus è
debellato.

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.

Virus Multiparte (o ad attacco multiplo)


Questi virus infettano il Pc in modi differenti comportandosi come virus
di altre razze.

Un multiparte solitamente prima infetta il settore di boot del disco. Al


riavvio del Pc vengono infettati tutti i file eseguibili che poi vengono

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 Armored (Corazzati)


I Virus Armored possono essere sia virus di boot che virus parassitari, il
termine corazzati identifica più la loro protezione che il loro
funzionamento.
Questo tipo di virus infatti cerca di sfuggire all'antivirus facendogli
credere di essere da un'altra parte.

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).

Naturalmente il virus infetta il vostro computer solo se eseguite


l'allegato: quindi se non avete mai aperto un file chiamato Happy99.exe
arrivato via e-mail, che una volta aperto mostra una bella finestra con
dei fuochi di artificio e gli auguri per il nuovo anno, non dovete
preoccuparvi.

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.

 Uscite da Windows ed entrate in Ms-Dos (o aprite una sessione


Dos)
 Andate nella directory System di Windows
 Eliminate i file: ska.exe - ska.dll - wsock32.dll
 Rinominate il file wsock32.ska in wsock32.dll
Inoltre, ricordatevi di avvertire tutte le persone cui avete mandato
messaggi recentemente

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!

Storia degli antivirus


La storia dei software antivirus è lunga praticamente quanto quella dei
virus stessi e naturalmente negli anni vi è stato per i "difensori" un
processo evolutivo paragonabile a quello degli "attaccanti", sebbene il
principio fondamentale di funzionamento degli antivirus sia rimasto
relativamente stabile nel tempo.
Bisogna tornare indietro negli anni ’60 per pervenire il primo tentativo di
creazione di antivirus. In effetti in quel periodo un gruppo di
programmatori e scientifici si misero all’opera e crearono un gioco
chiamato la guerra dei nuclei detto “core Wars”. Gli stessi
programmatori e scientifici crearono un antivirus chiamato “reeper” che
praticamente riuscì a distruggere il core wars!!!

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”

Individuazione dei virus: focus sull'identità


Ancor oggi, infatti, un antivirus rileva la presenza di un virus innanzitutto
in base al riconoscimento di una determinata sequenza nota di byte
all'interno di un file (magari in posizioni particolari di quel file). La
sequenza da riconoscere è detta "traccia virale" o "virus signature".
Questo approccio ha le seguenti implicazioni principali:

 La conoscenza delle sequenze identificative deve essere conferita


dall'esterno e mantenuta aggiornata regolarmente.
 Ogni nuovo virus rimane pericoloso fino a quando non viene
scoperto e fino a che un nuovo aggiornamento per l'antivirus viene
rilasciato ed installato sul sistema.

Ciò significa che, con tale approccio, è fisiologico che, se la


"produzione" di nuovi virus da parte degli hacker mantiene un ritmo
costante, mediamente vi sia sempre un certo numero di virus troppo
recenti per essere stati già scoperti. In altre parole, in tali condizioni il
processo non convergerebbe mai verso la "salute definitiva", ma
piuttosto verso uno stato di "infezione cronica" causata da forme virali
sempre nuove. A proposito di questo eterno rincorrersi degli inventori
dei virus e degli sviluppatori degli antivirus, va anche osservato che da
un lato, col passare del tempo, diventa sempre più difficile scrivere virus
che non assomiglino neanche un po’ a virus già esistenti e riconoscibili,
dall'altro è sempre più difficile, per chi identifica e raccoglie tracce virali,
congegnare il meccanismo di riconoscimento in modo da evitare i falsi
allarmi. Infatti i virus sono programmi scritti con finalità indesiderate, ma
utilizzano tecnologie di base uguali a quelle dei programmi "innocenti"
(aprire file, scrivere, leggere, eseguire controlli e confronti) perciò
bisogna distinguere tra le operazioni elementari, che di per sé non
possono costituire "indizio di reato", e la combinazione intenzionalmente
maliziosa di tali operazioni innocue.
162
Un inseguimento continuo
La sfida continua tra gli sviluppatori di virus e di antivirus, al di là della
gravità della materia, presenta aspetti di notevole interesse tecnico, il
tutto in una cornice quasi epica da sempiterno scontro tra "forze del
bene e forze del male" che si trascina da decenni. Gli sviluppatori di
virus hanno messo a punto nuove e sottili minacce introducendo i virus
mutanti o polimorfici. Per contrastare le strategie di ricerca degli
antivirus, si tratta di virus progettati in modo tale da creare
automaticamente "mutazioni" di sé che, pur rimanendo pienamente
funzionanti e capaci di perpetuare l'infezione, risultino irriconoscibili (in
quanto "nuove", quindi non ancora "note") alle scansioni degli antivirus.
Se si confrontano tra loro le versioni mutate, si nota che solo una
piccolissima porzione di codice (preambolo) è costante e riconoscibile,
mentre il resto del codice del virus è in certo qual modo "crittografato"
con chiave sempre diversa, e viene decifrato al volo dal preambolo
subito prima di essere eseguito. Il virus diventa molto difficile da
riconoscere perché il codice del preambolo è progettato in modo da
sembrare "innocente" e "generico", e in effetti, di per sé, lo è: per
esempio, anche gli archivi e i programmi auto - espandenti funzionano
in modo simile e possono avere un preambolo che si occupa di estrarre
il codice o l'archivio vero e proprio, magari con una password di
cifratura. Questa dissimulazione sotto una veste di apparente
"normalità" complica il lavoro dell'antivirus. Il successo di tale tecnica
dipende da quanto profonde sono le mutazioni che il virus è capace di
produrre. Rappresenta un ulteriore problema il fatto che la porzione
"preambolo" è generalmente breve. Ora, più breve è la firma virale che
viene cercata per identificare il virus, più alta è la probabilità che la
stessa sequenza compaia, in modo del tutto "legittimo", come parte di
un algoritmo di un programma assolutamente "sano", oppure come dati
e non istruzioni. In questi casi, il programma antivirus può produrre dei
"falsi allarmi", che creano comunque un disservizio all'utente, in quanto
questi potrebbe essere portato, per prudenza, a cancellare dal disco un
file perfettamente normale. Altre tecniche per creare nuove difficoltà
sono mirate espressamente a contrastare l'attività degli antivirus, come
163
il funzionamento stealth, mediante il quale il virus "si nasconde" ai
controlli esponendo temporaneamente una falsa copia innocente del
vettore virale. In sostanza, un virus stealth è capace di interferire con il
sistema operativo a un livello tale da riuscire a nascondere la propria
presenza anche ai programmi antivirus, ingannandoli e quindi
"sopravvivendo" alle loro ricerche. Questo tipo di virus si diffonde più
facilmente con quei sistemi operativi in cui non vi è protezione contro la
manipolazione dei file di sistema, o in cui non è presente un solido
sistema di livelli di privilegio che impedisca a programmi utente (quali i
virus) di intercettare chiamate di sistema. Una forma di difesa può
essere l’impiego alternato di più antivirus diversi, in quanto il particolare
espediente stealth usato dal virus può essere efficace soltanto contro la
tecnica d'indagine adottata da un particolare software di scansione.
L’installazione e l’impiego contemporaneo di più antivirus sullo stesso
sistema può provocare incompatibilità, falsi allarmi e veri e propri blocchi
di sistema. Perciò va usata con cautela. Gli sviluppatori di antivirus, dal
canto loro, hanno messo in campo strategie per evitare controlli molto
probabilmente inutili, come quella d’ignorare i file con suffissi che fanno
escludere che possano essere "portatori" dell'infezione: (per esempio,
limitandosi ai formati dati, è impossibile alloggiare un virus in una GIF in
modo che si attivi all'apertura perché ciò non è previsto dal formato GIF,
mentre in un file DOC questo è possibile). Per limitare la quantità di
firme virali in archivio e accelerare l'analisi si tenta inoltre di riconoscere
"famiglie" di virus, con parti comuni relativamente grandi e parti più
piccole che risultano differenziate nelle "mutazioni". Altre misure
prudenziali tendono a impedire che il virus possa interferire con il lavoro
dello stesso antivirus annidandosi in librerie di sistema usate da
quest'ultimo: la tecnica spesso adottata per evitarlo consiste nella
scansione della memoria centrale, per escludere il rischio che vi sia già
in essere un'infezione prima d’iniziare la scansione sui file.
Diversamente, il virus potrebbe addirittura servirsi del lavoro
dell'antivirus per farsi comodamente condurre come suo passeggero
nella visita di tutti i file del sistema, infettandoli subito dopo che
l'antivirus li abbia giudicati sani! L'equilibrio tra queste due difficoltà

164
antagoniste porta a ritenere che sia molto improbabile che la situazione
volga decisamente a favore degli attaccanti o dei difensori.

Limiti dei programmi antivirus


Un'altra conseguenza dell'approccio "tradizionale" a scansione completa
è l'appesantimento progressivamente crescente dei software antivirus e
quindi il rallentamento dei computer durante la loro esecuzione. Per file
system troppo estesi (in rapporto alla potenza della CPU) potrebbe
addirittura essere impossibile completare una scansione integrale del
sistema nelle ore notturne. Questo è dovuto al fatto che il database delle
firme virali note ("signature file" o "virus pattern file") continua ad
allungarsi: non è infatti possibile, per ragioni di prudenza, considerare
"debellate" le infezioni virali più vecchie, pertanto le vecchie virus
signature devono essere mantenute nel repertorio, al quale continuano
ad aggiungersene di nuove. Poiché il software antivirus deve
confrontare parti di ogni file con tutte le firme virali note, col passare
degli anni e l'aumento del numero di firme virali diventa necessario fare
un numero di confronti sempre maggiore. Tale aumento di lavoro
rallenta gli antivirus e rende sempre più pesante il processo di "bonifica".
Un altro aspetto da considerare è il fatto che se la logica dell'antivirus
consiste nell’esaminare periodicamente tutti i file presenti sul sistema
(scansione periodica integrale), il grado di protezione offerto non risulta
soddisfacente. Nel caso si verifichi un'infezione, infatti, questa non sarà
rilevata fino alla prossima scansione completa. Nel frattempo essa avrà
avuto il tempo di diffondersi fuori controllo e magari di provocare i primi
danni reali. Per cercare di ovviare all’inconveniente, da lungo tempo gli
antivirus integrano un modulo di controllo residente che lavora in tempo
reale intercettando tutti gli accessi a file system ed esaminando "al volo"
tutti i file prima che vengano aperti, letti e magari eseguiti. In questo
modo la protezione è continua e non saltuaria come nel primo modello
di funzionamento, con un notevole miglioramento della sicurezza offerta.
Tuttavia, mentre con la tecnica delle scansioni periodiche complete è
possibile programmare questa attività nelle ore notturne in cui il sistema
è più scarico, con l'approccio a "protezione continua" (real time scan) il
165
sistema risulta costantemente appesantito durante il normale
funzionamento. In pratica, ogni apertura di file comporta un piccolo
supplemento di lavoro per il sistema e ciò comporta un rallentamento
costante, visibile anche dagli utenti finali nelle ore di servizio. Sono
naturalmente possibili ottimizzazioni: per esempio, una volta verificato
attraverso una scansione integrale che sul sistema non siano già
presenti infezioni virali, è possibile decidere di sorvegliare le sole
aperture in scrittura, che sono usate dai virus per infettare i file, ed
esaminare i dati che vengono scritti, specie se la scrittura si rivolge a file
eseguibili già presenti.

Individuazione dei virus: focus sui comportamenti


Questo tipo di strategia ci porta a un altro possibile approccio di lavoro
degli antivirus, che possiamo comprendere attraverso un parallelo.
Anziché conoscere le impronte digitali di tutti i pregiudicati noti e di
controllare le impronte di tutti i passanti, può avere senso anche solo
limitarsi a rilevare e bloccare sul nascere i comportamenti sospetti,
come estrarre un'arma, girare mascherati, seguire o spiare qualcuno.
Un antivirus può cioè integrare la tecnica tradizionale con analisi
euristiche (capaci di riconoscere nuovi modelli prima non noti) sui
comportamenti attuati da un processo: aprire in scrittura un file
eseguibile è sempre sicuramente sospetto, come lo è tentare di scrivere
sul Master Boot Record del disco se non lo si sta formattando. Tale
strategia permette in particolare di bloccare anche virus non ancora noti
al database delle firme virali, poiché si concentra sui comportamenti
anziché sull'identità. Purtroppo un'analisi sui comportamenti può portare
a falsi allarmi anche più facilmente di una scansione virale. Infatti,
qualsiasi ambiente di programmazione, in fase di compilazione e di link,
ha evidentemente bisogno di aprire in scrittura un file eseguibile, così
come qualsiasi utility per il partizionamento o l'inizializzazione del disco
fisso deve poter modificare il master boot record e la partition table. Per
evitare di generare falsi allarmi, l'analisi dovrebbe tener conto
dell'applicazione che sta adottando un comportamento sospetto e
prevedere una lista di "esenzioni", oppure si dovrebbe scendere ancor
166
più nel dettaglio e verificare non solo se un programma tenta di aprire in
scrittura un file eseguibile, ma anche che cosa esattamente sta tentando
di scrivervi. Ottimizzazioni di questo tipo sono sicuramente adottate per
migliorare il grado di protezione mantenendo un extra lavoro (overhead)
accettabile per il sistema, ma è chiaro che non ci si può spingere troppo
in là con le "ipotesi di reato", altrimenti si rischierebbe di creare falsi
allarmi in permanenza oppure di rallentare troppo il funzionamento
complessivo. Per esempio, alcuni BIOS prevedono un'opzione Virus
Protection che consiste nel bloccare ogni e qualsiasi accesso in scrittura
al master boot record (MBR) del disco fisso. Indubbiamente tale
protezione fornisce un'elevata sicurezza (non è generalmente possibile
disattivarla da software, quindi il codice del virus non può aggirarla), ed
essendo realizzata nel BIOS può risultare anche molto veloce, ma in
mancanza di una logica più sofisticata per distinguere tra accessi leciti e
accessi illeciti, abilitare tale opzione significa interferire con il
funzionamento dei programmi di gestione del disco che hanno
legittimamente bisogno di poter effettuare questo tipo di operazioni. Il
risultato è che pochi utenti la abilitano ed essa si rivela perciò
sostanzialmente inutile. La lezione è che il complesso di protezione
antivirus deve risultare complessivamente attento e preciso, ma non
generalizzare in modo paranoico, altrimenti è controproducente. La
ricerca di un equilibrio tra prestazioni e protezione è il difficile esercizio
in cui si devono quotidianamente cimentare gli sviluppatori di software
antivirus. Purtroppo dobbiamo registrare, negli anni, una tendenza a un
rapido appesantimento delle macchine durante il lavoro degli antivirus.
Certe operazioni, come la copia di interi alberi di directory da un punto
all'altro del disco, possono risultare nettamente appesantite dalla
presenza di un antivirus. Addirittura, nella copia di file fra dischi di rete
appartenenti a PC diversi, i file oggetto dell'operazione potrebbero
essere inutilmente sottoposti a due diversi controlli, alla partenza e
all'arrivo, qualora l'antivirus sia installato su entrambi i sistemi!
Disattivando temporaneamente la protezione si può ottenere un
considerevole aumento di prestazioni. Anche per questa ragione, alcuni
antivirus sono dotati di una funzione snooze. Tale funzione consente di
disabilitare la protezione per un certo tempo (di solito qualche minuto)

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.

Installare, configurare, mantenere aggiornato un


programma antivirus
Per dotare il proprio sistema di una protezione antivirus occorre
fondamentalmente compiere i seguenti passi:

 Scaricare e installare un software antivirus. Ormai ve ne sono di


ottimi anche tra quelli gratuiti. Consigliamo, ad esempio, AVG
AntiVirus
 A installazione conclusa, aggiornare immediatamente l'antivirus e
lanciare una prima scansione integrale del sistema. Questo è
necessario in quanto il package d’installazione del software
antivirus cambia relativamente di rado. Quindi, anche se esso
contiene sempre un database delle firme virali, questo risulterà
aggiornato alla data in cui è stato completato il package: a volte è
vecchio anche di mesi. Senza un immediato aggiornamento, la
protezione sarebbe inadeguata.
 Configurare il software antivirus in modo tale che: - risulti attivata la
protezione in real time. Questa è di solito l'impostazione di default,
ma vale la pena di controllare. - sia abilitato il sistema di
aggiornamento periodico automatico del "signature file".
Naturalmente ciò richiede una connessione a Internet: in sua
mancanza è possibile effettuare l'aggiornamento anche da CD-
ROM o altro supporto. Molto importante è anche controllare
manualmente, ogni tanto, che la data del signature file sia recente.
Infatti è possibile che per qualche motivo (connessione di rete
precaria, firewall aziendale modificato, sito del produttore
cambiato) l'aggiornamento automatico sia fallito. In tal caso l'ignaro
utente del sistema, sentendosi tranquillo e protetto, potrebbe
essere portato ad agire con minore prudenza e con prevedibili
168
conseguenze. - vengano eseguite scansioni periodiche integrali,
per esempio nelle ore notturne. Se il sistema è dotato di un file
system troppo grande per poterlo analizzare tutto in tale arco di
tempo, in alcuni antivirus è possibile programmare scansioni
scaglionate nel tempo: certe cartelle il lunedì, certe altre il martedì
e così via. Naturalmente la sicurezza decresce in quanto aumenta
il tempo medio intercorrente tra due scansioni consecutive sulla
stessa area, durante il quale esiste il rischio che si instauri (e
rimanga non rilevata) una nuova infezione.
Molto simile la procedura da seguire per installare e attivare una
protezione antispyware (Vedi riquadro pagine seguenti Installazione e
funzionamento di un antispyware). Il funzionamento, invece, differisce
leggermente da quello di un antivirus, in quanto per quest'ultimo è
sempre lecito infetto, mentre nel caso della prevenzione run time
antispyware è meno banale bollare inequivocabilmente un determinato
comportamento come indizio d’infezione. Per esempio, un accesso in
scrittura al Registro di sistema potrebbe mascherare un tentativo di
attacco, ma innumerevoli programmi "sani e normali" ne hanno
legittimamente bisogno per le loro attività. Per questi motivi, le
segnalazioni di "presunta minaccia" visualizzate dagli strumenti
antispyware in genere prevedono una qualche forma d’interattività che
permette all'utente di giudicare e decidere se autorizzare o negare il
permesso a una determinata azione sospetta. L'utente può sentirsi
chiedere, per esempio, se autorizzare o meno l'esecuzione di uno script
VBScript: qualora si decida di bloccarlo e di ricordare la scelta fatta, lo
script entrerà in una sorta di "blacklist" da cui potrà eventualmente
essere rimosso in seguito. Quando un'operazione viene autorizzata, la
segnalazione è simile, ma di solito è presente un link per saperne di più
sull'azione sospetta appena eseguita.
C'è da dire che non sempre le segnalazioni dell'antispyware, pur
puntuali e ben circostanziate, risultano comprensibili per l'utente finale:
un tipico esempio sono gli avvisi relativi a tentativi di modifica del
Registro di Windows. Anche l'aggiunta al Registro di chiavi per
l'installazione di controlli ActiveX rappresenta un evento sospetto, ma
risulta veramente difficile per l'utente giudicare in base al nome del
169
controllo e al suo lungo e incomprensibile identificatore numerico, il
ClassID. In questi casi, se non si sa come rispondere alla domanda
rivolta dall'antispyware, si può applicare un criterio prudenziale: se era in
corso un’installazione di software di provenienza "fidata" ed
espressamente attivata da noi, è probabile che queste operazioni
giudicate sospette dall'antispyware siano in realtà legittime e possono
quindi essere autorizzate. Se invece una simile segnalazione dovesse
apparire nel corso di una navigazione Web o in condizioni di quiete,
senza che ci sia stata da parte dell'utente alcuna azione esplicitamente
rivolta a installare o configurare programmi, è consigliabile negare
l'autorizzazione. Nelle organizzazioni con un gran numero di personal
computer in rete, la prassi irrinunciabile di tenere regolarmente
aggiornati gli antivirus di tutte le macchine diventa una questione non
banale. Affidare l'operazione alla diligenza dei singoli utenti finali non è
una soluzione soddisfacente: le dimenticanze sono sempre possibili e
anche la ricezione di un solo messaggio e-mail infetto può bastare per
diffondere il contagio (non più via mail, ma con altri meccanismi sulla
Intranet aziendale) a tutte le macchine. Incaricare un ente centrale di
effettuare l'operazione dà maggiori garanzie, ma potrebbe comportare
uno sforzo amministrativo eccessivo. Apposite procedure automatiche
possono eseguire questo compito anche quotidianamente, per esempio
nelle ore notturne, ma il carico sulla rete aziendale può diventare
insostenibile. In tali situazioni, una buona soluzione per proteggersi dai
virus propagati via posta può essere quella di centralizzare il controllo,
installando un antivirus direttamente sul server di posta elettronica. I
messaggi contenenti file infetti saranno respinti e una mail di avviso sarà
inviata al destinatario per informarlo del fatto.

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

CAPITOLO 1: LE RETI ................................................................................................................................. 8

Concetti di base delle comunicazioni .................................................................................................................... 8

Comunicazioni analogiche e digitali ..................................................................................................................... 9

Commutazione di circuito e commutazione di pacchetto ..................................................................................10

Il sistema client – server ........................................................................................................................................19

Il concetto di protocollo .........................................................................................................................................19

La scheda di rete .....................................................................................................................................................20

Il modello architetturale OSI ................................................................................................................................21

Topologia di rete ....................................................................................................................................................29

Topologia a bus .......................................................................................................................................................30

Topologia ad anello (Token Ring) ........................................................................................................................30

Topologia a doppio anello .....................................................................................................................................32

Topologia a maglia .................................................................................................................................................33

Topologia a stella ...................................................................................................................................................34

Tipi di rete ...............................................................................................................................................................35

LAN (Local Area Network) .....................................................................................................................................35

MAN (Metropolitan Area Network) ......................................................................................................................37

WAN (Wide Area Network) ...................................................................................................................................37

Dispositivi di rete ...................................................................................................................................................38

Basi di cablaggio e cavi ..........................................................................................................................................41

Cavi coassiali ...........................................................................................................................................................42

Cavi twisted-pairs ...................................................................................................................................................43

Cavi in fibre ottiche ................................................................................................................................................46

Lo standard Ethernet .............................................................................................................................................47

Domande di comprensione del capitolo 1 ...........................................................................................................49

172
CAPITOLO 2: INFRASTRUTTURA DI RETE TCP/IP ....................................................................... 50

Il modello TCP/IP .......................................................................................................................................................50

Confronto con il modello OSI .....................................................................................................................................51

Gli strati del modello TCP/IP ......................................................................................................................................53

Windows Sockets (Winsock) ......................................................................................................................................56

NetBIOS .....................................................................................................................................................................58

TDI (Transport Driver Interface) .................................................................................................................................60

L’insieme dei protocolli del TCP/IP ............................................................................................................................61

I protocolli dello strato internet ................................................................................................................................61

Internet Protocol (IP) .................................................................................................................................................62

Indirizzo IP .................................................................................................................................................................62

Internet Group Management Protocol (IGMP) ..........................................................................................................68

Address Resolution Protocol (ARP) ............................................................................................................................69

I protocolli dello strato del trasporto .........................................................................................................................70

Transfer Control Protocol (TCP) .................................................................................................................................71

Porte e socket ............................................................................................................................................................75

User Datagram Protocol (UDP) ..................................................................................................................................77

Differenze tra TCP e UDP ...........................................................................................................................................77

I protocolli dello strato dell’applicazione ...................................................................................................................78

Simple Mail Transfer Protocol (SMTP) .......................................................................................................................78

Post Office Protocol version 3 (POP3) ........................................................................................................................81

L'Internet Message Access Protocol (IMAP) ...............................................................................................................83

Telnet ........................................................................................................................................................................84

Network News Transfer Protocol (NNTP)...................................................................................................................86

File Transfer Protocol (FTP) ........................................................................................................................................87

Hyper-Text Transfer Protocol (HTTP) .........................................................................................................................88

Domain Name Service (DNS)......................................................................................................................................90

173
Dynamic Host Control Protocol (DHCP)......................................................................................................................91

Approfondimento dei meccanismi dell’infrastruttura di rete TCP/IP: l’incapsulamento ............................................96

Domande di comprensione del capitolo 2 .................................................................................................................97

CAPITOLO 3: IDENTIFICARE POTENZIALI RISCHI ........................................................................ 98

Le motivazioni degli attacchi .....................................................................................................................................98

Tipologie generali di attacco ......................................................................................................................................99

Attacchi di accesso ....................................................................................................................................................99

Attacchi di modifica o ripudio ..................................................................................................................................102

Negazione del servizio (Denial of Service) ................................................................................................................102

DoS (Denial of Service) ............................................................................................................................................104

DDoS (Distributed Denial of Service) .......................................................................................................................106

Attacco Smurf ..........................................................................................................................................................109

Syn Flooding ............................................................................................................................................................110

Ping of Death ...........................................................................................................................................................112

Contromisure relative ai Denial of Service ...............................................................................................................112

Debolezze dei protocolli ..........................................................................................................................................115

Sniffing ....................................................................................................................................................................115

Spoofing ..................................................................................................................................................................117

IP Spoofing ..............................................................................................................................................................120

Spoofing non Cieco ..................................................................................................................................................121

Hijacking ..................................................................................................................................................................122

IP Spoofing Cieco .....................................................................................................................................................122

Spoofing del DNS .....................................................................................................................................................123

Cache poisoning ......................................................................................................................................................124

Attacco fisico del DNS ..............................................................................................................................................125

Spoofing dell'ARP ....................................................................................................................................................126

Web Spoofing ..........................................................................................................................................................128

174
SMS Spoofing ..........................................................................................................................................................129

Mail Spoofing ..........................................................................................................................................................130

Attacco al numero di sequenza ................................................................................................................................131

Domande di comprensione del capitolo 3 ...............................................................................................................133

CAPITOLO 4: IL CODICE MALIGNO ................................................................................................... 135

I programmi nocivi...................................................................................................................................................135

I programmi .............................................................................................................................................................135

Vie di accesso al PC ..................................................................................................................................................140

Adware ....................................................................................................................................................................145

Tipi di file .................................................................................................................................................................148

Codice virale ............................................................................................................................................................149

I Worm ....................................................................................................................................................................149

Dialer .......................................................................................................................................................................149

Trojan horse (letteralmente "cavalli di Troia") ........................................................................................................150

Virus ........................................................................................................................................................................151

Tipologie di codice maligno .....................................................................................................................................155

Storia degli antivirus ................................................................................................................................................161

Individuazione dei virus: focus sull'identità .............................................................................................................162

Un inseguimento continuo ......................................................................................................................................163

Limiti dei programmi antivirus .................................................................................................................................165

Individuazione dei virus: focus sui comportamenti ..................................................................................................166

Installare, configurare, mantenere aggiornato un programma antivirus .................................................................168

Domande di comprensione del capitolo 4 ...............................................................................................................171

175

Potrebbero piacerti anche