L'ultimo passo nel processo di hardening del sistema consiste nell'accertare
la sua conformità a quei criteri di sicurezza che hanno rappresentato le linee
guida di tutte le precedenti fasi di configurazione.
In questa sezione ci
soffermeremo sugli aspetti più basilari concernenti quella particolare attività
definita come "penetration testing" che, come lascia intendere il nome, è
diretta a valutare la reale possibilità di portare a termine con successo un
attacco nei confronti di un sistema informatico attraverso lo sfruttamento dei
suoi punti deboli.
Per la verità la serie di test che andremo a definire si
discosta da un vero e proprio penetration testing per il semplice fatto che una
illustrazione delle tecniche di penetrazione esula dallo scopo di questa guida
ma, per il resto, assume lo stesso significato ed importanza del primo.
In
effetti l'obiettivo principale è uno soltanto: tentare di acquisire, attraverso
l'utilizzo di strumenti software appropriati, tutte quelle informazioni utili
non soltanto ad identificare gli eventuali punti del sistema rimasti privi di un
adeguata protezione ma anche particolari aspetti della configurazione del
sistema stesso e delle sue componenti primarie che richiedono una attenzione
particolare.
Individuazione delle aree di intervento
Per semplicità di trattazione le aree oggetto di test vengono individuate con
riferimento a quei soli aspetti concernenti la sicurezza di un host e non
coinvolgono pertanto altri aspetti pur presenti in un test di penetrazione
completo (ad es. l'enumerazione dei punti di presenza su Internet, delle risorse
di rete, la sicurezza della rete e dei dispositivi di cui è composta,ecc..).
Sostanzialmente queste aree sono le seguenti:
- servizi di rete;
- sistema operativo;
- applicazioni;
Servizi di rete
L'attività di enumerazione dei servizi di rete, detta anche port scanning, è
diretta ad individuare il numero ed il tipo dei servizi TCP attivi sul
server permettendo quindi di valutare la necessità del loro utilizzo effettivo
oppure, viceversa, l'opportunità di disabilitarli.
Il numero degli strumenti
di port scanning oggi disponibile in rete è davvero impressionante ma un posto
d'onore va senza dubbio riconosciuto a Nmap (http://www.insecure.org/nmap) originariamente sviluppato da
Fyodor per le piattaforme Unix e successivamente portato anche in
Windows.
Nmap (Figura 1) è una applicazione a linea di comando molto
potente che consente di effettuare scansioni TCP/UDP di uno o più host mettendo
a disposizione una serie di caratteristiche avanzate tra le quali spiccano:
- varie modalità di scansione cd. "stealth" o anomale;
- funzionalità di riconoscimento del sistema operativo attraverso l'esame
delle caratteristiche dei pacchetti ricevuti (o.s fingerprinting); - funzionalità di analisi di predizione dell' Initial Sequence Number;
L'aiuto che può fornire uno strumento simile è veramente prezioso se si
considera che attraverso di esso risulta possibile non soltanto ricostruire la
lista dei servizi attivi ma anche accertare l'adeguatezza della configurazione
di tutti quei dispositivi posti a protezione del server, come ad esempio i
firewall.
In particolare, per quanto riguarda l'oggetto di questa guida, si
può valutare la correttezza degli eventuali filtri IpSec di cui si è parlato
nella sezione dedicata alla impostazione dei filtri sulle connessioni oppure la
riconoscibilità dei vari tentativi di scansione attraverso Snort di cui si è
parlato nella sezione dedicata ai sistemi per la scoperta delle
intrusioni.
Sistema operativo
Le verifiche più importanti da compiere in questa area interessano la
possibilità di ottenere enumerazioni tramite le cd. sessioni nulle NetBios, il
controllo dei privilegi sui vari oggetti di sistema (filesystem, registro di
configurazione,servizi di sistema, ecc...) nonchè i privilegi assegnati agli
utenti e la robustezza delle password.
Per quanto riguarda la prima attività
va ricordato che la disabilitazione dei servizi NETBIOS sulla interfaccia di
rete pubblica del server, di cui si è parlato nella sezione relativa alla
installazione del sistema operativo, è diretta ad impedire il recupero di
preziose informazioni attraverso l'uso delle sessioni nulle.
Uno degli
strumenti più utili che è possibile utilizzare per questo genere di test è
Enum (Figura 2) sviluppato dal gruppo RAZOR (http://razor.bindview.com).
Per la convalida dei privilegi sui vari oggetti di sistema è possibile invece
ricorrere sia ad utility comprese nel sistema operativo e/o nel Resource Kit di
Windows 2000 sia ad applicazioni sviluppate da terze parti, ed in
particolare:
- cacls.exe: è un utility a linea di comando fornita dal sistema che
consente di visualizzare e modificare le access control list sul filesystem; - regdacl.exe: è una applicazione freeware (http://www.heysoft.de) che permette di visualizzare le access
control list del registro di configurazione di windows; - showaccs.exe: è una applicazione del Windows 2000 Resource Kit che
rende possibile esaminare le access control list non soltanto con riferimento al
filesystem ma anche al registro di configurazione nonchè alle condivisioni; - showpriv.exe: è una applicazione del Windows 2000 Resource Kit che,
dato un determinato privilegio (ad es. SeBackupPrivilege) fornisce una lista
degli utenti e dei gruppi che ne risultano assegnatari; - subinacl.exe: è una applicazione del Windows 2000 Resource Kit che
permette di gestire da linea di comando le impostazioni di sicurezza di svariati
oggetti i quali i servizi di sistema;
Per valutare invece la robustezza delle password è possibile utilizzare il
software L0phtCrack scaricabile in versione demo dall'indirizzo http://www.atstake.com.
L'utilità principale di questa
applicazione che va abbinata ad un buon dizionario di vocaboli risiede nella
possibilità di ottenere un riscontro pratico del tempo necessario a decodificare
gli hash delle password degli utenti (chiaramente maggiore è il tempo impiegato
dal processo di decodifica di una o più password più rigidi e quindi sicuri
possono dirsi i criteri in base ai quale esse sono state prescelte).
Applicazioni
Nessun test che si rispetti può prescindere dalla valutazione della sicurezza
delle applicazioni ed, in particolare, di quelle che possono esporre il sistema
stesso ad una serie di probabili attacchi.
In questa area rientra senza alcun
dubbio il software che fornisce le funzionalità del servizio http e cioè nel
nostro caso Internet Information Service 5.
Purtroppo la portata di questo
test è tale che richiederebbe una trattazione a sè stante ma un ottimo punto di
partenza per eseguire una serie di verifiche è rappresentato dall'eccellente
documento intitolato "Assessing IIS Configuration Remotely" scritto da
David Litchfield e liberamente disponibile all'indirizzo http://www.ngssoftware.com.