Esostrutture - parte II
Corso di sicurezza – A.A. 2006/2007
Tatiana Giorgetti
Classificazione delle minacce
Anelli di controllo
Anelli utenti
Attacchi
Le Minacce
External Penetrator
• Colui che tenta di accedere ad una risorsa in un’organizzazione di cui non fa
parte;
• Impiegato dell’organizzazione che non è utente autorizzato del sistema.
Internal Penetrator
• The Masquerader
Colui che riesce ad accedere al sistema autenticandosi come utente
autorizzato;
• The Legittimate User
Utente legittimo che abusa delle proprie autorizzazioni per accedere ai dati
effettuandone un uso improprio;
• The Clandestine User
Questo utente è in grado di evitare il controllo delle attività sulla macchina
operando sotto il livello in cui vengono rilevati i dati di controllo o perché può
usufruire di privilegi di amministratore.
Classi di protezione
Esistono svariati metodi per difendere un sistema o una rete da attacchi, la
seguente immagine mostra alcuni di questi approcci:
Classi di protezione
Reaction – Detection – Prevention
• Preemption (prelazione): colpire la minaccia prima che abbia la possibilità di
perpetrare un attacco;
• Deterrence: persuadere un intruso a non effettuare attacchi, o di
interrompere un attacco in atto. Si ottiene aumentando il rischio percepito di
possibili conseguenze negative. (es: sistema legislativo)
• Deflection (tradimento): ingannare l’intruso facendogli credere che il suo
attacco sta avendo successo, imbrogliandolo per un periodo di tempo
sufficiente a creare una linea di difesa.
• Prevention: ostacolare ed impedire la probabilità di successo di una data
intrusione. Per esempio attuando tutti quei meccanismi di controllo che
permettono di migliorare le difese dagli attacchi (software testato e
aggiornato, uso di metodi di autenticazione che facciano uso della
crittografia, ecc..)
• Detection: individuare i tentativi di intrusione in modo da poter intervenire in
modo adeguato.
• Countermeasures: reagire automaticamente e attivamente ad una
intrusione ed attuare tutte quelle misure che portino ad evitare un nuovo
attacco.
Intrusion Detection System
Anche il miglior sistema di prevenzione alle intrusioni (firewall + controlli di
accesso e autenticazione) può fallire. La seconda linea di difesa consiste nella
rilevazione delle intrusioni, argomento su cui si è concentrata molta attività di
ricerca a partire dagli anni ‘80.
Con Intrusion Detection System (IDS) si denominano tutti quei sistemi per il
rilevamento di intrusioni in una rete o in una singola macchina.
Gli IDS monitorano l’attività per identificare gli eventi maligni o sospetti,
funzionano come un allarme: controllano lo stato del sistema e, nel caso
riscontrino situazioni considerate pericolose, avvertono l’amministratore del
problema riscontrato.
Una delle difficoltà maggiori è quindi quella di distinguere accessi ed operazioni
consentite da altre probabilmente fraudolente.
La rilevazione delle intrusioni si basa sull’ipotesi che il comportamento degli
intrusi differisce da quello degli utenti legittimi, ma naturalmente non ci si può
aspettare una differenza marcata ed esatta fra un attacco perpetrato da un
intruso e il normale utilizzo delle risorse di sistema da parte di un utente
autorizzato …
… piuttosto ci si deve aspettare una sovrapposizione.
Quindi sarà possibile
sempre cadere in uno di
questi due casi:
Falsi positivi: l’IDS rileva
qualcosa di anormale ma
non è avvenuta alcuna
intrusione;
Falsi negativi: l’IDS non
rileva
un’intrusione
avvenuta.
Pertanto, un’interpretazione meno restrittiva del comportamento di un intruso
finalizzata a catturare molte intrusioni tenderà anche a creare un certo numero di
falsi positivi, o utenti autorizzati riconosciuti come intrusi. D’altra parte, il tentativo di
limitare i falsi positivi mediante un’interpretazione restrittiva del comportamento di
un intruso, porterà ad avere un aumento dei falsi negativi, ovvero di intrusi non
identificati come tali.
Il modello CIDF per gli IDS
La rapida crescita che il campo dell’intrusion detection ha avuto ed il forte
coinvolgimento da parte di importanti istituti di ricerca ed università, ha portato il
DARPA (Defence Advanced Research Projects Agency) a creare una
metodologia per la standardizzazione di tutti quei tool progettati per eseguire
intrusion detection. Il risultato di tale lavoro è il Common Intrusion Detection
Framework (CIDF).
L’obbiettivo principale di tale progetto è quello di rendere possibile la
cooperazione fra IDS. La descrizione del sistema è estremamente dettagliata e
definisce precisamente i ruoli giocati dalle componenti che sono parte del
sistema di rilevazione. Per ogni componente è stabilita a priori un’interfaccia dalla
quale non si può prescindere, rendendo così relativamente semplice integrare
qualsiasi IDS CIDF-compliant in un progetto più vasto.
Il CIDF definisce quattro tipologie diverse di componenti e ruoli specifici per
ognuna di loro. Il framework non specifica nessun vincolo sulla necessità di
mantenerle accoppiate su di una stessa macchina, tutte queste scelte sono
completamente delegate al progettista dell’IDS.
Il framework CIDF
Il framework CIDF
Event Boxes (E-boxes): raccolgono gli eventi di audit, successivamente
processati dal sistema di rilevazione. Devono monitorare il particolare ambiente
per il quale sono specializzate e strutturare i dati ritenuti importanti in modo da
renderli disponibili alle componenti specializzate nel trattarli.
Analysis Boxes (A-boxes): processano gli eventi recapitati loro dalle E-boxes e,
quando necessario, si occupano della generazione degli allarmi. Analizzano
l’informazione alla ricerca di svariate minacce, le conclusioni ottenute tramite
questo procedimento di ispezione sono trasmesse ad altre componenti,
incaricate di svolgere su tali dati operazioni ulteriori.
Database boxes (D-boxes): memorizzano le informazioni per una successiva
elaborazione e mettono a disposizione servizi per le query ed il recupero delle
informazioni;
Countermeasure Boxes (C-boxes): applicano le contromisure difensive
adeguate alla tipologia di allarme generato. Per contromisura si intende sia la
generazione di un report relativo all’attacco subito, sia qualche azione attiva
mirata a rendere meno insidiosa la minaccia come la chiusura di una
connessione.
La classificazione
degli IDS
Gli
IDS
possono
essere classificati in
base ai principi di
rilevazione
delle
intrusioni su cui si
basano.
La tabella a fianco
schematizza le varie
politiche.
Anomaly Detection
Questi IDS avvertono l’amministratore del sistema che potrebbe essere in corso
un attacco ogni volta che registrano attività diverse da quelle “normali”,
basandosi sul pensiero che se qualche evento è fuori dalle normali attività allora
probabilmente è sospetto. Per individuare un’anomalia il sistema deve quindi:
• conoscere il comportamento “normale” del sistema;
• decidere quale percentuale dell’attività segnalare come anormale;
• come prendere tutte queste particolari decisioni.
Per far ciò questi IDS possono creare autonomamente dei modelli di riferimento
sul traffico e l’attività del sistema (Self Learning System) oppure possono
richiedere all’amministratore l’inserimento di tali dati (Programmed).
Questi sistemi si possono basare su modelli matematici che prendono in
considerazione le serie temporali (Time Series), come per esempio le Reti
Neurali, oppure possono non prenderle in considerazione (Non Time Series),
come la collezione di semplici statistiche che descrivono il sistema.
Anomaly Detection
PRO
L’IDS non deve essere configurato, può imparare automaticamente il
comportamento del sistema, avendo così la possibilità di individuare nuove
intrusioni come variazioni di quelle già conosciute .
Sono efficaci contro attacchi di utenti masquerade, che probabilmente non
imiteranno le tipologie di comportamento degli account di cui si sono appropriati.
CONTRO
Segnala soltanto il comportamento insolito che non necessariamente è illecito. E’
quindi soggetto a falsi positivi. Inoltre il sistema può imparare ad accettare come
normale un comportamento pericoloso, potrebbe considerare “normali” azioni
pericolose solo perché avvengono di frequente.
Signature Detection
Gli IDS di questo tipo si basano su un database di azioni innocue/dannose o di
regole per il rilevamento degli attacchi fornite al sistema dall’amministratore
(Programmed). Ogni violazione utilizza una o più falle della sicurezza e modifica
il sistema in modo caratteristico. I sistemi basati su Signature memorizzano nel
database le violazioni conosciute con le loro firme caratteristiche (da 104 a 106
regole).
Per far ciò le intrusioni possono essere modellate come un numero diverso di
stati (Petri Net) o vengono utilizzate regole che descrivono il comportamento di
possibili intrusioni (Expert-System).
PRO: il sistema, tramite le regole per il rilevamento, ha un’elaborazione più
semplice ed efficace dei dati di verifica. Sono efficaci contro malintenzionati
riconoscendo con le regole le sequenze tipiche degli attacchi.
CONTRO: specificare le firme degli attacchi è un’operazione altamente
qualificata che richiede tempo, non può essere attuata da responsabili ordinari
del sistema. Il metodo ha anche limitato potere preventivo: non è in grado di
rilevare nuove intrusioni, per le quali non ha regole nel DB.
La classificazione degli IDS
Gli IDS possono essere classificati anche in base alle caratteristiche di sistema.
Time of detection
• Real time: IDS che tentano di rilevare le intrusioni in tempo reale;
• Non real time: IDS che verificano i dati con un certo ritardo, posponendo la
rilevazione.
Granularity of data-processing
• Process data continuously: analizza i dati in modo continuo;
• Process data in batches: analizza i dati ad intervalli regolari.
Response to detected intrusions
• Passive: questi sistemi informano l’amministratore ma non tentano
autonomamente di mitigare o intervenire per evitare danni o fermare l’intruso;
• Active: questi sistemi tentano di limitare gli effetti dell’attacco.
Locus of data-collection
• Centralised location: i dati provengono da un unico punto di analisi;
• Distributed location: i dati provengono da un sistema distribuito.
Security: la capacità di sostenere attacco ostile contro l’IDS stesso.
Source of audit data si possono identificare due gruppi:
• Network based (NIDS): controllano i pacchetti che passano attraverso la rete di
computer da difendere. Per loro è fondamentale esaminare il traffico in transito
senza interromperlo o modificarlo e soprattutto senza perdere pacchetti. Se
vengono persi pacchetti il rischio è quello di lasciar passare qualche attacco o di
perdere lo stato delle connessioni della rete. Sono real-time e particolarmente
importanti per la difesa dagli attacchi provenienti dall’esterno.
• Host based (HIDS): basano il loro funzionamento sul controllo dei file presenti
sul computer (file di sistema, di log, ecc..). Effettuano il controllo ad intervalli
regolari e confrontano lo stato del sistema con uno “corretto” memorizzato in un
luogo protetto. Sono quindi utili per il rilevamento di attacchi provenienti
dall’interno ma hanno il difetto di non poter essere real-time e quindi si corre il
rischio che l’attacco venga avvertito solo dopo che ha causato danni o
disservizi.
Trends
Da HIDS
a NIDS
+ Interoperabilità
Da Centralizzato
a Distribuito
+ Resistenza agli attacchi
Honeypot, Honeynet
Gli honeypot sono una categoria abbastanza particolare, per la quale da poco
esistono prodotti commerciali e il cui uso richiede particolare attenzione.
Si tratta di strumenti che simulano un sistema o una rete vulnerabile, in modo
che l’attaccante cerchi di accedervi, attivando gli allarmi e perdendo tempo. Lo
scopo è distrarre l’attaccante con una preda facile, in modo che trascuri i sistemi
reali e nel frattempo generi allarmi.
Gli scopi degli honeypot sono:
• sviare gli attacchi dall’accesso ai sistemi critici;
• raccogliere informazioni sulle attività degli attaccanti;
• incoraggiare gli attaccanti a restare nel sistema abbastanza a lungo perché gli
amministratori attuino una risposta.
Gli honeypot possono comporre una honeynet, che simula una rete vulnerabile,
attirandovi l’attaccante con l’illusione di trovare materiale interessante. Nessun
utente legittimo accederebbe all’honeypot o all’honeynet, quindi qualunque
accesso a questa parte di rete è sospetto.
Honeypot, Honeynet
La cautela nell’uso deriva dal fatto che se l’implementazione o la configurazione
sono difettose, si possono facilmente avere due effetti:
• L’attaccante si accorge del tranello ed evita l’honeypot, attaccando i sistemi reali;
se parte delle protezioni si basano sulla speranza che l’attaccante perda tempo e
attivi gli allarmi dell’honeypot, questi attacchi reali potrebbero essere notati
troppo tardi;
• L’attaccante riesce ad uscire dall’ambiente ristretto dell’honeypot, utilizzando poi
questo sistema per attaccare quelli reali.
Si tratta di strumenti utilizzati con successo per analizzare i comportamenti degli
attacchi e rilevare nuovi strumenti e tecniche di attacco, laddove ci sia interesse a
raccogliere queste informazioni. Si tratta quindi di un utilizzo orientato più alla
ricerca che alla protezione di una rete aziendale.
Intrusion Prevention System
Negli ultimi anni si è diffusa una tipologia di prodotti che si colloca concettualmente
fra i firewall e gli IDS: gli Intrusione Prevention System.
Sono strumenti che, anziché limitarsi a
monitorare il traffico, si interpongono
di fronte a una rete o ad un servizio,
esaminando il traffico e bloccando
quello corrispondente ad attacchi.
Mentre formalmente si tratta di
firewall, la tecnologia è quella degli
IDS, con un’attenzione particolare agli
attacchi noti e una politica di default
permit.
Gli IPS proseguono la loro evoluzione
spesso integrandosi con i firewall, con
cui condividono la funzione di bloccare
traffico illegale o sospetto.
Sygate Personal Firewall
Insertion, Evasion e Denial of Service
Sfuggire alla rilevazione dei NIDS
Si possono riscontrare due problemi principali con i NIDS:
• Ci sono poche informazioni disponibili derivanti dall’acquisizione di pacchetti
al di fuori del loro contesto per ricostruire correttamente cosa accade
all’interno di transazioni complesse. Un controllo passivo della rete non può
predire esattamente se una data macchina sta leggendo un pacchetto, e tanto
meno se lo processa nel modo previsto.
• Gli IDS sono vulnerabili agli attacchi di tipo DoS.
Il primo di questi problemi va a ridurre l’esattezza dell’IDS e il secondo
compromette la sua disponibilità. Gli attacchi verso l’IDS sono facilmente
riparabili, ma non è semplice trovare tutte le possibili vulnerabilità.
Insertion
Un IDS può accettare pacchetti che un end-system rifiuta.
Un IDS che lo fa commette un errore nel credere che l’end-system abbia
accettato e processato tale pacchetto quando invece non lo ha fatto.
Un attacker può sfruttare queste condizioni inviando pacchetti ad un endsystem che rigetterà, ma che l’IDS crederà validi.
Un attacker può usare quindi gli attacchi di inserzione per evitare l'
analisi della
firma e permettendo all’attacco di slittare oltre l’IDS.
Di solito questo attacco funziona quando un IDS è poco rigoroso
nell’elaborazione di pacchetti rispetto ad un end-system. Per prevenire il
problema, l’IDS può essere più preciso e restrittivo nel processare i pacchetti
ma, in questo caso, diminuirebbe la possibilità di attacchi di tipo insertion
aumentando però quelli di tipo evasion.
Insertion
Non corrisponde
a nessuna firma
di attacco
Caso pratico: Se l’IDS non si trova nello stesso segmento di rete dei sistemi che
controlla è possibile trasmettere pacchetti che soltanto gli IDS vedranno, regolando
il valore della TTL (Time to Live) in modo che scada prima di arrivare a
destinazione.
Evasion
Un end-system può accettare un pacchetto che un IDS scarta perdendo
interamente il suo contenuto.
Questa condizione può essere sfruttata facendo passare informazioni oltre l’IDS
in pacchetti che l’IDS processa in modo troppo rigoroso.
Gli attacchi di evasione seguono il modello degli attacchi di inserzione. Di nuovo,
l’attacker induce l’IDS a vedere un flusso differente di dati rispetto all’end-system,
questo volta, tuttavia, l’end-system vede più dell’IDS e le informazioni che l’IDS
perde sono importanti per la rilevazione di un attacco.
Non corrisponde
a nessuna firma
di attacco
Evasion
Caso pratico: sovrapposizione di frammenti
Frammentazione IP: i pacchetti possono essere rotti in pacchetti più piccoli per poi
essere uniti alla destinazione.
Se un frammento arriva all’end-system contenente dati che in realtà sono già
arrivati in un frammento precedente, è possibile che il nuovo frammento vada a
sovrascrivere dei vecchi dati.
Se l’IDS non tratta i frammenti
coerentemente ai sistemi che
controlla, può, riassemblare in
maniera totalmente differente i
pacchetti
rispetto
all’endsystem.
Un attacker che conosce
queste discrepanze tra IDS ed
end-system può nascondere il
suo attacco inserendo i dati
all’interno
di
pacchetti
sovrapposti
che
verranno
ricostruiti in modo diverso dai
due sistemi.
Denial of Service
L’obbiettivo di base dell’attacco DoS è causare il fail dell’IDS senza perdere
l’accesso alle macchine che si vogliono attaccare.
Alcuni tipi di attacchi DoS si basano su difetti del software. Per esempio l’IDS si
arresta quando riceve un determinato tipo di pacchetto difettoso o una serie di
messaggi di controllo difettosi, ecc.. Fortunatamente questo genere di difetti nel
software possono essere rapidamente corretti dai fornitori dell’IDS.
Tipi di attacchi:
• Resource Exhaustion: l’attaccante identifica un certo punto di elaborazione
della rete che richiede l’utilizzo di una certa risorsa e crea una circostanza che
va a consumare tutta quella risorsa. Le risorse che possono essere esaurite da
un attacker includono i cicli della CPU, la memoria, lo spazio di disco e la
larghezza di banda della rete.
• Abusing Reactive ID System: Se l’IDS ha la possibilità di adottare contromisure
agli attacchi, l’IDS può essere costretto a reagire ad attacchi che realmente non
esistono. Le contromisure impiegate possono ostruire l'
accesso al traffico
legittimo interrompendo i collegamenti validi.
Network Intrusion Detection System
SNORT è un NIDS Open Source; permette di analizzare ogni pacchetto che
circola nella rete, confrontandoli con un database di firme di attacchi. Verifica i
protocolli utilizzati dai pacchetti, in modo da riconoscere eventuali anomalie nel
traffico.
Snort ha caratteristiche real-time, in quanto è in perenne ascolto sul segmento di
rete a cui è stato adibito ed è in grado di contattare l’amministratore di sistema
attraverso molteplici meccanismi come syslog , messaggi “Winpopup” o su uno
specifico file di allerta.
Snort adotta un meccanismo di Signature Detection, attraverso regole che
possono essere molto specifiche, per ispezionare l’intero campo dati del
pacchetto di rete.
Una prova della bontà di questo software e del suo utilizzo in ambiti altamente
professionali è la sua adozione da parte del Ministero della Difesa degli Stati
Uniti d’America.
Modalità operative
Snort può lavorare in diversi modi:
• Packet Sniffer: è capace di ispezionare il carico dei pacchetti sulla rete,
decodificando catalogando il traffico basato su un certo contenuto di dati.
• Packet Logger: può anche effettuare il log dei pacchetti indirizzati ad una
specifica locazione, in un syslog, ed invia alert a video.
• Intrusion Detection: può essere usato come NIDS su reti dove sono richieste
alte prestazioni. Ha un sistema di firme ed è disegnato per essere un tool veloce
di alerting per gli amministratori quando sono individuate attività sospette.
Componenti di Snort
Snort è logicamente diviso in più componenti che lavorano insieme per identificare
particolari attacchi e per generare un output nel formato richiesto.
Componenti di Snort
Packet Decoder: prende i pacchetti da diverse interfacce di rete e li prepara,
ordinando i dati, per essere preprocessati.
Preprocessor: organizza o modifica i dati del pacchetto preparandoli ad essere
analizzati in quanto gli intrusi utilizzano diverse tecniche per ingannare un IDS,
come piccole variazioni della firma dell’attacco. Se l’IDS ricerca la stringa esatta,
non sarebbe in grado di riconoscere le piccole variazioni, mentre il preprocessor
riorganizza la stringa così che possa essere identificata dall’IDS. Inoltre il
preprocessore permette di ricostruire i pacchetti frammentati così da prevenire
attacchi come la frammentazione dei pacchetti.
Detection Engine: è la parte più importante di Snort. Si occupa della
individuazione di eventi maligni o sospetti in ogni pacchetto. Per poterlo fare
impiega le regole di Snort. Le regole vengono lette e comparate con ogni
pacchetto; se in un pacchetto si trova una corrispondenza con una regola, vengono
effettuate adeguate azioni, altrimenti il pacchetto viene rilasciato.
Questa fase è la più critica rispetto al tempo di Snort. Le capacità dipendono dalla
potenza della macchina e da quante regole sono state definite.
Componenti di Snort
Loggin and Alerting System: in base a cosa si individua nel pacchetto, il
pacchetto può essere utilizzato per annotare l’attività o per generare un allarme. Le
annotazioni dell’attività vengono memorizzate in un file di testo.
Output Modules: le operazioni compiute da questo modulo dipendono da come si
vuole salvare l’output generato dal Loggin e Allerting System di Snort.
Possono essere effettuate operazioni come:
• Semplice annotazione in un file di testo;
• Memorizzazione dei dati in un database come MySQL o Oracle;
• Memorizzazione dei dati in un file XML;
• Modifica della configurazione di router e firewall;
• Invio di una e-mail con i dati;
• Visualizzazione dei dati tramite interfaccia web;
• Ecc…
Le regole di Snort
I virus e le attività di intrusione hanno una di firma di riconoscimento. Queste firme
vengono utilizzate da Snort per creare regole ed identificare eventuali anomalie dei
pacchetti. Le firme si possono trovare negli header del pacchetto o nel payload. La
regola può essere utilizzata per generare un allarme, un messaggio di log o a
rilasciare il pacchetto senza nessun operazione aggiuntiva.
Alert
ip
any
any
->
any
any (msg:“IP detected”)
Action Protocol Address Port Direction Address Port
Rule Option
Action: il tipo di azione da intraprendere quando la regola coincide con i dati
contenuti nel pacchetto.
Address: definisce l’indirizzo di origine e di destinazione.
Port: nel caso dei protocolli TCP e UDP si hanno la porta d’origine e di destinazione.
Rule Option: è contenuta all’interno di parentesi tonde. Si possono avere una o più
opzioni che vengono separate da un punto e virgola. Se si hanno più opzioni la
regola viene applicata solo quando tutti i criteri della regola sono veri (AND). Sono
formate da due parti: la keyword e il relativo argomento.
Le regole di Snort - le keyword
Alcuni esempi di keyword che possono essere utilizzate all’interno di una regola
sono:
Msg: contenuto del messaggio che verrà visualizzato nel caso la regola venga
applicata.
Classtype: classifica ogni regola per poterle raggruppare.
Priority: assegna la priorità ad ogni regola così se più regole corrispondono ad un
pacchetto, viene applicata quella con priorità maggiore.
React: regola che andrà a terminare sessioni o bloccare siti e servizi.
Esempio:
alert udp any any -> 192.168.1.0 6838 (msg:"DoS"; \
classtype:DoS; priority:1"; react: block)
Interfacce per Snort
Sono diversi i tool che possono essere utilizzati con Snort.
ACID è un tool utilizzato per analizzare e rappresentare i dati di Snort tramite
un’interfaccia web; è scritto in PHP e lavora con Snort e database come MySQL.
Per piattaforme Windows è disponibile il front-end IDScenter.
Antivirus
La prevenzione può ridurre il numero di attacchi virali andati a buon fine ma
l’obiettivo di una protezione totale è irraggiungibile.
Si prendono quindi in considerazione alcune procedure da attuare qualora la
prevenzione non abbia successo:
• Rilevazione: una volta avvenuta l’infezione, stabilire che si è verificata e
localizzare il virus.
• Identificazione: una volta compiuta la rilevazione, identificare lo specifico virus
che ha infettato il programma.
• Rimozione: dopo aver identificato il virus, rimuovere tutte le tracce dal
programma infetto e ripristinare lo stato originario del programma in questione.
Queste procedure possono essere attuate tramite un antivirus.
L’installazione di un antivirus, se da un lato aiuta a difendersi, a volte finisce con il
peggiorare il livello di sicurezza. Questo accade perché viene percepito dall’utente
come una pallottola d’argento, capace di risolvere ogni problema. In realtà prima
che un virus venga riconosciuto come tale e analizzato, si deve verificare una
certa diffusione. Solo alla fine di questa analisi c’è la possibilità che gli antivirus
vengano aggiornati. Tale periodo è dell’ordine di grandezza di una settimana, se si
considera circa 1000 nuovi virus all’anno ciò potrebbe indicare la costante
esposizione ad una ventina di virus nuovi, anche nell’ipotesi di un antivirus
aggiornato costantemente.
Diffusione dei virus
Dal 1982, quando si diffuse il primo programma malizioso Elk Cloner che infettava
gli Apple II e il primo virus per PC Brain nel 1986, i virus hanno continuato ad
evolversi fino ad arrivare ai virus mutanti o polimorfici. Ma anche gli antivirus si sono
evoluti.
Diffusione virus Vundo
7 gg
24 h
30 gg
Metodi antivirus
La rilevazione è probabilmente la più importante delle tre mansioni di un antivirus,
perché l'
identificazione e la disinfezione richiedono la rilevazione come requisito
preliminare.
Ci sono cinque risultati possibili per la rilevazione:
Rilevazione perfetta: risulta nei casi cerchiati sulla
diagonale, il virus è rilevato e realmente presente.
Falso Positivo: viene segnalato un virus
Non realmente presente.
Falso Negativo: non viene rilevato un virus presente.
Ghost positive: viene rilevato un virus che
non c’è più in quanto un tentativo precedente
di disinfezione ha lasciato tracce.
I metodi di rilevazione possono essere classificati come statici o dinamici, in base
a se il codice del virus viene eseguito durante la rilevazione.
Metodi statici – Signature Detection
Il funzionamento si basa principalmente sulla ricerca di uno schema tipico, una
sequenza di byte, tipica del virus ma che non si può trovare nei programmi non
infetti. Le scansioni permettono all’antivirus di confrontare tutti i file con le firme di
virus conosciuti presenti nel database. Il successo di questa tecnica si basa sul
costante aggiornamento degli schemi che l’antivirus è in grado di riconoscere.
Questi dispositivi possono essere classificati in base a quando sono invocati:
• On – Demand: funzionano una volta avviati esplicitamente dall’utente.
Solitamente è bene forzare scansioni quando nuovi virus vengono inseriti nella
base di dati.
• On – Access: è un processo di background che può esaminare ogni file che
viene acceduto. Solitamente per migliorarne le prestazioni si limitano i controlli
agli accessi di lettura e scrittura o per il solo controllo di file ed e-mail scaricate
da internet.
Metodi statici – Signature Detection
Esempio: l’immagine seguente presenta una parte di codice del virus Stoned
(1987 Nuova Zelanda). Questo virus infettava il settore di boot dei PC e
visualizzava il messaggio “Your PC si now Stoned!”.
La stringa di ricerca pubblicata dal magazine Virus Bulletin:
0400 B801 020E 07BB 0002 33C9 8BD1 419C
Metodi statici – Heuristics Detection
La ricerca euristica consiste nell’analizzare il comportamento dei vari programmi
alla ricerca di istruzioni sospette perché tipiche del comportamento dei virus.
L’analisi euristica si compone di due punti principali:
• Raccolta dati: vengono applicate tutte le euristiche
• Analisi: viene assegnato un peso ad ogni risultato ottenuto dall’applicazione
delle euristiche, si sommano i valori e se la somma supera una cera soglia,
l’input è ritenuto infetto.
Le soglie possono essere
configurate in base a
diversi livelli di severità.
La severità contribuirà a
determinare quanti virus
sono presenti, ma poiché
l’euristica lavora su una
base di probabilità, queste
possono dare vita a falsi
positivi.
Metodi statici – Integrity Checkers
Questi sistemi calcolano un valore di checksum per ciascun file. Se il virus lo
infetta senza modificare la checksum, allora l’integrity checkers rileverà il
cambiamento. Questi possono essere di tre tipi:
• Off-line: i controlli avvengono periodicamente;
• Self-Checking: i file eseguibili vengono modificati così che possano
autocontrollarsi quando eseguiti;
• Integrity Shells: la cheksum di un file eseguibile viene controllata subito prima
che il file venga eseguito.
Per proteggere le checksum dai virus che tentano di modificarle così da
nascondere la loro presenza, può essere utilizzata una funzione hash cifrata così
da avere la necessità di proteggere solo una chiave di cifratura e non tutte le
checksum dei file del sistema.
I principali problemi che si possono riscontrare sono:
1. Il sistema iniziale deve essere totalmente pulito da virus per poter effettuare il
primo calcolo delle checksum;
2. Costi elevati per il calcolo delle checksum;
3. Molti falsi positivi dovuti ad eventi quali gli aggiornamenti che spesso
avvengono automaticamente all’insaputa dell’utente.
Metodi Dinamici – Behavior Blokers
Sono programmi che identificano un virus in base alle sue azioni. Tali programmi
hanno il vantaggio di non richiedere la definizione di signature ed euristiche per
una vasta gamma di virus. In questo caso, è necessario solamente identificare
l’insieme (ridotto) di azioni sintomatiche di possibile infezione in corso e quindi
intervenire. Questi sistemi controllano il comportamento del programma in tempo
reale, alla ricerca di attività sospetta. Se tale attività è rilevata, il behavior blocker
può impedire le operazioni sospette, può terminare il programma, o può chiedere
all’utente l’azione da effettuare.
Il comportamento che il Behavior Blocker considera normale può essere
modellato descrivendo:
• Le azioni consentite – positive detection;
• Le azioni non consentite – negative detection;
• Una combinazione delle due.
La durata del controllo di ogni file è una decisione molto importante in quanto si
presuppone che la maggior parte dei virus si riveli subito, all’avvio del programma
infetto, ma in realtà questo presupposto non sempre è valido.
Metodi Dinamici – Emulation
L'
emulazione di codice è una tecnica estremamente potente di rilevazione dei virus.
Una macchina virtuale, formata da un emulatore di CPU, un dispositivo d’analisi e
un modulo di controllo di emulazione, permette di eseguire il codice così che il virus
possa “collaborare” mostrando la sua presenza. Questi sistemi sono
particolarmente efficaci con virus polimorfi in quanto devono decifrare se stessi per
attivarsi.
L’emulazione può suddividersi in:
• Dynamic Heuristics: l’analisi dei dati derivanti dall’emulatore avviene come per
l’heuristics detection. E’ soprattutto efficace per individuare le firme dinamiche dei
virus metamorfi.
• Generic Decryption: l’analisi avviene tramite scansione della memoria alla ricerca
di firme caratteristiche dei virus. E’ soprattutto efficace con virus polimorfi in
quanto l’emulazione permette ai virus di decriptarsi così da rivelare il proprio
codice.
In questo ultimo caso una delle scelte più importanti è data dalla determinazione
della durata di ciascuna emulazione. Quanto più a lungo il GD emula un
programma, maggiore sarà la probabilità di smascherare i virus nascosti, tuttavia
questo richiede un grosso dispendio di risorse del sistema.
Quarantena
Quando in un file viene rilevato un virus, l’antivirus può avere bisogno di mettere
in quarantena il file infetto, isolandolo dal resto del sistema.
La quarantena è soltanto una misura provvisoria, finché l’utente non decide come
intervenire.
Il file può essere disinfettato ma in alcuni casi l’antivirus può rilevare un virus, ma
non avere idea di come pulirlo. In questo caso il file può essere messo in
quarantena, finché non sarà disponibile un aggiornamento dell’antivirus.
La quarantena può semplicemente consistere nel copiare un file infettato in una
directory distinta “di quarantena”, rimuovendo il file infetto originale ed
inabilitando tutti i permessi per accedervi.
Il problema è che i permessi dei file possono essere cambiati facilmente da un
utente e i file possono essere altrettanto facilmente copiati.
Una soluzione è cifrare i file in quarantena attraverso alcuni mezzi semplici,
come uno XOR con una costante. Il virus quindi è reso inerte, perché un file
eseguibile cifrato non sarà più eseguibile e una copia del file cifrato non causerà
danni.
Disinfezione
Disinfezione non significa che un sistema infettato è stato ristabilito al relativo stato
originale e, in alcuni casi, la disinfezione non è proprio possibile (virus che
sovrascrivono i file originali).
Sono diversi i modi per eseguire una disinfezione:
Virus specifico: un antivirus può avere nella sua base di dati tutte le informazioni
necessarie per disinfettare ogni virus conosciuto.
Virus con comportamento specifico: un’alternativa è basare la disinfezione sul
comportamento del virus. Possono essere utilizzate le stesse tecniche dell’Integrity
Checker memorizzando quindi informazioni sui file quali l’header del programma,
la lunghezza, la checksum.
Per un file infetto, l’header memorizzato può essere immediatamente ripristinato.
La parte difficile è determinare dove risiede il file originale, in quanto il virus che si
è appeso potrebbe averlo shiftato dalla sua posizione originaria. Per questo può
essere utilizzata la cheksum che, tramite un’iterazione, può essere confrontata con
una nuova checksum calcolata per lo stesso numero di byte finchè non si ottiene
una corrispondenza esatta.
Correggere i file infettati con il backup: i file possono essere riportati allo stato
memorizzato nel loro ultimo backup (si potrebbero avere perdite di dati).
Eliminazione totale del file infetto: ultima possibilità che causerà perdita di dati.
Limiti degli antivirus
Le varie tecniche antivirus hanno propri difetti, i quali devono essere sempre
tenuti in considerazione. Per esempio l’antivirus potrebbe non essere in grado di
riconoscere nuovi virus, in quanto il database di firme non è stato aggiornato, o
può individuare virus anche se non presenti. La scelta di un antivirus risulta
complessa e spesso la soluzione migliore risulta essere l’utilizzo di più tecniche.
L’antivirus è inoltre un grande utilizzatore di risorse. La tecnica di scansioni
periodiche complete può essere programmata nelle ore notturne ma non
garantisce sicurezza continua al sistema, l’approccio “real time scan” fornisce
una sicurezza continua ma andrà ad appesantire costantemente il sistema
durante il suo normale funzionamento.
Infine le compagnie che creano i software antivirus possono avere un incentivo
finanziario molto forte a far sì che nuovi virus vengano creati continuamente e
che il panico nel pubblico generi un continuo ricorso all'
aggiornamento dei loro
software. Questa è una delle accuse che da varie parti vengono rivolte ai
produttori antivirus, anche se, in realtà, non vi é attualmente nessuna prova che
convalidi tale tesi.
Tecniche ANTI Antivirus
Le tecniche Anti-antivirus sono tecniche usate dai virus come:
Attacco aggressivo al software antivirus: Retrovirus
Un virus che prova ad inabilitare il software antivirus della macchina infettata. Una
tecnica comune di retrovirus è un virus che possiede una lista con dei nomi di
processi di software antivirus. Quando infetta una macchina, un retrovirus
enumererà i processi e terminerà tutti i processi attivi che corrispondono alla sua
lista.
Tentare di rendere difficile l’analisi del virus per i ricercatori delle case produttrici
di antivirus : Armoring
Sono tecniche utilizzate per impedire, o almeno rendere difficoltosa, l’analisi del
virus agli esperti come l’anti-disassemby così da ritardare l’aggiornamento
dell’antivirus.
Tentare di evitare di essere rilevati dall’antivirus, usando la conoscenza di come
opera l’antivirus stesso: Avoidance
Come dal film Karate Kid si ha che “the best way to avoid a punch is not to be
here”, così tenta di comportarsi il virus. Un virus può nascondersi nei posti in cui il
software antivirus è stato impostato a non controllare come chiavi USB e dischi
magnetici o nei tipi di file che l’antivirus non esamina (non risulta molto efficace
come strategia).
Antivirus e Anti-Spyware
Antivirus:
Nod32(prezzo: primo acquisto 54, rinnovo licenza
43,20)
Attualmente, NOD32 detiene il record mondiale del prestigioso
riconoscimento “Virus Bulletin 100% Award” avendo conseguito ad
oggi il suo 43°“VB100% Award.
Ha ricevuto da AV-Comparatives.org il riconoscimento come miglior
software antivirus del 2006 e da ICSA Labs la certificazione per
Windows Vista.
Avast! Home edition (Free)
Ha ottenuto il “virus Bulletin 100% Award” e la certificazione da ICSA
Labs per Windows Vista.
Anti-Spyware:
AVG Anti-Spyware (Free Limited Product)
Disponibile anche per Vista.
Spybot - Search & Destroy (Free)
Quale antivirus?
Il
Virus
Bulletin
è
un'
organizzazione
indipendente
di
esperti
dedicata in modo esclusivo
all'
analisi e ai test di virus e
antivirus, la cui competenza
viene riconosciuta da tutti i
produttori di antivirus.
Il Virus Bulletin focalizza i test
sulla qualità di rilevazione
virus, velocità di scansione e
individuazione di falsi positivi.
La seguente tabella è basata
sul numero di volte in cui,
ciclicamente, i prodotti sono
stati testati su vari sistemi
operativi a partire dal maggio
’98. Prodotti free come Avast!
negli ultimi test hanno ottenuto
il riconoscimento.
Testare l’antivirus
Dal sito www.eicar.org/anti_virus_test_file.htm è possibile scaricare “falsi virus”
che l’antivirus deve riconoscere come pericolosi. (Meglio non salvarli sul
computer in quanto l’antivirus potrebbe impedire di accedervi per eliminarli
perché li considera pericolosi).
Accorgimenti
Un elenco di accorgimenti che possono essere presi per diminuire al massimo
possibilità di attacchi o infezioni da virus:
GENERALE
1 - Spegnere il computer quando non lo si sta usando, specialmente se si ha
una connessione 24h su 24h.
FIREWALL
2 - Installare un firewall
3 - Non ci sono motivi per permettere incoming connection da chiunque.
ANTIVIRUS E ANTY-SPYWARE
4 - Utilizzare un programma che li combina o due separati.
5 - Scaricare a installare gli aggiornamenti il più frequentemente possibile.
BACKUPS
6 - Fare backup dei file regolarmente, ricordando che nel caso in cui non si
riesca a risolvere un problema di infezione, il backup è ciò che ci può salvare.
7 - Ricordarsi di eliminare vecchi backup.
SISTEMA OPERATIVO
8 - Se possibile non utilizzare Microsoft Windows.
9 - Se si utilizza MW attivare gli aggiornamenti automatici.
APPLICAZIONI
10 - Limitare il numero di applicazioni sulla macchina il più possibile. Se un
programma non serve, non installarlo.
11 - Invece di utilizzare Microsoft Office utilizzare un’applicazione free equivalente.
12 - Mantenere aggiornate il più possibile le applicazioni.
13 - Tenere disattivati ActiveX, Javasript e Visual Basic Scripting se non si visitano
siti sicuri.
14 - Non distribuire documenti Word.
BROWSER
15 - Non utilizzare Microsoft Internet Explorer il più possibile.
16 - Limitare uso di cookies ed Applet.
17 - Settare il browser in modo che elimini regolarmente i cookies.
SITI WEB
18 - Non dare per scontato che il sito che si sta guardando sia il vero sito a meno
che non si sia digitato l’indirizzo.
19 - Assicurarsi che l’indirizzo visualizzato sia quello vero e non uno simile.
20 - SSL non da alcuna sicurezza che il fornitore sia fidato o che il database dei
clienti sia sicuro.
21 - Limitare le informazioni personali e finanziarie inviate ad un sito web.
22 - Usare carte di credito che non forniscono credito.
E-MAIL
23 - Non utilizzare Outlook o Outlook Express. Utilizzare alternative free.
24 - Disattivare le e-mail HTML
25 - Non dare per scontato che l’e-mail ricevuta sia stata inviata da quel dato
mittente.
26 - Eliminare lo spam senza leggerlo.
27 - Non aprire messaggi con file allegati sconosciuti. Eliminali.
28 - Non cliccare su link in mail a meno che non si sia sicuri della mail stessa.
Meglio copiare e incollare l’indirizzo nel browser.
29 - Non fidarsi di messaggi di allarme riguardante virus e simili, non diffonderli.
PASSWORDS
30 - Per siti web ad alta sicurezza creare lunghe password random e scriversele
trattandole come moneta.
31 - Non riutilizzare la stessa password a meno di siti a bassa sicurezza.
32 - Non digitare password importanti in pagine che non si trovano in sessioni
SSL.
ENCRYPTION
33 - Installare un e-mail e file encryptor come PGP.
34 - Criptare tutte le mail e file importanti.
Riferimenti
Stefan Axelsson. Intrusion Detection Systems: A Survey and Taxonomy.
Thechnical Report 99-15, Chalmes Univ., March 2000
James P. Anderson. Computer security threat: Monitoring and survelliance,
February 1980
Thomas H. Ptacek, Timothy N.Newsham. Insertion, Evasion, and Denial of
Service: Eluding Network Intrusion Detection. January, 1998
Rebecca Bace, Peter Mell. Intrusion Detection System.
National Institute of Standards and Technology (NIST) Special Pubblication.
Snort 2.1 Intrusion Detection, Syngress, 2004
Peter Szor. The art of computer virus research and defense,
Addison Wesley Professional, 2005
John Aycock. Computer Viruses and Malware, Springer, 2006
Link
Snort: www.snort.org
Nod32: www.eset.com
Avast!: www.avast.com
Avg Ani-Spyware: www.grisoft.com
Spybot S&D: www.safer-networking.org
EICAR: www.eicar.org/anti_virus_test_file.htm
Virus Bulletin: www.virusbtn.com
Bruce Schneier: www.schneier.com
Paolo Attivissimo: www.attivissimo.net