Il seguente tutorial è stato scaricato dal sito www.html.it in data 25/09/02 Guida alla Sicurezza Il seguente tutorial è stato scaricato dal sito www.html.it in data 25/09/02 SOMMARIO 1. Premessa 2. Luoghi comuni 3. Approccio del tipo "step by step" 4. Il decalogo della sicurezza 5. Che cos'è un firewall e come funziona 6. Perché impiegare un firewall a difesa personale? 7. L’importanza di una buona configurazione 8. L’aggiornamento del software 9. I firewall a livello di applicazione 10. Software da utilizzare 11. Che cos'è un antivirus e come funziona 12. Caratteristiche di un buon antivirus 13. L’aggiornamento del file delle firme 14. Software Antivirus 15. Altri strumenti ed accorgimenti 16. Cosa sono i "malicious software" o malware 17. I Virus 18. Macro Virus 19. Cavalli di Troia 20. Worm 21. Meccanismi di propagazione 22. Strumenti di difesa 23. Cosa si intende per vulnerabilità dei programmi 24. Microsoft ActiveX 25. Java 26. Il codice nascosto nei tag html 27. Vulnerabilità dei cookies 28. Vulnerabilità derivanti dall'uso della posta elettronica 29. Strumenti e tecniche di difesa Per ulteriori informazioni rivolgersi a [email protected] Il seguente tutorial è stato scaricato dal sito www.html.it in data 25/09/02 Generalità 1. Premessa Definizione del problema: maggiore è la navigazione sulla rete maggiore è l'esposizione ai rischi Connettersi ad altri computer all'interno di una LAN (casalinga o aziendale) per condividere un documento, navigare sulla rete alla ricerca dell'offerta del mutuo più conveniente o dell'ultima versione di un software da scaricare, ricevere una comunicazione nella propria casella di posta elettronica sono ormai diventate azioni comuni grazie all'utilizzo sempre più crescente del PC sia in casa propria sia sul posto di lavoro. D'altra parte, al di là degli innegabili vantaggi che l'era telematica ha apportato alle nostre abitudini di vita e lavorative, esistono anche altri aspetti da considerare ed, in particolar modo, quelli legati all'esistenza di una serie di "rischi" che possono derivare dall'espletamento di una tra le tante attività precedentemente citate a titolo soltanto esemplificativo. Le fonti di questi rischi potenziali possono essere veramente molteplici: dai virus informatici, ormai creati in quantità industriali, al codice alterato scaricato da qualche sito "corrotto" fino ad arrivare, nel peggiore dei casi, all'azione distruttiva di qualche hacker. Indubbiamente non è facile rendersi conto della complessità e della vastità della problematica oggi comunemente nota con il nome di Sicurezza informatica, ma è evidente che quest'ultima non può più essere né trascurata né sottovalutata da parte di chi usa un PC per un scopo non soltanto ludico. In questa breve introduzione faremo pertanto delle considerazioni di carattere generale sulla tematica della sicurezza informatica mentre, nel seguito degli altri paragrafi, verranno approfonditi soprattutto gli aspetti tecnici e le soluzioni pratiche. 2. Luoghi comuni Analizziamo i luoghi comuni che spesso si incontra parlando di sicurezza telematica Per introdurre l'argomento può essere utile analizzare alcuni luoghi comuni che spesso ricorrono quando ci si occupa di sicurezza informatica: Quali prodotti devo acquistare per sentirmi veramente al sicuro? Al riguardo possiamo affermare con assoluta certezza che la sicurezza non si identifica in un prodotto specifico ma in un processo lungo e ripetitivo che consiste nell'adottare una serie di misure volte a prevenire e scoprire i tentativi di accesso non autorizzato ad un sistema informatico. In questa prospettiva dunque non è sufficiente acquistare un antivirus od un firewall per risolvere tutti i problemi poiché, come prima cosa, occorre cambiare le nostre abitudini in modo da riadattarle ad una nuova prospettiva in cui la sicurezza è l'obiettivo finale. Perché dovrei occuparmi degli aspetti inerenti la sicurezza del mio sistema? Per il semplice motivo che ormai l'uso del computer non è più limitato alle sole ore d'ufficio ma investe svariati altri aspetti della nostra vita privata (dal divertimento, all'acquisizione e scambio di notizie, al disbrigo di pratiche burocratiche, ecc.). Nel momento stesso in cui accediamo a quell'immenso database di risorse che rappresenta la rete Internet noi diventiamo parte integrante di quest'ultima e siamo sicuramente interessati ad evitare che qualunque individuo possa penetrare nel nostro sistema ed usarlo come base per sferrare attacchi contro altri oppure per rubare la nostra e-mail o carpire qualsiasi altro genere di informazione rilevante. Chi può essere interessato ad accedere al mio sistema? Praticamente chiunque sia motivato da intenzioni non proprio encomiabili. Per un aggressore l'identità della persona cui appartiene un determinato sistema non ha alcuna importanza poiché l'unico obiettivo è penetrare il sistema stesso per poterlo successivamente riutilizzare o per compiere attività dannose od anche per il solo gusto di farlo. Con quale facilità è possibile irrompere in un sistema informatico? In alcuni casi si tratta di una facilità disarmante. Purtroppo la complessità del software che viene oggigiorno prodotto si accompagna in alcuni casi ad un livello di imperfezione tale da determinare l'insorgenza di gravi problemi di sicurezza. Queste vere e proprie "falle" sono quelle alla cui ricerca si spingono gli hacker e sono quelle che vengono sfruttate (da chi non appare motivato da una solida etica) per penetrare illecitamente nei sistemi informatici. Per far fronte a queste lacune i produttori di software sono costretti a rilasciare frequenti patch di aggiornamento la cui applicazione rientra però nella sola responsabilità di noi utenti finali. Inoltre non va dimenticato che la complessità del software può a volte investire gli aspetti attinenti la sua corretta configurazione ad un livello tale da spingere l'utente ad usare configurazioni cd di default che aprono la strada a pericolose inadeguatezze in termini di sicurezza. Per ulteriori informazioni rivolgersi a [email protected] Il seguente tutorial è stato scaricato dal sito www.html.it in data 25/09/02 Chi mi garantisce che seguendo un certo tipo di approccio il mio sistema diventa veramente sicuro? Nessuno. Qualunque siano le azioni intraprese o le procedure seguite non sarà mai possibile ottenere una garanzia di protezione al 100%. Nella realtà l'unica cosa di cui si può veramente essere certi è che quanto più si affronta con criterio la tematica tanto minore sarà la probabilità che qualcuno o qualcosa riesca a procurarci un danno.. La sicurezza informatica si basa sulla difesa della privacy! Questa affermazione è vera soltanto in minima parte: in effetti la privacy, intesa come diritto alla tutela delle notizie e delle informazioni riguardanti la propria identità personale e sociale, è senza dubbio uno degli aspetti principali riguardanti la problematica della sicurezza ma non è l'unico né tanto meno il più importante. Fatta questa precisazione, è tuttavia importante sapere che esiste il rischio reale che qualcuno possa catturare informazioni inerenti le nostre abitudini in rete oppure possa carpire altre notizie attraverso gli stessi strumenti che normalmente utilizziamo (ad esempio il browser) ma, al tempo stesso, occorre anche sapere che esistono dei rimedi utilizzabili per scongiurare questo genere di attività. Peraltro, fermo restando che l'analisi di questi rimedi non è l'obiettivo di questa guida, possiamo ricordare che il modo migliore per proteggere la nostra privacy consiste nell'adottare comportamenti prudenti ed ispirati al buon senso come potrebbe essere quello di non diffondere ingenuamente informazioni di carattere riservato riempiendo spesso inspiegabili forms di registrazione oppure quello di usare forme di navigazione e di posta elettronica di carattere anonimo (ne esistono ormai in buon numero sulla rete). 3. Approccio del tipo "step by step" I passi principali per analizzare il problema della sicurezza del proprio personal computer Definizione dello scenario Questa prima fase consiste nell'individuare con esattezza le entità da proteggere (ad es. dati personali, documenti ed informazioni riservate, messaggi di posta elettronica, sistema operativo, ecc.) nonché la natura e le fonti dei possibili eventi dannosi (ad es. virus, intrusioni ed attacchi dall'esterno, malfunzionamenti, ecc.). Sicuramente in questa fase è di fondamentale importanza fare una considerazione generale su quale sia l'uso principale che si fa del PC poiché questo influisce molto nella successiva definizione dello scenario risultante. E' evidente infatti che le preoccupazioni di chi usa il computer soltanto per redigere documenti devono essere molto diverse da quelle di chi invece ne fa uso principalmente per navigare in rete e scaricare software. Valutazione dei rischi In secondo luogo occorre valutare il rischio del verificarsi degli eventi dannosi individuati nella precedente fase (ad es. qual'è la probabilità di subire intrusioni durante la navigazione su Internet ? qual'è il rischio che un allegato di posta elettronica od un software scaricato dalla rete contenga un virus od un cavallo di troia ?...). Adozione di possibi li azioni correttive Una volta completate le prime due fasi siamo già in possesso di uno scenario ed in relazione a questo possiamo individuare una serie di azioni correttive da adottare che siano in grado di ridurre al minimo i rischi del verificarsi degli eventi dannosi (ad es. cominciare ad evitare i comportamenti "ingenui" nell'utilizzo del PC, oppure acquistare ed installare software come un antivirus od anche un firewall ad uso personale, oppure applicare al sistema operativo le varie patch rilasciate dal produttore, ecc.). Lo sviluppo di un approccio di questo tipo ha degli innegabili vantaggi poiché in primo luogo aiuta a focalizzare l'attenzione soltanto sugli aspetti veramente importanti ed, in secondo luogo, si basa su un processo decisionale aperto e flessibile che in quanto tale può sempre essere riadattato ai mutamenti tecnologici e abitudinari che nel tempo possono intervenire. 4. Il decalogo della sicurezza Dieci passi chiari e specifici per poter aumentare velocemente la sicurezza del proprio personal computer Sebbene non sia possibile individuare un complesso ideale di misure di prevenzione possiamo con certezza affermare che molti dei problemi che tipicamente si presentano quando si tratta della sicurezza di un sistema informatico possono essere evitati attraverso l'adozione delle seguenti azioni correttive che, nel loro complesso, possono essere trattate come una sorta di decalogo: Per ulteriori informazioni rivolgersi a [email protected] Il seguente tutorial è stato scaricato dal sito www.html.it in data 25/09/02 − usare un buon antivirus: qualunque computer connesso alla rete Internet deve esserne munito; inoltre è altrettanto importante provvedere con regolarità all'aggiornamento del file delle firme; − usare un firewall: può sembrare eccessivo ma l'uso di dispositivi di filtraggio come i firewall, purché opportunamente configurati, è in grado di offrire un discreto grado di protezione contro determinati tipi di attacco e soprattutto contro tutta una serie di attività preparatorie (come ad es. la scansione delle porte TCP/UDP) che un aggressore in genere compie prima di tentare un accesso non autorizzato; − non aprire ingenuamente allegati di posta elettronica: questa semplice regola vale anche per i messaggi di posta che sembrano originati da un indirizzo conosciuto; in ogni caso è sempre opportuno salvare in un file l'allegato e sottoporlo ad una scansione virale prima di aprirlo; − non eseguire ingenuamente programmi di ogni tipo: è buona regola accertarsi sempre della genuinità di qualsiasi programma prima di eseguirlo e lo stesso dicasi per tutti quei documenti che possono contenere delle macro; − applicare sempre le più recenti patch: questo vale non soltanto per il sistema operativo ma anche per il software applicativo; − prestare la massima attenzione al funzionamento anomalo del sistema operativo: è assolutamente opportuno guardare sempre con sospetto ai funzionamenti apparentemente inspiegabili del sistema operativo e cercare di individuarne le cause per quanto possibile anche con l'uso di strumenti specifici; − disabilitare Java, JavaScript ed ActiveX: queste tecnologie possono costituire una vera spina nel fianco durante la navigazione su Internet; in alternativa, per non rendere la navigazione su alcuni siti frustrante, è possibile proteggersi, ma entro certi limiti, facendo uso di software specifico che funge da filtro per i contenuti interattivi che vengono normalmente ricevuti o utilizzando forme di navigazione anonime tramite proxy server; − disabilitare le funzionalità di scripting nei client di posta elettronica: spesso infatti le maggiori vulnerabilità che colpiscono i browser, legate alla presenza di contenuti interattivi, si presentano anche in questo genere di software; − fare un backup regolare di tutti i dati sensibili: ugualmente importante è tenere in posti sicuri le copie generate; − creare un disco di boot: ciò può aiutare in un eventuale attività di recovery di un sistema compromesso a patto però che la copia sia assolutamente genuina e sia conservata in un luogo sicuro. Per ulteriori informazioni rivolgersi a [email protected] Il seguente tutorial è stato scaricato dal sito www.html.it in data 25/09/02 I Firewall 5. Che cos'è un firewall e come funziona Introduzione ai firewall, i dispositivi in grado di bloccare informazioni nocive che transitano in Internet I firewall sono dispositivi software od hardware posti a protezione dei punti di interconnessione eventualmente esistenti tra una rete privata interna (ad es. una Intranet) ed una rete pubblica esterna (ad. es. Internet) oppure tra due reti differenti. Usando una metafora è come se questi dispositivi rappresentassero i punti di una dogana: la loro funzione principale è quella di agire come dei filtri controllando tutto il traffico di rete che proviene dall'esterno, nonché quello che viene generato dall'interno, e permettendo soltanto quel traffico che risulta effettivamente autorizzato. Prima di addentrarci nel discorso è opportuno fare una breve premessa per ricordare i principi di funzionamento sui quali si basa il TCP/IP (Transport Control Protocol/Internet Protocol) poiché questa diffusissima suite di protocolli garantisce ormai la stragrande maggioranza dei servizi all'interno sia delle reti private che di quelle pubbliche. In un network basato sul TCP/IP ciascun sistema è identificato in modo univoco da un indirizzo IP, costituito da quattro ottetti del tipo aaa.bbb.ccc.ddd, e comunica con altri sistemi scambiando messaggi sotto forma di pacchetti, detti anche datagrammi, tramite un determinato protocollo. In sostanza ogni forma di comunicazione tra i sistemi di un network di questo tipo presuppone l'esistenza di due punti distinti ciascuno dei quali è rappresentato da un coppia univoca di elementi costituiti oltre che da un indirizzo IP anche da una porta di comunicazione: l'indirizzo IP, analogamente ad un numero di telefono, garantisce la possibilità di instaurare una comunicazione con un determinato sistema mentre la porta non è altro che un numero che serve a differenziare il servizio di rete, cioè l'applicazione usata per la comunicazione stessa (ad es. il servizio http ha tipicamente un numero di porta uguale ad 80, quello ftp la 21, ecc...). Il meccanismo che sta alla base dell'intero scambio informativo è quello che permette l'instaurazione di una connessione ed è chiamato threeway handshake termine che, tradotto letteralmente, significa "stretta di mano a tre vie": senza di esso nessun successivo flusso comunicativo potrebbe esistere tra due sistemi differenti. Volendo ricorrere ad una metafora possiamo dire che la logica sulla quale si fonda questo meccanismo è molto simile a quella delle raccomandate con ricevuta di ritorno (Figura 1): − il client che intende connettersi ad un server invia a quest'ultimo un messaggio di sincronizzazione attivo ed uno di conferma non attivo; − sull'altro capo della connessione il server risponde con un messaggio di conferma attivo ed uno di sincronizzazione attivo; − infine il client risponde con un messaggio di conferma attivo ed uno di sincronizzazione non attivo. Terminata l'ultima fase la connessione può dirsi instaurata mentre nel caso in cui il messaggio di conferma non arriva entro un tempo stabilito si procede alla ritrasmissione. Client Messaggio Server SINCRONIZZA=SI - CONFERMA=NO SINCRONIZZA=SI - CONFERMA=SI SINCRONIZZA=NO - CONFERMA=SI Figura 1 Per poter agire come un filtro il firewall ha la necessità di analizzare tutti i pacchetti che lo attraversano in modo da prendere una decisione conforme ad un set di regole definito dall'utente. In linea generale queste regole sono specificate in modo da comportare l'accettazione od il blocco dei pacchetti in transito sulla base di quelli che sono i loro elementi distintivi, vale a dire indirizzo IP e porta della sorgente nonché indirizzo IP e porta della destinazione. Tuttavia dal punto di vista del funzionamento interno i firewall possono essere ulteriormente distinti in due gruppi separati: − firewall a filtraggio di pacchetti; Per ulteriori informazioni rivolgersi a [email protected] Il seguente tutorial è stato scaricato dal sito www.html.it in data 25/09/02 − firewall a livello di circuito. I primi sono i più comuni ed anche i meno costosi: essi esaminano le informazioni contenute nella intestazione del pacchetto relativa al protocollo IP e le confrontano con il loro set di regole interno permettendone o bloccandone il transito. Il vantaggio di questi dispositivi, oltre al costo contenuto, è rappresentato dalla velocità mentre per converso i punti deboli sono costituiti da una certa sensibilità verso determinati tipi di attacco come quelli basati sull'IP spoofing. Inoltre un altra vulnerabilità è data dal fatto che in questo caso sussiste una connessione diretta tra sorgente e destinazione per cui, una volta che il firewall lascia transitare il pacchetto, esso non garantisce più alcuna ulteriore difesa contro ogni successivo attacco portato in essere. Al contrario i firewall a livello di circuito, molto più costosi, forniscono un livello di protezione più elevato poiché esaminano non soltanto l'intestazione ma anche il contenuto dei pacchetti in transito. Questo meccanismo di funzionamento viene anche detto "stateful packet inspection" proprio perché l'esame del contenuto del datagramma è diretto a verificare lo stato della comunicazione in corso e, quindi, ad assicurare che il sistema di destinazione abbia effettivamente richiesto la comunicazione stessa. In questo modo c'è la garanzia che tutte le comunicazioni si svolgano soltanto con indirizzi sorgente effettivamente conosciuti per effetto di precedenti interazioni. 6. Perché impiegare un firewall a difesa personale? I motivi che ci spingono ad utilizzare un firewall per la sicurezza del pc personale Quando un PC accede ad Internet esso diventa, a tutti gli effetti e per tutta la durata del collegamento, un nodo della rete. Il sistema connesso, come del resto qualsiasi altro nodo, può esporre dei servizi di rete cioè delle applicazioni che hanno delle funzionalità specifiche e che rimangono in ascolto su una porta determinata (ad es. un server ftp o telnet od anche il classico servizio di condivisione dei file e delle stampanti di Windows). In alcuni casi può capitare che questi servizi nascondano al loro interno delle vulnerabilità o, comunque, rendano manifesti dei difetti di configurazione tali da poter essere sfruttati per guadagnare l'accesso non autorizzato ad un sistema. In genere prima di tentare una qualsiasi forma di intrusione un aggressore fa uso di un software specifico per effettuare la scansione del target alla ricerca di eventuali porte in ascolto. Una volta individuate queste porte è molto facile risalire al tipo di applicazione in esecuzione e, da qui, al genere di problemi di sicurezza che affliggono l'applicazione stessa e, di conseguenza, diventa possibile sfruttare un exploit (una tecnica di attacco particolare che si basa sulla presenza di vulnerabilità note) in modo da ottenere l'accesso al sistema. Naturalmente, nella realtà dei fatti, quasi mai le cose sono così semplici ma l'esempio è diretto a sottolineare un dato di fatto di fondamentale importanza: l'uso di un firewall, in combinazione con altri strumenti, può effettivamente garantire un livello di protezione discreto non soltanto contro i tentativi di sfruttare vulnerabilità più o meno note di un servizio ma anche e soprattutto contro l'attività di scansione delle porte che normalmente costituisce sempre il preludio di un attacco. 7. L’importanza di una buona configurazione L'efficacia di un buon firewall è basata innanzitutto su una buona configurazione I firewall, come già accennato, non sono dispositivi "autonomi" nel senso che devono essere istruiti nel prendere decisioni in merito alla ammissibilità del traffico in transito attraverso delle regole ben precise definite dall'utente. La predisposizione di questo set di regole può richiedere una fase di studio ed implementazione più o meno lunga e laboriosa a seconda di quali siano effettivamente le esigenze di difesa che si pongono nel caso specifico ma, in ogni caso, il fulcro dell'intero funzionamento di questi dispositivi sta proprio nella loro corretta configurazione. Essere in possesso del prodotto software più evoluto sul mercato non è di alcuna utilità se lo stesso prodotto non può essere utilizzato nella pienezza delle sue funzionalità proprio a causa di una cattiva configurazione. In questi casi anzi è molto meglio rinunciare all'utilizzo di un firewall perché lo stesso può ingenerare un falso senso di sicurezza in chi lo utilizza. 8. L’aggiornamento del software Il firewall è un'applicazione come le altre e la sua efficienza va verificata periodicamente applicando le patch necessarie I firewall che non hanno natura di dispositivi hardware sono delle vere e proprie applicazioni ed, in quanto tali, possono essere affetti da imperfezioni così come qualsiasi altro prodotto di questo genere. L'unica differenza con le applicazioni tradizionali è che in questi casi il firewall rappresenta l'ultimo baluardo di difesa per cui se un aggressore riesce a superare questa barriera sfruttando una vulnerabilità specifica del prodotto egli può avere pieno accesso al sistema protetto e compiere di conseguenza ogni tipo di attività. Per evitare che ciò accada è assolutamente necessario applicare sempre tutte le patch rilasciate dal produttore del software, anche quelle che non sono dirette a risolvere uno specifico problema di sicurezza, dal momento che questa abitudine è in grado di migliorare non soltanto la longevità del prodotto ma anche la sua resistenza intrinseca a forme di attacco più o meno note. 9. I firewall a livello di applicazione Un'altra tipologia di firewall basato sul controllo delle funzioni del programma Per ulteriori informazioni rivolgersi a [email protected] Il seguente tutorial è stato scaricato dal sito www.html.it in data 25/09/02 Un altra tipologia di prodotti è quella dei firewall a livello di applicazione: si tratta di dispositivi che "vedono" il traffico passante non come una sequenza di pacchetti ma come un flusso di dati e verificano la legittimità delle connessioni permettendo soltanto il tipo di traffico che risponde a delle funzionalità specifiche (ad es. l'accesso alla rete Internet oppure lo scambio dei messaggi di posta elettronica). In linea generale questa classe di prodotti è spesso rappresentata da sistemi con servizi di proxy che funzionano agendo da tramite tra un client ed un qualsiasi server esterno. In pratica il client invia la sua richiesta di connessione ad una rete esterna al server proxy il quale, dopo aver verificato l'ammissibilità del traffico in base alle regole definite, la inoltra al sistema di destinazione. Una volta ricevuta la risposta da parte del target essa viene reinoltrata al client che di conseguenza è sempre nascosto e non instaura mai una connessione diretta con il sistema esterno. I vantaggi derivanti da questo differente meccanismo di funzionamento sono principalmente costituiti da un migliore controllo sui protocolli applicativi (vedi http, ftp, smtp, ecc..) dal momento che il software, se opportunamente configurato, è in grado anche di riconoscere la presenza di vulnerabilità specifiche ed evitare di conseguenza lo sfruttamento di exploit noti da parte di un aggressore. Altri benefici sono inoltre costituiti dalla minore suscettibilità agli attacchi basati sulle tecniche di occultamento dei dati all'interno del traffico legittimo (cd. tunneling), dalla possibilità di produrre log dettagliati ed, in alcuni casi, dalla capacità di interfacciamento con altri sistemi (ad esempio gli IDS o sistemi di scoperta delle intrusioni) con un conseguente miglioramento dei livelli di sicurezza complessivi. Purtroppo invece, a causa della differente filosofia di progetto che sta alla base di questi prodotti, il rovescio della medaglia consiste nella introduzione di una inevitabile lentezza nello smistamento del traffico di rete il che, peraltro, rende questi dispositivi anche più esposti ad una certa tipologia di attacchi (vedi D.o.S o Denial of Service). 10. Software da utilizzare Tre firewall software per mantenere sotto controllo la propria connessione ad Internet In rete esiste un buon numero di prodotti freeware, shareware o commerciali che rientrano nella fascia di mercato dei cd. firewall a difesa personale ma prenderemo in esame soltanto i più diffusi e conosciuti. Il primo prodotto è ZoneAlarm per Windows 9.x,Me,NT4,2000/XP in versione freeware scaricabile dall'indirizzo http://www.zonelabs.com Questo prodotto combina le funzionalità di un firewall con quelle di un sistema di controllo delle applicazioni e presenta una serie di caratteristiche quali: − possibilità di scegliere tra tre livelli di protezione predefiniti (Basso,Medio,Alto); − flessibilità e facilità di configurazione; − analisi in tempo reale dei tentativi di connessione verso l'esterno (l'utente conserva la possibilità di scegliere se continuare o bloccare la connessione); − produzione di file di log. Il secondo prodotto è Tiny Personal Firewall per Windows 9.x,Me,NT4,2000 freeware, liberamente scaricabile all'indirizzo http://www.tinysoftware.com Questo prodotto oltre a fornire le classiche funzioni di filtraggio dei pacchetti è anche in grado di costruire dei filtri a livello delle applicazioni e mette a disposizione una serie di ulteriori funzionalità quali : − amministrazione remota; − verifica della impronta MD5 delle applicazioni; − capacità di memorizzare le informazioni di log su un server syslog centralizzato; − creazione dinamica delle regole di filtro; − possibilità di definire una lista di indirizzi di fiducia; − possibilità di applicare le regole di filtro soltanto durante un preciso intervallo temporale; − possibilità di scegliere tra tre livelli predefiniti di comportamento (blocco di tutto il traffico, richiesta esplicita di conferma per ciascuna connessione per la quale non sia presente una regola di filtraggio oppure nessun tipo di blocco). L'ultimo prodotto è Black Ice Defender per Windows 9.x,NT4,2000 disponibile all'indirizzo http://www.networkice.com Si tratta di un prodotto commerciale (il costo è di $ 39.95) che unisce le funzionalità tipiche di un firewall con quelle di un sistema per la scoperta delle intrusioni (IDS). Il software analizza in tempo reale tutti i pacchetti in transito e, grazie ad un database interno aggiornabile che raccoglie le impronte caratteristiche delle varie tipologie di attacco, è in grado di riconoscere svariati tentativi di intrusione e di bloccarli prima che essi siano portati a compimento fornendo un immediato riscontro all'utente e raccogliendo in un file di log le informazioni relative all'aggressore quali l'indirizzo IP, l'eventuale nome NETBIOS della macchina utilizzata ed il suo indirizzo hardware.Altre caratteristiche interessanti sono: − possibilità di scegliere tra quattro tipologie differenti di livelli: trusting, cautious, nervous e paranoid; − possibilità di definire gruppi di indirizzi di fiducia; − produzione di log dettagliati. Per ulteriori informazioni rivolgersi a [email protected] Il seguente tutorial è stato scaricato dal sito www.html.it in data 25/09/02 Gli Antivirus 11. Che cos'è un antivirus e come funziona Gli antivirus, gli strumenti più utili per la salvaguardia della sicurezza di un Personal Computer Ogni giorno nel mondo vengono creati e diffusi nuovi virus sempre più sofisticati ed in possesso di tecniche offensive evolute in grado di attaccare un sistema e renderlo instabile fino a provocarne il malfunzionamento od il blocco totale. Questo scenario non riguarda più soltanto le grandi entità che, peraltro, spendono centinaia di milioni per proteggersi ma anche e soprattutto l'utente comune che accede alla rete dal PC di casa per compiere operazioni di vario genere. In effetti con l'avvento dell'era telematica i veicoli di una possibile infezione virale si sono enormemente moltiplicati ed il pericolo non è più rappresentato soltanto dai classici virus ma anche da una nuova classe di codice nocivo costituita da cavalli di Troia e backdoor: i primi sono in genere programmi che, all'insaputa dell'utente, compiono operazioni dannose sul sistema mentre le backdoor sono applicazioni che lasciano aperti dei varchi che consentono ad un aggressore di riacquisire in un momento successivo il possesso di un determinato sistema. Naturalmente non esiste un rimedio unico per far fronte a questo tipo di attacchi ma un insieme di accorgimenti e strumenti da adottare primo fra i quali un buon prodotto antivirus. 12. Caratteristiche di un buon antivirus Guida alla scelta di un antivirus. Come distinguere un antivirus efficace da un antivirus inutile Quali sono allora le caratteristiche di cui deve essere in possesso un antivirus per poter essere considerato un prodotto veramente efficace ? Innanzitutto è necessario sottolineare che, a causa della continua evoluzione ed affinamento delle tecniche di programmazione impiegate per la costruzione di codice virale, un antivirus non può più limitarsi a rilevare ed eliminare soltanto i virus noti ma deve anche essere progettato per identificare, anche se in modo probabilistico, nuove tipologie di virus. Di conseguenza il primo requisito fondamentale è rappresentato dalla presenza di un motore di scansione cd. euristico in grado di ricercare all'interno dei file la presenza di particolari sequenze di byte che possono essere sintomo tipico di codice nocivo. Ovviamente poiché questo tipo di scansione non fa uso di metodi deterministici essa non è in grado di offrire lo stesso livello di protezione ed affidabilità della scansione tradizionale, basata invece sull'individuazione di una impronta nota, e di conseguenza può generare un numero più o meno frequente di falsi allarmi chiamati anche falsi positivi che, pur richiedendo una ulteriore fase di analisi, svolgono tuttavia un compito importantissimo vale a dire richiamare l'attenzione dell'utente sull'esistenza di una possibile fonte di rischio. In ogni caso, al di là di questa precisazione, è utile suddividere in due gruppi distinti le funzionalità che possono essere rinvenute in un prodotto antivirus: nel primo gruppo comprendente funzionalità cd. di base rientrano le seguenti caratteristiche: − verifica della integrità del settore di boot, del Master Boot Record (MBR) e dei file di sistema durante la fase iniziale di avvio del sistema; − scansione in tempo reale della memoria; − scansione in tempo reale dei file; − scansione degli allegati di posta elettronica; − capacità di individuazione delle altre tipologie di codice nocivo (cavalli di troia, backdoor, macro virus, ecc.); − possibilità di creare dischetti di emergenza da utilizzare in caso di ripristino del sistema; − rilascio da parte del produttore di frequenti aggiornamenti del file delle firme; Nel secondo gruppo invece rientrano alcune funzionalità che possiamo considerare avanzate nel senso che esse facilitano l'utilizzo del prodotto od il suo aggiornamento ma non hanno alcuna influenza sulla sua efficacia ed affidabilità: − possibilità di programmare scansioni del file system ad intervalli regolari; − distribuzione centralizzata degli aggiornamenti (utile soprattutto in un ambiente di rete); − possibilità di effettuare gli aggiornamenti attraverso Internet; − capacità di isolare i file infetti per i quali il prodotto non sia in grado di compiere operazioni di pulizia; − presenza di una guida esauriente che descriva le tipologie note di virus, cavalli di troia e backdoor e le loro caratteristiche principali. 13. L’aggiornamento del file delle firme L'importanza dell'aggiornamento. Come rendere sempre efficiente un antivirus Generalmente il funzionamento degli antivirus si basa sulla presenza di un motore di scansione che, operando in background, disassembla in tempo reale i vari file e ricerca all'interno degli stessi la presenza di determinate sequenze di byte che costituiscono l'impronta digitale identificativa di un virus. Pertanto, considerata la frequenza con la quale i Per ulteriori informazioni rivolgersi a [email protected] Il seguente tutorial è stato scaricato dal sito www.html.it in data 25/09/02 nuovi virus vengono messi in circolazione, l’aggiornamento periodico del file delle definizioni diventa fondamentale per garantire l’individuazione e ove possibile la rimozione anche dei virus più recenti 14. Software Antivirus I principali software antivirus in circolazione. Collegamenti per lo scaricamento del download In commercio esistono svariati prodotti antivirus ma tra questi i migliori sono sicuramente Symantec Norton AntiVirus 2001, McAfee VirusScan 5, PC-Cillin 2000 i quali si distinguono per la facilità d’uso, le numerose funzioni e la disponibilità di frequenti aggiornamenti del file delle firme. Di seguito viene riportata una lista di indirizzi utili: Prodotto Symantec Norton AntiVirus 2001 URL McAfee VirusScan 5 http://www.mcafee.com PC-Cillin 2000 F-Sicure AntiVirus AntiViral ToolKit Pro http://www.antivirus.com http://www.datafellows.com http://www.avp.it Panda AntiVirus http://www.pandasoftware.com http://www.symantec.it 15. Altri strumenti ed accorgimenti Quando l'antivirus non basta: difendersi dagli altri attacchi con codice nocivo. L'utilizzo di un antivirus rappresenta sicuramente un primo passo decisivo per rafforzare la sicurezza di un sistema informatico ma in alcuni casi può non essere del tutto sufficiente. Per questo motivo diventa opportuno affiancare ad un prodotto di questo tipo altri strumenti complementari. Dal momento che stiamo parlando di codice nocivo è bene sottolineare che in un sistema operativo Windows tre sono le componenti a più alto rischio che occorre tenere sotto controllo: il file system, il registro di configurazione ed i processi. Per quanto riguarda il primo aspetto la misura precauzionale più efficiente consiste nel creare ad intervalli regolari una lista di directory e di file da confrontare con elenchi generati precedentemente e memorizzati su supporti removibili conservati in luoghi sicuri. A tal proposito nei sistemi Windows NT/2000 è assolutamente necessario usare strumenti in grado di individuare la presenza nei file dei flussi di dati alternativi (ADS o Alternate Data Streaming). Il file system NTFS presenta infatti una interessante funzionalità che permette di aggiungere ad un file esistente degli ulteriori flussi, cioè dei dati di qualsiasi genere, senza per questo modificare gli attributi ed il contenuto originario del file stesso: per esempio se ad un file di testo viene aggiunto, sotto forma di ADS, un eseguibile contenente un cavallo di troia il file di testo continuerà ad essere visualizzato correttamente ma, per converso, il cavallo di troia potrà essere eseguito dall'interno dello stesso file rimanendo completamente nascosto a meno che non vengano utilizzati per l'appunto strumenti specifici. Un altro rimedio che aiuta nella identificazione di attività sospette aventi per oggetto il file system può inoltre consistere nell'abilitazione delle attività di auditing (Windows NT/2000) e/o nell'utilizzo di altre applicazioni dirette a garantire l'integrità dei file. L'adozione di questi accorgimenti vale per tutti i sistemi, compresi quelli Windows 2000, anche se questi ultimi mettono a disposizione un nuova funzionalità chiamata WFP (Windows File Protection) che dovrebbe garantire un certo livello di protezione dei file di sistema da possibili operazioni di modifica e manomissione ma che ha evidenziato in alcune ipotesi dei comportamenti anomali. Anche il registro di configurazione di Windows necessita di un controllo continuo poiché esso rappresenta purtroppo uno dei punti deboli più critici sotto il profilo della sicurezza. Nel caso specifico l'attività di monitoraggio deve riguardare soprattutto una serie di chiavi e cioè HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run, HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce, HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnceEx, utilizzate per memorizzare informazioni relative ad applicazioni che devono essere avviate in modo automatico durante il boot del sistema (per gli stessi motivi occorre anche verificare periodicamente il contenuto della cartella Esecuzione Automatica nonché i file win.ini e system.ini). Per ulteriori informazioni rivolgersi a [email protected] Il seguente tutorial è stato scaricato dal sito www.html.it in data 25/09/02 Infine un altra misura cautelare è data dal monitoraggio dei processi attivi che dovrebbe essere compiuto possibilmente con strumenti in grado di identificare per ogni processo anche l'eventuale porta TCP/UDP utilizzata. Prodotto CrucialAds Tripwire MD5Sum FPort DumpReg Area Integrità file system Integrità file system Integrità file system Monitoraggio processi Monitoraggio registro URL http://www.crucialsecurity.com/ http://www.tripwire.com http://sourceware.cygnus.com/cygwin/ http://www.foundstone.com http://www.somarsoft.com Un ultimo consiglio, ma non certo per importanza, riguarda l'adozione di comportamenti ispirati al buon senso ed alla prudenza che, spesso, sono di per sé stessi sufficienti ad evitare molti problemi. Per ulteriori informazioni rivolgersi a [email protected] Il seguente tutorial è stato scaricato dal sito www.html.it in data 25/09/02 Attacchi derivanti da codice nocivo 16. Cosa sono i "malicious software" o malware Introduzione agli attacchi da codice nocivo: worm, cavalli di troia e macro virus. Le cronache informatiche di questi ultimi tempi hanno fornito la dimostrazione pratica di un dato di fatto innegabile: nessuno può dirsi veramente al sicuro dagli attacchi portati attraverso il cosiddetto codice nocivo. Ma che cosa si intende per codice nocivo ed in quale modo questo può effettivamente produrre un danno? Con il termine inglese di "malware", contrazione di malicious software, generalmente si intende un qualsiasi frammento di codice di lunghezza variabile che, penetrato all'interno di un computer, si dimostra potenzialmente in grado di danneggiarlo. Dunque la caratteristica che giustifica l'appellativo di nocivo è l'attitudine a causare danni a prescindere dalla circostanza che poi questi effettivamente si verifichino. Per questo motivo in questa categoria rientrano tradizionalmente i virus, i macro virus, i worm ed i cavalli di troia 17. I Virus I Virus informatici, classificazioni e principali caratteristiche di attacco. La RFC 1135 definisce come virus qualsiasi porzione di codice che si installa all'interno di un programma host al fine di utilizzare quest'ultimo come mezzo di propagazione. Un virus non può essere eseguito in maniera autonoma ed indipendente ma richiede che sia stato attivato un programma host. Due sono gli elementi che è necessario prendere in considerazione quando si parla di virus: il meccanismo di propagazione ed il tipo di operazioni eseguite (cd. payload) una volta che il virus sia attivo e residente in memoria. Il meccanismo di propagazione è forse l'aspetto più importante nel valutare la pericolosità di una determinata classe di codice nocivo. Infatti mentre in passato il pericolo di una infezione da virus poteva dirsi limitato a pochi pc ed il mezzo di diffusione era costituito principalmente da floppy disk o da cassette attualmente l'avvento di Internet ha dato un forte impulso alla crescita delle infrastrutture di rete per cui negli scenari odierni i danni causati dai virus possono colpire centinaia di migliaia di sistemi in poco più di una settimana sfruttando mezzi di connettività globale velocissimi come ad esempio la posta elettronica. A seconda delle caratteristiche di diffusione di cui sono in possesso i virus appartengono a due distinte categorie: − virus di tipo parassita: infettano i classici file eseguibili (.com, .exe e .dll) lasciandoli perfettamente utilizzabili ma al tempo stessi utilizzandoli come mezzi di propagazione; − virus del settore di avvio: copiano se stessi nel settore di avvio dei dischetti o del disco rigido e si dimostrano particolarmente subdoli poiché sono in grado di acquisire il controllo del sistema al momento del suo bootstrap e quindi molto prima che sia caricato il sistema operativo e, conseguentemente, qualsiasi programma antivirus. In quest'ultimo gruppo rientra anche il codice virale che, anziché colpire il settore di avvio, infetta il Master Boot Record vale a dire quell'insieme di istruzioni localizzate all'inizio di qualsiasi disco fisso, cioè nel primo settore del primo cilindro del primo piatto, in grado di interpretare la tabella delle partizioni che contiene la mappa della configurazione dell'intero disco. Peraltro è proprio questa tipologia di virus quella che presenta le particolarità più insidiose in quanto tende ad acquisire il controllo dell'MBR rilocandolo altrove ed inserendo il proprio codice nocivo all'interno dello stesso. In questo modo, durante il riavvio della macchina, il virus riesce ad eseguire qualsiasi tipo di operazione: modificare le chiamate del BIOS od intercettare quelle dirette a leggere lo stesso MBR dirottandole verso la copia precedentemente rilocata (l'uso di queste tecniche cosiddette stealth è normalmente diretto ad evitare l'identificazione da parte dei normali antivirus). Infine non è raro trovare anche virus cosiddetti multi-partiti capaci non soltanto di infettare l'MBR od il settore di boot del disco ma anche di esporre caratteristiche di tipo parassita che li rendono idonei a sfruttare una ampia gamma di mezzi di diffusione. Per quanto riguarda invece le operazioni compiute va detto che non tutti i virus sono caratterizzati dalla presenza di un payload mentre, tra quelli che ne sono in possesso, alcuni sono programmati in modo tale da avere una sorta di trigger che al verificarsi di determinate circostanze scatena l'esecuzione delle operazioni nocive. L'uso di tecniche evolute nei moderni virus L'evoluzione delle tecniche di programmazione ha portato negli ultimi anni alla proliferazione di una nuova generazione di codice virale sempre più insidioso e subdolo rappresentato da: − virus polimorfici; − virus crittografati; La prima specie raccoglie quei virus che adottano tecniche particolari per rendere la loro impronta virale diversa di volta in volta. Attraverso un complesso e sofisticato processo di recodifica essi creano delle varianti di se stessi ostacolando o rendendo molto più difficoltosa la loro identificazione da parte dei programmi antivirus. Il secondo Per ulteriori informazioni rivolgersi a [email protected] Il seguente tutorial è stato scaricato dal sito www.html.it in data 25/09/02 genere invece si caratterizza per l'utilizzo di metodi di occultamento della impronta virale che sfruttano la crittografia. In questo caso la logica di crittografia/decrittografia può essere contenuta all'interno dello stesso codice virale oppure può impiegare apposite routine fornite di default dallo stesso sistema operativo limitando tuttavia in questo caso la propria capacità offensiva soltanto ad tipo sistema (quello di cui vengono sfruttate le API crittografiche). Peraltro nulla esclude l'impiego congiunto di polimorfismo e crittografia al fine di produrre virus altamente evoluti anche se ciò inevitabilmente si traduce in un codice di maggiori dimensioni la cui realizzazione è alla portata di pochi individui in possesso di capacità tecniche non comuni. 18. Macro Virus I Virus portati da script inclusi all'interno dei documenti Rappresentano l'evoluzione dei tradizionali virus poiché fondamentalmente ereditano da questi ultimi un comportamento di tipo parassita pur presentando di fatto delle caratteristiche completamente differenti. Questi virus non attaccano i comuni file eseguibili ma un altro genere di file: i macro virus sono generalmente script incorporati all'interno di particolari documenti (come ad esempio un template di Microsoft Word) i quali comprendono una serie di comandi codificati in base al linguaggio specifico di una determinata applicazione. La diffusione di questa nuova classe di codice virale è stata ispirata dalla possibilità di sfruttare alcune interessanti caratteristiche presenti nelle applicazioni tradizionalmente legate alla produttività individuale. Per la prima volta nella storia questi virus hanno sovvertito un punto fermo rappresentato dal fatto che, in passato, non era possibile concepire del codice virale in una forma tale che potesse prescindere dall'esistenza di un file eseguibile mentre oggi tutto questo è divenuto realtà proprio grazie alle accresciute potenzialità che nel tempo queste applicazioni sono venute ad acquisire. Tale processo di evoluzione, purtroppo, ha comportato un indiscriminato sviluppo delle potenzialità anche per questo genere di macro comandi che ormai sono in grado di eseguire le operazioni più svariate: aprire, modificare e cancellare files, avviare l'esecuzione di altri programmi, leggere ed impostare proprietà di sistema, in una parola sfruttare tutte le eventuali lacune di sicurezza che le applicazioni possono presentare. Tuttavia, proprio per il fatto di essere codificati facendo uso di un linguaggio generalmente interpretato, i macro virus richiedono per la propria operatività l'attivazione di un ambiente host che funge da interprete e/o esecutore dei comandi stessi, il che potrebbe rappresentare una forte limitazione alla loro espansione (anche se di fatto ciò non sempre si verifica). Indubbiamente uno degli esempi più lampanti di questa tipologia di codice è rappresentato dal macro Virus denominato Melissa che recentemente è assurto alle cronache informatiche per la sua rapida diffusione nonché per il semplice ma efficace stratagemma che esso usa per replicarsi. Melissa è stato scritto in VBA (Visual Basic for Application) ed opera infettando la macro Document.Open() di Microsoft Word in modo tale che qualsiasi porzione di codice racchiusa all'interno di questa routine venga automaticamente eseguita durante l'apertura di un file Word. Come se ciò non bastasse il virus è in grado di propagarsi auto inviandosi ai primi 50 indirizzi presenti nella rubrica di Microsoft Outlook sfruttando in tale modo un mezzo di diffusione straordinariamente veloce come la posta elettronica. 19. Cavalli di Troia I programmi che sfruttano la fiducia dell'utente per insinuarsi nel sistema I cavalli di Troia derivano il loro nome dal celebre episodio dell'Iliade di Omero che vide i Greci sopraffare i Troiani in virtù di uno stratagemma geniale. Un cavallo di Troia basa tutta la sua potenza sull'inganno in quanto è un programma che dichiara di svolgere determinate funzioni, per di più di utilità, ma che in realtà compie sul sistema dell'utente, e ad insaputa di quest'ultimo, una serie di operazioni dannose che possono essere le più svariate. Ciò che caratterizza dunque questa tipologia di codice è l'approfittamento della fiducia che l'utente ripone nel codice che accetta di eseguire perché spinto in qualche modo a farlo. Peraltro, per converso, questa stessa caratteristica è anche la maggiore limitazione di un cavallo di Troia che non può in alcun modo operare sul sistema se non viene attivato da parte dell'utente. La diffusione di questo genere di codice oggigiorno è talmente elevata che tutti i maggiori produttori di antivirus hanno ormai aggiornato i propri prodotti in modo tale da non identificare più soltanto i tradizionali virus informatici ma anche i ben più subdoli cavalli di troia. 20. Worm I codici che non modificano le risorse di sistema ma le consumano Il concetto di worm è molto simile a quello di virus con la sola differenza che un worm non si riproduce localmente ma semplicemente si propaga attraverso sistemi differenti. La stessa RFC 1135 fornisce una chiave interpretativa definendo i worm come frammenti di codice autonomi ed indipendenti che esistono solo in memoria consumando le risorse del sistema ed auto-propagandosi. Questa importante precisazione è stata introdotta in onore del primo worm della storia informatica denominato "Morris Worm", dal nome del suo autore, che il giorno 2 Novembre 1988 colpì svariati sistemi UNIX. Il codice era concepito in modo tale da sfruttare un buffer overflow presente nei demoni fingerd e sendmail per irrompere all'interno dei sistemi che adottavano il sistema operativo Berkeley UNIX. Tuttavia era il payload del codice quello che senza dubbio maggiormente destò la maggior attenzione al punto da giustificare l'interessamento addirittura di una RFC. Infatti, dopo aver eseguito il crack degli hash delle password di autenticazione sfruttando un motore di Per ulteriori informazioni rivolgersi a [email protected] Il seguente tutorial è stato scaricato dal sito www.html.it in data 25/09/02 decifratura molto veloce ed un dizionario dati presenti al suo interno, il worm eseguiva una scansione dell'intero sistema alla ricerca di informazioni relative ad altri host (file .rhost, indirizzi dei gateways ricavati dalle tabelle di instradamento, ecc...) che successivamente tentava di compromettere. 21. Meccanismi di propagazione I principali mezzi con cui si propaga il codice nocivo Per comprendere in che modo difendersi è innanzitutto necessario capire quali sono i principali meccanismi di propagazione del codice nocivo. Nell'epoca in cui viviamo il sistema di trasmissione delle informazioni più diffuso e veloce è senza dubbio rappresentato dalla posta elettronica per cui, inevitabilmente, questo è anche il veicolo primario di propagazione del codice nocivo esistente. Fatta questa considerazione le principali modalità di diffusione di codice nocivo all'interno dei messaggi di posta elettronica sono rappresentate da: − Macro: costituiscono un meccanismo efficiente, soprattutto per quanto riguarda i macro virus ed i worm, poiché normalmente vengono eseguite in modo trasparente e non richiedono una interazione con l'utente. Il punto debole è invece rappresentato dal fatto che esse richiedono la presenza di uno specifico client di posta elettronica in grado di interpretare correttamente i comandi in esse contenuti ed, in questa prospettiva, la mancanza di un ambiente universale potrebbe limitarne in un certo senso la diffusione; − Allegato di posta: è tuttora il principale veicolo per i virus ed i cavalli di troia ma presenta due punti deboli noti. Il primo è dato dal fatto che esso richiede una interazione con l'utente il quale deve essere spinto ad aprire l'allegato mentre il secondo è costituito dalla sua offensività che è ovviamente limitata ad una specifica piattaforma in relazione alla forma assunta dall'allegato stesso (ad esempio file .exe). Questa ultima limitazione è tuttavia soltanto fittizia se si pensa alla enorme diffusione di cui godono oggigiorno le piattaforme Windows rispetto a tutte le altre. Non dimentichiamo inoltre che, accanto alla e-mail, un altro mezzo di diffusione del codice nocivo è rappresentato dal web ed in questo caso il pericolo assume principalmente la forma di programmi che vengono scaricati dagli innumerevoli archivi software esistenti in rete. 22. Strumenti di difesa Come difendersi dagli attacchi portati con codice nocivo: quattro passi obbligatori Non esiste uno strumento unico di difesa contro il codice nocivo ma un complesso di misure cautelari che occorre adottare per ridurre al minimo i rischi. Indubbiamente una delle migliori protezioni, prima ancora della installazione e dell'uso di un prodotto specifico, è quella che passa attraverso la consapevolezza e l'educazione degli utenti, principalmente di quelli domestici, maggiormente esposti per ovvie ragioni agli attacchi di questo tipo. La consapevolezza implica una reale presa di coscienza dei rischi ai quali chiunque si espone nel momento stesso in cui accede alla rete e compie operazioni che possono apparire banali, come scaricare la posta elettronica oppure visitare un determinato sito od ancora prelevare risorse di altro genere. L'educazione, invece, comporta un continuo esercizio diretto ad acquisire e sviluppare una propria ed autonoma capacità di giudizio su ciò che è opportuno scaricare dalla rete oppure sul genere di allegati di posta elettronica che possono considerarsi, con un buon margine di probabilità, "sicuri". In ogni caso l'obiettivo finale, costituito dal raggiungimento di un buon livello di sicurezza, richiede senza dubbio le seguenti precauzioni: − adozione di atteggiamenti ispirati alla prudenza ed al buon senso: è difficile tipizzare con esattezza questi comportamenti ma sicuramente tra di essi rientrano il guardare con sospetto agli allegati di posta elettronica, da qualunque fonte provengano, l'evitare di operare con un utente di sistema avente privilegi amministrativi, il guardare con forte sospetto a tutti i comportamenti anomali (uso elevato delle risorse di sistema, improvvisi reboot, finestre di prompt che appaiono ingiustificatamente durante il riavvio, porte TCP/UDP "sospette" in ascolto, cambiamento delle dimensioni e degli attributi di file eseguibili, ecc...). − impostazione delle caratteristiche di sicurezza dei browser web: il web si è ormai talmente evoluto nei suoi contenuti che la linea di demarcazione tra ciò che rappresenta un puro dato e ciò che invece ha natura eseguibile si è molto assottigliata. Questo evoluzione che sicuramente arricchisce l'esperienza del navigatore indubbiamente comporta dei compromessi spesso gravi sotto il profilo della sicurezza. A ciò aggiungasi che la presenza di bachi di sicurezza nei moderni browser è diventata talmente probabile da rendere addirittura insensata la navigazione senza la preventiva disabilitazione dei vari meccanismi di Active Scripting, JavaScript, ActiveX e quanto altro la moderna tecnologia offre. − installazione ed uso di un antivirus: la presenza di un antivirus in possesso di adeguate caratteristiche è una misura di fondamentale importanza che tuttavia deve essere accompagnata anche da frequenti aggiornamenti del file delle firme pena l'assoluta inutilità del prodotto. − installazione ed uso di prodotti complementari: la notevole diversità di codice nocivo in circolazione oggigiorno può rendere necessaria l'adozione di ulteriori strumenti da affiancare ad un antivirus. In questa categoria rientrano strumenti di cui il mercato del software è abbastanza prodigo come quelli per la verifica della integrità dei file oppure prodotti specifici per l'identificazione e la rimozione di svariate fattispecie di cavalli di troia e quanto altro possa avere una giustificazione in relazione alle proprie esigenze di difesa. Per ulteriori informazioni rivolgersi a [email protected] Il seguente tutorial è stato scaricato dal sito www.html.it in data 25/09/02 Attacchi basati sulla vulnerabilità dei programmi 23. Cosa si intende per vulnerabilità dei programmi Le vulnerabilità sono causate da errori o mancanze di programmazione Qualsiasi applicazione può essere affetta da malfunzionamenti di vario genere che producono un impatto più o meno decisivo sulla sicurezza del sistema in cui essa viene eseguita, ma quando si parla di vulnerabilità dei client si intende fare un riferimento specifico a quei programmi che rientrano nel tipico modello client/server. L'espressione vulnerabilità è da intendere in senso lato per indicare la presenza di errori di programmazione, difetti o anche di semplici mancanze da cui possono scaturire una serie di comportamenti inattesi. La serietà della problematica legata alle anomalie del software, ed in particolare di quello il cui funzionamento presuppone la ricezione di dati da parte di una sorgente esterna, risiede nel fatto che attualmente la stragrande maggioranza di individui fa uso di questo genere di prodotti per svolgere la maggior parte del proprio lavoro o per curare i propri interessi personali. Infatti l'enorme diffusione degli strumenti informatici unita con la problematica menzionata ha determinato il prodursi di un nuovo scenario in cui il fulcro è costituito dalle informazioni che devono essere tutelate e protette a prescindere dal fatto che esse risiedano su un grande server web di carattere pubblico o sul personal computer di un individuo qualsiasi. Fatta questa importante precisazione vediamo allora quali sono in concreto i rischi di cui stiamo parlando e di conseguenza gli strumenti e le tecniche di difesa più opportuni. 24. Microsoft ActiveX Cosa sono gli ActiveX e quali problemi di sicurezza possono causare ActiveX è il nome della tecnologia sviluppata da Microsoft che rappresenta la naturale evoluzione della precedente OLE (Object Linking & Embedding) e risponde all'esigenza, molto avvertita, di disporre di un set di funzionalità esteso in grado di favorire la rapida realizzazione e distribuzione di documenti di carattere composito. L'utilizzo di questa tecnologia rende possibile l'implementazione di particolari "controlli" in possesso di funzionalità specifiche i quali, una volta realizzati, possono essere letteralmente incorporati all'interno di altre applicazioni od ambienti differenti al fine di permettere lo sfruttamento delle loro caratteristiche tipiche. Naturalmente, trattandosi di una tecnologia ormai consolidata, l'elenco delle applicazioni che garantiscono il completo supporto agli ActiveX è veramente ampio ed in questa lista non poteva di certo mancare il browser Microsoft Internet Explorer, fatto quest'ultimo che ha suscitato non poche perplessità a causa degli inevitabili problemi che l'uso degli ActiveX pone in termini di sicurezza. In effetti l'impiego di questa tecnologia in un ottica distribuita come quella di Internet comporta, di fatto, lo scaricamento e l'esecuzione sul lato client di porzioni di codice senza che ciò si accompagni all'esistenza di meccanismi di sicurezza simili a quelli previsti, ad esempio, per le applet Java, con tutte le conseguenze negative che ne derivano nell'ipotesi in cui il codice sia stato volutamente confezionato in modo da svolgere operazioni dannose sul computer dell'utente. Per comprendere al meglio le implicazioni di questo meccanismo ricordiamo che quando il browser si imbatte in una pagina Web contenente un controllo ActiveX, incorporato mediante l'uso dei tag <object></object> , per prima cosa verifica attraverso l'esame del registro di configurazione se il controllo è disponibile sul sistema locale: se esso risulta presente allora la pagina viene visualizzata con il contestuale caricamento del controllo nello spazio della memoria del browser e la successiva esecuzione del codice mentre, nell'ipotesi contraria, l'ActiveX viene scaricato ed installato seguendo le istruzioni presenti all'interno dello stesso tag <object>. La debolezza intrinseca insita in questo automatismo ha spinto Microsoft ad introdurre dei correttivi individuati nell'adozione della tecnologia Authenticode che, in breve, permette agli sviluppatori di firmare i controlli attraverso l'uso della crittografia e la successiva validazione da parte di Internet Explorer e di un entità terza (in genere Verisign Corporation). Attraverso questo ulteriore meccanismo gli utenti dovrebbero essere "assicurati" circa la genuinità della fonte da cui proviene un determinato controllo ActiveX ed impiegarlo senza remore ma, purtroppo, esiste anche il rovescio della medaglia, una scappatoia che consente di aggirare facilmente la procedura di controllo della firma da parte di Authenticode e consiste nell'abilitazione del flag cd. "safe for scripting". In presenza di questo flag nessun tipo di avvertimento viene fornito quando l'ActiveX è eseguito nel contesto del browser web con la conseguente esposizione del sistema dell'utente a rischi di intuibile portata, considerevolmente aumentati dalla presenza di due fattori critici: − l'estrema facilità con la quale risulta possibile impostare il flag, considerato che, a tal fine, è sufficiente che il controllo implementi l'interfaccia IObjectSafety oppure che esso sia contrassegnato come "sicuro" nel registro di configurazione di Windows tramite l'aggiunta alle "Implemented Categories" della chiave 7DD95801-9882-11CF9FA9-00AA006C42C4; − la circostanza data dal fatto che in alcuni casi i componenti sono in grado di eseguire operazioni "privilegiate" sul sistema locale come la lettura e la scrittura sul disco; Per ulteriori informazioni rivolgersi a [email protected] Il seguente tutorial è stato scaricato dal sito www.html.it in data 25/09/02 Naturalmente non sono mancate valide dimostrazioni della vulnerabilità insita nel trattamento dei controlli cosiddetti "safe" da parte di Internet Explorer e tra queste vanno citate principalmente quella di Georgi Guninski (http://www.guninski.com), relativa ai controlli Scriptlet.Typelib e Eyedog.ocx forniti con Internet Explorer 4 e versioni precedenti, ed un altra relativa invece al ben più recente controllo OUA installato di default insieme con la suite Microsoft Office 2000 (http://www.l0pht.com/advisories/ouahack/index.html). Per entrambe le vulnerabilità la Microsoft ha rilasciato delle patch risolutive disponibili agli indirizzi http://www.microsoft.com/technet/security/bullettin/ms99-032.asp http://officeupdate.microsoft.com/2000/downloadDetails/Uactlsec.htm ma, purtroppo, va ricordato che questi rilasci risolvono soltanto i problemi specifici riscontrati con questi controlli e non pongono riparo ai possibili abusi che possono presentarsi per tutti gli altri ActiveX. 25. Java Le vulnerabilità delle applicazioni scritte in Java Java è un linguaggio progettato da Sun Microsystem agli inizi degli anni 90 con l'intento di risolvere alcuni dei problemi insiti nella programmazione tradizionale. In effetti, grazie anche ad un buon disegno progettuale, questo linguaggio può dirsi effettivamente in grado di impedire quei classici errori del programmatore che possono condurre a ben più seri problemi di sicurezza, come ad esempio i buffer overflow, e ciò perché si tratta di un linguaggio che non permette di accedere né tantomeno manipolare gli indirizzi di memoria attraverso i puntatori. Inoltre questa non è l'unica caratteristica di sicurezza poiché Java è un linguaggio fortemente tipizzato e la sua rigidità in fatto di tipi è rafforzata sia in fase di compilazione sia in fase di esecuzione del codice attraverso la Java Virtual Machine ed un verificatore di bytecode che ha il compito di proteggere le aree di memoria alle quali il programma accede. La stessa Java Virtual Machine si caratterizza per la presenza di un Security Manager che impone un controllo sulla legittimità dell'accesso alle risorse di sistema sulla base di criteri di protezione che possono essere definiti e modellati dall'utente in base alle sue esigenze reali. L'insieme di tutte queste peculiarità ha fatto sì che, nel corso di quest'ultimo decennio, Java si dimostrasse un linguaggio sicuro almeno dal punto di vista formale. Ciò che invece ha causato i maggiori problemi in termini di sicurezza sono state alcune implementazioni della Java Virtual Machine, forse non completamente aderenti alle specifiche del linguaggio, fornite da alcune note case produttrici di software per Internet. In particolare nel corso del 1999 è stato scoperto un bug nella implementazione della JVM di Netscape Communicator che impediva alla Java Virtual Machine di controllare tutto il codice caricato con la conseguente possibilità per un eventuale aggressore di eseguire codice Java in violazione dei criteri di protezione fissati. Lo stesso tipo di difetto nella implementazione della sandbox della JVM ha afflitto anche il browser Microsoft Internet Explorer. Nel corso invece del 2000 ulteriori difetti sono stati riscontrati nelle implementazioni Java di Netscape Communicator, nelle versioni dalla 4.0 alla 4.74 per le piattaforme Windows, Macintosh e Unix. Questi difetti riguardano alcune classi Java, tra cui java.net.Socket, netscape.net.URLConnection e netscape.net.URLInputStream, che esponevano metodi che, o non richiamavano esplicitamente il metodo check del SecurityManager per verificare se un applet fosse in possesso delle autorizzazioni necessarie, oppure ignoravano l'eccezione risultante nel caso in cui la verifica fallisse. Peraltro un proof-of-concept di questi bug è stato prodotto e denominato "BrownOrifice" ed è disponibile all'indirizzo http://www.brumleve.com/BrownOrifice/ 26. Il codice nascosto nei tag html L'utilizzo di script "nocivi" in normali pagine HTML Un utente Internet può inconsciamente eseguire script maligni quando naviga tra collegamenti ipertestuali di cui non conosce l'origine presenti all'interno di pagine web, di messaggi di posta elettronica oppure di newsgroup. Può sembrare una esagerazione ma in realtà si tratta di una forma di attacco particolarmente subdola poiché usando una tecnica chiamata "cross-site scripting" un aggressore può, in alcune circostanze, riuscire ad incorporare all'interno di pagine web generate dinamicamente (come ad esempio quelle prodotte da un qualsiasi motore di ricerca) dei collegamenti ipertestuali contenenti script maligni opportunamente nascosti all'interno dei comuni tag html. Quando l'ignaro utente clicca sul collegamento esso finisce per inviare, oltre alla sua richiesta, anche il codice incorporato: a questo punto se il server web non si preoccupa di validare l'input ricevuto oppure non adotta alcun meccanismo per assicurare che la pagina generata sia stata propriamente codificata esso restituirà una pagina html contenente il codice incorporato che verrà automaticamente eseguito dal client esponendo quest'ultimo a pericolose falle di sicurezza che possono comportare: − l'accesso completo a qualsiasi informazione, comprese quelle di carattere confidenziale, fornite al server web; − l'invio contestuale di informazioni confidenziali anche ad altre pagine o siti web; − l'alterazione dell'apparenza o del normale funzionamento delle pagine web; − la rivelazione di dati usati da particolari meccanismi di autenticazione dal momento che l'esecuzione dello script può precedere l'instaurazione di una connessione protetta; − l'avvelenamento dei cookies in modo da rendere l'attacco di tipo persistente: in particolar modo se il sito web vulnerabile usa un campo del cookie per generare dinamicamente le proprie pagine, la modifica del cookie stesso può Per ulteriori informazioni rivolgersi a [email protected] Il seguente tutorial è stato scaricato dal sito www.html.it in data 25/09/02 far sì che tutti i futuri accessi al medesimo sito, persino se effettuati sulla base di collegamenti ipertestuali "puliti", siano compromessi; − l'accesso non autorizzato da parte dell'aggressore ai dati di un server web vulnerabile posto all'interno della stessa intranet in cui si trova il client tramite la costruzione ad hoc di URL. Dunque questa tipologia di attacco deriva il suo caratteristico nome dalla circostanza che una sorgente inietta del codice nocivo all'interno delle pagine web generate da una fonte differente ma, comunque, il fulcro di questa particolare tecnica è costituito da una violazione della fiducia derivante dal fatto che lo script "iniettato" viene eseguito in un contesto di apparente legittimità in quanto sembra provenire dal sito con il quale l'utente ha instaurato una connessione ed al quale egli si dimostra particolarmente interessato. 27. Vulnerabilità dei cookies Alcuni possibili utilizzi scorretti dei cookies Sicuramente uno dei meccanismi più delicati insiti nella navigazione in rete è rappresentato dai cd. cookies attraverso i quali i vari siti web riescono non soltanto a personalizzare l'esperienza di navigazione dell'utente ma soprattutto a riconoscere quando egli torna a far visita alle pagine del sito. Questi cookies, il cui funzionamento è descritto nella RFC 2109, possono essere impostati per sessione ed in questo caso rimangono nella memoria di sistema fino alla chiusura del browser oppure, caso assai più frequente, possono avere una determinata scadenza o essere addirittura permanenti ed allora essi vengono memorizzati in una apposita cartella del disco fisso locale sotto forma di file di testo in modo da poter essere successivamente recuperati. Peraltro proprio i cookie di quest'ultimo tipo, soprattutto se utilizzati per finalità di autenticazione, sono quelli che presentano le maggiori vulnerabilità poiché, essendo persistenti, un aggressore potrebbe riuscire ad acquisirne una copia ed assumere successivamente l'identità on-line di un altro individuo. In effetti è stato scoperto che attraverso un semplice clic su un URL costruito ad hoc gli utenti di Internet Explorer diventano potenzialmente vulnerabili alla rivelazione dei cookies presenti sulla loro macchina (un proof-of-concept di questa vulnerabilità è stato pubblicato all'indirizzo http://www.peacefire.org/security/iecookies/ 28. Vulnerabilità derivanti dall'uso della posta elettronica I molti attacchi derivanti dall'uso scorretto della posta elettronica Molte sono le vulnerabilità che possono implicitamente derivare dall'uso della posta elettronica e ciò per il semplice fatto che quest'ultima rappresenta senza dubbio il mezzo più efficace e veloce per lo scambio delle informazioni oggi esistente. La prima categoria di rischi che affrontiamo è quella legata alla possibilità di una contraffazione delle intestazioni dei messaggi di posta elettronica (cd. "email spoofing") in modo tale che essi sembrano provenire da una sorgente mentre, in realtà, sono originati da una fonte completamente diversa. Questa forma di attacco viene in genere utilizzata per spingere l'utente a rivelare informazioni sensibili che lo riguardano attraverso un approfittamento dello stato di fiducia che egli ripone nel messaggio il quale sembra provenire da una fonte legittima (es. l'amministratore di sistema del proprio Internet Service Provider che chiede di modificare la password di accesso alla rete in un determinato modo). Una seconda categoria di vulnerabilità è quella che comporta l'esecuzione di codice arbitrario attraverso i messaggi di posta: in questi casi la pericolosità maggiore è insita nel fatto che il codice è normalmente nascosto all'interno di comuni tag HTML che ormai la maggior parte dei moderni client di posta elettronica sono in grado di interpretare. Fatta questa premessa va ricordato che gli stessi problemi messi in evidenza con riferimento ai controlli ActiveX muniti del flag cd. "safe for scripting" ed incorporati all'interno della pagine web si ripropongono integralmente anche per quanto riguarda la posta elettronica. Anzi una vulnerabilità, a detta di molti, ancora più infida, poiché è in grado di aggirare qualunque meccanismo di protezione applicato agli ActiveX, è quella scoperta da Georgi Guninski ed è legata alla possibilità di "eseguire" documenti di Microsoft Office attraverso la tecnica di incapsulamento dei controlli ActiveX che fa uso dei ben noti tag <object></object>. In pratica il problema risiede in una carenza nel meccanismo di verifica che il sistema operativo Windows compie quando, ad esempio, un tipico file di database con estensione .mdb viene caricato dal browser o dal client di posta attraverso i tag citati: non appena il client ha terminato di scaricare il file esso invoca immediatamente l'applicativo Access per aprirlo e tutto questo accade prima che l'utente abbia ricevuto una notifica sulla pericolosità della operazione con la conseguenza che, se il file contiene qualche macro VBA nociva, essa viene eseguita in modo del tutto automatico. Infine la terza ed ultima categoria di vulnerabilità che affrontiamo è quella concernente gli attacchi tramite gli allegati di posta elettronica. In questi casi il rischio è quello della esecuzione di codice infido che può nascondere al suo interno virus, worm e cavalli di troia. Peraltro le tecniche che si possono adottare al riguardo sono molto varie e vanno dalla persuasione, diretta a convincere l'utente ad aprire o salvare il file allegato, fino all'impiego di tecniche più sofisticate che producono come risultato l'esecuzione nascosta del file oppure il suo salvataggio sul disco locale e la successiva esecuzione senza nessun intervento o consapevolezza da parte dell'utente stesso. In particolare una delle forme di attacco più insidiosa è quella che prevede l'impiego dei file cd. scrap aventi una estensione del tipo .shs o .shb. Questi file, la cui estensione viene nascosta per default in base all'impostazione della chiave di registro HKEY_CLASSES_ROOT\ShellScrap\NeverShowExt, sono dei wrapper, cioè una sorta di contenitori per altri oggetti incorporati che possono essere non soltanto documenti di Office ma anche altri tipi di file. Quando un file shs, la cui Per ulteriori informazioni rivolgersi a [email protected] Il seguente tutorial è stato scaricato dal sito www.html.it in data 25/09/02 icona assomiglia molto a quella dei comuni file di testo, viene eseguito automaticamente viene anche eseguito l'oggetto incorporato. Inoltre, tramite l'Object Packager di Microsoft, è addirittura possibile associare dei comandi all''oggetto incorporato con tutte le conseguenze che ciò può comportare. 29. Strumenti e tecniche di difesa I principali strumenti di difesa e le precauzioni da adottare La miglior difesa contro i problemi di sicurezza appena esposti è ricorrere ad un corretta configurazione delle aree di protezione di Microsoft Internet Explorer. Questo meccanismo consente di assegnare livelli di fiducia differenti al codice scaricato da quattro possibili sorgenti rappresentate da internet, intranet, siti attendibili e siti con restrizioni. Naturalmente l'area più importante di cui impostare i livelli di sicurezza è la prima ed, a tal fine, è sufficiente cliccare due volte sull'icona Opzioni Internet all'interno del Pannello di Controllo di Windows, portarsi sulla scheda Sicurezza, selezionare l'area Internet, scegliere come livello predefinito Alta e usare il pulsante Personalizza livello per meglio ritoccare le impostazioni generali in modo da disattivare completamente i controlli ed i plugin ActiveX; inoltre, anche se fastidiosa, si consiglia di impostare una richiesta di conferma esplicita per l'esecuzione degli script. Per non rendere inutile la navigazione su quei siti veramente affidabili che fanno uso delle tecnologia ActiveX è invece possibile aggiungere l'indirizzo di questi ultimi all'area siti attendibili ed impostare la protezione per quest'area ad un livello inferiore (ma non troppo basso). Per far fronte al difetto della Java Virtual Machine di Netscape Communicator nonchè alla vulnerabilità nota come Brown Orifice è possibile aggiornare il browser alla più recente versione o disabilitare completamente le funzioni Java scegliendo dal menu Edit la voce Preferences, selezionando Advanced e quindi deselezionando la casella di controllo Enable Java. Invece per risolvere i difetti della sandbox Java di Microsoft occorre scaricare l'apposita patch Aggiornamento della Virtual Machine Sandbox disponibile all'indirizzo http://www.microsoft.com/windows/ie/security/default.asp. Prima però è opportuno verificare di essere effettivamente in possesso di una versione difettosa lanciando dal prompt dei comandi l'utility jview e controllando il numero della build restituito corrispondente agli ultimi quattro numeri della versione (deve trattarsi di un numero compreso tra 2000 e 2438 oppure tra 3000 e 3167). Per il problema della sottrazione dei cookies tramite URL è disponibile una patch all'indirizzo http://www.microsoft.com/technet/security/bullettin/ms00-033.asp. Tuttavia, a prescindere da questa vulnerabilità specifica di Internet Explorer, è sempre opportuno tenere sotto controllo il contenuto dei cookies attraverso uno dei tanti software disponibili in rete. Ancora più utile, anche per finalità più generali di controllo del traffico, potrebbe essere dotarsi di un apposito sniffer cioè di un software che cattura i pacchetti inviati e ricevuti. A tale proposito forse uno dei migliori prodotti è Spynet/PeepNet, disponibile negli archivi di PacketStorm all'indirizzo http://packetstormsecurity.com che, oltre ad essere gratuito, incorpora al suo interno delle utilissime funzionalità che permettono la ricostruzione in forma leggibile dei dati relativi ad una sessione di navigazione sul web. Contro lo sfruttamento, via posta elettronica, degli exploit relativi agli ActiveX Scriptlet/Eyedog è necessaria l'applicazione della patch, già precedentemente menzionata, disponibile all'indirizzo http://www.microsoft.com/technet/security/bullettin/ms99-032.asp. Tuttavia, anche nel caso della posta elettronica, per evitare molte delle vulnerabilità legate alla gestione dei contenuti interattivi occorre impostare l'area di sicurezza predefinita di Outlook ed Outlook Express sul livello "Area siti con restrizioni" scegliendo la voce Opzioni dal menù Strumenti e successivamente cliccando sulla scheda Sicurezza. Caldamente consigliata è inoltre l'applicazione della patch di sicurezza disponibile all'indirizzo http://officeupdate.microsoft.com/2000/downloadDetails/Out2ksec.html che rende più difficoltosa (ma non impossibile) per gli utenti l'esecuzione dei file eventualmente allegati ai messaggi di posta elettronica. Analogamente per la vulnerabilità relativa all'esecuzione di documenti Office tramite ActiveX esistono due indirizzi utili cui fare riferimento: http://www.microsoft.com/technet/security/bullettin/MS00-049.asp http://www.microsoft.com/windows/ie/download/critical/patch11.htm Infine per il problema degli attacchi attraverso i file scrap possono essere adottati una serie di utili accorgimenti illustrati all'indirizzo: http://www.pc-help.org/security/scrap.htm Per ulteriori informazioni rivolgersi a [email protected]