I meccanismi diretti a rendere possibile l'identificazione dei cambiamenti
che intervengono a livello di filesystem possono a tutti gli effetti ritenersi
parte integrante di qualsiasi strategia di sicurezza che si
rispetti.
Questo per una ragione molto semplice: infatti, in caso di
compromissione di un host, una delle prime attività poste in essere è quella che
consiste nell'installare versioni "troianizzate" di alcuni importanti eseguibili
di sistema o modificare importanti file di configurazione oppure installare
altri programmi che creano nel sistema delle backdoor.
In questo capitolo
analizzeremo il funzionamento di uno dei più conosciuti strumenti di verifica
dell'integrità del filesystem vale a dire Tripwire ed, in particolare, la
versione 2.2.1 per Windows NT/2000.
Tripwire è stato originariamente
sviluppato per la piattaforma Unix da Gene Kim ed Eugene Spafford agli inizi
degli anni 90 ma successivamente è stato portato anche su altre
piattaforme. Il software, di carattere commerciale e non open-source, può
essere acquistato contattando direttamente Tripwire Inc. (http://www.tripwire.com oppure http://www.tripwiresecurity.com).
Tripwire
rientra a pieno titolo nella categoria degli HIDS (Host Based Intrusion
Detection System) poichè di norma viene installato sull'host a protezione
del quale è posto; tuttavia esso focalizza il suo funzionamento sul filesystem e
non sul lato delle connessioni di rete e dello strato
TCP/IP.
L'applicazione acquisisce inizialmente una fotografia (snapshot)
dei file prescelti per il monitoraggio e li cataloga raccogliendo per ciascuno
di essi una impronta digitale calcolata tramite degli algoritmi di hash cd.
one-way in modo da essere in grado di identificare in qualsiasi momento i
cambiamenti intervenuti in termini di aggiunta e/o cancellazione di file oppure
di modifica del loro contenuto.
Qualora questi mutamenti siano avvenuti
al di fuori di particolari condizioni essi vengono notificati in vario modo
(report, email) all'amministratore che può confermarli, aggiornando
contestualmente il database interno delle signatures, oppure accorgersi che si
tratta di modifiche non autorizzate e cercare quindi di ripristinare la
situazione precedente.
Installazione di Tripwire
L'installazione del software non presenta particolari problematiche anche
perchè esso viene distribuito sotto forma di archivio dotato di una propria
procedura di setup.
Durante questa fase vengono poste all'utente alcune
domande concernenti aspetti specifici della configurazione che, peraltro,
possono essere modificati in qualsiasi momento e , soprattutto, viene richiesta
l'introduzione di una frase ("passphrase") che verrà utilizzata dal software per
firmare digitalmente i file utilizzati dall'applicativo.
Funzionamento
L'architettura di tripwire basa il suo intero funzionamento su un insieme di
file ciascuno dei quali assolve ad un compito specifico:
- file delle policies: contiene una serie di regole che specificano gli
elementi del filesystem e del registro di Windows da monitorare, i dati che
devono essere raccolti per ciascuno di essi nonchè, eventualmente, l'indirizzo
di posta elettronica al quale deve essere inviato un messaggio nel caso in cui
sia riscontrata una violazione; - file del database: rappresentano nel loro insieme la fotografia
sistema che, ovviamente, deve essere raccolta in momento in cui vi è assoluta
certezza sulla integrità di quest'ultimo; ogni volta che viene eseguita una
verifica di integrità questa fotografia viene messa a confronto con lo stato
"attuale" degli oggetti in modo da evidenziare tutte le possibili differenze; - file report: raccolgono le informazioni derivanti da una verifica
dell'integrità del filesystem visualizzando le anomalie riscontrate; - file di configurazione: raccoglie le informazioni specifiche per il
funzionamento di tripwire e viene inizialmente scritto dalla procedura di setup; - file chiave (key): raccolgono le chiavi pubbliche e private usate per
crittografare i file utilizzati dall'applicativo in modo da impedire che questi
possano subire modifiche non desiderate ed, a loro volta, sono criptati facendo
uso di una passphrase segreta;
Prima di cominciare è assolutamente necessario modificare il file delle
policies ed a questo proposito si può prendere spunto dal file twpol.txt,
installato insieme con il software, che contiene un insieme di regole abbastanza
generico.
Questo file dunque deve essere modificato con qualsiasi editor
di testo in modo da raccogliere un insieme di regole piuttosto specifico ed
adatto alle reali esigenze del server da proteggere (consultare l'esauriente
manuale in linea per una spiegazione del significato delle varie proprietà ed
attributi delle regole). Il risultato di questa modifica può essere
salvato in un altro file di testo (magari con un nome significativo) e deve
essere firmato digitalmente ed installato come nuovo file di policies prima di
inizializzare il database interno. A tal fine aprendo una finestra di prompt
occorre digitare il seguente comando: twadmin --create-polfile <nome del file di testo
delle policies>
Il processo avviato provvederà ad installare il nuovo file nella cartella
indicata come destinataria nel file di configurazione. Dopo questa prima fase è
possibile inizializzare il database interno digitando il comando:tripwire --init-verbose
In questo modo verrà creato il database delle signatures all'interno della
cartella indicata dalla variabile DBFILE del file di configurazione.
Verifica dell'integrità ed aggiornamento del database
Data la sua importanza è opportuno che la verifica dell'integrità del
filesystem sia schedulata come attività periodica. Il periodo temporale che deve
intercorre tra le successive verifiche dipende naturalmente dalle reali esigenze
ma, in linea di principio, si può dire che una verifica giornaliera è alquanto
opportuna e dovrebbe porre al riparo da spiacevoli sorprese.
Il processo può
essere avviato lanciando da una finestra di prompt (o attraverso un opportuno
file batch) il seguente comando: tripwire --check
Con questa istruzione il software avvia la verifica della integrità sulla
base delle policies precedentemente create, stampa un elenco delle eventuali
anomalie a video e salva in formato binario una copia del report nella cartella
alla quale punta la variabile REPORTFILE del file di configurazione.
In ogni
caso è anche possibile eseguire una verifica per una singola regola oppure per
un determinato livello di severità delle anomalie od anche per una specifica
sezione del file delle policies (consultare a tale proposito il manuale
utente).
Qualora, a seguito della verifica, vengano riscontrate delle
anomalie è necessario aggiornare anche il database interno in modo che esso
riproduca sempre la situazione attuale del sistema e per evitare che modifiche
"normali" continuino ad essere segnalate in futuro come situazioni
critiche: tripwire --update --twrfile <nome del file report creato>
L'aggiornamento del database può anche essere effettuato subito dopo la
verifica quando quest'ultima viene lanciata con il comando: tripwire --check --interactive
Una attività di sincronizzazione deve inoltre essere eseguita in caso di
modifica del contenuto del file delle policies quando:
- è necessario aggiungere nuovi oggetti di sistema da monitorare;
- occorre modificare le regole poichè queste producono un numero eccessivo di
falsi positivi; - si vuole modificare il destinatario dei messaggi di posta elettronica oppure
il modo in cui le regole sono raggruppate;
In tutte queste ipotesi i passi da seguire sono i seguenti:
- creare una versione ascii del file delle policies mediante il comando
twadmin --print-polfile > <nome del file di testo>; - editare il file di testo creato in modo da apportarvi i cambiamenti
desiderati; - istruire il software in modo da accogliere le modifiche apportate tramite il
comando tripwire --update-policy <nome del file di testo>;
Per impostazione predefinita il processo di aggiornamento viene eseguito con
un livello di sicurezza elevato nel senso che esso avvia una contestuale
verifica di integrità secondo le nuove regole e visualizza ogni eventuale
violazione delle regole del vecchio file che sono anche coperte dalle nuove
regole.
Dal momento che in caso di riscontrate anomalie il database non viene
di fatto aggiornato occorre accertare che gli eventi segnalati siano in realtà
normali e, soltanto in quest'ultima ipotesi, procedere con l'aggiornamento
riavviando il processo in modalità a bassa sicurezza tramite il
comando: tripwire --update-policy --secure-mode low <nome del file di testo delle
policies>