Esplora E-book
Categorie
Esplora Audiolibri
Categorie
Esplora Riviste
Categorie
Esplora Documenti
Categorie
IRItaly: premessa
Pagina 1 di 334
Per quanto concerne le procedure di risposta ad incidenti informatici, vengono definite ed illustrate le
best practices per le analisi da effettuare sulle macchine vittime (conosciuta anche come Post Mortem
Analysis), in modo da poter rintracciare gli episodi di hacking, e comprendere le modalità dell’attacco.
Il tutto è finalizzato a dare una valida risposta all’intrusione, che deve costituire un companion alle
politiche di sicurezza che si presumono già esistenti all’interno dell’organizzazione. Tale risposta deve
essere intesa come la possibilità di effettuare un hardening dei sistemi più consapevole ed efficace, che
permetta di ridurre la possibilità di futuri attacchi. Non deve invece essere intesa come la generazione
di un contro-attacco verso il presunto attaccante.
Tutte le attività fin’ora descritte sono effettuate ponendo una particolare attenzione nella modalità di
individuazione, conservazione ed eventuale utilizzo in sede di contenzioso disciplinare o giudiziario
delle fonti di prova.
Il metodo di stesura del presente documento è di tipo incrementale. In alcuni casi potrebbe sembrare
al lettore di assistere ad una ripetizione di concetti all’interno del documento. In realtà essa è voluta e
finalizzata all’integrazione di un concetto già trattato con un “overhead” di ulteriori informazioni.
Disclaimer/Licenza
Il progetto IRItaly ha mera finalità informativa. Le informazioni ivi contenute non costituiscono alcun
vincolo per il lettore e vengono fornite come sono¸ cioè testate, per quanto nelle facoltà degli operatori,
con la massima attenzione. Il fruitore del presente documento e del relativo CD si assume tutte le
responsabilità relative al loro utilizzo; gli operatori del progetto declinano qualsiasi responsabilità
oggettiva e soggettiva su eventuali danni materiali e immateriali scaturenti dall'utilizzo del presente
documento. L’utilizzo del presente Documento e del CDRom presume l’accettazione incondizionata
del presente disclaimer.
Vi invitiamo a leggere la parte di LICENZA posta al termine di questo documento. IRItaly aderisce al
piano di licenza GNU.
IRItaly: generalità
Il filo conduttore del documento è l’insieme di azioni che dovrebbero essere intraprese in caso di
intrusione informatica, compresa la fase preparatoria. Esso è infatti costituito da differenti capitoli,
ognuno dei quali effettua un’analisi approfondita di tali momenti, ossia:
IR Start Phase la fase preparatoria di incident response,
Information Gathering (l’analisi delle informazioni disponibili che la caratterizzano),
Evidence Gathering (la raccolta e la conservazione delle informazioni ad essa associate - le
fonti di prova-),
Sanitize: l’eliminazione degli strumenti utilizzati per guadagnare e mantenere l’accesso illecito
alla macchina (rootkit),
Recovery il ripristino dei sistemi alle condizioni di normale operatività.
Vengono dunque fornite informazioni dettagliate riguardanti:
la gestione dei differenti file system,
le procedure di backup dei dati,
le operazioni necessarie per effettuare le immagini dei dischi fissi e di supporti removibili,
Pagina 2 di 334
la gestione di comunicazioni elettroniche sicure,
gli algoritmi di crittografia e le relative implementazioni,
gli strumenti di analisi, acquisizione e tutela dei file di log.
Il documento contiene, infine, una proposta per una modulistica uniforme, volta ad organizzare al
meglio le attività, agevole o l’interazione tra organizzazioni che analizzano l’incidente avvenuto, o tra
differenti target coinvolti nell’attacco. In particolare si presenta un Report per la gestione degli
incidenti informatici e la Chain of Custody, documento utile per tenere traccia di tutte le informazioni
riguardanti le fonti di prova.
Il CDRom può essere utilizzato per effettuare un primo riconoscimento della configurazione e dello
stato dei computer compromessi1.
Gli strumenti presenti offrono la possibilità di effettuare l’analisi dei dischi, generare una loro
immagine ed effettuare accertamenti sui log, in modo da poter compiere un’analisi di primo livello
dell’incidente avvenuto. Per maggiori informazioni sul contenuto del CDRom vi invitiamo a prendere
visione del Readme file ivi contenuto.
Sia che il fruitore del progetto abbia intenzione di utilizzare il CDRom allegato sia che voglia
approfondire e/o creare la sua libreria, è opportuno che prenda conoscenza delle procedure di
Validazione. Con questo termine si indicano tutti quei processi aventi valore legale e/o operativo,
finalizzati alla verifica delle funzionalità degli strumenti che vengono utilizzati in laboratorio e/o
valutati per un impiego generale. La validazione può essere effettuata internamente o data in
outsourcing. Nel primo caso sarà cura dell’utente individuare i parametri operativi. Tra i più importanti
segnaliamo: il corretto licensing di prodotto, eventuali riscontri di validazione durante procedimenti
penali e/ o civili effettuati a livello internazionale e/o nazionale2 , la certificazione del download dello
strumento effettuata da siti ufficiali del vendor e/o delle organizzazioni no profit la verifica (eventuale,
a dire il vero) della presenza o meno di vulnerabiltà tali da inficiare il processo di esame e/o di
acquisizione dei dati nella fase preliminare dell’investigazione e via dicendo. Le operazioni di
validazione dovrebbero essere effettuate sempre ogni qualvolta si decida di adottare un nuovo tool e
dovrebbero essere internamente documentate. In ordine all’opportunità di inserimento delle procedure
di validazione all’interno dei verbali e/o dei report esistono opinioni contrastanti. Ci sono operatori,
infatti, che predicano detto inserimento in ogni documentazione (report o affini) altri, invece, che
ritengono sufficiente la compilazione di un documento interno che venga richiamato ed utilizzato in
caso di necessità. Solitamente, comunque, le discussioni relative alla validazione degli strumenti non
sono legate ai tools in sé ma alla loro origine (licensing, originalità, integrità, download).
1
Il Cdrom sarà reso disponibile a partire dal 10 settembre 2003. Nel frattempo siete invitati a testare la parte di boot
disponibile nella zona download di www.iritaly.org.
2
Detti riscontri sono di solito ottenibili direttamente dal produttore, dai centri di discussione o dalle riviste
tecnico/scientifiche
Pagina 3 di 334
Acknowledgement
Questo progetto non sarebbe mai stato realizzato se lo spirito di abnegazione delle 12 persone che
trovate a fine pagina non avesse padroneggiato. Ci sono stati dei momenti in cui gli impegni lavorativi
ed universitari (a vario livello) hanno messo a dura prova il nostro tempo e la nostra vita privata. Per
questo ritengo opportuno ringraziare:
Pagina 4 di 334
Definizione delle procedure e delle politiche da attuare in
risposta ad un’intrusione
Indice
Pagina 5 di 334
1.3.3.2 Creazione dell’immagine dei dischi in ambiente Windows........................................ 68
1.3.4 Gestione del dump della ram ......................................................................................... 73
1.3.4.1 Dump della memoria fisica in ambiente Windows..................................................... 73
1.3.4.2 PMDUMP ................................................................................................................... 75
1.3.4.3 DD 3.16.2.................................................................................................................... 75
1.4 Verifiche di configurazione e disponibilità sui sistemi di test e le reti ................................... 76
1.4.1 Configurazione dei sistemi di test, dei possibili target dell’esame forense e di analisi.. 76
1.4.1.1 Considerazioni sull’hardware di una Forensic Workstation ....................................... 76
1.4.1.2 Considerazioni sul software di una Forensic Workstation.......................................... 77
1.4.1.3 Software originali e controllo di autenticità................................................................ 77
1.4.1.4 Cenni sul MD5 ............................................................................................................ 78
1.4.1.5 Antivirus ..................................................................................................................... 79
1.4.1.6 Security scanner .......................................................................................................... 79
1.4.1.7 Sniffer.......................................................................................................................... 79
1.4.1.8 Tool per la copia bit-a-bit del file system ................................................................... 79
1.4.1.8.1 DD........................................................................................................................... 80
1.4.1.8.2 Image MASSter Solo .............................................................................................. 80
1.4.2 Configurazione delle reti................................................................................................. 81
1.4.2.1 Omogeneità delle architetture ..................................................................................... 81
1.4.2.2 Password “robuste” ..................................................................................................... 81
1.4.2.3 SSH – Protocolli robusti per applicazioni di sicurezza............................................... 82
1.4.2.4 SSL e SHTTP – Comunicazioni crittate ..................................................................... 83
1.4.2.5 Antivirus ..................................................................................................................... 86
1.4.2.6 Firewall ....................................................................................................................... 86
1.4.2.7 Configurazione............................................................................................................ 86
1.4.2.8 Tecnologie per sistemi di firewall............................................................................... 87
1.4.2.9 Vulnerabilità e possibili contromisure ........................................................................ 88
1.4.2.10 Web Server (Microsoft IIS / Apache) ..................................................................... 88
1.4.2.11 Script CGI ............................................................................................................... 89
1.4.2.12 RPC (Remote Procedure Calls)............................................................................... 89
1.4.2.13 DataBase ................................................................................................................. 89
1.4.2.14 SNMP e configurazione di default.......................................................................... 90
1.4.2.15 BIND....................................................................................................................... 90
1.4.2.16 Meccanismi di autenticazione................................................................................. 90
1.4.2.17 Condivisione di file e informazioni via NetBios, NFS ........................................... 91
1.4.2.18 Internet Explorer, LAN Manager, Windows Scripting Host .................................. 91
1.4.2.19 SSH, FTP, LDP, Sendmail...................................................................................... 91
1.4.3 Algoritmi di hash ............................................................................................................ 92
1.4.3.1 MD5 (Message Digest Algorithm 5) .......................................................................... 92
1.4.3.2 SHA (Secure Hash Algorithm) ................................................................................... 92
1.4.3.3 MD5 library................................................................................................................. 92
1.4.3.4 Creazione di alcuni semplici file e utilizzo di MD5 per calcolare il checksum
crittografico basato sui loro contenuti......................................................................................... 93
1.4.3.5 Confronto col programma “sum”................................................................................ 94
1.4.3.6 Implementazioni.......................................................................................................... 95
1.4.3.7 md5deep ...................................................................................................................... 95
1.4.3.8 CRC32 vs MD5........................................................................................................... 96
1.4.4 Live system analysis ....................................................................................................... 99
Pagina 6 di 334
2. Information gathering sui sistemi potenzialmente compromessi.............................................. 101
2.1 Isolare i sistemi compromessi ............................................................................................... 101
2.1.1 Isolare i sistemi ............................................................................................................. 101
2.1.1.1 Generalità .................................................................................................................. 101
2.1.1.2 Precauzioni nello smontaggio del disco.................................................................... 103
2.1.2 Forensics e Linux .......................................................................................................... 103
2.1.2.1 Organizzazione dell’analisi....................................................................................... 104
2.1.2.2 Determinazione della struttura del disco................................................................... 105
2.1.2.3 Preparazione di un disco per l’immagine.................................................................. 105
2.1.2.4 Creazione dell’immagine di un disco compromesso ................................................ 106
2.1.2.5 Mount di un’immagine dopo il restore ..................................................................... 107
2.1.2.6 Mount di un’immagine utilizzando il loopback device ............................................ 107
2.1.2.7 Utilizzo dei moduli ................................................................................................... 107
2.1.2.8 File Hash ................................................................................................................... 108
2.1.2.9 L’analisi .................................................................................................................... 109
2.1.2.10 Effettuare la lista dei file....................................................................................... 109
2.1.2.11 Fare la lista dei file per tipo .................................................................................. 109
2.1.2.12 Visualizzare i file .................................................................................................. 110
2.1.2.13 Ricerca di spazio non allocato e slack space......................................................... 110
2.1.2.14 Gestire dischi di grandi dimensioni ...................................................................... 111
2.2 Correlation: cercare segnali di intrusione su altri sistemi ..................................................... 114
2.2.1 Sistemi che appartengono allo stesso range di indirizzi IP.......................................... 114
2.2.2 Sistemi che si trovano nello stesso segmento di rete .................................................... 114
2.2.3 Sistemi che sono nello stesso dominio “trusted” .......................................................... 114
2.2.4 Sistemi che hanno almeno un servizio di rete in comune ............................................. 115
2.2.5 Sistemi che hanno lo stesso sistema operativo.............................................................. 115
2.2.6 Sistemi che condividono file e informazioni ................................................................ 115
2.3 Log analysis sull’output dei firewall, router e network monitor.......................................... 116
2.3.1 Introduzione .................................................................................................................. 116
2.3.2 Timestamping................................................................................................................ 116
2.3.3 Event collection............................................................................................................. 117
2.3.4 Modifiche apportate ai software di sistema e ai file di configurazione ........................ 118
2.3.5 Modifiche ai dati ........................................................................................................... 118
2.3.6 Tool e dati lasciati dall’intruder nel sistema ................................................................. 119
2.3.7 Analisi dei log file......................................................................................................... 119
2.3.8 Ricerca della presenza di un network sniffer ................................................................ 121
2.3.9 Ricerca di altri sistemi compromessi all’interno della rete........................................... 121
2.3.10 Ricerca di sistemi implicati o compromessi in siti remoti ............................................ 121
2.3.11 Log parsing tool ............................................................................................................ 122
2.4 Green circle: identificazione dell’attacco ad un sistema..................................................... 124
2.4.1 Monitoraggio ed ispezione delle attività di rete alla ricerca di anomalie. ................... 126
2.4.1.1 Analisi e investigazione delle notifiche di meccanismi di alert dedicati alla rete (come
e-mail, voice-mail, o sms)......................................................................................................... 126
2.4.1.2 Analisi e investigazione dei report di errore di rete .................................................. 127
2.4.1.3 Analisi delle statistiche delle prestazioni della rete ed investigazione di anomalie.. 127
2.4.1.4 Identificazione del traffico di rete inatteso, insolito, o sospetto e le possibili
implicazioni............................................................................................................................... 127
Pagina 7 di 334
2.4.2 Monitorare ed ispezionare le attività di sistema alla ricerca di comportamenti sospetti
129
2.4.2.1 Analisi ed investigazione delle notifiche che provengono da meccanismi di altert
specifici per i sistemi (come e-mail, voice-mail o sms)............................................................ 130
2.4.2.2 Analisi ed investigazione dei rapporti di errore provenienti dal sistema.................. 130
2.4.2.3 Analisi delle statistiche delle prestazioni di sistema ed investigazione di eventuali
anomalie. 130
2.4.2.4 Monitoraggio continuo dell’attività dei processi (fin dove è possibile) ................... 131
2.4.2.5 Identificazione di qualsiasi comportamento dei processi che possa essere definito
inaspettato, non usuale o sospetto e le possibili implicazioni................................................... 131
2.4.2.6 Identificazione di qualsiasi comportamento degli utenti che sia inaspettato, insolito o
sospetto e le possibili implicazioni ........................................................................................... 132
2.4.2.7 Identificazione di altri comportamenti inaspettati, insoliti o sospetti e le loro possibili
implicazioni............................................................................................................................... 133
2.4.2.8 Esecuzione periodica del mapping della rete e degli strumenti di scanning per
comprendere cosa può essere portato alla conoscenza degli intrusi che utilizzano questi sistemi
134
2.4.2.9 Esecuzione periodica degli strumenti di scanning delle vulnerabilità su tutto il sistema
volte alla verifica della presenza di vulnerabilità note.............................................................. 134
2.4.3 Ispezione dei file e delle directory alla ricerca di modifiche inaspettate .................. 134
2.4.3.1 Stabilire priorità ed orari ........................................................................................... 135
2.4.3.2 Verifica dell'integrità delle directory e dei file secondo un programma prestabilito 135
2.4.3.3 Identificazione di qualsiasi modifica inattesa, insolita o sospetta effettuata ai file o
alle directory e le possibili implicazioni ................................................................................... 135
2.5 Analisi delle operazioni di un attacker durante una violazione ............................................ 137
2.5.1 Introduzione .................................................................................................................. 137
2.5.2 Attività 1: manomissione dei log file............................................................................ 138
2.5.2.1 I Log Analyzers......................................................................................................... 138
2.5.2.2 Come rendere sicura l’attività di logging.................................................................. 139
2.5.3 Attività 2: garantirsi accessi futuri ................................................................................ 139
2.5.3.1 Installazione di Rootkits............................................................................................ 139
2.5.3.2 Controllo file system................................................................................................. 140
2.5.3.3 File Integrity checkers............................................................................................... 143
2.5.4 Attività 3: installazione trojan e backdoors................................................................... 146
2.5.4.1 IDS: Intrusion Detection System .............................................................................. 146
3. Evidence Gathering................................................................................................................... 149
3.1 Raccolta delle informazioni utili relative ad un’intrusione................................................... 149
3.1.1 Perché è importante....................................................................................................... 149
3.1.2 Collezionare tutte le informazioni concernenti l'intrusione .......................................... 149
3.1.3 Analizzare tutte le informazioni a disposizione per caratterizzare un’intrusione......... 150
3.1.4 Esaminare i log generati da firewall, network monitor e router ................................... 152
3.1.5 Identificare gli attacchi portati per guadagnare l’accesso al sistema compromesso..... 153
3.1.6 Identificare le operazioni effettuate dall’intruso durante l’accesso al sistema ............. 153
3.1.7 Proteggere la chain of custody per ogni fonte di prova ................................................ 154
3.1.8 Contattare le forze dell’ordine ...................................................................................... 154
3.1.9 Considerazioni sulle politiche aziendali ....................................................................... 154
3.1.10 Tool utili per la ricerca dei segnali di un’intrusione ..................................................... 155
3.2 Raccolta delle fonti di prova ................................................................................................. 160
Pagina 8 di 334
3.2.1 Sviluppo di metodologie ............................................................................................... 160
3.2.1.1 Preparazione.............................................................................................................. 161
3.2.1.2 Trasportare il computer in un posto sicuro ............................................................... 161
3.2.1.3 Documentare la configurazione hardware del sistema ............................................. 162
3.2.1.4 Shutdown del computer ............................................................................................ 162
3.2.1.5 Documentare tutto..................................................................................................... 163
3.2.1.6 Preparazione.............................................................................................................. 163
3.2.1.7 Sistema operativo e versione..................................................................................... 163
3.2.1.8 Valutazione dei virus ................................................................................................ 164
3.2.1.9 Effettuare un Bitstream Backup degli hard disks e dei floppy disks ........................ 164
3.2.1.10 Autenticare matematicamente i dati su tutti i dispositivi di memorizzazione ...... 165
3.2.1.11 Documentare la data e l’ora del sistema ............................................................... 165
3.2.1.12 Effettuare una lista delle parole chiave cercate..................................................... 166
3.2.1.13 Valutare i file di swap di Windows....................................................................... 166
3.2.1.14 Valutare lo slack space.......................................................................................... 166
3.2.1.15 Valutare gli spazi non allocati (file cancellati) ..................................................... 167
3.2.1.16 Cercare le parole chiave nei files, slack space e spazi non allocati ...................... 167
3.2.1.17 Documentare i nomi, le date e l’ora dei files ........................................................ 167
3.2.1.18 Identificare le anomalie di file, programmi e unità di memorizzazione ............... 167
3.2.1.19 Partizioni dell’hard disk ........................................................................................ 168
3.2.1.20 Valutare le funzionalità dei programmi ................................................................ 168
3.2.1.21 Documentare la “sentenza”................................................................................... 168
3.2.1.22 Tenere copie dei software usati............................................................................. 169
3.2.1.23 Licenze software ................................................................................................... 169
3.3 Conservazione delle fonti di prova ....................................................................................... 170
3.3.1 Introduzione .................................................................................................................. 170
3.3.2 Conservazione dei supporti fisici.................................................................................. 170
3.3.2.1 Imballaggio ............................................................................................................... 170
3.3.2.2 Trasporto ................................................................................................................... 172
3.3.2.3 Conservazione........................................................................................................... 173
3.3.3 Trattamento e custodia dei log ...................................................................................... 174
3.3.4 Policies aziendali relative alla conservazione delle fonti di prova .............................. 174
3.3.5 Chain of Custody (CoC) ............................................................................................... 175
3.3.6 Aspetti legali ................................................................................................................. 175
3.3.6.1 Rapporti con il Law Enforcement............................................................................. 175
3.3.6.2 Legislazione .............................................................................................................. 176
4. Sanitize: eliminazione degli strumenti utilizzati per l’intrusione ............................................. 178
4.1 Modifica delle password sui sistemi ove sia stata riscontrata un’intrusione ............................ 179
4.1.1 Password: vulnerabilità e policy ................................................................................... 179
4.1.2 Modifica password e organizzazione............................................................................ 191
4.2 Reinstallazione completa dei sistemi compromessi.............................................................. 194
4.2.1 Quando è utile reinstallare completamente il sistema................................................... 194
4.2.2 Operazioni preliminari .................................................................................................. 194
4.2.2.1 Verifica dei file di backup......................................................................................... 195
4.2.2.2 Formattazione del disco fisso.................................................................................... 197
4.2.2.3 Calcolo dello spazio disco......................................................................................... 204
4.2.2.4 Partizionamento ........................................................................................................ 205
4.2.3 Installazione del sistema operativo ............................................................................... 207
Pagina 9 di 334
4.2.3.1 Installazione dei driver aggiornati............................................................................. 207
4.2.3.2 Installazione delle patch di sistema (linux update, windows update) ....................... 207
4.2.4 Installazione delle applicazioni..................................................................................... 207
4.2.4.1 Installazione delle patch............................................................................................ 208
4.2.5 Settaggio delle policy di sicurezza................................................................................ 208
4.2.6 Settaggio delle impostazioni di rete .............................................................................. 208
4.2.7 Test del sistema (penetration/vulnerability test) ........................................................... 209
4.2.7.1 Nessus ....................................................................................................................... 209
4.2.8 Conclusioni ................................................................................................................... 209
4.3 Rimozione di tutti i programmi utilizzati per realizzare l’intrusione e di tutte le modifiche
determinate dall’intrusione e Reinstallazione dei programmi eseguibili e dei file binari dai supporti
di distribuzione originali. .................................................................................................................. 210
4.3.1 Punti chiave per la rilevazione dell’intrusione su sistemi UNIX.................................. 210
4.3.2 Punti chiave per la rilevazione dell’intrusione su sistemi Windows NT ...................... 212
4.3.3 Ripristino post intrusione .............................................................................................. 214
4.3.4 Passi per il recupero di un sistema UNIX o NT compromesso .................................... 214
4.3.4.1 Individuazione file modificati durante l’intrusione .................................................. 214
4.3.4.2 Individuazione dati modificati .................................................................................. 215
4.3.4.3 Individuazione dati e tool usati dall’intruso.............................................................. 216
4.3.4.4 Chkrootkit ................................................................................................................. 217
4.3.4.5 Tripwire..................................................................................................................... 219
4.3.4.6 LSOF......................................................................................................................... 223
4.4 Determinare se sussitono vulnerabilità nella rete e correggerle ........................................... 225
4.4.1 Introduzione .................................................................................................................. 225
4.4.2 Definizioni .................................................................................................................... 225
4.4.3 Port scan........................................................................................................................ 225
4.4.4 Nmap............................................................................................................................. 227
4.4.5 Nessus ........................................................................................................................... 227
4.4.5.1 Installazione in sistemi Unix..................................................................................... 230
4.4.5.2 Utilizzo di Nessus ..................................................................................................... 231
4.4.5.3 Creazione e rimozione degli utenti ........................................................................... 231
4.4.5.4 Configurazione avanzata del server .......................................................................... 232
4.4.5.5 Avvio di nessus server .............................................................................................. 232
4.4.5.6 Impostazione e uso del client .................................................................................... 233
4.4.5.7 Nessus funzionalità avanzate .................................................................................... 237
4.5 Migliorare gli strumenti di protezione per limitare l’esposizione dei sistemi e della rete.... 239
4.5.1 WINDOWS................................................................................................................... 239
4.5.1.1 Internet Information Services (IIS) ........................................................................... 239
4.5.1.2 Microsoft Data Access Components (MDAC) – Remote Data Services.................. 240
4.5.1.3 Microsoft SQL Server............................................................................................... 240
4.5.1.4 NETBIOS – Condivisioni di rete non protette in Windows ..................................... 241
4.5.1.5 Accesso anonimo – Null session............................................................................... 242
4.5.1.6 Autenticazione LAN Manager – Hashing LM debole .............................................. 243
4.5.1.7 Autenticazione generica di Windows – Account senza password o con password
deboli 244
4.5.1.8 Internet Explorer ....................................................................................................... 245
4.5.1.9 Accesso remoto al Registro ...................................................................................... 245
4.5.1.10 Windows Scripting Host ....................................................................................... 246
Pagina 10 di 334
4.5.2 UNIX............................................................................................................................. 246
4.5.2.1 Remote Procedure Call ............................................................................................. 246
4.5.2.2 Web Server Apache .................................................................................................. 248
4.5.2.3 Secure Shell (SSH).................................................................................................... 249
4.5.2.4 Simple Network Management Protocol (SNMP) ..................................................... 250
4.5.2.5 File Transfer Protocol ............................................................................................... 252
4.5.2.6 Servizi R – Relazioni di Trust................................................................................... 254
4.5.2.7 Line Printer Daemon (LPD)...................................................................................... 255
4.5.2.8 Sendmail.................................................................................................................... 255
4.5.2.9 BIND/DNS................................................................................................................ 256
4.5.2.10 Autenticazione generica di Unix – Account senza password o con password deboli
258
4.5.3 Porte vulnerabili............................................................................................................ 259
4.5.4 Il Firewall...................................................................................................................... 261
4.6 Migliorare i sistemi di Intrusion Detection per avere segnalazioni migliori. ....................... 263
4.6.1 Introduzione .................................................................................................................. 263
4.6.2 IDS: Richiami ............................................................................................................... 263
4.6.2.1 Funzionalità base degli IDS ...................................................................................... 263
4.6.2.2 IDS e Firewalls ......................................................................................................... 264
4.6.3 Modelli di classificazione degli IDS............................................................................. 265
4.6.3.1 Classificazione in base alla fonte delle informazioni................................................ 266
4.6.3.2 Classificazione in base al momento dell'analisi delle informazioni ......................... 270
4.6.3.3 Classificazione in base alla tipologia di analisi ........................................................ 272
4.6.3.4 Il passo successivo nell'evoluzione degli IDS: IPS e Honeynets.............................. 280
4.6.4.1 NIDS – Punti critici della rete................................................................................... 284
4.6.4.2 NIDS - Tecniche di elusione..................................................................................... 289
4.6.4.3 Errori – Falsi positivi e falsi negativi........................................................................ 303
APPENDICE A................................................................................................................................. 320
Incident Response Italy CD (basato su F.I.R.E.) release 1.0, 10 Dicembre 2003 ........................ 320
APPENDICE B ................................................................................................................................. 328
Principi legali di comportamento nella corretta acquisizione delle prove nel c.d. “incident
response”....................................................................................................................................... 328
Pagina 11 di 334
1. IR Start: Preparazione della risposta all’intrusione
1.1 Verifica della disponibilità di media adeguati per i backup ed il ripristino dei
sistemi
Le operazioni che riguardano i backup ed il salvataggio dei dati si possono suddividere in due
parti distinte: quella che riguarda i backup effettuati prima dell’evidenziarsi dell’intrusione
(preventivi) e quella riguardante i backup da effettuarsi dopo la rilevazione dell’intrusione stessa
(di indagine).
Analisi delle informazioni relative all’intrusione – ci possono essere state, nel periodo
immediatamente precedente all’intrusione vera e propria, delle azioni effettuate dall’intruder
che hanno lasciato traccia sui sistemi e che possono essere d’ausilio all’attività di indagine al
fine di risalire alle modalità di intrusione e agli autori; queste preziose informazioni possono
essere state cancellate dall’intruder stesso al momento dell’attacco vero e proprio al fine di
Pagina 12 di 334
rendere il più possibile trasparente agli occhi dell’analista il proprio operato (generalmente in
questo caso per potere successivamente garantirsi l’accesso al sistema compromesso) e quindi
non essere più presenti al momento dell’evidenziazione dell’intrusione (oppure essere
semplicemente operazioni mirate alla distruzione del sistema). Può anche essere il caso che la
compromissione del sistema sia tale da non poter ricostruire lo stato dello stesso con le sole
informazioni a disposizione: è per questo che si possono utilizzare i backup per ricostruire il
sistema all’ultimo stato conosciuto;
Ripristino dei sistemi compromessi post-attacco – una volta isolato il sistema interessato e
svolte le attività relative all’acquisizione delle prove, viene dato il benestare a riprendere le
normali attività svolte dal sistema (salvo disposizioni diverse); a seconda dello stato di
compromissione è necessario ripristinare il sistema e i dati ad esso correlati con le
informazioni più recenti possibili che possono essere ricavate sia dallo stato del sistema al
momento dell’isolamento dalla rete e dall’utente finale, sia dai backup effettuati in
precedenza. Il ripristino di un sistema non deve essere mirato al solo restore dei dati relativi
all’ultimo backup creato ma deve cercare di essere il più possibile correttivo. E’ sicuramente
necessario e doveroso, una volta eseguito il ripristino e prima di riconnetterlo in rete, dedicare
del tempo alla ricerca di aggiornamenti software relativi alle macchine in questione. Di
conseguenza è necessario installare, sempre che ve ne siano, tutte la patch trovate. Queste
operazioni sono di importanza primaria se si vuole diminuire la possibilità che si verifichino
incidenti della stessa natura; questo perché se si tratta di un problema a livello di
configurazione (di servizi o policy di sicurezza) l’analisi di tali problemi può richiedere molto
tempo per lo studio e la correzione, per cui queste operazioni sono da considerarsi utili per
ripristinare in tempi veloci il sistema per non interrompere a lungo il processo produttivo
dell’azienda.
Per effettuare le opportune indagini sulla compromissione del sistema è necessario raccogliere
fonti di prova allo scopo di essere analizzate dalle autorità competenti e, affinché ci sia una bassa
probabilità che le prove vengano contaminate, questa attività deve essere effettuata il più presto
possibile dopo che è stata rilevata l’intrusione. È indispensabile che, quando si effettua questa
attività, venga assicurata l’integrità e la sicurezza dello stato del sistema in oggetto e che quindi
non venga introdotta alcuna alterazione ai dati residenti nel sistema medesimo. Il miglior
approccio a questa pratica è quello di utilizzare tool per effettuare l’immagine dei dischi in
modalità “bit by bit” ovvero tool che copiano tutti i bit di un determinato disco nell’immagine
finale (Fig. 1). L’immagine creata da questi tool è chiamata Bitstream Image. Alcuni di questi
tool non si preoccupano di interpretare il file system del disco che si sta acquisendo (l’immagine
che creano è detta raw image), mentre altri tool più sofisticati si occupano di analizzare anche il
tipo di file system per rendere ancora più sicura l’acquisizione. Esistono anche particolari
strumenti hardware che garantiscono che durante la fase di acquisizione non avvengano
operazioni di scrittura sul media che si sta importando. Esistono ulteriori sistemi hardware
autonomi che permettono di collegare direttamente il dispositivo da acquisire allo strumento in
questione al fine di dare ulteriori garanzie sull’integrità dell’immagine generata. Gli strumenti
software usati generalmente permettono di acquisire da qualunque tipo di supporto
magnetico/ottico. L’importanza dell’uso di strumenti che permettano di creare una Bitstream
Pagina 13 di 334
Image è di rilevante importanza per chi andrà poi a svolgere un’attività di forensics sui dati
contenuti nell’immagine.3
I file system più noti in cui lo specialista di forensics/incident response potrebbe imbattersi sono
molti, anche se nella realtà non lo sono. Ogni file system ha le sue peculiarità i propri vantaggi e
problemi.
Eccone un lista abbastanza esaustiva:
FAT: La “File Allocation Table” è stata introdotta dal sistema operativo DOS 1.0. E’ un file
system molto semplice che non è altro che una singola lista concatenata di clusters. Ne esistono
due versioni, FAT12 (per i floppy disk) e FAT16 (per gli hard disk). Il nome dei file ha una
dimensione fissa di 8 caratteri per il nome e 3 per l’estensione
VFAT: Estensione di FAT12 e FAT16 introdotta da Windows 95 al fine di gestire nomi di file
più lunghi.
FAT32 : introdotta con Windows 95 Seconda Edizione e Windows98. Corregge qualche
problema con la FAT. Riduce lo spazio inutilizzato tra i files.
HPFS (High Performance File System) : Fu introdotto da IBM/Microsoft con il sistema operativo
OS/2. E’ un file system a “inode”.
NTFS (New Technology File System): E’ il file system nativo di Windows NT. Assomiglia a
HPFS ma ha in più alcune caratteristiche per quanto riguarda la sicurezza come il controllo
d’accesso. E’ un file system a “unicode” ovvero ogni carattere è di 16 bit.
EXT2FS (Second Extended File System): File system nativo di Linux. E’ a “inode”. E’ formato
da blocchi che solitamente sono di 1 Kbyte.
EXT3FS: Evoluzione di EXT2 anche se con stesse prestazioni. Introduce il concetto di Journaled
File System (tiene traccia delle operazioni che vengono fatte sui file)
REISERFS: è un file system utilizzato su Linux basato su alberi bilanciati ad alta velocità. Grazie
alle sue caratteristiche le situazioni in cui si verificano le prestazioni peggiori sono molto minori
paragonate agli altri file system attualmente in circolazione. Permette di gestire con alte
prestazioni files di tutte le dimensioni e in modo sensibilmente migliore per i piccoli archivi. E’ in
3
A tal proposito si tenga conto che un’alternativa alla Bitstream Image “pura” è costituita dalla cosiddetta Forensic Image,
cioè una riproduzione comunque totale e completa del disco origine ( slack space compreso) ma con una dimensione diversa
sul media di destinazione, dovuta ad overhead di riconoscimento del file proprietario generato e all’eventuale utilizzo di
software di compressione. Comunque sia le cautele di integrity checking rimangono invariate.
Pagina 14 di 334
grado di guadagnare il 6% di spazio non essendoci più una zona di disco di dimensioni fissate per
l’allocazione degli inode. E’ un journaled file system, ovvero permette di non perdere attimi
preziosi dovuti ai lunghi tempi di attesa imposti dal tool “fsck” per la verifica della consistenza
del file system ogni qualvolta si verifica un guasto (caduta di tensione o malfunzionamento) che
potrebbe portare il file system in uno stato inconsistente. Nell’ultima versione stabile è in grado di
gestire fino a 232-3 files con dimensione massima fino a 260 byte. Con blocchi da 4 Kbyte può
gestire un file system di dimensioni massime pari a 16 Terabyte.
Altri file system di minore importanza che possono essere citati sono:
BeFS
FFS (Fast File System) AMIGA
FFS BSD
NFS (Networked File System)
AFS (E rew File System)
RFS (Remote File System)
XFS (SGI File System)
Tornando alle tecniche di acquisizione possiamo dire che l’immagine dei dischi è anche uno degli
approcci per effettuare i backup. A tal proposito va ricordato che, con gli strumenti convenzionali
come Ghost, se non diversamente specificato, la procedura di backup copia solo i file e non i dati
d’ambiente; quest’ultima è un’area dove possono essere trovati le più importanti fonti di prova.
Per esempio, in Windows i dati d’ambiente sono memorizzati negli swap file mentre gli Unix
usano una partizione dedicata ai dati d’ambiente. Pertanto, qualora si dovesse optare per l’utilizzo
di Ghost in un’immagine post mortem, si rammenti di operare con istruzioni forensic related.
Spesso un’ulteriore fonte di prova può essere trovata all’interno dello “slack space” (composto da
“file slack” e “RAM slack”). Quando in un file system che usa cluster di 32 Kbyte scrive files che
hanno una dimensione non multipla della grandezza del cluster, l’ultimo cluster usato non viene
riempito totalmente e non può nemmeno essere destinato ad altri file. Lo spazio che intercorre tra
Pagina 15 di 334
la fine dei dati utili del file e la fine del cluster è detto appunto “slack space”. In pratica si tratta di
spazio di scarto che non viene usato dal sistema ma che però viene utilizzato in modo improprio
per nascondere files. Lo “slack space” totale è la somma di tutti gli “slack space” relativi a ogni
file. Sapendo che spesso su un sistema ci sono migliaia di file possiamo facilmente immaginare a
quanto possa ammontare lo “slack space” totale.
Altre potenziali fonti di prova possono venire trovate all’interno dello spazio non allocato di un
file system; quest’ultimo potenzialmente può contenere file integri, parti di file, directory, file
temporanei (compresi gli spool files) che sono creati e cancellati da diversi computer,
applicazioni e sistemi operativi (Fig. 3).
Questo è uno di motivi per cui le forensics analysis hanno bisogno di immagini “bit by bit”
dell’intera superficie del disco, quindi relative anche allo spazio non ancora allocato o
apparentemente non allocato. Spesso nello spazio non allocato si trovano file di notevole
importanza per l’indagine che sono stati precedentemente cancellati dal sistema operativo e che
non sono stati più sovrascritti.
Tornando ai tool di acquisizione, atteso che un accertamento di computer forensics viene
effettuato sulle copie e non sugli originali, una caratteristica che devono possedere tali strumenti è
quella di non alterare le prove reali, ovvero: l’integrità dell’originale deve essere garantita. Ma
anche qualora fossero state predisposte le opportune copie, è necessario essere certi che le copie
stesse non subiscano alterazioni di contenuto nel corso dell’indagine; per far questo si deve
predisporre un meccanismo di verifica che permetta di essere certi che le prove (e le loro copie)
non siano state alterate o danneggiate: lo strumento migliore è quello di creare un hash
dell’immagine prodotta.
Un algoritmo di hashing partendo da una sequenza di dati di lunghezza qualsiasi, come ad
esempio tutto il contenuto di un disco, genera un’altra sequenza di dati molto più corta, detta
appunto hash il cui contenuto è strettamente dipendente dai dati iniziali. La caratteristica degli
algoritmi di hashing e sulla quale si concentra la loro utilità è che se i dati in ingresso vengono
cambiati anche minimamente l’hash ricalcolato è completamente differente da quello creato
prima della modifica dei dati. Esistono molti algoritmi per la generazione degli hash. I più
importati e usati sono SHA-1 (Secure Hash Algorithm, RFC 3174) e MD5 (Message-Digest
Algorithm, RFC 1321). L’unico problema di tali algoritmi non è tanto quello di giungere a un
Pagina 16 di 334
hash da cui sia impossibile risalire ai dati originali ma quello di evitare la collisione dei risultati
ovvero rendere il più univoco possibile il rapporto tra i dati d’ingresso e l’hash generato.
Ci sono molti strumenti sia freeware che commerciali che permettono di generare hash di file. Per
esempio un tool incluso in F.I.R.E. (Forensic e Incident Response Environment – il CDRom a
base dell’allegato di IRItaly) permette di generare immagini di dischi e relativa hash del file
creato. Qui sotto è riportato un esempio di generazione di immagine di un floppy e relativo hash.
Figura 4: edd
Il tool in questione si chiama dcfldd (oppure edd, enhanced dd). Questo software è stato creato
appositamente per F.I.R.E. e si tratta di uno strumento che estende le potenzialità di dd (il tool
base) con una feature che permette la creazione di un hash di tipo MD5 relativo all’immagine del
disco che si va a generare. In base alle opzioni è possibile (come in questo caso) creare l’hash in
un file di output a parte. E’ in grado di rilasciare anche degli hash relativi a sottoparti del disco (o
in generale del flusso di dati in ingresso) specificando la dimensione della finestra di hash ovvero
specificando ogni quanti dati creare un hash.
Un altro comodo strumento freeware per la generazione degli hash è Hashish. Questo strumento
ha il solo scopo di generarlo in base a un file di ingresso o anche una semplice stringa. La
potenzialità di questo strumento è data dalla quantità degli algoritmi implementati. Questi sono
gli algoritmi implementati nell’ultima versione disponibile:
SHA-1, SHA-256, SHA-384, SHA-512
MD2, MD5
HAVAL, HAVAL-3, HAVAL-4, HAVAL-5
RIPEMD-160
Tiger
Panama Hash
CRC-32
Sapphire Hash
E’ senza dubbio uno strumento completo e di facile uso utilizzando una GUI. Non è nemmeno da
sottovalutare il fatto che è portabile sia su piattaforme Windows che Linux/Unix.
Ancora un altro strumento freeware che può essere utile è MD5 Summer. E’ un applicativo per
Windows 9x, NT, ME, 2000 e XP con interfaccia grafica o a linea di comando che permette di
Pagina 17 di 334
creare hash MD5 di file. E’ un applicativo interessante essendo compatibile con Linux GNU
MD5Sum sia per l’output che genera sia per i file di input che può leggere. Una feature molto
comoda di questo software è la possibilità di creare hash dei files contenuti in un intero albero di
directory ricorsivamente e naturalmente verificare di conseguenza gli hash generati in passato.
Esistono alcune linee guida che indicano come predisporre l’ambiente elaborativo
all’effettuazione delle immagini. Nella maggior parte dei casi, la macchina viene consegnata
spenta all’operatore di incident response. In altri, invece, viene messa a disposizione ancora
accesa ma scollegata dalla rete. Nel primo caso, comunque, il computer non deve venire acceso se
non da personale addestrato allo scopo: in caso contrario potrebbe verificarsi una modifica di
taluni dati della macchina e questo potrebbe danneggiare le indagini. Ad ogni modo, in caso di
dubbio, la regola fondamentale è “se la macchina viene trovata spenta, deve rimanere tale, se
trovata accesa deve rimanere accesa; il tutto fino a nuovo ordine”.
Ciò detto, è necessario proteggere accuratamente il supporto originale (p.e. mettere in write-
protect i supporti che lo permettono).
L’immagine del supporto si effettua tramite tool software, descritti più avanti, creando
un’immagine “bit by bit”, come accennato in precedenza. Il metodo da usarsi preferibilmente è
quello di utilizzare una stazione di lavoro “trusted” per l’acquisizione, anche nel caso si tratti di
un singolo hard disk o di un floppy/cd. Oppure, se le condizioni lo permettono, si può effettuare il
boot del computer oggetto dell’indagine non dall’hard disk come di solito avviene, ma da un
floppy disk (drive “A”); il computer parte con un sistema operativo minimale che contiene
programmi aggiuntivi e driver che fanno sì che il computer riconosca un device di
memorizzazione esterno come un hard disk removibile; quindi verrà avviato dal floppy di boot un
programma che effettuerà l’immagine dell’hard disk (o degli hard disk, se sono più di uno) sul
device esterno; questa include non solo i file visibili sull’hard disk originale ma anche altri che
normalmente sono nascosti, le parti di disco che contengono le informazioni da cui sono ricavati i
dettagli delle directory (nome dei file, dimensioni, data e timestamp) e anche certi altri frammenti
di file precedentemente cancellati e non ancora ricoperti da altri. Il file “immagine” stesso non
può essere facilmente letto ed esaminato ma, effettuando il procedimento contrario su un secondo
computer con caratteristiche simili al primo, può essere creato un esatto clone del disco originale,
comprensivo di file nascosti e dei frammenti di file. Si può effettuare anche un’ulteriore copia
dello stesso originale che può essere utilizzata come controllo in maniera simile a come vengono
registrate le testimonianze dalle forze di polizia. Le immagini sono copiate su CD-ROM che sono
supporti Write Once Read Many che non possono essere alterati.
A titolo di informazione preliminare si tenga quindi presente che:
Pagina 18 di 334
1.1.4 Integrità e disponibilità delle fonti di prova
Abbiamo accennato alla necessità, successivamente alla rilevazione dell’intrusione, di non
effettuare operazioni sul computer oggetto dell’indagine e di effettuare il più presto possibile le
immagini dell’hard disk.
Può anche succedere che la rilevazione dell’intrusione da parte del soggetto attaccato non sia
tempestiva rispetto all’attacco vero e proprio e che, quindi, un certo numero di operazioni sui dati
e sul sistema possano essere state effettuate nel frattempo dagli utenti finali; inoltre i supporti
interessati possono essere di diverso tipo (hard disk, tape, floppy-disk, PDA, CD, ecc.) a seconda
della complessità dell’architettura e della rete.
Elenchiamo di seguito alcuni elementi che possono, più di altri, inficiare l’integrità e la
disponibilità delle fonti di prova, allo scopo di valutare l’attendibilità di queste nel momento in
cui si decide di utilizzarle e di effettuare, quindi, l’immagine del media:
a) l’utilizzo di data compression, deframmentazione di dischi e programmi di ottimizzazione;
b) il download o il trasferimento di file di grosse dimensioni (p.e. immagini .JPG) che
sovrascrivono rapidamente i cluster non utilizzati;
c) l’uso di programmi che sovrascrivono settori di disco con stringhe di “0” (p.e. Wipe-info di
Norton Utilities);
d) il riutilizzo di nastri di backup;
e) l’installazione di nuovo software applicativo;
f) la configurazione di sistemi operativi e di partizioni;
g) la cancellazione di temporary internet files, browser history e cookie;
h) la modifica del time clock del computer;
queste azioni, se effettuate, potrebbero alterare, cancellare o modificare in maniera importante le
prove da recuperare.
I supporti per creare le immagini devono essere scelti in base ad alcuni criteri:
• Dimensioni dei dischi da copiare – i media su cui effettuare le copie devono essere capienti
sufficientemente per contenere l’immagine dei dischi origine; Si consiglia, ove possibile,
usare un drive di destinazione con una misura superiore almeno del 25% del source drive.
• L’integrità da preservare – la copia effettuata deve essere protetta da successive scritture;
• La durata del materiale con il quale è composto il supporto – il materiale con il quale è
costruito il media deve fornire adeguate garanzie di durabilità nel tempo per essere conservato
a fronte del prolungarsi delle indagini o per poter essere archiviato opportunamente; L’uso
delle buste antistatiche è fortemente consigliato.
• La diffusione della tecnologia atta a leggere/scrivere il supporto – la tecnologia di
lettura/scrittura deve essere sufficientemente diffusa da garantire l’accesso ai dati contenuti
nei media anche a distanza di tempo dal momento della creazione dell’immagine.
Pagina 19 di 334
Per quanto riguarda le tecnologie delle unità di memorizzazione, vengono descritte di seguito le
caratteristiche di quelle più diffuse dalle quali si possono evincere i requisiti sopra indicati:
• HARD DISK4: sono apparecchiature sulle quali vengono memorizzate i sistemi operativi, i
software applicativi e i dati, sotto vari formati, che gli utenti finali creano. Gli hard disk sono
di diverse tipologie: i più comuni sono IDE, altri sono SCSI, Fiber Channel oppure FireWire.
Tutte le tipologie operano nel medesimo modo; essi sono suddivisi in partizioni, in grado di
accedere direttamente ai dati e hanno la capacità di associare il file alla localizzazione fisica.
A livello hardware, il disco è composto di tracce, cilindri e settori; quando un disco è
formattato le tracce fisiche sono predisposte in modo che i dati possano essere memorizzati
in esse. I settori sono porzioni di tracce e di solito sono segmentati in multipli di 512K. A
livello logico la modalità in cui i file sono organizzati dipende dal particolare sistema
operativo utilizzato, di cui i più importanti per i nostri scopi sono Windows, Unix e Linux
(Fig. 5).
Una volta che il sistema operativo è installato, i cluster possono essere organizzati
raggruppando logicamente i settori fisici insieme; un cluster è la più piccola unità di
memorizzazione che il sistema operativo può utilizzare per memorizzare un file e ciascun
cluster deve essere riempito completamente: in altre parole non possiamo avere un cluster che
è solo parzialmente pieno.
La struttura di file basato su architettura Windows-DOS è normalmente un gruppo di
partizioni che mappa logicamente la lettera di un disco come “A”, “C”, ecc.; la struttura di file
basata su Unix e Linux hanno anch’esse partizioni, ma utilizzano il concetto di file system.
• DISCHI RIGIDI REMOVIBILI: Sino ad alcuni anni fa, tra le unità disco di grossi sistemi
(supermini, mainframe) erano comuni le unità a disco rigido removibile (removable hard-
disk); tali unità permettevano l'intercambiabilità dei piatti nella medesima unità di lettura-
scrittura. L'operatore poteva cambiare i pacchi di dischi (i cosiddetti "padelloni") mettendo
così in linea dei supporti removibili ad accesso diretto. Questo genere di dispositivo è
scomparso dai moderni grossi sistemi mentre a livello di personal computer si sono diffuse
unità in grado di leggere dischi removibili di piccolo diametro, costituiti da piatti rigidi da 5",
3.5" e 2.5", racchiusi in una custodia di plastica, con capacità di centinaia di megabyte e un
tempo d'accesso medio paragonabile a quello dei dischi fissi. Dispositivi di questo tipo sono
consigliabili nelle situazioni in cui ci sia necessità di memorizzare grosse quantità di dati
4
Al momento in cui scriviamo, la grandezza massima di un Disco è di 500 Gb.
Pagina 20 di 334
senza necessariamente conservarne costantemente l'accesso in linea e come dispositivo per
compiere copie di sicurezza (backup). Non esistono standard, e i diversi prodotti utilizzano
tutti soluzioni proprietarie. Tra i più diffusi dispositivi di questo tipo vi sono gli Zip e i Jaz
della Iomega, i Bernoulli e i Syquest.
• DISCHI OTTICI: un disco ottico (optical disk) è un dispositivo costituito da un piatto rigido
sul quale viene proiettato un raggio laser; sulla superficie del piatto i bit sono scritti in modo
che il tipo di riflessione della luce laser sia differente per i valori zero e per i valori uno.
Quella dei dischi ottici è una tecnologia recente (metà degli anni '80) e in forte evoluzione. I
suoi vantaggi sono molti, tra questi:
a) una densità di memorizzazione, a parità di superficie, potenzialmente molto superiore
rispetto alla tecnologia magnetica;
b) maggior sicurezza: grazie alla lettura tramite laser, le testine non si avvicinano mai a più
di 1 mm dal disco; inoltre ditate e polvere non modificano considerevolmente le
caratteristiche di riflessione, i campi magnetici non influiscono, ecc.;
c) maggiore durata nel tempo non essendoci rilevanti problemi di ossidazione dei supporti;
d) possibilità di produzione di copie mediante stampa, in particolare per quanto riguarda i
CD-ROM.
I principali tipi di dischi ottici e le relative tecnologie sono descritte di seguito:
WORM (Write Once Read Many): il disco è realizzato con un materiale di memorizzazione
(tellurio o polimeri opachi) racchiuso in un sandwich di piatti in plastica; la scrittura consiste
nella «bruciatura» di un minuscolo punto (pit), e la presenza o assenza (land ) del foro creato
da tale microbruciatura determina le proprietà di riflessione del supporto e quindi il valore
del bit. Non esiste ancora una standardizzazione per questi prodotti: un disco scritto da un
dispositivo di un certo tipo difficilmente può essere letto da un altro. Esistono dischi nei
diametri di 5, 8, 12 e 14 pollici. La capacità di un disco WORM varia da 300 a 700 Mbyte
per lato per dischi da 5".
MO (Magneto Optical): i dischi magneto-ottici sono costituiti da un sandwich di
policarbonato o vetro e materiale magnetico, ruotano a velocità angolare costante e i dati
sono organizzati in tracce e settori. Il loro funzionamento sfrutta due leggi fisiche: la
temperatura di Curie e l’effetto di rotazione di Kerr. La scrittura avviene immergendo l'intera
superficie del disco in un campo magnetico e riscaldando con un laser (della potenza di circa
40 mW) i punti che devono essere scritti. Quando il laser porta la superficie oltre la
temperatura di Curie il materiale, solo in quel punto, assume una polarità magnetica pari a
quella del campo in cui è immerso. Il resto della superficie rimane inalterato. Si osservi
quindi che la scrittura è magnetica ma la densità è maggiore rispetto a quella ottenibile con
testine magnetiche perché determinata dalla capacità di localizzazione del raggio laser. Per
evitare di dover effettuare la scrittura in due tempi (per esempio prima gli 1, poi si inverte il
campo magnetico e si scrivono gli 0) e per ridurre i consumi energetici e la complessità del
sistema (dopo aver scritto gli 1, il laser va acceso soltanto dove si devono scrivere gli 0), la
Sony ha realizzato un sistema magneto-ottico in cui, mentre la testina laser scalda uno dietro
l'altro tutti i punti della traccia dalla parte superiore, un piccolo induttore genera un campo
magnetico della polarità opportuna sul lato opposto. Tale sistema è utilizzato nel MiniDisc,
nato come supporto musicale digitale ma adatto anche alla registrazione dati. La lettura di un
disco magneto-ottico avviene osservando la rotazione della polarizzazione del raggio laser di
lettura (di minor potenza di quello di scrittura) quando viene riflesso dalla superficie del
Pagina 21 di 334
disco. L'effetto di rotazione di Kerr provoca una rotazione in due versi opposti a seconda
della magnetizzazione della superficie. I dischi magneto-ottici usano il formato da 5", hanno
un tempo d'accesso non eccezionale (15-17 millisecondi) ma un buon tempo di trasmissione
(ruotano a circa 3600 giri); un disco riscrivibile è utilizzabile continuamente per almeno 10
anni.
Phase change: i dischi a variazione di fase sono realizzati con un sandwich di materiali il più
importante dei quali è uno strato, spesso circa 200 ångström, di tellurio o selenio; come i
dischi magneto-ottici ruotano a velocità angolare costante e i dati sono organizzati in tracce e
settori. Ciascun bit viene scritto come spot utilizzando un raggio laser di 8 o 18 mW, che
trasforma il punto rispettivamente in una zona cristallino o amorfa; la lettura avviene
proiettando un raggio di bassa potenza che viene riflesso con intensità diversa a seconda che
il punto si trovi in stato cristallino o amorfo. I dischi a cambiamento di fase sono riscrivibili
direttamente (non richiedono una cancellazione e successiva scrittura come i magneto-ottici).
Esistono in commercio lettori in grado di utilizzare sia dischi WORM sia dischi a variazione
di fase.
CD-R (CD-Recordable), sono CD registrabili un'unica volta a costi contenuti ma con un
costo per copia superiore rispetto ai CD-ROM. Sono composti da dischi di policarbonato che
racchiudono un foglio centrale d'oro ricoperto di pittura traslucida che si comporta come la
parte land dei CD. La registrazione consiste nel bruciare punti nello strato di pittura,
simulando i pit. Il master e il dispositivo di masterizzazione hanno un costo oggi contenuto,
mentre i supporti vergini e registrabili hanno un costo molto superiore a quello di una copia
di un CD-ROM stampato. Tuttavia, sono estremamente convenienti per tutte le esigenze di
realizzazione di copie singole, prototipi di CD-ROM e archiviazione di dati. Nei CD-R è
possibile registrare le informazioni in più momenti successivi (sessioni). Le sessioni sono
separate da spazi detti gap che sprecano, tuttavia, una grande quantità di spazio. I dispositivi
di lettura (drive) che supportano più registrazioni sono detti multisessione.
CD-RW (CD-ReWritable), detti a volte CD-E (CD-Erasable) sono gli ultimi arrivati sul
mercato: sono cancellabili e riscrivibili. Usano la tecnologia del phase-change e hanno un
ambito di utilizzo analogo a quello degli altri tipi di dischi ottici con il vantaggio di usare un
drive unico compatibile con i CD-ROM e i CD-R.
DVD (Digital Video Disc o Digital Versatile Disc): hanno lo stesso diametro di un CD-ROM
ma sono una tecnologia più recente, molto più veloci (equivalente a una 9x nella prima
versione realizzata, ma le successive vanno ben oltre) e molto più capienti. Sono disponibili
in tre diverse versioni, come i CD: DVD-ROM, DVD-R (recordable) e DVD-RAM ma in
più possono prevedere una gamma di capacità che varia da 4.7 GB della versione base a una
faccia e strato singolo ai 17 GB della versione doppia faccia e doppio strato. Come nei CD, la
codifica del dato avviene per alternanza di pit e land ma la lunghezza minima del pit è di 0.4
µm, la metà rispetto a un CD. Anche la spaziatura tra giri successivi della spirale di
memorizzazione è inferiore rispetto ai CD: 0.74 µm. Per leggere i pit più piccoli, il
meccanismo usa una luce laser rossa con lunghezza d'onda da 635 a 650 nanometri (la stessa
usata dai lettori di codici a barre). Come i CD, i DVD possiedono uno strato di materiale
riflettente sotto uno strato di policarbonato. Nei DVD a doppio strato, un secondo strato
semi-riflettente viene posto sopra allo strato completamente riflettente e il laser è in grado di
leggere entrambi (lo strato semi-riflettente, tuttavia, raggiunge una capacità massima di 3.8
GB contro i 4.7 di quello completamente riflettente). I DVD possono essere registrati su
entrambi i lati, su singolo o doppio strato. I DVD-R sono analoghi ai CD-R: uno strato di
Pagina 22 di 334
sostanza organica che può essere "bruciata" permette la registrazione (un'unica volta).
Analoghi ai CD-E sono i DVD-RAM, basati su tecnologia phase-change. Sia i DVD-R, sia i
DVD-RAM raggiungono capacità massime inferiori ai DVD-ROM. Una delle maggiori
innovazioni dei DVD consiste nel fatto che possono impiegare dispositivo sia CAV (velocità
angolare costante, come dei dischi magnetici organizzati in tracce concentriche), sia CLV
(velocità lineare costante sull'unica traccia a spirale). Sin qui si è trattato del «formato
fisico»: circa, invece, il «formato logico», i DVD usano uno standard chiamato UDF
(Universal Disc Format) che è un sottoinsieme dello standard ISO-13346 per lo scambio di
dati utilizzabile con diversi sistemi operativi (DOS, Windows, MacOS, Unix e OS/2).
• TECNOLOGIE A NASTRO: un supporto ricoperto di sostanza magnetica, in genere ossido
di ferro, scorrendo sotto una testina di registrazione, offre via via a questa, aree interpretabili
come celle di informazioni binarie.
I nastri magnetici hanno il vantaggio di essere chiusi in un involucro di plastica che li
protegge dalla polvere e dagli agenti esterni. Attualmente i nastri più usati sono i cosidetti
"streamer" che possono arrivare ad avere una capacità di memoria di più GB e una velocità di
trasferimento di 200 Kb/s. Questi streamer sono usati principalmente per copie di sicurezza.
La testina di registrazione consiste in un traferro sul quale e' avvolto a spirale un filo
conduttore. Inviando corrente su questo filo, il suo percorso a spirale genera un campo
magnetico che ha una delle due direzioni possibili a seconda del verso con cui passa la
corrente. Il campo magnetico induce una magnetizzazione permanente sull'areola di superficie
magnetica sottostante; e l'areola rimane magnetizzata in quel verso anche quando non si trova
più in prossimità del campo magnetico stesso. L'informazione binaria si potrà perciò
recuperare anche dopo molto tempo con il procedimento inverso: sulla testina si rileva il verso
della corrente indotta in prossimità del campo magnetico dell'areola.
Le due operazioni di invio del segnale necessarie alla registrazione e alla ricezione del segnale
per il rilevamento si chiamano rispettivamente scrittura e lettura.
Il supporto magnetico e' un supporto "recuperabile". Infatti si possono modificare gli stati di
magnetizzazione delle celle di memoria con il dispositivo di lettura/scrittura, poiché la
scrittura magnetizza la superficie nel verso voluto indipendentemente dallo stato di
magnetizzazione preesistente. Uno stesso supporto può così essere riutilizzato per conservare
nuove informazioni quando le precedenti non servono più.
Le singole celle di superficie vengono offerte alle testine per la scrittura-lettura mediante il
movimento della superficie stessa. Il dispositivo di lettura-scrittura e' quindi fisso e sotto le
testine scorre la superficie magnetica. L'individuazione dei singoli bit avviene mediante un
segnale di sincronismo di durata temporale pari a quella del passaggio di corrente
sull'avvolgimento relativo a ciascun bit.
I principali tipi di supporti a nastro magnetico e le relative tecnologie sono descritte di
seguito:
BOBINE: Le capacità dei nastri a bobina sono molto variabili, dai 50Mb ai 1,2Gb. I nastri a
bobina sono strutturati a tracce parallele per poter così trasmettere un intero byte
contemporaneamente e suddivise in due gruppi a funzioni separate: uno per la lettura e l'altro
per la scrittura del nastro. Su ogni traccia e' impressa una sequenza di 0 e 1 in modo che la
lettura vericale produca 8 bit più uno di controllo. Ad intervalli regolari, lungo ogni traccia,
un ulteriore bit viene utilizzato per controlli incrociati di consistenza L'ultimo bit sarà uguale
ad 1 se negli altri 8 il numeri di 1 sarà dispari, altrimenti 0. Il controllo incrociato consente di
Pagina 23 di 334
individuare con sicurezza il singolo errore, dandoci le esatte coordinate. Gli errori possono
essere causati da diversi eventi. Quelli più ricorrenti sono quelli di danneggiamento del nastro
dovuti a casualità o a strappi di partenza o di arrivo del nastro stesso. Per questo motivo i
registratori di bobine sono muniti di rulli trascinatori e di dispositivi di aspiramento nastro.
Le testine di lettura vengono posizionate dopo quelle di scrittura, nel senso del supporto, in
modo da controllare la correttezza di registrazione durante la fase di scrittura.
A diverse dimensioni di nastro corrispondono diverse prestazioni. I nastri più grandi e più
robusti permettono maggiori accelerazioni e decelerazioni essendo più resistenti alla rottura,
rispetto al nastrino della cassetta, e sono più affidabili. Per quanto riguarda i tempi di
accelerazione e decelerazione si e' pensato di inserire degli spazi vuoti tra un blocco di
informazioni e un altro di modo che sfruttando lo spazio vuoto il nastro abbia tempo di
arrivare alla velocità giusta per poter leggere il blocco seguente.
Vantaggi
E' conveniente l'uso delle bobine per la velocità di trasferimento dati, per l'alto numero di
informazioni immagazzinate con scarso ingombro e per il basso costo delle bobine stesse, che
sono riutilizzabili, anche se lo sfregamento delle testine di lettura e scrittura sulla superficie
del nastro ne comporta il deterioramento nel tempo.
Svantaggi
Sono le probabili alterazioni della magnetizzazione, se le bobine non vengono conservate in
un ambiente adatto, e soprattutto l'accesso obbligatoriamente sequenziale alle informazioni.
NASTRI A CASSETTA: i nastri a cassetta hanno capacità più modeste, vanno fino a
105Mb, rispetto ai nastri a bobina. Inoltre hanno una sola traccia che si snoda avanti ed
indietro lungo tutto il nastro. Avendo una sola testina i tempi di accesso sono lunghissimi e gli
strappi di partenza o arrivo sono molto frequenti. Ciò significa che questi nastri oltre ad essere
molto lenti sono pure poco sicuri.
Questo tipo di nastri si rifà ai cosiddetti streamer. Tali sistemi sono ideati per essere usati su
sistemi informatici personali o comunque di piccole o medie dimensioni dove lo spazio non e'
molto ed i costi devono essere contenuti. Gli streamer vengono quindi inseriti direttamente
nell'unità centrale insieme ai lettori per floppy e ad eventuali lettori CD.
Riguardo agli streamer e' bene ricordare che vi sono molti tipi di lettori a nastro e di cassette
differenti.
DAT: I nastri di derivazione Digital Audio Tape sono nastri di derivazione audio, sono molto
sottili ed utilizzano pratiche cassette di piccole dimensioni (simili alle musicassette).
La testina di lettura-scrittura non è fissa come nei nastri a bobina o a cassetta, ma è mobile e
ruota velocemente segnando il nastro diagonalmente.
Si ottiene che la velocità di scorrimento del nastro rispetto alla testina può essere mantenuta
ad alti livelli (più alta e' la velocità di scorrimento, più bit si possono memorizzare per unità di
lunghezza). Al tempo stesso, la velocità di scorrimento delle bobine del nastro non richiede di
essere particolarmente elevata (per evitare l'usura meccanica del nastro e' meglio avere una
bassa velocità di avvolgimento delle bobine).
Tali nastri possiedono altissime capacità, dai 1,2GByte (circa un miliardo di Byte) dei modelli
più economici (costo di circa un paio di milioni di vecchie lire), ai 4GByte per i modelli più
Pagina 24 di 334
professionali (costo che si aggira sui 20 milioni). Questi ultimi comprimono i dati ancor prima
di memorizzarli sul nastro per decomprimerli in fase di lettura.
Pagina 25 di 334
1.2 Definizione di un sistema adeguato di comunicazione protetta
In caso di intrusione o di attacco è necessario aver negoziato preventivamente con i gruppi
di intervento specialistico un sistema di comunicazione che sia sicuro, veloce e separato
dalle risorse danneggiate. In fase di definizione delle policy potrà essere quindi deciso di
utilizzare delle tipologie di mezzo definite offline. Tutti i soggetti coinvolti in queste
comunicazioni devono essersi preventivamente accordati sulle modalità di comunicazione
e di reciproca autenticazione.
Le procedure di risposta all’attacco devono anche tenere presente che persino l’atto di
comunicazione tra due persone, specialmente se determina un incremento del traffico
quotidiano e se è crittato, può indicare all’attaccante che è stato scoperto. Per questo
motivo, può essere utile non utilizzare le e-mail, ma mezzi alternativi, come il fax o il
telefono. Di base questo significa che, nell’organizzazione di un piano di Incident
Response, deve essere prevista la compilazione di una contact list da utilizzare, che
comprenda anche i contatti relativi alle Forze dell’Ordine ed ai legali.
Se i meccanismi di comunicazione sono basati sulla crittografia, un ulteriore aspetto da
considerare è la manutenzione e l’autenticazione delle chiavi. Questo sta a significare che
si deve accertare la fonte da cui otteniamo la chiave, per essere sicuri che non sia stata
compromessa o addirittura sostituita.
Se il numero di soggetti con cui si è in relazione è elevato, questo lavoro potrebbe essere
molto dispendioso. In questi casi ci si può affidare ad una Certification Authority (CAs),
oppure si può decidere di verificare solo le chiavi di soggetti esterni alla nostra
organizzazione.
Nel caso in cui non si riesca a comunicare utilizzando Internet o la intranet aziendale,
conviene ricorrere a metodi alternativi, come connessioni dirette via modem, per
mantenere almeno un contatto con i settori critici. E’ comunque consigliabile inserire in un
report tutte le comunicazioni di questo genere.
Segue un’analisi delle possibili modalità di comunicazione:
• Paragrafo 1.2.1 1.6.1 E-mail (Regole generali, Crittografia (PGP)
• Paragrafo 1.2.2 Telefonia fissa (Regole generali, Chat (IRC,mIRC, ICQ), Telefax,
NetMeeting e Cuseeme, Voice-Over-IP, Crittografia (PGPfone, Speak Freely,
VoiceWeaver)
• Paragrafo 1.2.3 Telefonia Mobile (Regole generali. TACS, GSM, GPRS e UMTS)
1.2.1 E-Mail
Regole generali
L’obiettivo è riuscire a comunicare in modo protetto anche a seguito di intrusioni accertate
sui sistemi di messaggistica. Questa scelta, pur essendo comunque intrinsecamente
rischiosa, deve essere contemplata come possibile.
Pagina 26 di 334
Risulta preferibile non generare traffico sulla rete locale, ma utilizzando una macchina
isolata; è quindi opportuno inviare e-mail da un computer “sicuro”, esterno alla rete che è
stata compromessa. Eventualmente si potrebbe creare a priori un account dedicato alla
comunicazione con i gruppi di intervento.
Inoltre, al fine di impedire all’attaccante di sniffare il traffico sulla rete, e di garantire
l’identità del soggetto con cui si sta comunicando, è consigliabile utilizzare una tecnica
crittografica (PGP).
Crittografia (PGP)
PGP è un software di crittografia per la posta elettronica e la protezione dei file.
Il suo utilizzo è gratuito per uso privato e a pagamento se si vogliono avere maggiori
funzionalità. E’ possibile effettuare il download dell’eseguibile da Internet, all’indirizzo
http://www.pgpi.com (download PGP, GPG e tool vari).
Al momento della sua istallazione, viene richiesto di immettere un identificativo e una
passphrase che servirà a limitare l’utilizzo della chiave privata ai soli conoscitori della
passphrase stessa.
Pagina 27 di 334
Per una corretta comunicazione con i gruppi di intervento è quindi necessario essere in
possesso di:
• una coppia di chiavi relativa all’organizzazione di cui si fa parte (una pubblica e una
privata);
• le chiavi pubbliche di tutti i soggetti con cui dovremo scambiare messaggi in caso di
attacco.
A seguito dell’intrusione, tutte le e-mail in partenza dalla macchina dovranno essere
firmate e crittate con PGP. In questo modo verrà anche generato un codice hash che
permetterà al destinatario di controllare che l’e-mail non abbia subito modifiche durante il
viaggio.
Tutte le e-mail ricevute, invece, andranno decrittate e la firma digitale dovrà essere
verificata ogni volta.
Per avere ulteriori informazioni riguardanti l’utilizzo di questo software, fare riferimento
alla “Guida pratica a PGP”, recuperabile all’indirizzo
http://www.pgpi.org/docs/g_pgp952.htm.
Voce
Microfono
Digitalizzazione
Compressione
Pagina 28 di 334
Crittazione
Trasmissione
Ricezione
Decrittazione
Decompressione
Cuffie
Voce
Questi programmi sono molto più efficaci dei vecchi scrambler: forniscono la possibilità di
crittare le telefonate con sistemi di crittografia robusta, non decifrabile da chi non è in
possesso della chiave necessaria, se non disponendo di un potente computer dedito per anni
soltanto alla decrittazione.
In alcuni casi nemmeno molti anni di lavoro-macchina sono sufficienti, il che rende questi
algoritmi computazionalmente sicuri.
Disponendo di una connessione alla rete è inoltre possibile evitare telefonate a lunga
distanza, collegandosi al più vicino Internet provider e inviando i pacchetti direttamente
all’indirizzo IP dell’interlocutore, e viceversa.
Se da un lato il meccanismo funziona e grazie al crittosistema utilizzato la riservatezza è
assicurata, dall’altro le telefonate via Internet lasciano un po’ a desiderare in fatto di qualità
audio e velocità di risposta.
Pagina 29 di 334
• Bonk
• Land
• Teardrop
• Click
• Ssping
• WinNuke
• ICMP Flood
• Smurf
• Ping Pattern
• SYN Flood
• Bloop (Flushot)
• Igmp (Pimp/Kod)
Esistono differenti client IRC, a seconda del sistema operativo utilizzato (vedi tabella 3).
Per quanto riguarda mIRC (vedi fig. 7), oltre ai pericoli derivanti da IRC, ne aggiunge altri:
• il client senza uso di script è di per sé sicuro: nella peggiore delle ipotesi sono stati
trovati bug che mandavano in crash il solo client, senza pericolo per il resto del
sistema;
• gli script sono sempre stati la sede di backdoor e, considerando anche i file .EXE
allegati, di trojan e virus.
Pagina 30 di 334
Figura 7: mIRC in funzionamento
Con queste premesse, possiamo individuare delle regole per utilizzare questo strumento
cercando di correre meno rischi possibili:
• Non usare script di cui non se ne conosce il codice e la provenienza con sicurezza. Poche
linee di malicious code all’interno di uno script possono rendere il proprio sistema in
balia dell’attaccante. Quest’ultimo potrebbe violare la privacy attraverso la lettura dei
messaggi e la registrazione delle azioni compiute; oltre a questo il sistema diventerebbe
altamente vulnerabile per la possibile esecuzione di comandi dannosi (ad es. format);
• Nascondere il proprio IP. Con questa logica nasce in alcuni server non ircnet il mode+x,
che permette di nascondere agli altri user (eccetto ircop) il proprio IP. In questo modo, si
rende il proprio sistema meno vulnerabile ad attacchi del tipo D.o.S. o spoofing;
• Usare un socks server come relay. Configurando il proprio client IRC in questo modo,
sarà possibile chattare collegandosi attraverso il socks e nella chat apparirà come proprio
IP quello del socks server. In questo modo tutti gli attacchi rivolti a voi e ranno verso il
socks server (solitamente una macchina *nix più stabile in rete).
Usare socks "aperte al pubblico" non è permesso su tutti i server IRC: alcuni server
prima di permettere il collegamento del client verificano lo stato della porta TCP 1080
per impedire, in caso affermativo, la connessione (il socks server infatti è in ascolto sulla
1080).
Trovare Socks aperte al pubblico non è difficile: ci sono in circolazione scripts per mIRC
che eseguono una scansione dei canali alla ricerca di porte 1080 in ascolto.
Per quanto riguarda ICQ (vedi Fig. 8), continuano ad esistere tutti i problemi legati alla
visibilità del proprio IP e alla possibilità di ricevere file infetti.
A queste vulnerabilità, già discusse in precedenza, si aggiunge l’estrema semplicità del
protocollo e del software, estremamente insicuri.
Pagina 31 di 334
Risulta quindi possibile, utilizzando questo strumento, essere soggetti ad attacchi di vario
tipo, tra cui:
• Spoofing del proprio indirizzo IP;
• Esecuzione di codice arbitrario da parte della propria macchina attraverso un buffer
overflow;
• Blocco del proprio sistema attraverso un D.o.S.
Figura 8: ICQ
NetMeeting e Cuseeme
Netmeeting (vedi fig 9) è un software gratuito, reperibile attraverso:
• Alcune versioni di Windows;
• CD di installazione di Internet Explorer;
Per avere la versione più aggiornata, è consigliabile scaricarlo all’indirizzo
http://www.microsoft.com/windows/netmeeting.
Il suo utilizzo è finalizzato alla trasmissione e ricezione di immagini real video a colori e
suoni in diretta, attraverso una qualsiasi rete compatibile con il protocollo TCP/IP (quindi
reti LAN, VPN ed Internet). La trasmissione dei dati avviene attraverso scambio
bidirezionale di pacchetti.
Pagina 32 di 334
Figura 9: NetMeeting
Grazie ai nuovi standard di compressione CODEC dei dati, con una banda passante di soli
56K effettivi (quella di un comune modem analogico su linea telefonica tradizionale
PSTN) consente una più che buona qualità video, con soglia di refresh (movimento
dell'immagine) anche inferiore ad un secondo, e una definizione (in assenza di movimenti
costanti e rapidi dei soggetti o degli oggetti ripresi) che può arrivare ad essere molto
soddisfacente. Quest'ultimo fattore dipende molto anche dalla qualità della webcam
utilizzata per le riprese.
Lascia invece a desiderare l'aspetto audio, che è il primo a risultare poco affidabile in caso
di banda insufficiente. A questo problema (e anche per ottimizzare lo streaming video) si
rimedia comunemente bloccando da entrambe le parti la trasmissione audio (che impegna
una quantità consistente di banda passante anche quando la qualità acustica è scadente) e si
utilizza un'altra linea telefonica (ad es. GSM) per comunicare oralmente.
Per queste ragioni, si consiglia di utilizzare Netmeeting più per le sue funzioni video che
audio, eventualmente integrandolo con una normale telefonata su altra linea.
Per ovviare al problema dell'interconnessione diretta dei PC via Internet (servirebbe
conoscere e digitare tutte le volte l'indirizzo IP del computer corrispondente) Microsoft ha
messo a punto da anni uno standard definito ILS (Internet Locator Server) che consta di
numerosi server presenti nel WEB e dedicati a questa funzione "ponte" fra i vari PC. I
server ILS registrano all'atto della connessione gli estremi dell'utente di Netmeeting, ma
soprattutto memorizzano l'IP del computer utilizzato, consentendo una localizzazione certa
e automatica senza necessità di conoscere ogni volta l'IP del computer da chiamare. Data la
dinamicità dell’indirizzo IP, i server ILS pubblici svolgono anche un prezioso servizio
pratico, poiché consentono di rintracciare sempre l'utente tramite uno username fisso
(nickname), facilmente individuabile e memorizzabile, senza doversi preoccupare di
conoscere l'IP del computer da chiamare.
Pagina 33 di 334
Netmeeting mette in diretta connessione via Internet due PC tramite i relativi IP, con la
possibilità (opzionale) di condividerne le risorse: lo standard di sicurezza di questo sistema
è quindi relativamente modesto, sebbene incrementato nelle versioni più recenti.
Netmeeting ha già presentato in passato gravi falle nella sicurezza, risolte di volta in volta
da Microsoft.
Per un utilizzo sicuro di questo software si raccomanda:
• L'installazione dell'ultima versione disponibile;
• L’utilizzo della crittografia base;
• La scelta della modalità protetta;
• L’utilizzo di un firewall (test hanno dimostrato che Zone Alarm Pro non influisce
sul corretto funzionamento di NetMeeting).
In ogni caso, è bene non attivare questo sistema se si prevede di dover trattare immagini
critiche o che implichino problemi di sicurezza alle cose o alle persone, inclusi i dati
presenti nel computer utilizzato. Netmeeting è comunque sempre un prodotto Microsoft su
TCP/IP, quindi anche il miglior grado possibile di sicurezza rientra in uno standard
decisamente limitato.
L'alternativa professionale a quanto sopra è Cuseeme (vedi fig. 10) della Cusoft.
Sviluppato nel 1993 dalla Cornell University, Cuseeme è un prodotto efficace e completo,
ma dal costo non proprio ridotto; è basato su un principio simile ai server ILS di
Netmeeting, nel caso specifico denominati reflectors. Consente una più vasta e completa
definizione dei parametri di funzionamento, ma soprattutto consente di connettere audio-
video fino a 12 utenti in contemporanea; questa funzione, peculiare di Cuseeme, è però
pressoché inutile nel caso di connessioni a 56K.
Cuseeme è perfettamente compatibile anche con lo standard ILS e con Netmeeting di
Microsoft.
Telefax
Le comunicazioni a mezzo fax presentano gli stessi inconvenienti delle normali telefonate
su linea fissa: i dati sono trasmessi in chiaro e si prestano a facili intercettazioni.
Se ne sconsiglia pertanto l’utilizzo per attività di Computer Forensics.
In ogni caso, se l’utilizzo di questa tecnologia si rendesse necessario, è utile munirsi di
apparecchi, oggi in commercio, che crittano i dati in fase di trasmissione e li decrittano in
Pagina 34 di 334
fase di ricezione; con una soluzione di questo tipo, sia il mittente che il destinatario devono
essere in possesso dell’apparecchio.
Lo stesso risultato può essere ottenuto tramite l’utilizzo di programmi fax per PC, che
sfruttano la connessione diretta via modem e permettono la crittazione dei dati trasmessi.
Voice-Over-IP
Il VoIP è una tecnica di comunicazione basata sulla suddivisione della voce in pacchetti IP,
che vengono trasmessi sul cavo fino alla destinazione sfruttando la rete Internet o
attraverso un collegamento diretto (Point-To-Point).
Il funzionamento è identico a quello delle normali reti che utilizzano i protocolli TCP/IP e
UDP/IP.
Applicata al traffico vocale questa tecnica non dà risultati soddisfacenti: i pacchetti non
arrivano nell’ordine con cui sono stati spediti e la loro attesa e ricomposizione può causare
fastidiosi ritardi nella comunicazione. È probabile che questo problema si risolverà quando
verrà incrementata la banda di trasmissione dei pacchetti voce.
Questa tecnologia risulta a tutt’oggi assai poco diffusa e comunque poco pratica per
svolgere attività di Computer Forensics; ne sconsigliamo pertanto l’utilizzo, almeno finché
i prezzi dei telefoni IP (oggi molto elevati) non si saranno allineati con gli altri prodotti di
telefonia fissa.
Crittografia (PGPfone, Speak Freely, VoiceWeaver)
Parliamo ora di alcuni programmi utilizzati per cifrare le conversazioni su Internet.
PGPfone è un software il cui copyright appartiene a Philip Zimmermann, già noto quale
autore del PGP. Informazioni su questo prodotto sono rintracciabili al sito www.pgpi.org.
Il programma è distribuito nelle versioni per Windows e Macintosh: non è previsto il
supporto per Linux, a tutt’oggi il sistema operativo freeware più diffuso. Il requisito
minimo per installare PGPfone è un Pentium o un Power Mac dotato di modem.
La caratteristica fondamentale di PGPfone è che non necessita di un canale sicuro per lo
scambio della session key prima dell’inizio della conversazione. Le due parti, infatti,
negoziano le chiavi che useranno per crittare e decrittare le conversazioni usando il
protocollo Diffie-Hellman, che non rivela nulla di utile a un eventuale ascoltatore. In ogni
caso, come già detto in precedenza, è consigliabile scambiare le chiavi prima che si
verifichi un incidente.
L’installazione è piuttosto semplice e rende questo programma adatto anche a persone non
molto esperte.
Ci sono tre tipi di layout, definibili dal menù Window: minimal (essenziale), intermediate
(mostra anche compressione e tipo di cifratura) e advanced (con diversi checksum e
statistiche). Tutto il resto si setta dal menu Edit -> Preferences, che è a sua volta diviso in
tre sezioni: Phone, Modem ed Encryption.
Di seguito le caratteristiche di un altro programma per la crittazione delle telefonate:
Speak Freely.
Pagina 35 di 334
In italiano può essere tradotto come “Parla liberamente”, ma anche “Parla gratuitamente”:
Speak Freely è distribuito gratuitamente al pubblico e i sorgenti sono disponibili su
Internet.
Quest’ultima caratteristica è particolarmente apprezzata nei programmi di crittografia, in
quanto permette di verificare che non contengano backdoor o bug grossolani.
Il programma è disponibile per le piattaforme Windows (vedi fig. 11) nonché per Unix
(vedi fig. 12). Le richieste hardware non sono particolarmente esose anche se è noto che
con un computer veloce e con tanta memoria è possibile eseguire più applicazioni
contemporaneamente e lavorare con maggiore comodità.
Pagina 36 di 334
Pur essendo la telefonia crittata il principale obiettivo di questo software, segnaliamo
l’esistenza di una versione senza questa caratteristica, detta “Spook Freely”, nata per essere
utilizzata in quelle nazioni in cui crittare le conversazioni è illegale.
Speak Freely può funzionare in due modalità:
• Normal, consigliata ai principianti. È necessario premere il tasto destro del mouse
quando si parla, ed è buona norma terminare la frase con la parola “passo” (“over”
in inglese);
• Voice activated, utile per risparmiare banda di trasmissione. Ciò è possibile in
quanto il programma è in grado di rilevare automaticamente se si sta dicendo
qualcosa al microfono e in quel caso trasmettere la voce. Quando, invece, si sta in
silenzio, la trasmissione viene automaticamente interrotta.
Lo svantaggio è che questa opzione richiede una fase di setup più difficoltosa da
configurare: è necessario eseguire prima alcune prove e determinare il giusto
volume di attivazione della voce. Bisogna infatti far sì che questo non sia troppo
basso, perché altrimenti la trasmissione sarebbe sempre attivata dal rumore di
fondo; analogamente il livello non deve essere troppo alto, perché altrimenti anche
parlando a voce alta non si attiverebbe mai la trasmissione.
Da notare che la modalità voice activated non è utilizzabile con le casse, ma solo se
si dispone di cuffie: i normali speaker, ricevendo, potrebbero attivare nuovamente il
microfono, genere o un equivalente dell’effetto larsen e impedendo in pratica la
conversazione.
Con una rete lenta, quale è generalmente Internet, ci può essere un ritardo sostanziale (già
due o tre secondi sono fastidiosi) tra la trasmissione e la ricezione. Questo ritardo è
particolarmente elevato se la connessione in rete avviene via satellite e/o se la rete è molto
congestionata.
È consigliabile, quindi, pianificare una fase di test della struttura a priori, in modo da
verificare che essa possa funzionare in maniera efficace in caso di esigenza reale.
Se Speak Freely è stato un software molto utilizzato negli anni, non è mai stato disegnato
per essere un prodotto vendibile al grande pubblico e non è disponibile una versione
aggiornata da molti anni (si veda il sito www.speakfreely.org).
Per venire incontro a questa crescente esigenza del mercato, StreamComm ha sviluppato il
primo prodotto che può aggiungere ad ogni sito web una comunicazione audio gratis e
sicura.
VoiceWeaver (vedi fig. 13) è uno dei migliori prodotti disponibili per comunicare con altre
persone gratuitamente, attraverso internet. Questo prodotto supporta la comunicazione
vocale come un telefono e permette anche di scambiare messaggi testuali, come ogni
“instant messenger”.
Pagina 37 di 334
Figura 13: Voice Weaver
1.2.3.1 Tacs
A partire dal 1990 il nostro paese è stato completamente invaso da celle utilizzate per la
telefonia mobile, prima del sistema analogico TACS e poi della rete digitale GSM che per
la prima volta ha visto scendere in campo un gestore privato. Queste celle formano una
rete che viene utilizzata prevalentemente per il traffico di fonia (il comune traffico
telefonico), ma che si può facilmente adattare anche al traffico di dati.
La prima analisi si rivolge alla rete analogica TACS. Se per l'utilizzo come rete fonica la
qualità raggiungibile è spesso superiore alla sua sorella GSM, la rete TACS non è mai stata
progettata per il traffico di dati. Questo difetto è riscontrabile soprattutto nella gestione
Pagina 38 di 334
dello scambio di celle in caso di segnale in movimento; per la fonia qualche disturbo audio
è accettabile ma per uno scambio di dati attraverso il modem crea molti problemi.
Una possibile soluzione potrebbe essere quella di effettuare il traffico dati sulla rete TACS
senza muoversi da una cella a un’altra. È una soluzione accettabile, anche se spesso il
cambio di cella avviene lo stesso per problemi di saturazione delle frequenze e potremmo
dunque vedere la nostra connessione cadere anche se stiamo immobili. A questo si
aggiunge la scarsa sicurezza della rete TACS, facilmente intercettabile con un radio
scanner sintonizzato sui 900 Mhz.
A causa di entrambe queste limitazioni non si può che sconsigliare questo tipo di traffico.
1.2.3.2 Gsm
Il sistema GSM offre vari tipi di traffico digitale essendo interamente basato sulla
digitalizzazione dei segnali.
Fra i servizi digitali sono ormai famosi i messaggi SMS, che vengono visualizzati sul
display del telefono e che possono essere trasmessi tra cellulari della stessa rete o anche tra
reti diverse o addirittura arrivare o essere destinati a Internet.
Per il traffico dati puro è stato implementato un protocollo di correzione di errore
(MNP10) che permette di raggiungere velocità di 9600 baud anche in movimento sulla rete
stessa. Questa velocità viene utilizzata sia per fax che per traffico dati, permettendo quindi
accessi liberi da filo da quasi tutto il territorio.
La rete GSM utilizza un sistema di crittografia dei dati che, a detta dei gestori, mette
chiunque al sicuro da intercettazioni. Su questa affermazione c'è molto da obiettare: basti
dire che i ponti di collegamento tra le varie celle (sia via radio sia via filo) sono indifesi.
Quando è stata lanciata sul mercato, la rete GSM è stata offerta come una rete “sicura”, in
cui l’intercettazione delle telefonate da parte di radioamatori, phreaker o anche da parte
delle istituzioni, era impossibile.
Il servizio di sicurezza offerto dalla rete GSM riguardava la possibilità di crittare il
collegamento tra la parte mobile della rete (il nostro telefono) e la BTS (la cella a cui
siamo collegati).
L’algoritmo utilizzato per crittare i pacchetti di dati contenenti la nostra voce (il GSM
utilizza la modulazione digitale GSMK e un algoritmo TDMA per l’accesso simultaneo di
più stazioni al canale radio) viene indicato con la sigla A5. Non essendo un prodotto di
pubblico dominio, i suoi sorgenti di sviluppo non sono liberamente reperibili.
Questo dato induce a una maggiore prudenza e a legittimi dubbi sull’affidabilità
dell’algoritmo stesso.
La nascita dell’A5 non è espressamente legata alla rete GSM. L’algoritmo venne adottato
dopo una lunga battaglia tra i vari paesi appartenenti al consorzio paneuropeo da cui
nacque la necessità di creare un sistema di telefonia digitale sicuro e standardizzato.
Allo stato attuale esistono degli esperimenti di cracking dell’A5, ma l’algoritmo è ancora
giudicato fondamentalmente robusto.
Pagina 39 di 334
1.2.3.3 GPRS e UMTS
La tecnologia Gprs è un’evoluzione dello standard Gsm, di cui utilizza la rete di trasporto.
Il transito dei dati occupa, quindi, la capacità di trasmissione che il traffico voce Gsm
lascia libero nell’unità di tempo. Se la rete Gsm è saturata dal traffico voce, situazione che
può verificarsi sovente in alcune fasce orarie, la trasmissione dei dati può subire un vistoso
calo di velocità.
La rete Umts è, invece, completamente a commutazione di pacchetto e permette al 100%
della sua base clienti di ottenere prestazioni accettabili nel trasferimento dei dati. Nella
tabella che segue vengono evidenziate le maggiori differenze nelle prestazioni delle due
reti.
Gprs Umts
Bandalarga no Sì
Velocità max teorica 171.2 Kbps 2 048 Kbps
Velocità reale* 30 Kbps 300 Kbps
Simile ad un
Navigazione su Web modem analogico
Simile all’Adsl
Durata reale download
400 secondi 40 secondi
(1,5Mb)
Multimedialità interattiva No Sì
Streaming audio Sì Sì
Streaming video No Sì
Download Sì Sì
Videotelefonia No Sì
Qualità video A scatti Fluida
Visualizzazione 3D No Sì
Livello di interattività Near real time Real time
Popolazione attiva max** 6 000 000 (15%) 40 000 000 (100%)
Interfaccia utente dei
Testo / Grafica Video / Grafica
terminali
Applicazioni simultanee
No Sì
(multisession)
Memoria terminali > 2 MB < 8 MB
Sicurezza transazioni Bassa Alta
Integrazione satellitare No Sì
* Parametri di riferimento: Gprs: 4 time slot con velocità max a 40 Kbps e throughput da 30 Kbps – Umts: canali a disposizione da 384
Kbps e throughput da 300 Kbps
** Numero di utenti in grado di collegarsi alla rete in modalità dati
Con i nuovi terminali 3G arrivano anche le nuove carte Sim: le Usim (Umts Subscriber
Identità Module), che hanno le seguenti caratteristiche:
• sono delle smart card in cui sono stati implementati nuovi parametri di sicurezza
delle transazioni;
• impiegano chiavi di segretezza molto più complesse rispetto a quelle disponibili
nelle vecchie Sim Gsm;
Pagina 40 di 334
• funzionano in base al principio di mutua autenticazione dell’utente e della Rete,
evitando l’eventualità che false stazioni radio possano carpire le informazioni nella
fase di autenticazione in Rete;
• la memoria è stata ampliata: se nelle Sim si potevano memorizzare al massimo 255
nominativi con un solo numero di telefono associato, con le Usim, oltre ad
aumentare il numero dei contatti, ad ognuno di essi si potranno associare più
informazioni, come secondo nominativo, numero di telefono e indirizzo e-mail.
Pagina 41 di 334
1.3 Creazione di un toolkit sw/hw
Pagina 42 di 334
1.3.1.2 Autopsy v1.6
(GNU General Public License for Unix)
http://www.sleuthkit.org/index.php
Autopsy è una iniziativa open source alternativa ai normali programmi di forensic Windows-
Based.
Il tool è un Browser HTML in grado di visualizzare l’immagine di dischi compromessi, è in grado
di supportare sia file system Unix che Windows al fine di rilevare file cancellati, creare time line
delle attività sul disco ed eseguire ricerche per parole. É un tool di analisi remota non intrusivo,
nessun time stamp dei file viene modificato durante l’analisi.
Tutti i file generati da Autopsy sono legati a un valore md5 che può essere verificato durante
l’analisi. È possibile effettuare ricerche per inode e visualizzare i file da esso puntati.
Autopsy contiene un server HTML scritto in Perl che ne permette l’uso condiviso su più
piattaforme compatibili. I client possono accedere a una lista ristretta Acces Control List (ACL) e
se necessario crittare il canale di comunicazione con SSH.
Pagina 43 di 334
1.3.1.3 Test Disk v4.2
http://www.cgsecurity.org/index.html?testdisk.html
(GNU Public License for Dos, Unix e BSD)
Consente di analizzare i dischi compromessi ed effettuarne l’ undelete delle partizioni.
I file system supportati sono:
- FAT12 FAT16 FAT32
- Linux
- Linux SWAP (version 1 e 2)
- NTFS (Windows NT)
- BeFS (BeOS)
- UFS (BSD)
- Netware
- ReiserFS
1.3.1.4 Wipe
http://wipe.sourceforge.net/
(GNU General Public License for Linux, Dos)
Esegue una eliminazione completa dei dati presenti su qualsiasi supporto scrivibile.
Il suo funzionamento consiste nel settare a 0 ogni singolo bit presente sul disco, indispensabile
per formattare un disco che verrà utilizzato come destinazione di una Forensic analisy.
1.3.1.6 Biew
http://biew.sourceforge.net/en/biew.html
(GNU General Public License for DOS, Win32, OS/2, Linux, BeOS, Unix)
É un file viewer avanzato in grado di eseguire visualizzazioni binarie, esadecimali e in modalità
disassembler per PentiumIV/K7-Athlon/Cyrix-M2, full preview of MZ, NE, PE, LE, LX,
DOS.SYS, NLM, ELF.
Pagina 44 di 334
Figura 16: Biew
1.3.1.11 Dumpel
http://www.microsoft.com/windows2000/techinfo/reskit/tools/existing/dumpel-o.asp
(for Win95, Win98, WinME, WinNT, Win2000, WinXP)
È utilizzato per eseguire il dump di file di log presenti sulla macchina locale o su un server. Il tool
genera un file di testo contenente il dump del log. La sintassi è presente nel file html creato dopo
l’installazione del programma.
Esempi:
Per eseguire il dump del system log presente sul server eventserver e creare il file event.out:
dumpel -f event.out -s eventsvr -l system
Per eseguire il dump del system log locale e creare il file event.out, ma solo degli eventi di tipo
rdr e applicando un filtro sull’event id 2013:
dumpel -f event.out -l system -m rdr -e 2013
Per eseguire il dump del log di una applicazione locale e creare event.out, considerando tutti gli
eventi eccetto quelli di tipo Garbase:
dumpel -f event.out -l application -m garbase -r
1.3.1.12 Strace NT
Visualizza le chiamate di Sistema effettuate da qualsiasi processo.
Esempio:
[c:\strace] strace notepad
1 133 139 NtOpenKey (0x80000000, {24, 0, 0x40, 0, 0, "\Registry\Machine\Software\Microsoft\Windows
NT\CurrentVersion\Image File Execution Options\notepad.exe"}, ... ) ==
STATUS_OBJECT_NAME_NOT_FOUND
2 133 139 NtCreateEvent (0x100003, 0x0, 1, 0, ... 8, ) == 0x0
3 133 139 NtAllocateVirtualMemory (-1, 1243984, 0, 1244028, 8192, 4, ... ) == 0x0
4 133 139 NtAllocateVirtualMemory (-1, 1243980, 0, 1244032, 4096, 4, ... ) == 0x0
5 133 139 NtAllocateVirtualMemory (-1, 1243584, 0, 1243644, 4096, 4, ... ) == 0x0
6 133 139 NtOpenDirectoryObject (0x3, {24, 0, 0x40, 0, 0, "\KnownDlls"}, ... 12, ) == 0x0
7 133 139 NtOpenSymbolicLinkObject (0x1, {24, 12, 0x40, 0, 0, "KnownDllPath"}, ... 16, ) == 0x0
8 133 139 NtQuerySymbolicLinkObject (16, ... "C:\WINNT\system32", 0x0, ) == 0x0
9 133 139 NtClose (16, ... ) == 0x0
Pagina 49 di 334
vengono filtrati i pacchetti in transito e catturati solo quelli che soddisfano le condizioni
impostate.
Capture length:
consente di catturare solo pacchetti fino a una certa dimensione massima.
Capture packets in promiscuous mode:
Se abilitata permette di catturare tutti i pacchetti in transito sulla rete e non solo quelli in ingresso
o in uscita dal computer.
Enable MAC name resolution:
Permette di risolvere le corrispondenze IP – MAC address delle schede di rete presenti sulla rete.
Enable network name resolution:
Consente a ethereal di risolvere gli indirizzi IP in DNS domain name.
Il seguente comando permette di catturare tutti i pacchetti da e verso l’host 10.0.0.5 indirizzati
alla porta 23 (telnet):
# tcp port 23 and host 10.0.0.5
Per la creazione dei filtri è possibile utilizzare operatori logici:
# tcp port 23 and not host1 0.0.0.5
Una volta effettuata la cattura è possibile effettuare delle ricerche sui pacchetti.
Ethereal permette di ricercare specifici frame, un esempio di filtro di ricerca di un frame:
ip.addr==10.0.0.5 and tcp.flags.syn
in questo modo si cercano le tracce di un hand shake generato dall’ IP
10.0.0.5
Il tool visualizza la lista di tutti i pacchetti catturati, la loro sorgente, la destinazione, il protocollo
usato e informazioni aggiuntive. Di ogni singolo pacchetto è possibile avere informazioni più
dettagliate come: la porta sorgente/destinazione, il numero di seq del pacchetto, il numero di ack,
la lunghezza dell’header la dimensione della window ecc.
Un ultimo editor di Ethereal consente la visualizzazione esadecimale del payload di ogni
pacchetto.
Pagina 50 di 334
Figura 18: Ethereal
Pagina 51 di 334
Quando una corrispondenza viene trovata, snort allerta l'amministratore di rete e produce dei
record di log.
Caratteristiche principali: leggerezza (eseguibile di circa 250Kb), portabilità (Unix, Linux,
Windows, *BSD, HP-UX, IRIX), velocità, configurabilità (semplicità del linguaggio delle regole
e delle definizioni dei log), modularità (possibilità di inserire dei plugin).
Pagina 52 di 334
1. valorizzare le variabili HOME_NET, EXTERNAL_NET e DNS_SERVERS: la prima
variabile va impostata con l'indirizzo IP assegnato alla interfaccia di rete pubblica del server,
la seconda variabile può rimanere invece invariata (equivale ad ANY) mentre la terza è
destinata a contenere la lista degli eventuali server dns utilizzati;
2. configurazione dei preprocessori, dipende dal tipo di versione in uso (consultare il
manuale e/o le note contenute nel file di configurazione). I preprocessori sono porzioni di
codice integrate nel software che assolvono ad un compito ben definito (ad es. la corretta
gestione dei pacchetti frammentati o l'impostazione della soglia di sensibilità per il
riconoscimento delle attività di scansione delle porte TCP/UDP);
3. configurazione dei plugins di output, i quali definiscono invece in che modo i dati di log
vengono registrati ed anche per quanto riguarda le loro impostazioni è possibile consultare il
manuale d'uso o le note contenute nel file di configurazione.
4. personalizzazione del database interno, è il processo più laborioso, richiede una
preventiva analisi delle caratteristiche della rete nonché delle effettive esigenze di protezione
del server oltre ad un successivo periodo di test e perfezionamento volto a migliorare
l'efficienza complessiva del sistema nel riconoscimento delle eventuali intrusioni e nella
diminuzione del numero di falsi positivi.
Snort può essere usato come packet sniffer (tipo tcpdump), packet logger o nids, e analizza tre tipi
di protocolli: tcp, udp, icmp.
Tipi di alert
• messaggi diretti al syslog
• file di testo in un percorso specificato dall’utente
• messaggi inviati ad un socket Unix
• winpopup message per i client Windows che usano il sistema Samba
Descrizione regole
Le possibili azioni sono:
• Alert – genera un alert usando il metodo di alert selezionato, e poi fa il log del pacchetto
• Log – fa il log del pacchetto
• Pass – ignora il pacchetto
• Activate – genera un alert e poi attiva una regola dynamic
• Dynamic – rimane inattiva finché non è attivata da una regola activate, poi agisce come un log
Gli aggiornamenti delle regole sono scaricabili dal sito ufficiale di snort.
Esempio di regola per rispondere alle richieste ICMP:
alert icmp any any -> $HOME_NET any (msg:"IDS166 - PING Seer Windows";
content:"|88042020202020202020202020202020|";itype:8;depth:32;)
alert icmp any any -> $HOME_NET any (msg:"IDS152 - PING BSD"; content: "|08 09 0a
0b 0c 0d 0e 0f 10 11 12 13 14 15 16 17|"; itype: 8; depth: 32;)
Uso di Snort con un insieme di regole
Pagina 53 di 334
# snort –i eth0 –h 193.205.162.1/24 –c ping.rules –d –l ./log –s –D
-d dumps the application layer
-h home network
-i log location
-c rule set name
-s log alerts to syslog
-i interface to listen on
-D run snort as a background process (daemon mode)
Messaggi che Snort potrebbe produrre in seguito ad un attacco
rilevato con le regole precedenti:
Apr 19 11:18:22 [**] IDS152 – PING BSD: 193.205.162.191 -> 193.205.162.192 [**]
Apr 19 11:18:23 [**] IDS152 – PING BSD: 193.205.162.191 -> 193.205.162.192 [**]
1.3.2.3 TcpTraceroute
http://michael.toren.net/code/tcptraceroute/
(GNU General Public License (GPL) for Unix)
TcpTraceroute è una implementazione di traceroute che usa TCP.
Traceroute è un programma di diagnostica e statistica, viene usato al fine di individuare quale
percorso viene seguito dai pacchetti di dati durante la comunicazione tra due computer. In
particolare il comando spedisce pacchetti UDP o ICMP ECHO con TTL inizialmente settato a
uno che viene incrementato fino a quando la destinazione non è stata raggiunta. Il comando
stampa il nome di ogni gateways che genera un ICMP time exceeded message durante il percorso
dei pacchetti. In questo modo si è in grado di creare il percorso compiuto dai dati per raggiungere
un determinato host.
L’uso di firewall che filtrano e bloccano pacchetti UDP e ICMP rende inutile l’uso di traceroute.
Pagina 54 di 334
TcpTraceroute utilizzando quindi il protocollo TCP rende possibile la generazione del percorso
anche in presenza di normali sistemi di filtraggio.
TcpTraceroute non completa mai l’hand shake, nel caso in cui l’host di destinazione risponde con
un RST la porta di destinazione è chiusa e la comunicazione viene interrotta. Se risponde con un
SYN | ACK la porta è aperta e traceroute fermerà la comunicazione. Lo stesso principio viene
usato da nmap se gli viene passato il flag –sS.
Sintassi:
tcptraceroute [-nNFSAE] [-i interface ] [ -f first ttl ] [ -l length ] [ -t tos ] [-m max ttl ]
[-p source port ] [-s source address ] [-w wait time ] host[destination port ] [
length ]
Esempio di comando Traceroute:
www.microsoft.com, classico webserver protetto:
$ traceroute -w2 -q1 -f 5 www.microsoft.com
traceroute: Warning: www.microsoft.com has multiple addresses; using
207.46.197.100
traceroute to www.microsoft.akadns.net (207.46.197.100), 30 hops max, 38 byte
packets
5 baltimore.balt-core.h0-0-45M.netaxs.net (207.106.2.18) 17.560 ms
6 blt-dc.dc-core.h5-0-45M.netaxs.net (207.106.2.2) 27.769 ms
7 core1-core3-fe-1.mae-e.iad.netaxs.net (207.106.31.28) 28.802 ms
8 250.ATM3-0.BR3.DCA6.ALTER.NET (137.39.92.25) 27.934 ms
9 0.so-3-1-0.XL2.DCA6.ALTER.NET (152.63.38.122) 24.210 ms
10 0.so-0-0-0.XR2.DCA6.ALTER.NET (152.63.35.117) 35.693 ms
11 0.so-4-0-0.TR2.DCA6.ALTER.NET (152.63.11.93) 22.170 ms
12 121.at-1-1-0.TR2.SEA1.ALTER.NET (146.188.140.78) 94.099 ms
13 0.so-1-0-0.XL2.SEA1.ALTER.NET (152.63.106.237) 101.325 ms
14 POS7-0.GW4.SEA1.ALTER.NET (146.188.201.53) 91.887 ms
15 microsoftoc48-gw.customer.alter.net (157.130.184.26) 89.536 ms
16 *
17 *
18 *
Pagina 55 di 334
1.3.2.4 Hogwash
http://hogwash.sourceforge.net/
Hogwash è un analizzatore di pacchetti (firewall basato sulle firme) che interagisce con Snort,
però al posto di chiudere porte, permette di creare regole di filtering in base a pattern matching..
Per eseguirlo occorrono due schede di rete: una collegata all’interno, l’altra all’esterno.
Linee di comando
-e (external interface)
interfaccia collegata all’esterno
-i (internal interface)
interfaccia della scheda di rete collegata all’interno
-c (rules file)
nome del file delle regole che sarà utilizzato per determinare quali pacchetti sono permessi
-n
fa funzionare hogwash senza regole; utile per testare la connettività di base
-l (log directory)
setta la directory di log; senza questa opzione, quella di default è /var/log/snort. La directory deve
esistere prima che Hogwash parta
-d
mette hogwash in modalità demone
Pagina 57 di 334
Effettua l’analisi dei pacchetti su un’interfaccia di rete (tipicamente un Ethernet, in maniera
promiscua per leggere tutto il traffico della rete) che soddisfano determinate condizioni di filtro.
Prerequisito: diritti di accesso al device driver della scheda di rete.
Per eseguirlo è utile porre un ` -i ' switch per specificare quale interfaccia della rete deve essere
usata, in questo modo fornisce delle informazioni riassuntive per ogni pacchetto ricevuto o
trasmesso sull'interfaccia.
TCPdump prevede molte importanti opzioni, così come l'abilità di specificare un'espressione per
restringere la serie di pacchetti che si desidera studiare.
Sintassi:
tcpdump [ -deflnNOpqStvx ] [ -c count ] [ -F file ][ -i interface ] [ -r file ] [ -s snaplen][ -w
file] espressione
Espressioni filtro:
- directions: src / dst / src or dst / src e dst
- type: host / net / port / mask
- protocol: ether / fddi / ip / arp / rarp / decnet / lat sca / moprc / mopdl / tcp / udp
- special keyword: gateway / broadcast / less / greater
- boolean operator: and / or / not
Opzioni:
-c uscire dopo aver ricevuto count pacchetti
-e stampa il link-level header su ogni linea mostrata
-f stampa gli indirizzi internet in formato numerico, piuttosto che simbolici
-F usa un file come ingresso per l’espressione del filtro (ogni altra espressione data sulla
linea di comando è ignorata)
-i per specificare l’interfaccia su cui ascoltare (se tale opzione non è messa, tcpdump
seleziona la prima interfaccia presente nella lista delle interfacce di sistema, escluso il
loopback)
-n non converte gli indirizzi (indirizzi di host, numeri di porto, ecc.) in nomi
-N non stampa il nome del dominio dell’host (in questo modo tcpdump stamperà ‘nic’
invece di ‘nic.ddn.mil’)
-q output più corti, stampa meno informazioni sui protocolli
-p l’interfaccia non è messa in modalità promiscua
-r legge pacchetti da file (i quali sono stati creati con l’opzione -w)
-t non stampa il timestamp su ogni linea catturata
-tt stampa un timestamp non formattato su ogni linea
-d cattura i pacchetti compilandoli secondo l’uscita standard
Pagina 58 di 334
-w scrive il pacchetto catturato in un file (lo standard output è usato se il file è ‘-‘)
-x stampa ogni pacchetto in esadecimale
Esempi:
- tcpdump host A
- tcpdump dst host A and \ (port ftp or ftp-data\)
- tcpdumpport smtp
- tcpdump gateway A and \(port ftp or ftp-data\)
- tcpdump net 140.123.0.0
tcpdump -i lo
(lo=interfaccia di loopback, è un dispositivo di rete virtuale che permette di riferirsi a se stesso)
Pagina 59 di 334
tcpdump -i lo -s 200 -x –q
Graphing Options
Tcptrace può produrre cinque generi differenti di grafici, a seconda delle opzioni inserite
da linea di comando : throughput graphs, RTT sample graphs, diagrammi time-sequence,
congestion window graphs, segment size graphs.
-l throughput
Pagina 61 di 334
-R RTT
-S Time-Sequence
Pagina 62 di 334
1.3.2.7 Chkrootkit 0.39a
http://www.chkrootkit.org/
Tool per controllare la presenza di backdoor e rootkit particolarmente noti; contiene:
• ifpromisc.c: controlla se l’interfaccia è in modalità promiscua;
• chklastlog.c: controlla cancellazioni in lastlog;
• chkwtmp.c: controlla cancellazioni in wtmp;
• check_wtmpx.c: controlla cancellazioni in wtmpx (solo Solaris);
• chkproc.c: controlla tracce di LKM trojan;
• chkdirs.c: controlla tracce di LKM trojan;
• strings.c: sostituzione rapida e approssimativa di stringhe.
Chkrootkit è stato testato su: Linux 2.0.x, 2.2.x e 2.4.x, FreeBSD 2.2.x, 3.x e 4.x,
OpenBSD 2.6, 2.7, 2.8, 2.9, 3.0, 3.1 e 3.2, NetBSD 1.5.2 e Solaris 2.5.1, 2.6 e 8.0.
Attualmente sono rilevati i seguenti rootkits, worms e LKMs:
Solaris rootkit, FreeBSD rootkit, lrk3, lrk4, lrk5, lrk6, t0rn (e t0rn v8), some lrk variants,
Ambient's Rootkit for Linux (ARK), Ramen Worm, rh[67]-shaper, RSHA, Romanian rootkit,
RK17, Lion Worm, Adore Worm, LPD Worm, kenny-rk, Adore LKM, ShitC Worm, Omega
Worm, Wormkit Worm, dsc-rootkit, RST.b, duarawkz, knark LKM, Monkit, Hidrootkit, Bobkit,
Pizdakit, t0rn (v8.0 variant), Showtee, Optickit, T.R.K, MithRa's Rootkit, George, SucKIT,
Scalper Worm, Slapper Worm (and variants), OpenBSD rk v1, Illogic, SK rootkit, sebek LKM,
Romanian rootkit e LOC rootkit.
Pagina 63 di 334
Chkrootkit effettua la ricerca in base a “signatures” note, le quali però possono essere facilmente
modificate da un attacker. Poiché chkrootkit non trova automaticamente trojan le cui signatures
sono state modificate, lo user deve passare in modalità expert (-x): in questo modo lo user può
esaminare le stringhe di binari sospette che possono indicare un trojan.
Chkrootkit va eseguito da root:
# ./chkrootkit [options] [testname...]
Comandi: awk, cut, echo, egrep, find, head, id, ls, netstat, ps, strings, sed,
uname
Opzioni:
-h mostra l’help
-V mostra informazioni sulla versione
-l mostra i testi disponibili
-d debug
-q modalità quiet
-x modalità expert
-r dir usa dir come root directory
Messaggi d’output:
• "INFECTED": il test ha identificato un comando probabilmente modificato da un rootkit
conosciuto;
• "not infected": il test non ha trovato nessuna rootkit signature nota;
• "not tested": test non effettuato – può succedere nelle seguenti situazioni:
test specifico per l’OS;
test che dipende da un programma esterno non disponibile;
qualche linea di comando specifica (es. -r ).
• "not found": il comando da testare non è disponibile;
• "Vulnerable but disabled": comando infettato ma non in uso.
Pagina 64 di 334
form testuale. Se provvisto del proprio “keying material”, decritterà le connessioni
visualizzando il traffico dati delle applicazioni.
SSLdump dipende dalla libreria cattura pacchetti libcap. Alcuni sistemi (es. FreeBSD) ora
hanno libcap come parte della loro installazione standard.
Compatibilità: FreeBSD, Linux, Solaris e HP/UX, ma dovrebbe lavorare su ogni
piattaforma con pcap.
Comunque, diversamente da TCPdump, SSLdump deve poter vedere entrambi i lati della
trasmissione dati, quindi si potrebbero aver problemi ad usarlo con network tap
(colleziona copie dei pacchetti provenienti dal device driver di rete e le smista alle
applicazioni che sono in ascolto).
ssldump -i le0 port 443 per ascoltare il traffico sull’interfaccia le0 porta 443
L’output è inviato allo standard out, SSLdump stampa un’indicazione di ogni connessione TCP
1.3.2.9 p0f
http://www.stearns.org/p0f/
Tool per determinare il sistema operativo, usa sei campi per il riconoscimento: window
size, TTL, opzioni TCP come (MSS, DF, window scaling, sackOK e NOP). Analizza il
traffico tramite pacchetti SYN, può determinare la distanza dell’host remoto e può essere
usato come add-on ad un sistema IDS.
Supporta TCPdump e filtra le espressioni, ha un database personalizzabile per
incrementare il riconoscimento di altri OS.
Pagina 65 di 334
Testato su Linux 2.0/2.2, FreeBSD, OpenBSD, NetBSD, SunOS e Solaris
DD
(http://www.rajeevnet.com/hacks_hints/os_clone/os_cloning.html)
Man Page :
DD copia un file (per default dallo standard input allo standard output) con dimensioni
predeterminate per i blocchi d'input e di output, effettuando eventualmente delle conversioni
su di esso. Legge l'input un blocco alla volta, con la dimensione che è stata specificata per i
blocchi d'input (512 byte, per default). Se è presente l'opzione bs=byte, e non viene richiesta
nessuna conversione a parte sync, noerror o notrunc, scrive la quantità di dati letta (che
potrebbe essere minore di quella richiesta) in un blocco d'uscita separato. Questo blocco
d'uscita ha esattamente la stessa lunghezza di quello d'ingresso, a meno che venga
specificata l'opzione sync, nel qual caso vengono aggiunti NUL (o spazi, vedi sotto) alla
fine dei dati.
Altrimenti l'input, letto un blocco alla volta, è elaborato e l'output risultante viene raccolto e
scritto in blocchi della dimensione specificata. Il blocco finale di output potrebbe essere più
corto.
Le opzioni numeriche che seguono (byte e blocchi) possono essere seguite da un
moltiplicatore: k=1024, b=512, w=2, c=1 («w» e «c» sono estensioni GNU; «w» non
dovrebbe mai essere usata: significa 2 in System V e 4 in 4.2BSD). Si possono moltiplicare
due o più di queste espressioni mettendoci una «x» in mezzo.
È possibile importare le immagini create con dd nelle più recenti versioni di Encase.
Concetto di Base :
5
Si rammenta che tutte le operazioni di imaging, compresa la descrizione dei tools utilizzati per farlo, devono essere
documentate nel report, il quale deve altresì contenere l’indicazione della tipologia di tool utilizzato.
Pagina 66 di 334
‘dd’ esegue una copia bit a bit da una location a un’altra usando la sintassi:
dd if=<src> of=<dst>
dove, <src> e <dst> possono essere file, partizioni di file system o un intero hard drive.
‘dd’ non è un network program quindi per poter estendere le caratteristiche di dd a un
contesto di rete è possibile usare 'netcat'. Netcat è usato per effettuare connessioni
TCP/UDP a un server ed inoltre è un ottimo tool di diagnostica. Tipicamente Netcat lavora
in due modalità Server e Client:
Assumiamo che (sda) e (sdb) siano due drive presenti sullo stesso sistema. (sda) è il drive
contenente il Master OS e (sdb) è il drive (slave drive) sul quale volgiamo clonare sda.
La tabella delle partizioni di sda può essere così strutturata:
Device Boot Start End Blocks Id System
/dev/sda1 1 9 72261 83 HPFS/NTFS
/dev/sda2 10 75 530145 82 Linux swap
/dev/sda3 76 467 3148740 fd Linux raid
autodetect
/dev/sda4 468 2200 13920322+ 83 Linux
dd if=/dev/sda of=/dev/sdb
in questo modo verrà copiato ogni bit di sda (Master Drive) in sdb (Slave Drive) incluso
l’MBR (Master Boot record).
Nei casi in cui il drive Master superi i 100GB di dati, la generazione dell’immagine può
diventare molto lunga. Per analizzare le partizioni sda può risultare inutile eseguire
l’immagine dell’area di swap di Linux. In questi casi è possibile creare la stessa struttura di
partizionamento sul drive destinazione sdb e creare le immagini delle sole partizioni utili.
Esempio di partizionamento di sdb:
Le dimensioni delle partizioni di sdb devono essere identiche a quelle di sda. Per prima cosa
è necessario clonare l’MBR, nel caso di Linux esso può contenere il Bootloader che
consente di visualizzare la struttura delle partizioni e di scegliere quella da avviare. L’MBR
Pagina 67 di 334
è localizzato nei primi 466 Bytes del disco o della partizione, scelta durante l’installazione
di Linux. Il comando di copia dell’MBR:
DCFLDD
Hashwindow indica ogni quanti BYTE generare l’hash e Hashlog genera il FILE di testo
contenente i valori calcolati.
DD 3.16.2
http://users.erols.com/gmgarner/forensics/
Questa versione di DD modificata permette di generare l’immagine di qualsiasi dispositivo
connesso alla macchina, anche di singoli file o directory. Inoltre viene associato al file
creato il relativo codice di Hash (Md5). L’opzione –v (verbose) permette a DD di scrivere
le seguenti informazioni sullo stderr.
a. Versione del Tool.
b. Linea di comando .
c. Versione del Sistema operativo.
d. Tempo di partenza locale e UTC
e. Tempo di fine locale e UTC
f. User corrente
g. Identificatore del drive, numero di serie e sua geometria (se in input c’è un drive); o
Identificatore di Volume, numero di serie e sua geometria (se in input c’è un volume).
h. Il numero di byte scritti sull’output
i. Il valore di hash del file generato
j. Warnings o richieste generate dall’input allo user.
K Risposte date dallo user all’input.
Sono supportate le informazioni relative all’MBR(Master boot Record).
Pagina 68 di 334
Un input o output costituito da un volume o un file può essere protetto da scrittura usando
l’opzione –lockin, --lockout. Se il volume logico non può essere bloccato DD chiede
all’utente se desidera smontarlo, in caso affermativo tutti gli Handles dei file aperti saranno
marcati come non validi. Microsoft Windows fa uso frequente delle scritture ritardate per
migliorare le prestazioni, questo fatto può compromettere la consistenza dell’immagine
generata.
Questo fatto ha delle significative implicazioni nel momento in cui si esegue un’analisi
basata su Timeline, il Mac time ottenuto per mezzo della funzione ANSI stat() o Win32
GetFileAttributesEx () può non essere il corrente MAC time nel caso in cui il file sia stato
modificato ma scritto su disco in un secondo momento. È quindi utile utilizzare dispositivi
Hardware o Software che proteggono il volume logico da ogni uso.
Alcuni esempi di uso di DD 3.16.2:
dd.exe if=\\.\PhysicalDrive0 of=d:\images\PhysicalDrive0.img --md5sum --verifymd5
--md5out=d:\images\PhysicalDrive0.img.md5
dd if=\\?\Volume{87c34910-d826-11d4-987c-00a0b6741049} of=d:\images\e_drive.img –md5sum
–verifymd5 md5out=d:\images\PhysicalDrive0.img.md5
dd.exe if=\\.\PhysicalMemory of=d:\images\PhysicalMemory.img bs=4096 --md5sum --verifymd5 --
md5out=d:\images\PhysicalMemory.img.md5
dd.exe if=\\.\D: of=d:\images\d_drive.img conv=noerror --sparse --md5sum --verifymd5 –
md5out=d:\images\d_drive.img.md5 --log=d:\images\d_drive.log
dd.exe if=myfile.txt.gz of=d:\images\myfile.txt conv=noerror,decomp --md5sum --verifymd5 –
md5out=d:\images\myfile.txt.img.md5 --log=d:\images\myfile.txt.log
dd.exe if=\\.\D: of=d:\images\d_drive.img.gz conv=noerror,comp --md5sum --verifymd5 –
md5out=d:\images\d_drive.img.md5 --log=d:\images\d_drive.log
ENCASE
http://www.guidancesoftware.com/
Una volta avviato il sistema (boot sequence A,C…) con il comando en.exe si lancia
enacase.
Pagina 69 di 334
In Encase Dos Version sono presenti tutte le principali modalità di acquisizione, ATA
diretta (solo con dispositivi NON SCSI), parallela, in rete. È possibile inoltre generare
l’hash del disco da acquisire.
Encase Dos version è in grado di avviare un sistema e riconoscerne le schede di rete
installate permettendo all’utente di scegliere quale tra queste usare. L’interfaccia grafica
richiede di specificare se le NIC devono essere riconosciute in modo automatico o
specificate manualmente dall’utente. Il boot disk deve essere caricato su un target
Server/Pc/Laptop in modo da consentire a Encase di procedere con l’acquisizione.
È necessario impostare la modalità Sever sul Pc avviato in Dos mode.In tal modo la
versione Windows di Encase sarà in grado di vedere e utilizzare la connessione con il target.
Per iniziare l’acquisizione da Windows avviare Encase e selezionare la modalità Network.
6
Alla data di chiusura del presente paragrafo. Si consiglia comunque di consultare la HCL relativa allo strumento.
Pagina 70 di 334
• ACCTON EN1207D-TX/EN2242A Series • BusLogic MultiMaster
L’acquisizione via porta parallela si rende necessaria quando non siano possibili altri
metodi, tuttavia, anche se lenta, risulta essere sufficientemente sicura. Per poter realizzare
l’acquisizione è necessario spegnere il Pc sospetto e la Forensic Workstation, collegarli via
cavo parallelo, avviare il primo usando il disco di boot e digitare al prompt: A:\> EN /S ,
Pagina 71 di 334
tale direttiva lancia Encase Dos-mode e lo imposta in modalità server. Si avvia la
Workstation e si seleziona la modalità di acquisizione parallela nel menù acquisizione.
• V series
7
Si tenga presente che le informazioni generali su questi processi sono relative alla versione 3.22x del prodotto. Al
momento in cui si scrive si è a conoscenza di numerosi bug delle versione 4x che devono ancora essere risolti per poter
definire quest’ultima versione “stabile”. Si passerà quindi ad un’overview sulla 4 quando si avrà certezza della soluzione dei
problemi.
Pagina 72 di 334
• VII series
• M series
Per prima cosa è necessario impostare il Palmare in console-mode. Inserirlo nella base,
collegare il cavo e scrivere nell’area di scrittura del Palmare “graffiti area”: l (in corsivo)
seguito da due punti e poi 2.
8
Nel presente documento il Dump della Ram e la sua analisi, possono essere eseguiti come ulteriore raffinamento
dell’attività di ricerca. Il Dump della Memoria è qualcosa di relativamente difficile e ha bisogno di alcune circostanze
soggettive per andare a buon fine. Tuttavia è possibile utilizzarlo per collegare il suo output con altri dati acquisiti
all’interno della rete o del gruppo di sistemi compromessi.
Pagina 73 di 334
modo scorretto. Mediante le impostazioni di Startup and Recovery e possibile scegliere tre
modalità di dump:
• Complete memory dump
• Kernel memory dump
• Small memory dump (64 KB)
Complete memory dump scrive un file contente l’intero contenuto della memoria, se si sceglie
questa modalità è necessario disporre di uno spazio su disco pari ad almeno l’intera dimensione
della memoria fisica più un Mbyte. Di default il file viene scritto nella directory
%SystemRoot%\Memory.dmp. Ogni volta che si genera un dump il precedente viene sovrascritto.
Kernel memory Dump esegue il dump solo della memoria kernel, dei processi running in Kernel
Mode dei driver in Kernel Mode e la parte relativa all’Hardware Abstraction Layer (Hal).
Eventuale memoria non allocata o riservata a User mode non viene considerata. Ogni volta che si
genera un dump il precedente viene sovrascritto
Small memory dump registra solo informazioni utili a risalire alla causa del crash della
macchina
• Il cosiddetto “stop message” e relativi parametri
• La lista dei driver caricati
• Processor context (PRCB)
• Process information e kernel context (EPROCESS)
• Process information e kernel context (ETHREAD)
• Lo stack delle chiamate in Kernel-mode
Ogni volta che si genera un dump un nuovo file viene creato.
L’utilità di un dump per l’analisi Forense è quello di fotografare l’immagine della memoria senza
dover in alcun modo modificare lo stato della macchina. È quindi utile poter realizzare il dump in
qualsiasi momento. Abilitando la chiave di registro:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\i8042prt\Parameters\CrashOnCtrlScr
oll
E riavviato il sistema, si ha la possibilità di utilizzare una combinazione di tasti(Ctrl destr + 2
volte BloccScorr) atta alla generazione di un crash e quindi alla creazione del dump.
In genere, i metodi menzionati hanno delle limitazioni nell’ambito di una analisi Forense in
quanto la macchina target deve essere, se non precedentemente configurata, riavviata. La
applicabilità di queste operazioni deve essere analizzata nel contesto delle policy dell’azienda.
Se è necessario analizzare l’uso della memoria di programmi running in User Mode può essere
utile il tool Debugging Tools for Windows che permette la generazione del dump di porzioni della
Pagina 74 di 334
memoria riservate al processo. Un suo uso potrebbe essere quello di analizzare sospetti malicious
code.
1.3.4.2 PMDUMP
(Freeware for Win95, Win98, WinME, WinNT, Win2000, WinXP )
http://ntsecurity.nu/toolbox/pmdump/
Genera il Dump della Ram, relativamente a un processo ready, e scrive il contenuto su un file.
Sintassi:
pmdump <pid> <filename>
pmdump -l visualizza la lista di tutti i processi ready sulla macchina contraddistinti dal loro PID
1.3.4.3 DD 3.16.2
http://users.erols.com/gmgarner/forensics/
Il dump della memoria con questa versione di DD può essere fatto usando il comando :
dd.exe if=\\.\PhysicalMemory of=d:\images\PhysicalMemory.img bs=4096 --md5sum --verifymd5 --
md5out=d:\images\PhysicalMemory.img.md5
si raccomanda tuttavia di utilizzare l’ opzione conv=noerror nel caso in cui alcune regioni della
memoria non possano essere lette. DD inserirà degli 0 nel file generato in corrispondenza di
queste zone.
Pagina 75 di 334
1.4 Verifiche di configurazione e disponibilità sui sistemi di test e le reti
1.4.1 Configurazione dei sistemi di test, dei possibili target dell’esame forense e di analisi.
L’importanza di effettuare analisi e test con sistemi “puliti” e non compromessi è rivelata dalle
potenziali conseguenze che il mancato rispetto delle procedure di seguito trattate potrebbero
avere. Utilizzare sistemi ritenuti non affidabili e sicuri per effettuare test e analisi può esporre
questi sistemi a subire ulteriori danni. Inoltre, questo comportamento pregiudicherebbe
l’affidabilità dei risultati ottenuti. Come se ciò non bastasse, una Forensic Workstation (FW),
magari connessa in rete sulla quale è introdotto del malicious code, potrebbe informare l’intruso
dell’esecuzione in corso del test, con conseguenze variabili9. Spesso, inoltre, potrebbe essere
necessario effettuare un’analisi direttamente sulla macchina compromessa, addirittura quando
quest’ultima è ancora connessa alla rete10. Questo tipo di analisi è denominata Live System
Analysis.11
Il problema da affrontare è quindi quello di configurare la FW12 in modo tale da arginare
l’avvenuta contaminazione alle singole macchine oggetto dell’attacco, cercando di non rimanerne
vittima a propria volta.
Configurare adeguatamente una macchina dedicata a operazioni di test e analisi è una grande
responsabilità. Avere in dotazione una FW non significa solamente essere dotati di una macchina
estremamente potente e veloce. Una FW è una macchina potente ma dotata di un sistema
operativo robusto e sicuro, adattato e configurato alle singole circostanze e bisogni in modo tale
da garantire un elevato livello di sicurezza e invulnerabilità.
9
A tal fine si rammenta che una Forensic Workstation deve essere dotata di strumenti di protezione antivirale. Può essere
connessa in rete con altre stazioni di lavoro, ma non deve essere connessa con il resto della rete locale e/o con Internet.
10
Questo tipo di operazione si rende necessario quando il target dell’analisi non può essere disconnesso in quanto
l’operazione potrebbe impattare, a vario titolo, sulla produttività e sul business dell’ownerdi una particolare risorsa da
analizzare.
11
Il concetto di LSA è qualcosa di estremamente complesso ed ha come variabili i dispositivi su cui viene effettuata
l’analisi medesima. La prossima release del documento conterrà degli inserti sulla materia. I prospect members sono invitati
a contribuire.
12
Nel caso specifico, per FW si intende Forensic Workstation.
Pagina 76 di 334
A volte si rende necessario l’uso di una FW mobile ma il suo uso, più che altro per gli
elevatissimi costi e le scarse prestazioni raggiungibili, è sconsigliato nella maggior parte dei casi.
Un discorso particolare va effettuato per quello che riguarda la gestione e la manutenzione degli
Hard Disk. Un Hard Disk usato per effettuare indagini è sottoposto a molto stress, essendo i
dischi in continuo movimento. Per questo semplice motivo è consigliato sostituirli ogni due (al
massimo tre) indagini.
Un ulteriore aspetto da tenere in considerazione e quindi che merita di essere trattato, è
l’importanza che rivestono le informazioni su cui si indaga. La possibilità di combinare elementi
di un’indagine con informazioni relative ad altre, ci invita alla massima cautela ed al rispetto delle
best practices che rammentano l’importanza e la necessità di effettuare il wiping di ogni disco
come prima regola d’uso degli stessi in un’indagine. Il wiping più indicato segue le procedure
del Department of Defense americano avente come procedura la DOD 5220.22-M. Consiste in
un overwrite multiplo di un contenuto di uno stesso file. In questo caso, però, il principio di cui
sopra va seguito per tutto il disco. Una volta effettuato il processo di multiple overwriting,
conviene utilizzare uno strumento di verifica dell’effettiva cancellazione “di basso livello”, anche
un Norton Disk Edit va bene. Ecco come, anche nel caso del wiping, va effettuata una
validazione dei risultati ottenuti.
Pagina 77 di 334
variabili e non prevedibili a priori13. Si può trattare di codice che può portare a malfunzionamenti
del software stesso o a crash di sistema, oppure di cosiddetti spyware, se non di virus effettivi o
trojan, che possono attivare delle backdoor cioè abilitare servizi di rete su porte TCP non
convenzionali che permetterebbero di assumere il controllo della macchina stessa tramite accesso
remoto.
E’ quindi molto importante che si possa attuare una verifica sui software che si acquistano o che
si scaricano dalla rete. Per implementare un controllo di autenticità sono stati studiati alcuni
meccanismi di checksum o di apposizione di firme digitali. L’algoritmo per il calcolo di un
checksum denominato MD5 è diventato uno standard in questo senso. Va detto, a tal proposito,
che esistono dei paper scientifici che avvalorerebbero una potenziale (ed altrettanto teorica)
debolezza dell’MD5. Tuttavia va ricordato che l’utilizzo del suddetto algoritmo nelle operazioni
di forensics è “statico” cioè con pochi riscontri pratici14. Di seguito alcuni dettagli.
13
Inoltre l’uso di software non “licenziato” corre il rischio di creare delle questioni di nullità nel corso dell’eventuale
procedimento penale.
14
In pratica c’è poca interazione con l’esterno, per cui gli attacchi relativi non sono di fatto portabili a questa realtà
operativa.
Pagina 78 di 334
L’uso dell’MD5 in un indagine di forensic, in modo particolare, permette di verificare che le fonti
di prova raccolte non siano state modificate in seguito all’avvio dell’indagine.
1.4.1.5 Antivirus
Su ogni macchina adibita a test dovrebbe essere installato un antivirus efficace ed aggiornato
come illustrato in seguito.
1.4.1.7 Sniffer
Altri utili software dei quali si rende necessaria la presenza su una macchina di test sono quelli
appartenenti alla categoria degli sniffer, programmi che permettono di monitorare e intercettare il
traffico di rete.
Ogni messaggio spedito verso una macchina appartenente ad una rete viene ricevuto da tutte le
macchine facenti parte della stessa rete, ma è solo la macchina destinatario che verifica di essere
l’oggetto della comunicazione e riceve “effettivamente” il messaggio. Gli sniffer si incaricano di
leggere tutti i pacchetti che arrivano sull’interfaccia di rete della macchina sulla quale sono
installati e di tenerne traccia.
Se adottati per motivi amministrativi il loro uso è legale.Permettono infatti, una volta analizzati i
file di log da loro creati, di verificare eventuali attività di port scanning o, più in generale, di
acquisizione illecita di informazioni riservate.
Alcuni sniffer molto usati e conosciuti sono Ethereal, Etercap e TcpDump/WinDump. L’utilizzo
di questi strumenti è anche previsto nel caso in cui si sia optato per tenere collegata alla rete una
macchina probabilmente compromessa, al fine di osservare i comportamenti del suo stato attuale.
Pagina 79 di 334
system. Infatti, quello che interessa in un’indagine di forensic non sono i dati presenti ma quelli
che un intruso o un semplice utente malintenzionato potrebbero aver cancellato, nascosto o
contraffatto.
Alcuni tool che adempiono questo scopo sono DD, Ddrescue e Image MASSter Solo.
1.4.1.8.1 DD
DD è nato inizialmente come tool per la copia, la conversione e la formattazione di file testuali
UNIX, permettendo all’utente di convertire un file dal set di caratteri EBCDIC ad ASCII e
viceversa, trasformare caratteri maiuscoli in minuscoli e così via. DD mette a disposizione
dell’utente una lunga lista di opzioni attraverso le quali è possibile lavorare sui file. Lo sviluppo
della tecnologia forense ha immancabilmente portato DD a poter operare anche sui supporti di
memoria.
DD è una delle utilità nate su e per i sistemi *nix. In quanto tale ha i notevoli pregi di essere
installata su ognuno di essi e, come conseguenza diretta, di essere assolutamente gratuito. Per tali
motivi è uno dei tool più utilizzati per l’imaging e la copia bit-by-bit di ogni tipo di device a
blocchi (dischi, tape, supporti removibili).
DD, come molti altri tool *nix legge i dati in ingresso dal suo standard input e scrive i risultati sul
suo standard output. L’uso nel campo forense di DD prevede la copia fisica di un supporto di
memoria e la creazione di un file immagine attraverso un’appropriata linea di comando .
Poiché l’uso di questo potente tool non è certo semplice ed immediato, si vuole raccomandare,
per gli utenti meno esperti, una elevata dose di cautela. DD permette, infatti, di operare anche su
aree “speciali” dei dischi e dei file system.
L’uso di DD è particolarmente consigliato proprio per la sua potenza e per il largo successo
riscontrato presso la comunità di esaminatori forensi, successo che è simbolo di garanzia e di
affidabilità. Un esempio: DD permette, attraverso una linea di comando appropriata, di ottenere
direttamente sia l’immagine del disco che l’hash MD5 dell’immagine.
Per ulteriori informazioni sulle effettive capacità di DD e la visione di un approfondito test di
esse, si può fare riferimento al documento Setup and Test Procedures: dd (GNU fileutils)
4.0.36 Forensic Tests, scaricabile liberamente dal sito del NIST (http://www.cftt.nist.gov).
Pagina 80 di 334
non è facilmente accessibile, ad esempio i dischi alloggiati nei notebook, IMS permette
l’acquisizione anche tramite porta parallela. E’ inoltre dotato di un vano in grado di alloggiare sia
il disco master che il target, proteggendoli da potenziali disturbi elettromagnetici.
Un’ulteriore caratteristica che Image MASSter Solo fornisce ai suoi utenti e per i quali è molto
apprezzato è la capacità di effettuare il wiping di un disco target, in modo da assicurare che tutti i
dati presenti in precedenza siano stati definitivamente rimossi. Alcune versioni di IMS
permettono addirittura di effettuare un’acquisizione via rete e, tramite connessioni PCMCIA, di
clonare dischi SCSI e memorie FLASH.
Proprio per la sua semplicità e per le sue enormi possibilità operative, IMS è molto apprezzato ed
usato sia da tanti Forensic Analysts che da amministratori di reti15.
15
Una particolare menzione va fatta nei confronti di Open Data Duplicator. Il prodotto è stato terminato pochi mesi orsono
e sarà disponibile tra poco nell’ambito del progetto opensource denominato ODESSA – www.openforensics.org. ODD
consta di tre componenti. Il primo è un set di Linux boot disks, estrapolati dal progetto TRINUX, che consentono ad un
operatore di effettuare un boot da una macchina Intel, PPC, o Sparc in un ambiente trusted. Gli altri componenti sono
un’applicazione client/server utilizzate per copiare i contenuti di un file (o device) da una location ad un’altra, feature
generalmene usata per effettuare una copia di tipo bit-image o forensic copy di un dispositivo. Un’altra cosa interessante di
ODD riguarda il supporto dei trasferimenti file sia in locale sia in remoto sia via network. Inoltre sono previsti alcuni
plugin relativi alle attività più comuni di ricerca ed analsi forense.
Pagina 81 di 334
Se la password di determinati servizi “delicati”, o addirittura la password dell’utente
amministratore, è una parola di uso comune o ha una struttura molto semplice, può essere
scoperta in un tempo relativamente breve. E’ ad esempio sconsigliabile l’uso di nomi propri di
persone, città, oggetti, date di nascita o numeri di telefono e così via. Ancora peggio se si usasse
la password identica allo username. La soluzione ideale è l’uso di parole alfanumeriche,
contenenti caratteri speciali e mixed-case.
Una password robusta e facile da ricordare si può creare considerando il testo di una canzone o di
una poesia e prendendo le iniziali delle parole, sostituendo alcune di esse con numeri o caratteri
speciali graficamente simili (ad esempio S e $ con 5, e A con 4), aggiungendo un carattere
speciale e rendendo maiuscola una o due lettere. Ad esempio, considerando la frase “Ci sarò per
sempre // Nei tuoi occhi ovunque” si potrebbe ottenere la password c$p5nt0O!.
Molte volte la precauzione di costruire una password complessa può essere resa vana dall’utilizzo
di questa in applicazioni che fanno uso di meccanismi di autenticazione in chiaro, quali ftp, telnet,
pop3, che non garantiscono alcun tipo di protezione e crittografia. Eventuali attaccanti potrebbero
intercettare, tramite sniffing, delle password ed è per questo motivo che sono nate applicazioni
che proteggono le comunicazioni facendo uso di tecniche di crittografia.
Pagina 82 di 334
Come è facile intuire, una comunicazione attraverso ssh avviene più lentamente rispetto ad una
comunicazione non crittografata. La velocità della comunicazione dipende dall'algoritmo di
crittografia utilizzato. Nel file README.CIPHERS, presente nella distribuzione standard di ssh,
vengono elencate le prestazioni di ogni singolo algoritmo rispetto all'algoritmo "None" (nessuna
crittografia) che viene quindi fissato come riferimento.
Il CERT16 ha pubblicato un bollettino di sicurezza in cui avverte della presenza di alcune gravi
vulnerabilità presenti in alcune implementazioni del diffuso protocollo Secure Shell (SSH).
Le falle, scoperte in alcuni noti prodotti basati su SSH, potrebbero consentire ad un aggressore di
eseguire da remoto del codice a sua scelta con gli stessi privilegi del processo SSH. Nel caso
meno grave, un malintenzionato potrebbe invece dare origine a degli attacchi denial of service.
Il CERT spiega che le vulnerabilità, tutte del tipo "buffer overflow", affliggono sia i client che i
server SSH e possono essere sfruttate senza necessità per l'eventuale aggressore di autenticarsi sul
sistema.
Un ulteriore problema di sicurezza concerne l’immissione delle password, infatti, se se il campo
per immettere la password viene lasciato vuoto e viene premuto invio, SSH permetterà a chiunque
l'accesso alla macchina. Per ovviare a questo bug la compagnia ha rilasciato una patch, la
versione 3.0.1, che risolve questo problema.
Secondo gli operatori del settore la cosa grave è nel fatto che su molte piattaforme (come
Windows e Unix), i server SSH girano spesso con i massimi privilegi (system o root).
OpenSSH, SecureCRT e LSH risultano immuni ai problemi qui riportati, invece, tra i molti
software vulnerabili troviamo F-Secure fino alla versione 3.1.0 per UNIX e fino alla versione 5.2
per Windows, le versioni di SSH fino alla 3.2.2 per Windows e UNIX, Putty fino alla versione
0.53, WinSCP fino alla 2.0.0, e altri di minor diffusione.
Le possibili soluzioni da attuare al fine di proteggere i sistemi consistono nell’installare patch o
upgrade e imporre restrizioni all’accesso.
Per quanto concerne questo ultimo aspetto, è utile limitare l’accesso a SSH server ai soli hosts
“trusted” e a quelle reti che utilizzano dei firewall o altri sistemi di filtraggio dei pacchetti.
Alcuni SSH servers possono avere la capacità di restringere l’accesso basandosi sugli indirizzi Ip.
Effetti simili possono essere realizzati utilizzando TCP wrappers o altre tecnologie similari. (SSH
client può ridurre il rischio di attacchi connettendosi solo a servers “trusted”).
Queste soluzioni non permettono di annullare ogni possibile attacco, ma rendono più difficoltosa
la realizzazione degli stessi.
16
Viene menzionata la specifica circostanza in quanto molte delle piattaforme ivi citate sono in produzione.
Pagina 83 di 334
alle comunicazioni sul WWW, e come SSL (Secure Socket Layer) che invece è più rigido ma più
generale, nel senso che offre sicurezza anche per altri protocolli di livello applicazione. Dato che
la fiducia è ciò che supporta gli operatori, sempre più numerosi, che decidono di sviluppare il
commercio elettronico usando Internet come mezzo di comunicazione, ne consegue che
rinforzare la sicurezza e ridurre le esposizioni ai rischi sono la migliore scelta possibile.
SSL è un protocollo a livelli che deve interfacciarsi a livello più basso con un livello di trasporto
affidabile come il TCP ed a livello superiore con un protocollo applicazione, per esempio HTTP,
FTP, Telnet etc.; SHTTP aggiunge sicurezza ai messaggi HTTP. Ognuno di questi protocolli può
esistere su un sistema indipendemente dalla presenza dell'altro.
Sebbene in principio si pensasse che l'uso di SSL escludesse altri provvedimenti come SHTTP,
non è così; anzi è bene ribadire che i due protocolli SSL e SHTTP non sono mutuamente
esclusivi, piuttosto possono facilmente coesistere in modo complementare interfacciando SHTTP
su SSL.
Secure Socket Layer è un protocollo che garantisce la privacy delle comunicazioni su Internet;
esso permette infatti alle applicazioni client/server di comunicare in modo da prevenire le
intrusioni, le manomissioni e le falsificazioni dei messaggi. Il suo scopo primario è quindi quello
di fornire riserbo ed affidabilità alle comunicazioni.
Il protocollo SSL provvede alla sicurezza del collegamento garantendo tre funzionalità
fondamentali:
• Privatezza del collegamento.
La crittografia è usata dopo un hand shake iniziale per definire una chiave segreta. Per
crittografare i dati è usata la crittografia simmetrica (e.g. DES, RC4, etc.).
• Autenticazione.
L'identità nelle connessioni può essere autenticata usando la crittografia asimmetrica, o a
chiave pubblica (per es. RSA, DSS, etc.). I clients, in tal modo, sono sicuri di comunicare
con il corretto server, prevenendo ogni interposizione. E' prevista la certificazione sia del
server che del client.
• Affidabilità.
Il livello di trasporto include un check dell'integrità del messaggio basato su un apposito
MAC (Message Authentication Code) che utilizza funzioni hash sicure (e.g. SHA, MD5,
etc.). In tal modo si verifica che i dati spediti tra client e server non siano stati alterati
durante la trasmissione.
SSL esamina esplicitamente un numero di attacchi, incluso l'attacco forza bruta, crittoanalisi,
replay e “man in the middle”. E’ progettato per agire a livello di rete: ciò significa che non
protegge da attacchi agli host, per i quali sarebbe consigliabile proteggersi con un package del
tipo Tripwire. I Tripwire usano funzioni hash sicure per assicurare che i documenti non siano
cambiati rispetto ad una versione di riferimento protetta in scrittura.
L'uso dell'algoritmo RC4 con chiavi di 40 bits può portare problemi; sicuramente può quindi
essere reso vano da organizzazioni governative o criminali in modo relativamente semplice.
Tuttavia la scelta di RC4 è obbligata dalla legge USA sull'esportazione degli algoritmi di
crittografia, anche se ultimamente vi sono delle deroghe.
Pagina 84 di 334
Ci sono diversi punti di SSL che, pur non essendo critici, potrebbero offrire ulteriore sicurezza.
Ad esempio nel protocollo SSL Hand shake alcuni dati spediti con il messaggio CLIENT HELLO
potrebbero essere spediti in un secondo momento, crittografati. Nel protocollo SSL Record, un
errato MAC non dovrebbe far terminare la connessione ma causare una richiesta di ripetizione del
messaggio: infatti ci sono pochi attacchi che possono trarre vantaggio dalla duplice spedizione di
dati, mentre terminando la connessione si apre la strada agli attacchi basati sul servizio negato;
inoltre i numeri di sequenza dovrebbero essere generati in modo casuale invece che
ordinatamente.
E' importante notare, tuttavia, che questo approccio alla problematica della sicurezza sembra
concepito in modo da permettere facili aggiornamenti ed il supporto a nuovi algoritmi di
crittografia, senza stravolgere la struttura di SSL.
Le falle in SSL consistono in quattro buffer overflow (tre contenuti nei processi di hand shake di
SSLv2 e SSLv3 e uno contenuto nel codice per la rappresentazione ASCII degli interi) e in un
bug nelle routine di codifica del parser ASN.1. L'ultima delle vulnerabilità, la meno grave, può
essere sfruttata solo per attacchi di tipo DoS.
I buffer overflow interessano tutte le versioni di OpenSSL più recenti della 0.9.6.e o, per quanto
riguarda le pre-release, più recenti della 0.9.7-beta3. I server che adottano la versione 0.9.6d su
sistemi a 32 bit con SSL 2.0 disabilitato non sono invece vulnerabili. Il bug nella codifica ASN.1
riguarda invece tutti i programmi OpenSSL che si avvalgono della libreria ASN.1 per analizzare i
dati untrusted, fra cui le varie implementazioni dei protocolli SSL, TLS, S/MIME e PKCS#7.
Secure HyperText Transfer Protocol, che è un estensione dell' HyperText Transfer Protocol
(HTTP), protocollo di base del World Wide Web. S-HTTP è stato progettato per realizzare
connessioni HTTP sicure. S-HTTP fornisce servizi sicuri applicabili per:
• transazioni confidenziali;
• autenticazione e integrità dei dati;
• non ripudiabilità dell'originale.
Il protocollo lascia massima flessibilità nella scelta dei meccanismi di gestione della chiave,
politiche di sicurezza e algoritmi di crittografia e supporta opzioni di negoziazione fra le parti per
ogni transazione. Non è richiesta la chiave pubblica per il client. SHTTP contiene HTTP, poiché
permette ai messaggi di essere incapsulati in vari modi. L'incapsulazione può essere ricorsiva e il
messaggio può subire diverse trasformazioni. SHTTP fornisce inoltre linee di testa per funzioni di
gestione amministrativa come trasferimento delle chiavi e dei certificati.
Le debolezze dell'SHTTP sono simili a quelle dell' SSL, anche se la natura più generica
dell'SHTTP lo rende più resistente nei confronti di eventuali attacchi.
Il modo di operare dell'SHTTP, con gli attributi di default, lo rende più resistente nei confronti di
attacchi replicati, analisi del testo cifrato e al problema “dell'uomo nel mezzo”, anche perché le
opzioni possono essere rinegoziate.
SHTTP presenta anche dei punti deboli. L'uso dello scambio di chiave in banda, ad esempio, può
diventare un problema, se il trasferimento non avviene con le dovute cautele. Inoltre la flessibilità
dell'SHTTP permette di non cifrare tutto e una persona poco esperta di sicurezza e crittografia
potrebbe non attuare tutte le protezioni necessarie alle sue informazioni, mentre SSL opera
secondo una politica di cifrare tutte le informazioni così da assicurarsi tutta la sicurezza possibile.
Pagina 85 di 334
1.4.2.5 Antivirus
Sicuramente su ogni macchina dovrà essere installato un sistema di prevenzione da attacchi
provenienti da virus conosciuti. Esistono molti software antivirus in circolazione, pertanto la
scelta dovrebbe ricadere su quei software che propongono costanti aggiornamenti e codice
robusto e sicuro.
Le case produttrici di antivirus permettono di effettuare online il download degli aggiornamenti,
consentendo all’utente di eseguirlo quando lo ritiene più opportuno. Nuovi virus e trojan nascono
e muoiono ad un ritmo elevato e pertanto si consiglia di effettuare l’aggiornamento almeno una
volta alla settimana.
1.4.2.6 Firewall
E’ indispensabile che una qualunque LAN connessa ad Internet (o, in generale, a reti), sia dotata
di firewall. Questi non è altro che un sistema, o insieme di sistemi, che supportano e
implementano una politica di controllo degli accessi filtrando il traffico di rete diretto alle risorse
di una organizzazione. Il suo “compito” è quello di ridurre il traffico, eliminando quello
indesiderato, rendere difficile l’acquisizione di informazioni e non permettere l’uso delle risorse
protette da utenti non autorizzati. Ovviamente il firewall, affinché svolga la sua funzione, deve
essere configurato in modo corretto e deve essere provvisto di politiche d’uso (tecnologie)
adeguate.
1.4.2.7 Configurazione
Questa è una delle tipiche configurazioni di rete in presenza di un firewall. In questo modo
vengono definite tre reti distinte ed evidenziate interazioni tra:
• Internet - Rete DMZ;
• Rete DMZ – Internet;
Pagina 86 di 334
• Connessione diretta Internet – Rete Interna.
La configurazione, quindi, deve essere realizzata in modo tale da permettere che:
• gli indirizzi IP delle macchine non siano direttamente visibili da Internet;
• solo i componenti esterni al firewall (es. Border Router) siano direttamente accedibili;
• solo i componenti della rete DMZ siano accedibili da Internet (attraverso comunicazioni
filtrate dalla presenza del firewall);
• solo i componenti della rete DMZ possano accedere alla rete interna con connessioni sempre
filtrate dalle politiche implementate dal firewall.
Una struttura di questo tipo consente di realizzare una separazione in zone di differente grado di
sicurezza nella architettura di rete dell’organizzazione. In tal modo è possibile accedere solo ad
una parte della nostra rete tramite Internet e quindi proteggere i dati critici.
Pagina 87 di 334
1.4.2.9 Vulnerabilità e possibili contromisure
La maggior parte degli attacchi riusciti ai danni dei sistemi operativi deriva da un numero
estremamente elevato di vulnerabilità software. Ciò si deve al fatto che coloro che effettuano gli
attacchi agiscono in modo opportunistico, ovvero scelgono la strada più semplice e comoda,
sfruttando le vulnerabilità più conosciute e impiegando gli strumenti di aggressione più efficaci e
diffusi. Contano sul fatto che le aziende spesso non pongono rimedio ai problemi e quindi spesso
conducono attacchi indiscriminati, scegliendo gli obiettivi dai risultati di una serie di scansioni in
Internet per rilevare i sistemi vulnerabili.
La compromissione dei sistemi del Pentagono a seguito dell’episodio di hacking Solar Sunrise e
la facile e rapida diffusione dei worm Code Red, NIMDA e Slammer, per fornire solo alcuni
esempi, possono essere facilmente collegate allo sfruttamento di alcune vulnerabilità per le quali
non sono state tempestivamente applicate le opportune correzioni.
Due anni fa, il SANS Institute e il National Infrastructure Protection Center (NIPC) pubblicarono
un documento che elencava le dieci vulnerabilità più critiche per la sicurezza in Internet. Da
allora migliaia di organizzazioni hanno utilizzato quella lista, e la sua evoluzione a venti
vulnerabilità diffusa un anno dopo, come guida per risolvere rapidamente i buchi di sicurezza più
pericolosi. Le vulnerabilità che hanno favorito i tre esempi riportati sopra - l’episodio Solar
Sunrise del Pentagon e i worm Code Red e NIMDA - sono riportate su quella lista.
Questa nuova versione delle “Venti Vulnerabilità più critiche” è in effetti costituita da due liste di
dieci: i dieci servizi di Windows le cui vulnerabilità sono più frequentemente sfruttate e i dieci
servizi di Unix le cui vulnerabilità sono utilizzate più spesso per condurre un attacco.
Sebbene vi siano migliaia di episodi di violazione della sicurezza che ogni anno colpiscono questi
sistemi operativi, la stragrande maggioranza degli attacchi portati a termine sono diretti verso
uno o più di questi servizi.
L’elenco completo, ordinato per servizi, delle vulnerabilità più diffuse e le rispettive istruzioni
dettagliate utili per correggere i problemi di sicurezza, si trovano all’indirizzo Internet
www.sans.org/top20.htm .
Di seguito riportiamo alcune delle vulnerabilità prese da tale elenco.
Pagina 88 di 334
• utilizzare sottoreti dedicate;
• utilizzare comunicazioni e protocolli ridotti al minimo indispensabile;
• utilizzare politiche di autorizzazioni stringenti per qualunque connessioni tra un web
server e una qualunque altra macchina della rete;
• utilizzare meccanismi di monitoraggio e di rilevazione degli attacchi (analizzatori di log,
intrusion detection system…) ;
• limitare al minimo le porte applicative disponibili;
• evitare l’uso di servizi altamente a rischio;
• non far convivere sulla stessa macchina servizi con grado di rischio molto diverso;
• evitare meccanismi di controllo remoto se non ben collaudati;
• evitare le ultime release di sistemi non maturi.
1.4.2.13 DataBase
I database contengono le informazioni più critiche, sensibili e di valore di una organizzazione.
Solitamente vengono installati su macchine che non operano da web server, ma da questi acceduti
(direttamente o meno).
Le possibili contromisure sono:
Pagina 89 di 334
• mai permettere un accesso diretto al database via Internet;
• evitare l’accesso al database direttamente da un Web Server (via cgi, servlet, etc.);
• utilizzare meccanismi di replica dei dati per isolare ulteriormente i database master;
• limitare al minimo il numero degli accessi degli operatori interni di una organizzazione;
• non permettere a tali operatori di accedere con privilegi superiori a quanto sarebbe
necessario e sufficiente.
1.4.2.15 BIND
Spesso, questo servizio, è attivo su macchine che non operano da DNS ed è poco protetto. Una
volta compromesso viene utilizzato per ulteriori attacchi o per fornire false informazioni.
Le contromisure possibili sono:
• disabilitare il servizio (named) se non utilizzato impedendo di lasciare la macchina
esposta ad attacchi;
• installare patch ed eseguirlo come utente non privilegiato;
• limitare al minimo le funzionalità (es. Zone transfer) e le informazioni (es. Version
String);
• monitorare le attività di rete dei DNS pubblici.
Pagina 91 di 334
• installare patch;
• progettare l’architettura di rete e la dislocazione dei server in modo tale da confinare gli
effetti di una intrusione.
MD5_Init(...);
MD5_Update(...);
...
MD5_Update(...);
MD5_Final(...);
Le funzioni sono:
- void MD5_Init( MD5_CTX *c); /* per inizializzare la struttura MD5_CTX */
- void MD5_Update( MD5_CTX *c;
unsigned char *data;
unsigned long len);
/* per aggiornare il “message digest context” che viene generato con 'len' byte dal
puntatore ai 'data'. Il numero di byte può essere di qualsiasi lunghezza*/
/* funzione chiamata quando si vuole un’ “impronta” dei dati di MD5_Update, la quale è
messa nel ‘md’ array ed è lunga 16 bytes */
1.4.3.4 Creazione di alcuni semplici file e utilizzo di MD5 per calcolare il checksum
crittografico basato sui loro contenuti
http://www.cert.org/security-improvement/implementations/i002.01.html
Creazione del file e visualizzazione del contenuto:
$ md5 example_1
MD5 (example_1) = bea8252ff4e80f41719ea13cdf007273
Copia del file, utilizzo del comando UNIX diff per vedere che non ci sono differenze visibili di
contenuto tra il file e la copia, e verifica che non ci sono differenze confrontando l’MD5
checksum dei due file:
$ cp example_1 example_2
$ diff example_1 example_2
$ md5 example_1 example_2
MD5 (example_1) = bea8252ff4e80f41719ea13cdf007273
MD5 (example_2) = bea8252ff4e80f41719ea13cdf007273
Apportando un piccolo cambiamento a uno dei due file, in questo caso una nuova linea di spazio,
si nota che l’MD5 checksum del file modificato cambia significativamente:
Pagina 94 di 334
1.4.3.6 Implementazioni
C
• implementazione originale del professor Rivest inclusa nell’appendice del
rfc1321 ,disponibile anche in tarred & gzipped form
• L. Peter Deutsch: MD5 in C
• Colin Plumb, Branko Lankester, Ian Jackson, Galen Hazelwood: md5sum
C++
• tarred & gzipped form versione 1.02.
Delphi
• supporto MD5 in una collezione di componenti Delphi
Javascript
• creata da Paul Johnston (GPL)
Miva
• Petr Kutil e Ivo Truxa
Perl5
• modulo Perl creato da Neil Winton, questa Perl Exstension richiede compilazione
aggiuntiva
PHP
• http://www.php.net/manual/en/function.md5.php
Windows/Visual Basic
• Francisco Carlos Piragibe de Almeida has created a DLL with a BAS wrapper
module for use in VB projects (19K download)
e an ActiveX in-process server wrapper around the original DLL (includes the
DLL) (1394K download)
1.4.3.7 md5deep
http://md5deep.sourceforge.net/
MD5deep, scritto da Jesse Kornblum, è un programma cross-platform per calcolare l’md5 su un
numero arbitrario di file; funziona su Windows, Linux, FreeBSD, OS X, Solaris, e dovrebbe
funzionare sulla maggior parte delle altre piattaforme.
Simile al programma md5sum che si trova nel pacchetto di GNU Coreutils, ha le seguenti
caratteristiche supplementari:
Pagina 95 di 334
• funzionamento ricorsivo: md5deep esamina ricorsivamente un’intera directory, calcola
cioè l’md5 per ogni file in una directory e per ogni file in ogni sottodirectory;
• stima del tempo quando processa file molto grossi;
• modalità confronto: md5deep può accettare una lista di hashes conosciuti e confrontarla
con un set di input file. Il programma può visualizzare sia gli input file che “matchano”
con gli hashes conosciuti o quelli che non “matchano”.
$ md5deep -r /etc
ea2ffefe1a1afb7042be04cd52f611a6 /etc/host.conf
25fd7a8a9ec4794960ef198a60f66d22 /etc/hosts.allow
70c943a610198717c827d27356a79ec6 /etc/hosts.deny
d41d8cd98f00b204e9800998ecf8427e /etc/motd
d36bb294cf19a21eb353b103d29f5375 /etc/passwd
30eeb9e940c0c743682da53e41defb15 /etc/skel/.kde/Autostart/Autorun.desktop
68d9a46c4ec07ac828458815d4b3cfad /etc/skel/.kde/Autostart/.directory
d19bbbed9d713f97f487b9ed9ec3f62f /etc/skel/.bash_logout
c03dade4bb0152c9d0b6d871b4c082f4 /etc/skel/.bash_profile
Download
Ultima versione rilasciata il 14 Marzo 2003:
Pagina 96 di 334
L'uso di questo checksum non è raccomandato in quanto un assalitore che usa un attacco
plaintext probabilistico sarebbe capace di generare un messaggio alternativo che soddisfa il
checksum.
Probabilità che due file abbiano lo stesso CRC32 è di 1 su 2^32, cioè 1 su 4 miliardi.
MD5 progettato per rilevare delle modifiche (128-bit checksum), ha caratteristiche più robuste
legate alla sicurezza.
Infatti le stesse tecniche utilizzate per la generazione delle collisioni sull’MD4, nell’MD5
impiegano tempi maggiori dell’ordine di 600 volte.
Commento al pdf:
http://notablecases.vaed.uscourts.gov/1:01-cr-00455/docs/68089/0.pdf
Formule hash e metodi “running” hash in uso nella computer forensics community:
Cyclical Redundancy Checksum (CRC), Secure Hash Algorithm Version 1 (SHA-1), e il Message
Digest Sum, Version 5 (MD5).
Prima di effettuare qualunque analisi è necessario creare sempre un’etichetta hash MD5 per ogni
nuova immagine delle prove, essenziale per garantire che queste non vengano alterate nel corso
dell’indagine (tampering) e che l’intero lavoro non sia invalidato per un cavillo legale legato a
una defezione.
Pagina 97 di 334
Una volta generato il valore di hash lo si salva su un file di testo che può contenere più valori
relativi a più file (HASH SET)
Quando si mettono a verbale le acquisizione on site è consigliabile allegare il suddetto file di
testo.
Pagina 98 di 334
1.4.4 Live system analysis
Quando un sistema viene compromesso, si aprono due possibili scenari completamente differenti
l’uno dall’altro che costringono il Forensic Analyst a utilizzare tecniche diverse per effettuare
un’indagine corretta.
Primo scenario: l’amministratore del sistema “vittima” può non essersi accorto in tempo utile
dell’avvenuta intrusione e può aver eseguito sulla macchina operazioni di ordinaria
amministrazione le quali, per loro natura, alterano le fonti di prova.
Secondo scenario: l’amministratore (in altre parti si è visto come ciò sia possibile) ha
immediatamente rilevato qualcosa che non andava nel sistema, fermato l’intruso, eventualmente
rintracciandolo, e denunciato l’incidente, lasciando nelle mani degli investigatori la macchina,
nelle stesse condizioni in cui si trovava durante l’attacco.
Una delle operazioni di amministrazione che altera le fonti di prova è, ad esempio, la
deframmentazione del file system, che rende inutile ricercare dati utili nello slack space; anche
procedere con il reboot della macchina ostacola un’indagine, perché vanifica la possibilità di
trovare informazioni nella memoria RAM del sistema, cancellatasi durante l’operazione, e che si
sarebbero rivelate vitali ai fini della ricostruzione delle operazioni eseguite dall’hacker.
Il secondo scenario si può estendere a tutte quelle situazioni nelle quali la malcapitata vittima
necessita che il suo sistema sia sempre attivo. E’ questo il caso di tutte quelle macchine (firewall,
router, proxy, DHCP e Web server ecc.) che forniscono un servizio che si presuppone sia sempre
disponibile, a meno di speciali opere di manutenzione.
Le best practices prevedono, tra le altre cose, la necessità di disconnettere dalla rete di
appartenenza la macchina che ha subito l’intrusione. Questa tecnica, come già trattato, permette
di salvaguardare da ulteriori attacchi altri sistemi vulnerabili. Ma, per le ragioni menzionate poco
sopra, questa tecnica può venire in contrasto con le necessità dei denuncianti o con le Incident
Response Policies dell’azienda attaccata. In questi casi i sistemi, oltre che rimanere accesi per
salvaguardare le prove, devono anche rimanere connessi alla rete. Un’indagine svolta in queste
particolari condizioni viene distinta con il nome Live System Analysis.
Sebbene a prima vista possa sembrare concettualmente più complessa, un’indagine di questo tipo
non presenta particolari differenze rispetto alle altre. In tali circostanze, però, oltre che di una
grande dose di esperienza nel settore si ha bisogno di un buon piano operativo e di saper prestare
molta attenzione ai particolari. Non bisogna dare per scontato tutto quello che può apparire
ovvio. Eseguire un comando prima di essersi cautelati sulle possibili conseguenze potrebbe
rivelarsi fatale in sede di giudizio o, addirittura, cancellare alcune prove prima che si venga a
conoscenza della loro presenza.
Prima di iniziare l’indagine bisogna quindi ricordarsi di non riavviare la macchina né di accedere
ad essa dalla rete, ma solo da console. E’ importante inoltre registrare tutta la console session
(con videocamera o con strumenti appositi messi a disposizione dai terminali) e prendere nota
molto spesso dell’ora, ponendo attenzione alla differenza tra orario reale e orario della macchina
e documentando eventuali differenze significative.
Se il sistema compromesso è un router, bisogna inoltre documentarsi della caratteristiche
architetturali e software di tale macchina (memoria Flash o RAM, Startup configuration o
Running Configuration, presenza di tabelle dinamiche ecc.)
Pagina 99 di 334
Una volta prese queste precauzioni bisogna seguire attentamente una predeterminata scaletta che,
come prima cosa, prevederà la registrazione delle volatile information, ovvero tutte quelle
informazioni volatili (coincidenti con la memoria RAM) che in caso di spegnimento, accidentale
o voluto, andrebbero perdute e sulle quali si andrà ad indagare ancora prima di tutte le
informazioni persistenti (memorie di massa).
Registrati questi dati, non eseguire mai comandi di configurazione. Tali programmi non fanno
altro che alterare le condizioni della macchina al momento dell’intrusione e sono proprio i dati
sui quali viene posta l’attenzione degli addetti all’indagine.
Gli unici binari che possono essere eseguiti sono quelli distribuiti attraverso dei CD-ROM, per i
quali si è quindi a conoscenza dell’effettiva autenticità. E’ possibile crearsi dei propri CD,
riempiendoli di tutti quei software che, a propria discrezione, possono risultare utili durante
un’indagine o per il ripristino di un sistema. Esistono anche molti progetti, tra i quali figura anche
F.I.R.E. (http://fire.dmzs.com), prodotto dal quale è derivato anche il CD-ROM che accompagna
questo documento, che hanno il particolare merito di essere bootable. Dopo aver effettuato tutte
le acquisizioni e aver preso ogni precauzione possibile, l’uso di tali CD permette di poter
riavviare la macchina in laboratorio, in totale sicurezza. Oltre a tools originali e precompilati, tali
CD-ROM sono dotati di un sistema operativo sicuro e “pulito” avviabile direttamente da CD in
fase di boot. Riavviare la macchina compromessa con questo metodo permette di operare in un
ambiente protetto e di poter agire sulla macchina con i propri software di indagine preferiti senza
alterare la macchina.
Tali CD possono contenere, ad esempio, degli sniffer (tcpdump, Ethereal), antivirus, IDS (Snort),
software per la ricerca di rootkits nel sistema (Chkrootkit), intere collezioni di software
appositamente creati per effettuare indagini (TCT). Alcuni di questi strumenti, il loro uso, le
particolarità o la loro configurazione, sono stati descritti in questo documento.
La LSA è una delle forme più avanzate di indagine forense. Mentre la maggior parte delle
indagini viene svolta offline, in modalità Post Mortem, la LSA è usata in modo meno frequente,
particolarmente quando gli attacchi avvengono contro router. In ogni caso, qualsiasi scenario si
debba affrontare, valgono alcune semplici regole che richiedono stretta collaborazione tra
amministratori e investigatori: esse prevedono il raccoglimento di prove autentiche e
immodificabili e, soprattutto, l’effettiva riproducibilità di qualsiasi azione prodotta.
Nel paragrafo “Verifica della disponibilità di media adeguati per i backup ed il ripristino dei sistemi”
sono state descritte le problematiche relative ai backup e alla realizzazione delle immagini dei dischi
dei sistemi compromessi, e nel paragrafo “Verifiche di configurazione e disponibilità sui sistemi di test
e le reti” è stata descritta la configurazione HW/SW di una forensic workstation ideale.
2.1.1.1 Generalità
Il problema dell’isolamento del sistema compromesso comprende molteplici aspetti. Il primo
risale ancora al momento nel quale ci si accorge che è stato perpetrato un attacco e lo staff
operativo si domanda quale è l’operazione migliore da farsi.
L’azione corrispondente dipende dall’analisi di alcuni fattori: il tipo di sistema, il tipo di
macchina, l’importanza dei dati contenuti in essa, i collegamenti in rete, gli ultimi backup
effettuati, le necessità di rispettare i livelli di servizio. Tutti questi elementi devono essere
analizzati in un tempo molto breve al fine di decidere le azioni che dovranno portare ad effettuare
l’analisi di forensics. Non in tutte le situazioni è possibile isolare immediatamente il sistema ed
effettuare le azioni successive che fotograferanno il sistema compromesso senza che azioni
esterne modifichino i contenuti delle aree di memoria volatile e persistente. In alcuni casi
esigenze di servizio e policy aziendali impediscono di scollegare i sistemi dalla rete, oppure i data
base in essi contenuti devono continuamente essere aggiornati: queste situazioni risultano essere
particolarmente delicate e ogni azione asservita all’analisi di forensics deve essere accuratamente
valutata e documentata.
In condizioni ottimali, ovvero laddove non si presentino particolari problemi legati al
mantenimento del servizio, l’isolamento del sistema comprende innanzitutto un isolamento fisico
dell’area nella quale è contenuta la macchina nei confronti di persone estranee alle operazioni da
effettuare, al fine di proteggere l’integrità della scena e i supporti magnetici.
A nessuno, salvo il personale incaricato delle procedure di incident response, deve essere
permesso di effettuare operazioni sulla macchina compromessa: il rischio è la perdita di preziose
informazioni causate da comandi, anche banali e apparentemente inoffensivi, che possono
modificare “la scena” all’interno delle memorie e dei log della macchina e la conseguente
inammissibilità delle prove in ambito giudiziale.
Una delle più difficili decisioni da prendere è quella riguardante lo spegnimento di un sistema in
modo che l’integrità dei file non venga compromessa. Nella maggior parte dei casi il tipo di
sistema operativo installato è il discriminante rispetto a come effettuare lo spegnimento del
computer. Con alcuni di questi, il metodo preferibile è quello di schiacciare il pulsante di
spegnimento; con altri sistemi questa brusca operazione potrebbe portare ad un crash dell’hard
disk. Inoltre potenziali dati rilevanti ai fini delle indagini potrebbero risiedere, come già detto in
precedenza, in aree di memoria che contengono slack file, erased file, Windows swap file , ecc.,
UNIX/Linux
• Fotografare lo schermo e documentare i programmi che
sono attivi
Mac
• Fotografare lo schermo e documentare i programmi che
sono attivi
• Cliccare Special
• Cliccare Shutdown
Windows
• Fotografare lo schermo e documentare i programmi che
3.X/95/98/NT/2000/XP
sono attivi
Possiamo ridirigere l’output di questo comando in un file per un utilizzo successivo mediante il
seguente comando
fdisk –l /dev/hdx > fdisk.disk1
Si può osservare che il nome del file di output (fdisk.disk1) è completamente arbitrario e non ci
sono regole per quanto riguarda l’estensione; si consiglia però di adottare una convenzione e di
documentarla. Si può notare anche che, poiché non si è definito un percorso esplicito per il nome
del file, fdisk.disk1 sarà creato nella directory corrente (per esempio, /root/evidence).
Il secondo tool che si considera può definirsi come un tool grafico e si chiama cfdisk. Questo tool
svolge le stesse funzioni di fdisk, ma è più user friendly avendo delle funzionalità di navigazione
attraverso menu, permettendo inoltre modifiche al partizionamento:
cfdisk/dev/hdx
È opportuno ricordare che benché cfdisk sia più facile nell’utilizzo, il suo output non è di tipo
formattato per essere rediretto in un file di testo.
2.1.2.9 L’analisi
È possibile ora visualizzare il contenuto del disco di cui si è fatto il restore o dell’immagine della
quale si è effettuato il mount. Se si sta lavorando su un sistema X window allora è possibile
utilizzare il browser preferito per effettuare le ricerche sul disco.
In molti casi i comandi di linea sono molto più utili e potenti al fine della gestione dell’analisi e
per questo motivo verranno utilizzati per questo esempio.
Per assunto i comandi hanno come mount point /mnt/analysis.
Per stampare a video la lista di tutti i file nascosti nella cartella corrente più le cartelle speciali “.”
e “..”, si può usare il comando :
ls -la | grep “^. ”
ls –la mi stampa il contenuto della cartella, grep “^.” mi legge l’output di ls e tiene solo le linee
che cominciano con il carattere “.”.
2.3.1 Introduzione
Gli attacchi informatici lasciano spesso tracce che possono condurre all’individuazione dei
sistemi usati per l’intrusione; queste tracce includono:
• log file e audit file;
• file utilizzati e lasciati dall’intruso;
• informazioni relative ai server e ai servizi utilizzati dall’intruso per muoversi attraverso la
rete.
In particolare, per identificare le azioni dell’intruso, è possibile:
• analizzare i file di log;
• utilizzare tool di analisi;
• comparare i checksum di file conosciuti e fidati con quelli di macchine compromesse.
Avere un sistema di crittografia fidato per la creazione di checksum utili alla comparazione di file
è particolarmente importante per scoprire se l’intruso ha apportato modifiche al kernel del sistema
operativo.
Queste tracce possono essere utilizzate per la ricerca di ulteriori eventi o connessioni sospette con
altri sistemi; in questo modo è infatti possibile identificare i sistemi ove l’intruso abbia
conquistato l’accesso.
I log di firewall, network monitor e router spesso restano inalterati e contengono informazioni
importanti anche dopo che un intruso ha ottenuto l’accesso locale (acquisendo i privilegi di
amministratore e cancellando i log del sistema per nascondere le informazioni circa il metodo di
attacco, l’intrusione stessa e i metodi utilizzati per l’accesso).
Questi programmi e periferiche, se opportunamente configurati, registrano le connessioni e il
traffico di messaggi generato da un intruso. I log da essi prodotti possono rivelare l’attività
dell’intruso.
Per esempio, i log dei firewall possono essere configurati per memorizzare informazioni circa il
mittente di ogni messaggio, la destinazione e le caratteristiche della connessione, così come la
quantità di dati trasmessa.
2.3.2 Timestamping
Utilizzando le informazioni a disposizione (data, ora e sistemi attaccati) possono essere
rintracciati record nei file di log che rivelano informazioni più dettagliate circa un’intrusione. È
importante cercare le relazioni, incluse le connessioni dalla stessa sorgente o verso la stessa
destinazione.
La costruzione dell’immagine completa può essere complessa. I formati dei log di sistemi
differenti non sono compatibili e attualmente non esistono tool che sincronizzano
cronologicamente i log prodotti da sistemi differenti. Tuttavia esistono tool di monitoraggio che
collezionano informazioni da più sistemi e li rapportano fra di loro. In aggiunta, il fuso orario
17
Il Green Circle è il nastro verde virtuale con il quale viene circoscritta la scena digitale ove è avvenuta la violazione. Le
attività post incidente vengono anche definite “post mortem”.
Pagina 124 di 334
raccolta comprende lo stato noto ed atteso per tutte le attività, incluso il traffico di rete, i processi,
gli utenti, i file, le directory e l’hardware, in questo profilo devono venire inserite anche le
informazioni che caratterizzano il comportamento passato del sistema che può essere derivato dai
log di sistema e dagli strumenti di monitoraggio. Questa documentazione affidabile deve essere
periodicamente confrontata con lo stato corrente dei sistemi in modo da determinare se esistono
degli scostamenti nel comportamento degli asset e per verificare l’integrità dei sistemi.
Gli approcci per scoprire le tracce di comportamenti sospetti sono spesso basati
sull’identificazione delle differenze tra lo stato operativo corrente e quello precedentemente
rilevato e affidabile.
Bisogna essere in grado di verificare lo stato corretto ed atteso per ogni risorsa, senza questa
informazione, non è possibile determinare in maniera adeguata se qualche cosa è stata aggiunta,
cancellata, modificata, persa o rubata.
Se non si è in possesso di profili aggiornati, disponibili, affidabili, potrebbe non essere possibile
ricostruire le componenti critiche che sono state compromesse.
I log file potrebbero essere gli unici documenti che hanno un comportamento sospetto.
L’abilitazione errata dei meccanismi di registrazione di questo tipo di informazioni può indebolire
o anche eliminare la capacità di determinare se sono avvenuti tentativi di intrusione.
I log dovrebbero essere in grado di :
• avvisare in caso di attività sospetta che richiede ulteriori indagini
• determinare l’estensione dell’attività dell’intruso
• aiutare nel recupero dei sistemi
• fornire informazioni utili per procedimenti legali
E’ possibile che i meccanismi di logging e di monitoraggio forniti con i sistemi possano non
produrre tutte le informazioni necessarie per scoprire i segni di una intrusione tempestivamente.
L'approccio generale per la ricerca di intrusioni può essere così schematizzato:
1. cercare nei sistemi qualsiasi cosa inaspettata o sospetta.
2. indagare qualsiasi cosa che può essere insolita.
3. se durante la ricerca si trova qualche cosa che non è riconducibile all’attività autorizzata,
bisogna immediatamente dare inizio alle procedure di risposta ad un’intrusione.
Questa procedura sembra abbastanza semplice, ma la sua messa in pratica è un'attività
dispendiosa che richiede supporto continuo e automatizzato oltre ad un impegno amministrativo
quotidiano.
Si ricordi inoltre che la sequenza di azioni per la scoperta di un’intrusione può cambiare in
funzione delle minacce, delle diverse configurazioni di sistema o della modifica dei requisiti di
sicurezza.
In tutti i casi, è necessario considerare cinque campi di azione principali:
• preparazione adeguata che dovrebbe includere la definizione delle policy richieste e delle
procedure necessarie per soddisfare gli obiettivi di business e la preparazione del personale e
dei sistemi alla ricerca di intrusioni.
2.4.1.1 Analisi e investigazione delle notifiche di meccanismi di alert dedicati alla rete (come e-
mail, voice-mail, o sms)
Questa pratica prevede che vengano tenute sotto costante controllo le notifiche provenienti da:
• Utenti o amministratori effettuate via e-mail e di persona
• Meccanismi di altert dei sistemi operativi
• Trap di sistema (system management software traps)
• Intrusion Detection System (IDS)
• Meccanismi di alert personalizzati per specifici servizi o programmi
2.4.1.3 Analisi delle statistiche delle prestazioni della rete ed investigazione di anomalie
Le statistiche sono generalmente prodotte da strumenti forniti dal vendor o sviluppati ad-hoc.
Tipicamente le statistiche contengono:
• carico totale del traffico in ingresso e in uscita nel tempo (numero di pacchetti, byte e
connessioni) e per evento (servizi attivi)
• carico del traffico (percentuale di pacchetti, byte e collegamenti) in ingresso ed uscita nel
tempo ordinato per protocollo, indirizzo sorgente, indirizzo di destinazione, altri dati
dell’header del pacchetto
• numero di errori su tutte le interfacce di rete
• confronto fra statistiche delle prestazioni di rete precedenti con statistiche correnti per la
stessa fascia oraria
E’ necessario cercare:
• variazioni inattese delle prestazioni fra le statistiche correnti e precedentemente rilevate;
per esempio, traffico di rete insolitamente alto o basso in confronto ai livelli medie rilevati
per il periodo in esame
• differenze inaspettate che esistono tra le informazioni precedentemente profilate del
traffico di rete e quelle attuali, come:
o traffico proveniente da indirizzi inaspettati o che utilizza porte o protocolli non usuali
o traffico diretto verso indirizzi imprevisti o che utilizza porte o protocolli insoliti
o volume di traffico eccessivamente elevato o basso per l’ora e il giorno della settimana
• perdita inaspettata di connettività
• attività o disponibilità del modem insolita. Un attività anomala del modem può indicare
l’accesso di un intruso attraverso punti di entrata trascurati (porte) o l’utilizzo da parte di
un intruso di “daemon dialers”.
2.4.2.5 Identificazione di qualsiasi comportamento dei processi che possa essere definito
inaspettato, non usuale o sospetto e le possibili implicazioni
I punti essenziali che dovrebbero essere ricercati sono:
• processi mancanti
• processi addizionali
• comportamento insolito di un processo o di utilizzo di una risorsa
• processi che sono associati ad utenti insoliti
I dati dai file di log e altri dati possono essere utili nell’analisi del comportamento dei processi.
Bisognerebbe tenere sotto controllo i dati relativi a:
• utente che esegue il processo
• momento di inizio del processo, argomenti, nomi di file
• stato di uscita del processo, durata di tempo, risorse consumate
• ammontare delle risorse usate (CPU, memoria, disco, tempo) dagli specifici processi nel
tempo; risorse massime consumate da un determinato processo
• processi di sistema e di utente e servizi eseguiti
• modalità di inizio di un processo (amministratore, altri utenti, altri programmi o processi),
con quali autorizzazioni e privilegi
• dispositivi utilizzati dagli specifici processi
• file aperti dagli specifici processi
Di seguito un breve elenco delle anomalie tipiche che dovrebbero essere ricercate:
• processi attivi in momenti inaspettati
• processi terminati prematuramente
2.4.2.6 Identificazione di qualsiasi comportamento degli utenti che sia inaspettato, insolito o
sospetto e le possibili implicazioni
I dati dei file di log e di altri meccanismi di raccolta possono aiutare nell’analisi del
comportamento degli utenti. Questi includono :
• informazioni di login/logout (ubicazione, tempo): tentativi riusciti, falliti, login tentati con
account privilegiati
• informazioni di login/logout relativi a server di accesso remoto che appaiono nei file di
log dei modem
• modifiche dell’identità dell’utente
• modifiche nello status di autenticazione come ad esempio l’abilitazione di privilegi
• tentativi falliti di accesso ad informazioni limitate (come file di password)
• log che esaminino il keystroke, ossia le battute dei tasti
• violazioni delle quote disco dell’utente
Le principali informazioni che vanno ricercate, possono essere così riassunte:
• tentativi di login falliti e ripetuti, inclusi quelli che utilizzano account privilegiati
• login da ubicazioni o a durate insolite, includendo tentativi inconsueti o non autorizzati di
accesso effettuati da server di accesso remoti
• tentativi insoliti di modifica dell’identità dell’utente
Pagina 132 di 334
• processi insoliti amministrati da utenti
• accessi insoliti a file, inclusi i tentativi non autorizzati di accesso a file riservati
• utenti loggati per durate di tempo anomale (sia troppo corte che troppo lunghe)
• utenti che eseguono comandi inaspettati
• utenti che lavorano da terminali insoliti
Se si osserva un’attività non usuale associata a particolari utenti, la procedura migliore
suggerirebbe di iniziare la raccolta di dati aggiuntivi al fine di ottenere informazioni più
dettagliate in relazione alle attività rilevate. La maggior parte dei sistemi multi utente forniscono
meccanismi che permettono di verificare tutti i processi associati ad un particolare utente.
E’ conveniente allocare sufficienti risorse per salvare i dati raccolti, in quanto il processo di
verifica e di correlazione di differenti log di solito genera rapidamente una grande quantità di
informazioni.
E’ buona norma analizzare spesso i dati raccolti (almeno giornalmente) ed effettuare
regolarmente una rotazione dei file di log per minimizzare l’ammontare di informazioni che
devono essere analizzate e salvate.
19 le schede di rete nella maggior parte dei sistemi in genere operano in modo non promiscuo, il che significa che ignorano i pacchetti
non esplicitamente indirizzati ad essa. In modo promiscuo, nessun pacchetto viene ignorato e perciò tutti i pacchetti che attraversano il
segmento di rete al quale è connesso il sistema sono letti dalla scheda di rete e sono accessibili dai processi che vengono eseguiti su quel
sistema
2.4.2.9 Esecuzione periodica degli strumenti di scanning delle vulnerabilità su tutto il sistema
volte alla verifica della presenza di vulnerabilità note
Si raccomanda di far girare gli strumenti di mapping e di scanning al di fuori degli orari di lavoro
e quando si è presenti in azienda, in quanto questi strumenti possono a volte intaccare i sistemi in
modo inaspettato.
E’ necessario eliminare tutte le vulnerabilità identificate da questi strumenti il prima possibile;
molte di queste possono essere eliminate aggiornando le impostazioni dei file di configurazione e
installando le patch fornite dai vendor.
L’utilizzo di strumenti di scanning e di analisi delle password è da considerare come parte
integrante della valutazione delle vulnerabilità. Queste analisi includono l’identificazione di
password deboli, o addirittura lasciate vuote, come ad esempio quelle che possono essere
facilmente determinate utilizzando attacchi basati sui dizionari o attacchi di forza bruta.
2.4.3 Ispezione dei file e delle directory alla ricerca di modifiche inaspettate
In questo paragrafo vengono trattate le attività che dovrebbero essere effettuate per verificare la
presenza di modifiche nei file e nelle directory. Questa parte di ricerca è importante in quanto la
presenza di file modificati potrebbe indicare ad esempio l’esistenza di trojan horse o più in
generale la possibilità che il sistema esaminato sia sotto il controllo di un hacker.
Il file system di un sistema contiene una varietà di software e di file di dati. La scoperta di
eventuali modifiche inattese nelle directory e nei file, specialmente in quelli ai quali l’accesso è
normalmente ristretto, possono indicare una intrusione; essi possono includere modifiche,
creazioni o cancellazioni di directory e di file. Il risultato di queste modifiche dipende da
differenti fattori tra i quali chi ha effettuato i cambiamenti, dove, quando e come essi sono stati
fatti.
Nel caso in cui venga permesso a terze parti esterne all’azienda (ad esempio a fornitori, clienti,
partner, ecc) l’accesso alla rete ed ai sistemi aziendali, si reputa necessario effettuare l’esame dei
loro accessi per controllare che tutte le azioni da loro svolte vengano correttamente autorizzate e
autenticate. Questo processo include anche il monitoraggio e la verifica di tutte le directory ed i
file più importanti.
Gli intrusi spesso creano, sostituiscono, modificano o danneggiano i file presenti nel sistema del
quale essi guadagnano l’accesso. Per nascondere la loro presenza nel sistema, è prassi per gli
intrusi sostituire programmi con altri da loro creati che svolgono le stesse funzioni, ma che
escludono le informazioni che possano rivelare la loro attività illecita. Spesso gli intrusi
2.4.3.2 Verifica dell'integrità delle directory e dei file secondo un programma prestabilito
E’ necessario confrontare gli attributi ed i contenuti dei file e delle directory con un campione di
riferimento (sia copie complete che con checksum crittografati) per identificare qualsiasi file o
directory il cui contenuto o altri attributi siano stati modificati.
Si acceda sempre ai dati contenenti dei riferimenti campione direttamente da media di sola lettura
e garantiti. Non bisogna mai trasmettere i dati del campione di riferimento attraverso reti non
sicure a meno che non si utilizzino meccanismi quali firme digitali o checksum crittografati per
verificare l’integrità dei dati.
2.4.3.3 Identificazione di qualsiasi modifica inattesa, insolita o sospetta effettuata ai file o alle
directory e le possibili implicazioni
I dati dai file di log e i dati raccolti da altri meccanismi possono essere di aiuto nell’analisi delle
modifiche che possono essere effettuate ai file e alle directory. Questi includono:
• checksum crittografate per tutti i file e le directory
• liste di file, directory e attributi
• accessi (aperti, creati, modificati, in esecuzione, cancellati), data e ora
20 Queste tipologie di azioni compiute dagli intrusi possono essere realizzate utilizzando strumenti che appartengono a
rootkit.
2.5.1 Introduzione
Prima di effettuare qualsiasi operazione, un hacker prende sempre in considerazione il problema
di come nascondersi nella rete. Il suo obiettivo è l'anonimato completo ma considera un ottimo
risultato rendere il più complicato possibile il compito di chi dovrà rintracciarlo.
I metodi più semplici che permettono agli hacker un minimo anonimato e un minimo vantaggio
temporale prevedono la connessione tramite diversi proxy o di servirsi delle vulnerabilità di certi
servizi e programmi; sono però tecniche che permettono solo di rendere più lungo e complicato il
compito dell'investigatore.
Dopo aver compromesso una macchina, un hacker cerca di garantirsi la possibilità di effettuare
ulteriori accessi in modo tale, eventualmente, da poterla usare per ulteriori attività illecite.
Se un sistema è diventato vittima di un'intrusione e se l'obiettivo finale dell'hacker era proprio
quella macchina, è probabile che l'intruder abbia installato dei trojan o delle backdoors per
provocare dei danni, materiali o di immagine, più o meno gravi.
Una volta subita l’intrusione, anche se tutti gli strumenti sembrano sostenere il contrario, l'intero
sistema non è più affidabile. L’hacker ha rimosso ogni sua traccia dai log ed è assodato che egli è
comodamente inserito nel sistema.
Una delle principali preoccupazioni dell’intruso diventa l’agire nel modo più discreto possibile
per evitare che l'amministratore lo possa notare. Per ottenere questo effetto l’hacker installerà
particolari strumenti che verranno trattati in seguito. Ovviamente non agirà con tanta discrezione
se il suo scopo è quello di distruggere tutti i dati.
Certamente un amministratore non può restare collegato al suo sistema 24 ore su 24 per verificare
ogni singola connessione. Tuttavia, tra i suoi compiti figura anche l’individuare un’intrusione il
più rapidamente possibile. Il sistema compromesso può divenire una rampa di lancio per i
programmi dell’hacker (bot IRC, DDoS, ...). Per esempio, ricorrendo ad uno sniffer, può accedere
a tutti i pacchetti della rete a cui la macchina è collegata. Molti protocolli non cifrano i dati o le
password (per esempio telnet, rlogin, pop3, e molti altri). Di conseguenza, più a lungo l’intruso
rimane nel sistema, più può controllarne la rete di appartenenza.
Identificata la presenza dell’intruso resta da stabilire cosa egli abbia alterato. Se non si prendesse
in considerazione questo problema, la nostra infrastruttura di rete sarebbe in costante e perenne
pericolo. Una volta stabilito cosa è successo bisogna prendere in esame le misure correttive da
operare. Esistono due politiche in merito: la prima prevede che l'amministratore del sistema
installi tutto exnovo mentre la seconda si limita a ripristinare i file corrotti. Se la prima tecnica
richiede molto tempo, la ricerca dei file modificati richiede una grande attenzione.
Indipendentemente dal sistema scelto, è bene fare un completo backup dell'intero sistema per
scoprire come l’hacker abbia avuto accesso al sistema. Se la macchina venisse coinvolta in un
attacco di più ampia scala, tale da portare conseguenze legali, non effettuare il backup potrebbe
essere considerato come un metodo per nascondere delle prove. Al contrario, eseguire un costante
backup potrebbe voler dire l’assoluzione dalle accuse.
Ora discuteremo una serie di attività post attacco eseguite dall’hacker ed i relativi metodi per
individuarne la presenza.
Pagina 137 di 334
2.5.2 Attività 1: manomissione dei log file
Per garantirsi un anonimato più o meno assoluto la prima attività che un hacker compie consiste
nel manomettere i log files della macchina vittima, in modo da nascondere le tracce del suo
passaggio.
I log che richiamano un'attenzione maggiore da parte degli intrusi riguardano gli accessi effettuati
e gli eventi di sistema. Oltre a questi citati, altri log che vengono spesso alterati sono relativi al
traffico di rete e ai processi schedulati. Ad esempio, per ambienti *nix, si fa menzione di lastlog,
faillog, syslog, cronlog ecc.
ntop per avvistare se il traffico in rete è elevato, uno sniffer come tcpdump o ethereal, nmap per
analizzare su che porte siamo in ascolto, ed infine
Una volta installato, un buon rootkit è, per natura, difficile da individuare proprio perché tende a
nascondere le tracce della propria esistenza.
Esistono tuttavia diversi metodi per individuarne la presenza che possono essere più o meno
efficaci a seconda della natura del rootkit:
• verificare se il numero dei processi e i relativi PID che si visualizzano con ps è diverso da
quello che si vede in /proc. Questa procedura, relativamente veloce, non funziona con rootkit
basati su un modulo del kernel;
• verificare con un port scanning da una macchina esterna, se sul sistema indagato sono aperte
porte che non dovrebbero essere aperte e non vengono visualizzate con un netstat locale.
Questo sistema non funziona con rootkit che modificano demoni esistenti come telnetd o sshd
e tramite loro (e quindi tramite le rispettive porte) permettono accessi remoti non autorizzati;
• se la rete è ad alta velocità è difficile, per i sensori, non perdere nemmeno un pacchetto;
Tutte le informazioni riguardanti i sistemi compromessi e alle cause di un’intrusione devono essere
raccolte e conservate in modo sicuro.
Tutte queste informazioni devono essere collezionate, contrassegnate, catalogate e conservate con
riguardo in ogni momento dell’analisi dell’intrusione.
Se non si collezionano e proteggono tutte queste informazioni, non si sarà in grado di raccogliere le
informazioni necessarie per eventuali follow up in aula giudiziaria, imparare dall’esperienza e quindi di
migliorare le condizioni di sicurezza del sistema, le operazioni svolte e le potenzialità dello staff.
Sarebbe inoltre difficile interagire in modo efficace con altri CSIRTs.
Nel caso di intrusione generata dall’interno, non si sarebbe in grado di prendere i giusti provvedimenti
per educare, ravvedere o licenziare il responsabile22.
21
Comprensivi di eventuali informazioni di correlazione.
22
Si rammenta che eventuali procedimenti disciplinari devono essere giustificati e devono avere a monte delle politiche di
sicurezza. Si consiglia di contattare un consulente legale.
Pagina 149 di 334
1. Raccogliere le informazioni ricavate dai log dei sistemi e delle reti degli ambienti compromessi, dai
sistemi di intrusion detection, dai firewall, dai router e dagli altri strumenti.
2. Raccogliere i backup completi e parziali, documentare le schermate dei sistemi con screen-shot,
videoregistrazioni e fotografie.
3. Documentare in forma cartacea le risposte alle domande: chi, che cosa, dove, quando, come e
perché.
Dette note potranno essere acquisite agli atti nell’eventualità di un procedimento da parte dell’Autorità
Giudiziaria per la determinazione delle responsabilità. Assicurarsi di preparare un diverso fascicolo per
ogni intrusione.
Una volta che si è stati allertati dal proprio sistema di intrusion detection o da un altro sito fidato in cui
è stata individuata un’intrusione, occorre determinare l’estensione del danno e rispondere all’intrusione
stessa.
Le informazioni collezionate e interpretate attraverso la fase di analisi sono fondamentali per prendere
decisioni e agire mediante il processo di risposta.
Durante l’analisi, si può essere tentati di collezionare attivamente informazioni circa i metodi utilizzati
dall’intruso per attaccare il sistema. Questi tentativi possono allertare l’intruso il quale, resosi conto di
una risposta in atto o, peggio ancora, preso dal panico, potrebbe iniziare a cancellare ogni sua possibile
traccia danneggiando così ulteriormente il sistema; oppure, potrebbe non accedere più al sistema stesso
impedendoci così di collezionare informazioni aggiuntive. Nel caso poi in cui il sistema attaccante
Gli attacchi lasciano sovente tracce che possono ricondurre l’analista al sistema che è stato acceduto
dall’intruso. Queste tracce includono file di log e audit, file lasciati nel sistema dall’intruso o
informazioni relative all’uso di server e servizi presenti su altri sistemi e usati per spostarsi attraverso la
rete. Queste informazioni possono essere usate per cercare altri eventi o connessioni originate da un
sistema che prima non era stato considerato. In questo modo, risulta possibile identificare gli altri
sistemi ai quali l’intruso ha guadagnato l’accesso.
I log di firewall, network monitor e router rimangono spesso intatti (quando è stato deciso, a priori, di
generarli) e possono contenere informazioni preziose anche se l’attacker acquisisce soltanto l’accesso
in locale, guadagna i privilegi di amministratore e cancella i log presenti sul sistema al fine di
rimuovere le informazioni sul tipo di attacco utilizzato e sull’intrusione stessa.
Questi programmi e dispositivi, se opportunamente configurati, possono registrare le connessioni e il
traffico di messaggi generato dall’attacker. I log così prodotti possono rilevare l’attività dell’intruso.
Con le informazioni raccolte attraverso le modalità sopra descritte, è possibile localizzare record
collegati nei log che rivelano un maggior numero di dettagli riguardo un’intrusione o un dato mancante.
È buona norma perciò cercare connessioni “simili”, comprese quelle provenienti dalla stessa sorgente o
dirette verso la stessa destinazione.
3.1.5 Identificare gli attacchi portati per guadagnare l’accesso al sistema compromesso
È necessario cercare nei log locali dei sistemi compromessi informazioni che rivelino il tipo attacco
portato dall’intruso oltre che nei log prodotti da firewall, router e network monitor.
Solitamente, gli intrusi tentano diversi tipi di attacco o vanno alla ricerca di una particolare
vulnerabilità prima di acquisire l’accesso. A seconda di com’è configurato il vostro sistema, i log di
rete e di sistema potrebbero contenere:
• Messaggi di “denied access” se l’attacker tenta di indovinare la password (sono utili anche
eventuali messaggi di errore;
• Messaggi riferiti a vecchie vulnerabilità (es. il comando “wiz” nel sendmail di Unix);
• Messaggi di accesso negato a servizi specifici monitorati da tool quali TCP Wrapper.
È anche possibile trovare data, ora e sorgente nei file di log; queste informazioni possono essere di
grande utilità.
Dopo aver guadagnato l’accesso, l’intruso potrebbe voler cancellare tutti i log o singole entry. Per
questo motivo, è possibile che non vengano trovate informazioni di interesse. In alcuni casi la
cancellazione di log entry è rilevabile. In questo caso ci verrà notificato un evento sospetto e sarà
possibile effettuare un’analisi più approfondita.
È importante capire come un attacker sia riuscito a guadagnare l’accesso al sistema. Questa conoscenza
però non sarà sufficiente per risalire alle operazioni effettuate dall’intruso una volta entrato nel sistema.
Senza informazioni aggiuntive, non sarà possibile quantificare la quantità di dati compromessi e quindi
il danno subito. Su molti sistemi sono facilmente individuabili i tentativi di modifica di file, ma
purtroppo per gli accessi in lettura non vale altrettanto; questo a causa del numero elevato di file letti
durante una sessione, che rende impraticabile qualunque attività di logging.
Senza ulteriori informazioni, occorre considerare che, una volta che gli intrusi hanno guadagnato
l’accesso, potranno ottenere qualunque dato e accedere a servizi o programmi del sistema
compromesso. Al momento della quantificazione del danno bisogna quindi ipotizzare il caso peggiore.
Per identificare un intruso, è possibile:
• Analizzare diversi file di log;
• Confrontare i checksum dei file conosciuti e fidati con quelli della macchina compromessa;
25
Si rammenta, inoltre, di documentare, a priori, la time zone sulla quale il sistema di logging viene regolato. Questa
operazione è assolutamente fondamentale soprattutto quando si lavora in ambienti transnazionali.
Pagina 153 di 334
• Utilizzare tool di intrusion detection e analysis.
Avere un checksum fidato con il quale poter fare dei confronti è particolarmente importante per
scoprire se un intruso ha apportato modifiche al kernel del sistema operativo. Esempi di tracce che gli
intrusi possono aver lasciato sono:
• Modifiche ai log file per nascondere la loro presenza;
• Azioni compiute per modificare una utility di sistema per fare in modo che non elenchi i
processi avviati dall’attacker;
• Trojan, backdoor o nuove versioni dei comandi di sistema.
Questo punto è soddisfatto disponendo di una documentazione verificabile che indichi la sequenza di
soggetti che hanno avuto a che fare con una o più prove e la sequenza di luoghi in cui è stata custodita.
Tra questo informazioni è bene includere anche la data e l’ora del passaggio.
Nel caso in cui la propria organizzazione abbia delle policy nell’ambito del mantenimento della CoC, è
bene accertarsi che le proprie azioni avvengano nel rispetto di tali regole. La documentazione di IRItaly
contiene, tra l’altro, anche i documenti di gestione della CoC.
Nel caso in cui si decida di perseguire l’intruso è bene contattare immediatamente le forze dell’ordine.
Le procedure di risposta relative alla sicurezza di una rete aziendale dovrebbero documentare i ruoli, le
responsabilità, le autorità e le condizioni per l’esame di dati, sistemi e reti sospettate di essere state
compromesse e per l’analisi dell’intrusione più in generale.
Le procedure di risposta relative alla sicurezza di una rete aziendale dovrebbero anche assicurare il
mantenimento di una CoC corretta e sicura.
Un certo livello di rigore è necessario non solo nel caso in cui si decida di avviare un’investigazione
legale con le forze dell’ordine; questo perché altre organizzazioni attaccate potrebbero decidere di
prendere provvedimenti e richiedere le prove collezionate dalla propria azienda, se non addirittura
avviare procedimenti legali contro la nostra azienda, ad esempio nel caso in cui la propria rete sia stata
utilizzata come punto di partenza di un altro attacco. Ad ogni modo si rammenta che le politiche di
sicurezza, anche quelle che riguardano il personale operativo IT, devono essere stabilite a priori, di
concerto con il legal, e firmate per presa visione ed accettazione.
Si tenga inoltre presente che le leggi sono differenti da Paese a Paese. È quindi opportuno determinare i
requisiti legali (specialmente le leggi riguardanti la protezione e collezione di prove, CoC, la quantità
sufficiente di prove per avviare le pratiche) richiesti dal Paese in cui si sta operando.
In seguito si dovranno implementare le procedure necessarie per soddisfare tali requisiti.
Segue un elenco di tool classificati in base alle funzioni, che permette di decidere se e quando possono
essere di utilità nell’applicazione delle policy fissate e delle procedure di risposta a un’intrusione.
È difficile definire una guida ai tool da utilizzare, in quanto la loro utilità varia a seconda delle
specifiche condizioni aziendali e al momento non esiste uno scenario standardizzato nella gestione
della sicurezza.
È bene infine tenere presente che, per quanto riguarda alcuni software, è consigliabile una
configurazione manuale per meglio venire incontro alle esigenze specifiche.
Esempi di tool che monitorizzano e ispezionano l’utilizzo delle risorse di sistema (es. modifiche al file
system) e attività sospette (es. apertura di file insolita o sospetta, login di amministratori, shutdown e
restart inattesi, attività inusuale del modem, insolito o eccessivo numero di email) sono:
• watcher - ftp://ftp.cerias.purdue.edu/pub/tools/unix/sysutils/watcher/
• klaxon - ftp://ftp.cerias.purdue.edu/pub/tools/unix/logutils/klaxon/
• lsof (LiSt Open Files) - http://www.cert.org/security-
improvement/implementations/i042.05.html
• nfswatch - ftp://ftp.cerias.purdue.edu/pub/tools/unix/netutils/nfswatch/
• showid - ftp://ftp.cerias.purdue.edu/pub/tools/unix/sysutils/showid/
Esempi di intrusion detection system, che includono il monitoraggio attivo dei file di log, e che
controllano possibili intrusioni o violazioni di accesso, sono:
• snort - http://www.snort.org/
• asax (Advanced Security audit trail Analysis on uniX) -
ftp://ftp.cerias.purdue.edu/pub/tools/unix/sysutils/asax/
• swatch - http://www.cert.org/security-improvement/implementations/i042.01.html
• logsurfer - http://www.cert.org/security-improvement/implementations/i042.02.html
• tklogger - ftp://ftp.eng.auburn.edu/pub/doug/tklogger
Esempi di tool che monitorizzano e ispezionano il traffico di rete e le connessioni (es. che tipo di
connessioni, da dove e quando), i tentativi di connessione falliti e le connessioni stabilite con successo,
connessioni da/verso locazioni inusuali, prove non autorizzate sulla rete, sistematici port scan, traffico
in opposizione alle regole del firewall e attività insolite di trasferimento dei file includono:
• tcp wrapper - http://www.cert.org/security-improvement/implementations/i041.07.html
• tcpdump - http://www.cert.org/security-improvement/implementations/i042.13.html
• argus - http://www.cert.org/security-improvement/implementations/i042.09.html
• arpmon - ftp://ftp.cerias.purdue.edu/pub/tools/unix/netutils/arpmon/
• arpwatch - ftp://ftp.cerias.purdue.edu/pub/tools/unix/netutils/arpwatch/
• snort - http://www.snort.org/
• courtney - ftp://ftp.cert.dfn.de/pub/tools/audit/courtney/
• gabriel - ftp://ftp.cert.dfn.de/pub/tools/audit/gabriel/
• logdaemon - http://www.cert.org/security-improvement/implementations/i041.11.html
• rfingerd - ftp://ftp.cerias.purdue.edu/pub/tools/unix/daemons/rfingerd/
• clog - ftp://ftp.cerias.purdue.edu/pub/tools/unix/logutils/clog/
• pidentd - ftp://ftp.cert.dfn.de/pub/tools/audit/pidentd/
• enhanced portmap/rpcbind - ftp://ftp.porcupine.org/pub/security/
Esempi di tool che verificano se l’interfaccia della propria scheda di rete è in modalità promiscua sono:
• ifstatus - ftp://ftp.cerias.purdue.edu/pub/tools/unix/sysutils/ifstatus/
Pagina 156 di 334
• cpm (Check Promiscuous Mode) - ftp://ftp.cerias.purdue.edu/pub/tools/unix/sysutils/cpm/
Esempi di tool che controllano nuovi e non attesi servizi e verificano quelli disponibili sulla propria
rete sono:
• nmap - http://www.insecure.org/nmap
• fremont - ftp://ftp.cerias.purdue.edu/pub/tools/unix/netutils/fremont/
• strobe - ftp://ftp.cerias.purdue.edu/pub/tools/unix/scanners/strobe/
• satan (System Administrator Tool for Analyzing Networks) -
ftp://ftp.porcupine.org/pub/security/
• saint (Security Administrator's Integrated Network Tool) - http://www.wwdsi.com/saint
• sara (Security Auditor's Research Assistant) - http://www.www-arc.com/sara/
Esempi di tool che monitorizzano e ispezionano l’attività degli utenti, come l’attività di login, tentativi
ripetuti e falliti di login, login da postazioni insolite, login in momenti insoliti, cambiamenti
nell’identità degli utenti, tentativi di accesso ad informazioni ristrette, sono:
• noshell - ftp://ftp.cerias.purdue.edu/pub/tools/unix/
• ttywatcher - ftp://ftp.cerias.purdue.edu/pub/tools/unix/sysutils/ttywatcher/
• logdaemon - http://www.cert.org/security-improvement/implementations/i041.10.html
Tool che verificano l’integrità dei dati, dei file e dei software
Esempi di tool che controllano il file system e la configurazione di altri programmi alla ricerca di
possibili segnali della presenza di exploit sono:
• cops - ftp://ftp.cerias.purdue.edu/pub/tools/unix/scanners/cops/
• tiger - ftp://ftp.cerias.purdue.edu/pub/tools/unix/scanners/tiger/
Pagina 157 di 334
• secure-sun-check - ftp://ftp.cerias.purdue.edu/pub/tools/unix/sysutils/secure_sun/
Esempi di tool che individuano cambiamenti inattesi di file e cartelle e relative protezioni sono:
• tripwire - http://www.cert.org/security-improvement/implementations/i002.02.html
• L5 - ftp://ftp.cerias.purdue.edu/pub/tools/unix/sysutils/l5/
• hobgoblin - ftp://ftp.cerias.purdue.edu/pub/tools/unix/sysutils/hobgoblin/
• RIACS Auditing Package (Research Institute for Advanced Computer Science) -
http://ciac.llnl.gov/ciac/ToolsUnixSysMon.html#Riacs
Tool che esaminano il sistema in dettaglio periodicamente o quando si verificano eventi insoliti
Esempi di tool che mantengono e controllano i file di log per permettere l’immediata scoperta di
attività sospette sono:
• top - http://www.cert.org/security-improvement/implementations/i042.06.html
• sps (Special Process Status) - http://www.cert.org/security-
improvement/implementations/i005.03.html
• spar (Show Process Accounting Records) - http://www.cert.org/security-
improvement/implementations/i042.04.html
• logcheck - ftp://ftp.cerias.purdue.edu/pub/tools/unix/logutils/logcheck/
Esempi di tool che proteggono la consistenza dei log da possibili modifiche sono:
• chklastlog - ftp://ftp.cerias.purdue.edu/pub/tools/unix/logutils/chklastlog/
• chkwtmp - ftp://ftp.cerias.purdue.edu/pub/tools/unix/logutils/chkwtmp/
• loginlog - ftp://ftp.cerias.purdue.edu/pub/tools/unix/logutils/loginlog/
• trimlog - ftp://ftp.cerias.purdue.edu/pub/tools/unix/logutils/trimlog/
In questa parte del documento verranno illustrate le metodologie da seguire durante la raccolta delle
fonti di prova.
E’ stato adottato un approccio procedurale, organizzativo, che dà per consolidate le premesse di tipo
tecnico e tutto quanto esposto nel capitolo 1.1.
Per effettuare un’analisi di digital forensics nel migliore dei modi, il team deve possedere un
documento di specifica delle metodologie da seguire, cioè un insieme di regole e linee guida che
indicano le procedure fondamentali da seguire in ogni analisi.
In casi particolari e documentati il team può però discostarsi dalla metodologia predefinita, inoltre
può accadere che i tool utilizzati differiscano da caso a caso. L’importante è che si proceda alla
“dichiarazione” della metodica e degli strumenti utilizzati all’inizio della documentazione e che il
tutto risponda comunque alle Best Practices.
Nel caso specifico, può essere utile conoscere alcune informazioni di base del caso su cui si andrà a
lavorare. Di seguito una Check List sotto forma tabellare
3.2.1.1 Preparazione
Prima dell’analisi, bisogna essere sicuri di essere preparati. Ci sono alcune guide di riferimento
ampiamente accettate per un’analisi forense:
- “Sterilizzare” logicamente ogni media che verrà poi utilizzato durante l’analisi. Se non
ci si può permettere nuovi media per ogni caso, bisogna essere sicuri che i media
riutilizzati siano esenti da virus e che sia stato effettuato il wiping dei dati. Documentare
i processi di wiping e di scansione. Per le modalità di dettaglio di dette procedure fare
riferimento agli appositi paragrafi di IRItaly.
- Effettuare un’immagine identica (bit stream) dei media originali che verrà poi utilizzata
per l’analisi.
- Controllare che tutti i tool / software utilizzati durante l’esame siano muniti di licenza.
In caso di tool opensource verificare che si tratti di strumenti scaricati dai siti ufficiali e
sottoposti ad un qualsivoglia processo di validazione.
- Controllare che tutte le attrezzature del laboratorio siano pronte per l’uso.
- Bisogna essere sicuri di aver scelto bene il forensic examiner. In particolare seguire la
seguente checkist di massima
:
L’esaminatore è in grado di testimoniare in tribunale se necessario?
L’esaminatore è in grado di spiegare la metodologia usata in termini semplici e
comprensibili? Oppure i giurati dovranno immaginarsi che cosa sono i bytes, i
bit, i file nascosti e lo slack space?
Il sistema dovrebbe essere adeguatamente etichettato e preparato per un trasporto sicuro. Ovvero
bisogna imballare saldamente la fonte di prova e fare attenzione alle scariche elettrostatiche.
Si trasporti la prova se possibile nel laboratorio che è stato allestito26. In alcuni casi questo non
sarà possibile e sarà necessario utilizzare un toolkit portatile per effettuare l’analisi on site. In
ogni caso, si documentino, attraverso fotografie o videotape, le azioni compiute
26
Nel caso specifico, valutare anche l’intervento di un outsourcer.
Pagina 161 di 334
(movimentazione della prova dalla scena al veicolo di trasporto e dal veicolo di trasporto al
laboratorio dove ne verrà effettuata l’analisi) e ci si tenga pronti ad argomentare la propria
metodologia.
In un’analisi forense è importante rendere sicuro l’ambiente. Questo protegge dalla
manomissione delle fonti di prova o da situazioni potenzialmente pericolose.
Ciò può sembrare scontato, ma troppo spesso i computer sottoposti a procedura di incident
response vengono depositati in luoghi non sicuri. È obbligatorio che il computer venga trattato
come prova e quindi venga immagazzinato fuori dalla portata di utenti curiosi. Inoltre, un
elaboratore sequestrato lasciato incustodito può essere facilmente compromesso con la
conseguente possibilità di perdere fonti di prova decisive.
Un altro elemento da non sottovalutare è la CoC. Una dimenticanza in questo documento
potrebbe rendere il documento improprio in sede di giudizio in quanto non sarebbe possibile
assicurare che non ci siano state perdite di fonti di prova a seguito di qualsiasi operazione.
Si presuppone che il sistema di elaborazione venga trasportato in un'ubicazione sicura dove una
corretta chain of custody può essere mantenuta e dove l’elaborazione delle fonti di prova può
cominciare.
Prima di eseguire qualsiasi analisi, è essenziale descrivere il luogo, chiamato il “luogo
d’ingresso”.
Cosa si vede quando si entra nell’ufficio dove la workstation è connessa oppure quando si apre
lo chassis la custodia? Per recuperare il laptop? Registrazioni video possono essere delle risorse
molto efficaci in questa fase. Utilizzando una videocamera, una macchina fotografica è
possibile ricreare la scena. Oltre alle immagini fotografiche, si dovrebbe descrivere la scena
mediante appunti. Questi appunti dovrebbero includere tutte le attrezzature, le periferiche e
media indicando i numeri di serie e di modello e altre informazioni pertinenti che descrivono
accuratamente la scena.
Prima di aprire il computer, è importante che vengano fatte fotografie del computer stesso da
ogni angolazione al fine di documentare i componenti hardware di cui il sistema è composto e
come sono tra loro connessi. E’ anche importante etichettare ogni filo in modo da facilitarne la
riconnessione quando viene ripristinata (alla sua condizione originale) la configurazione in una
locazione sicura. Fotografare ancora dopo che le etichette sono state applicate.
La scelta tra Togliere la corrente elettrica o spegnere una rete di computer usando comandi
pertinenti dipende spesso dal sistema operativo del computer in questione. Indipendentemente
da quale metodo venga utilizzato, dovrebbe essere documentato. Si ricordi che il sistema
dovrebbe essere spento prima possibile. Ciò è necessario per interrompere i potenziali
programmi distruttivi in esecuzione in background.27
27
Fanno ovviamente eccezione i casi in cui sussiste l’esigenza di effettuare una Live System Analysis
Pagina 162 di 334
Fotografie dello schermo possono essere effettuate a scelta dell'investigatore. Comunque, la
valutazione dovrebbe essere fatta in funzione dei possibili processi distruttivi che possono
operare in background. Generalmente il computer deve essere spento il più presto possibile.28
Si ricordi di documentare sempre tutti gli step nella “chain of custody” e nella “tabella dei tempi”.
Fino a quando il sistema è in nostra custodia, non dovrebbe mai essere lasciato “scoperto”.
Molto importante nelle indagini forensi è la Chain of Custody , cioè la documentazione di tutte
le persone che hanno custodito le fonti di prova in ogni step. Se le risorse lo consentono, si
utilizzino due persone per ogni step in ciascun caso. Ciò può essere utile per avere una
documentazione piú accurata delle azioni svolte e, ai fini legali, per avere un testimone.
Importanti nella descrizione sono la data e l’ora in cui sono stati eseguiti gli step, il nome di chi
li ha eseguiti e sotto la direzione di chi. A tal scopo può essere utile anche la Tabella dei Tempi.
Avendo questa documentazione completa, è possibile respingere qualsiasi accusa di cattiva
gestione delle fonti di prova , specialmente se sono stati seguiti i passi definiti nella
metodologia. Inoltre la documentazione è un buon punto di riferimento per l’esaminatore nel
caso in cui il caso abbia una durata lunga o un carico elevato, o nell’eventualità in cui vi sia un
passaggio di consegne tra team od operatori singoli.
3.2.1.6 Preparazione
A questo punto bisogna preparare la digital evidence acquisita per l’esame in laboratorio:
Il computer sequestrato può avere installato uno o più sistemi operativi. Il sistema operativo
coinvolto dovrebbe essere documentato. Sui computer basati su DOS e su Windows questo può
essere determinato esaminando il settore di boot di ogni partizione. Può essere determinato
anche utilizzando un programma come le Norton Utilities. I risultati di tali scoperte dovrebbero
essere annotati ed il software e la versione utilizzata dovrebbero essere documentate. Le
versioni del software usate dovrebbero essere conservate29.
28
Per le modalità di spegnimento si faccia riferimento agli appositi paragrafi di IRItaly.
29
A tal fine è altresì utile effettuare un check relativo alle licenze dei programmi e dei sistemi operativi contenuti all’interno
della macchina in esame. Questo per evitare eventuali problemi relativi alla normativa in materia di tutela della proprietà
intellettuale del software.
Pagina 163 di 334
3.2.1.8 Valutazione dei virus
È importante che l’esaminatore non comprometta l’integrità dei dischi sotto esame attraverso
l’involontaria introduzione di virus. Di conseguenza, ogni software utilizzato in sede di esame
dovrebbe essere esaminato da un’utility di virus scanning, come ad esempio Mc Afee, Norton,
Dott. Solomon, ecc.
Una metodologia ideale prevede che si utilizzino due differenti programmi di scansione, i cui
risultati siano riportati nella documentazione del caso. Dovrebbero essere analizzati tutti gli
hard disk e i floppy disk sequestrati e gli eventuali virus trovati dovrebbero essere documentati
e, è scelta dell’analizzatore, rimossi. Come anche in questo caso la versione del software
utilizzata dovrebbe essere conservata con la documentazione. È anche importante tenere
presente che programmi infetti possono essere immagazzinati all’interno di file compressi,
come ad esempio file zip. NB: L’esame deve essere effettuato sulla copia di lavoro, non
sull'’originale, a meno che non si decida di operare in sola lettura (in questo caso si consiglia
di assicurarsi a priori che l’opzione read only sia stata attivata)
3.2.1.9 Effettuare un Bitstream Backup degli hard disks e dei floppy disks
Il computer non dovrebbe essere manomesso e le fonti di prova non dovrebbero essere
analizzate fino a quando i backup bit a bit di tutti gli hard disk e di tutti i media non siano stati
effettuati.
Tutte le analisi delle fonti di prova dovrebbero essere effettuate sulla copia di backup piuttosto
che sul computer colpito; le fonti di prova originali dovrebbero essere lasciate intatte fino alla
fine dell’iter burocratico, in quanto l’integrità delle fonti di prova è di vitale importanza. Spesso
è molto semplice alterare o distruggere i dati e può capitare che tali alterazioni siano
irreversibili, quindi i backup risultano essere essenziali. Per questi motivi bisogna effettuare una
copia esatta dell’hard drive, meglio ancora due immagini.
Esistono molti strumenti che permettono di raggiungere questo scopo, come EnCase, o il
comando DD di Unix, o Byte Back o ancora Safeback. Ci sono alcune importanti note da
ricordare:
- chiudere l’antivirus;
- registrare la data e l’ora del CMOS (Complementary Metal Oxide Semiconductor).
Questo è molto importante specialmente quando entrano in gioco i fusi orari. Da notare
che è fondamentale rimuovere il media (hard drive,ecc.) prima di alimentare il PC per
controllare il CMOS;
- non avviare il sistema sulla macchina sospetta. Farne un’immagine utilizzando una
macchina controllata;
- documentare come l’immagine è stata creata: con quale strumento, la data e l’ora di
creazione e l’esaminatore che l’ha effettuata;
- infine, assicurarsi che lo strumento che fa l’immagine non acceda ai file di sistema del
media obiettivo dell’indagine, in quanto si vuole che non venga cambiato alcun file;
- dopo aver effettuato l’immagine sigillare il media originale in un contenitore che
protegge contro le cariche elettrostatiche, catalogarlo e firmare con le iniziali
dell’esaminatore il contenitore. Così facendo, se si commette un errore analizzando la
prima copia, se ne ha un’altra per lavorare lasciando l’originale intatta ed inalterata.
Una volta che i dati sono stati resi sicuri, bisogna preoccuparsi di poter dimostrare, a
scopo probatorio, l’integrità e l’autenticità degli stessi al fine di evitare che l’intero lavoro sia
invalidato per una sottigliezza legale. Una regola fondamentale, infatti, nella computer
forensic è che il media originale deve rimanere intatto e inalterato.
Bisogna essere in grado di dimostrare, quindi, che le fonti di prova non sono state alterate dopo
che il computer è entrato in nostro possesso in modo tale da negare accuse che riguardano la
modifica delle fonti di prova originali.
È evidente che deve esserci sempre un sistema di crittografia per garantire l’integrità delle fonti
di prova (MD5, SHA-1 usato dal governo degli stati uniti). Queste funzioni sono come
“impronte digitali”: pochi dati che riescono ad identificare oggetti molto grandi. MD5 o
l’SHA-1 sono funzioni hash irreversibili (il termine irreversibili deriva dalla natura
matematica). Le funzioni hash possono quindi essere utilizzate a scopo d’autenticazione e
per garantire l’integrità dei dati.
Dal 1989, le forze dell’ordine ed agenzie militari hanno usato un processo matematico a 32 bit
per realizzare il processo di autenticazione. Comunque, considerando la velocità di computer di
oggi e l'enorme capacità di memoria dei dischi rigidi, questo livello di precisione non è più
sufficientemente adeguato. Il CRC a 32 bit può essere compromesso.
Esistono programmi che usano un livello di accuratezza tra i 64 e 255 bit. Questi programmi
vengono utilizzati per autenticare i dati sia a livello fisico che a livello logico. Alcuni di questi
sono: md5deep, CRCMD5 e DiskSig.
La data e l’ora associate ai file possono risultare estremamente importanti dal punto di vista
delle fonti di prova . Se, per esempio, l'orologio di sistema è un'ora indietro rispetto all’ora del
luogo in cui si sta effettuando l’analisi a causa del fuso orario anche i file riporteranno data ed
ora errate. La precisione dell’ora e della data dei file è legata direttamente all'accuratezza
dell’ora e della data immagazzinata nel chip CMOS del computer. Di conseguenza, è
importante documentare con esattezza sul computer sequestrato questi valori. Senza tali
informazioni, sarà impossibile convalidare la precisione dell’ora e della data associate ai file del
computer. Di conseguenza, è opportuno che l’ora corrente e la data siano confrontate con le
stesse informazioni immagazzinate nel computer.
L’ora corrente può essere ottenuta dalla società telefonica o dal sito Internet
http://greenwichmeantime.com/home.htm. La data e l’ora dei file sono particolarmente
importanti nel documentare i file retrodatati del computer. Quando le impostazioni sul computer
sono imprecise, la data e l’ora associate ai file interessanti possono essere ricostruite per
interpolazione dall’esaminatore. Dal punto di vista dell’analisi forense, comunque, è bene tenere
Poiché i dischi rigidi moderni sono molto voluminosi, è estremamente complesso per un
analizzatore prendere visione e valutare ogni file. A questo fine sono necessari tool
automatizzati nella ricerca di parole chiave all’interno dei file di testo presenti su tutti i
dispositivi di memorizzazione a disposizione. E’ importante raggruppare informazioni
compilando una lista di parole chiavi pertinenti, tenere l'elenco il più corto possibile ed evitare
di usare parole comuni o parole che costituiscono parte di altre parole.
I file di swap di Windows sono potenzialmente una fonte preziosa di prova. La valutazione dei
file di swap può essere automatizzata attraverso l’utilizzo di tool forensic come SleuthKit. Nel
passato questa tediosa operazione veniva svolta con editors esadecimali e il processo di
valutazione di un solo file di swap di Windows durava giorni.
Utilizzando tools automatici questo processo oggi impiega solo alcuni minuti. Con l’arrivo di
Windows 95/98, i file di swap possono essere creati dinamicamente quando il computer viene
acceso, mentre quando il computer è spento i file di swap vengono cancellati. Esistono
programmi che valutano il contenuto dei file di swap, catturando i file cancellati e creano archivi
che verranno valutati da appositi filtri. 31
Lo slack space è un’area di deposito dei dati che la maggior parte degli utenti non conosce.
E’una fonte di perdita di sicurezza e consiste in una copia grezza della memoria eseguita
durante la chiusura della sessione di lavoro. I dati scaricati dalla memoria vengono
immagazzinati alla fine dei file allocati, fuori dalla portata e dalla vista degli utenti. In un hard
disk ben configurato 900 Mb di spazio potrebbero essere occupati dallo slack space.
Per valutare lo slack space è richiesto l’utilizzo di specializzati tool di forensic che forniscono
una ricchezza di informazioni e comandi investigativi. In questo modo l’investigatore può
rintracciare delle parole chiave utili per recuperare importanti comandi e parole chiave che
altrimenti non sarebbero noti. Queste parole chiave potrebbero essere aggiunte alla lista del
computer dell’investigatore per usi futuri.
30
Trattasi del principio della correlazione.
31
Il fatto che si utilizzino degli strumenti automatizzati di ricerca non esime l’operatore da conoscere il loro funzionamento.
Pagina 166 di 334
3.2.1.15 Valutare gli spazi non allocati (file cancellati)
3.2.1.16 Cercare le parole chiave nei files, slack space e spazi non allocati
L'elenco di tutte le parole chiave attinenti identificate nei passi precedenti dovrebbero essere
cercate in tutti gli hard disk drive ed in tutti i floppy disk concernenti il caso. Esistono, sul
mercato, molte utilities di forensic di ricerca di testo.
E’ importante verificare l’output dell’utility di ricerca ed ugualmente importante è documentare
le relative scoperte. Quando viene identificata una prova pertinente, questa dovrebbe essere
annotata ed i dati identificati dovrebbero essere completamente esaminati per parole chiave.
Quando viene trovata una nuova parola chiave questa deve essere aggiunta alla lista e dovrebbe
essere condotta una nuova ricerca utilizzando l’utility di ricerca di testo.
Da un punto di vista della prova, i nomi dei file, la data di creazione, la data e l’ora dell’ultima
modifica possono essere importanti. Per questo motivo è importante catalogare tutti i file
allocati e “cancellati”. Il programma Filelist genera il suo output organizzandolo in un database
che può essere ordinato in base al nome, dimensione, contenuto, data di creazione, data e ora di
ultima modifica del file. Tali informazioni ordinate possono generare un grafo che indica
l’utilizzo del computer su scala temporale. Quando il filelist database viene collegato con
diversi computer coinvolti nello stesso caso, l’ordinamento finale può fornire informazioni utili,
ad esempio i comandi utilizzati dall’intruder.
I file crittografati, compressi e di grafica sono memorizzati in formato binario. Per questa
ragione i testi memorizzati nei file con questi formati non possono essere rintracciati da un
programma di ricerca. Perciò è necessario analizzare questi file con metodi manuali e, nel caso
di file crittografati è richiesto un maggior impegno.
E’ anche opportuno controllare i file contenuti nel cestino, che sono quelli cancellati dall’utente.
Questo può essere rilevante da un punto di vista probatorio. Si consiglia altresì di verificare la
presenza di eventuali tools di steganografia.
Quando si lavora sugli hard disk un potenziale pericolo consiste nella perdita dei dati o nel fatto
che vengano nascosti. Di conseguenza, è importante documentare il modello e la dimensione di
tutti gli hard disk drive contenuti nei computer sequestrati. Le informazioni di fabbricazione
registrate all’esterno dell'hard disk dovrebbero essere riportate nella documentazione.
Controllare il partizionamento degli hard disk è altrettanto importante, specialmente per
verificare la presenza di partizioni nascoste e/o partizioni formattate con un sistema operativo
non compatibile con DOS. Quando questa eventualità si verifica è possibile trovare un hard disk
nascosto e grandi quantità dei dati all’interno dei quali potrebbero esserci potenziali fonti di
prova . Il partizionamento può essere controllato con un gran numero di software, come ad
esempio il comando DOS “fdisk” o Partition Magic. Quando si trovano partizioni nascoste,
devono essere controllate alla ricerca di fonti di prova e la loro esistenza deve essere
documentata. Devono essere inseriti e descritti nella documentazione anche il numero e le
dimensioni delle partizioni e tutti i file in esse rintracciate. Si rammenti, comunque, che sono
molti i Vendor di Hard Disk che mettono a disposizione del pubblico dei servizi di
individuazione delle caratteristiche dei propri prodotti.
In base all’applicazione software utilizzata, potrebbe essere necessario eseguire i programmi per
conoscere la loro finalità. Nel caso in cui vengano scoperti processi dannosi legati a fonti di
prova evidenti, questi possono essere utilizzati come fonti di prova inconfutabili. Tali processi
distruttivi possono essere ricondotti a tasti funzione o all’esecuzione di comandi di uso comune
legati al sistema operativo o alle applicazioni.32
32
In qualsiasi momento dell'indagine possono essere effettuati dei riscontri utilizzando programmi FILELIST e/o
programmi autenticati matematicamente. Si tenga comunque conto che si tratta di un programma di tipo commerciale.
Ulteriori informazioni possono essere reperite alla Url http://www.forensics-intl.com/filelist.html
Pagina 168 di 334
3.2.1.22 Tenere copie dei software usati
I tool software usati durante le analisi sono relativamente poco costosi e alcune società di
software sostengono le forze dell’ordine con software forense libero e scontato. Bisogna essere
sicuri di essere autorizzati nell’utilizzare il software e documentare questo fatto nella relazione,
in quanto avvocati difensivi potrebbero contattare gli editori di software coinvolti e
verificheranno se l’utente è autorizzato ad utilizzare il software.
3.3.1 Introduzione
In questo documento è stata più volte sottolineata l'importanza, a seguito di un'intrusione, della fase di
protezione dei dati e dei relativi supporti fisici.
Preservare fisicamente e mantenere nello stato originale le fonti di fonte di prova (digital evidences)
deve essere un obiettivo da non sottovalutare, in quanto tale operazione assume un ruolo fondamentale
in un eventuale processo giudiziario, soprattutto in sede penale.
Dal punto di vista legale, infatti, ogni alterazione, anche se minima, può rendere inefficace ogni fonte
di prova presentata, col rischio di rendere vani i propri sforzi e non poter più far valere i propri diritti.
Il trattamento e la custodia dei log memorizzati a seguito di un’intrusione dovranno essere soggetti a
criteri diversi da quelli applicati ai normali log d’esercizio:
verosimilmente il tempo di conservazione sarà più lungo ed il luogo in cui verranno conservate le
informazioni ed i rispettivi supporti fisici dovrà avere elevate caratteristiche di integrità e sicurezza.
Ricordiamo infine che le procedure di risposta all'intrusione sono diverse a seconda che si parli di
sospette violazioni amministrative, gestibili direttamente (in astratto) all'interno dell'azienda, oppure di
veri e propri crimini informatici, per i quali ci si deve rivolgere alle Forze dell'Ordine.
Principio Base
Tutte le azioni compiute a seguito di un incidente informatico non devono aggiungere, modificare, o
distruggere dati memorizzati su un computer o su altri dispositivi.
I computers sono strumenti elettronici fragili, molto sensibili a fattori esterni quali temperatura,
umidità, urti, elettricità statica e campi magnetici.
Speciali precauzioni devono perciò essere prese durante l'imballo, il trasporto e la conservazione delle
fonti di prova elettroniche.
3.3.2.1 Imballaggio
Procedura di imballaggio:
• Assicurarsi che tutti i contenitori siano correttamente etichettati. Se sono presenti vari
componenti di uno stesso computer sull'etichetta dovrà esserci il relativo riferimento (es. PC1:
mouse/HD1/monitor, PC2: mouse/HD1/HD2/... etc.)33
Il materiale di imballaggio ideale per una CPU è il contenitore originale fornito dal produttore, anche se
raramente se ne ha la disponibilità.
Se la confezione originale non risulta disponibile la CPU può essere imballata e trasportata così come si
trova nel suo alloggiamento, facendo attenzione a non capovolgerla o ad appoggiarvi sopra altre cose
durante il trasporto.
Per quanto riguarda i dischetti segnaliamo che essi sono un supporto magnetico molto fragile.
Se vengono imballati malamente e hanno la possibilità di urtare tra di loro durante il tragitto, si corre il
rischio di danneggiarli e perdere dei dati.
33
Le istruzioni di massima inserite in questa parte del documento possono anche costituire una checklist
Pagina 171 di 334
Da non utilizzare invece le cosiddette “patatine” in quanto possono depositarsi all'interno del computer
e/o dei componenti ed inoltre creano cariche statiche che possono causare perdite di dati o danneggiare
i circuiti delle schede.
Sigillate poi i contenitori con del robusto nastro adesivo per pacchi.
Imballate e spedite i componenti rivolti verso l'alto etichettando l'esterno del cartone con la scritta
“LATO RIVOLTO VERSO L'ALTO” o scritte equivalenti (SU, ALTO etc.).
Dischi, cassette, hard-disk devono essere imballati in modo da non permettere movimenti durante il
trasporto.
Etichettate poi l'esterno del contenitore con scritte quali: FRAGILE, APPARECCHIATURE
ELETTRONICHE DELICATE, TENERE LONTANO DA MAGNETI O DA CAMPI
ELETTROMAGNETICI.
3.3.2.2 Trasporto
• Evitare di lasciare i dispositivi nel veicolo per lunghi periodi di tempo: condizioni di eccessivo
caldo, freddo, o umidità possono creare dei danni;
• Assicurarsi che il computer e gli altri componenti siano messi al riparo da forti vibrazioni o
sollecitazioni meccaniche: fissare accuratamente gli imballi in modo che non cadano durante
frenate o altre manovre improvvise. Il posto migliore risultano essere i sedili poiché
l’imbottitura attenua le vibrazioni del veicolo;
3.3.2.3 Conservazione
Dopo aver creato l'immagine bit a bit dei vari supporti, averne calcolato l’hash, e prodotto la relativa
documentazione, tutti i dispositivi devono essere sigillati e riposti in un luogo fisicamente sicuro.
Per “fisicamente” sicuro si intende un posto che non sia accessibile da personale non autorizzato
e che non possa venire influenzato o compromesso da fattori fisici/ambientali esterni (campi
elettromagnetici, inondazioni, incendi etc.).
La vita limitata dei supporti magnetici e ottici è un problema di notevole rilevanza, sebbene esso non
sia il fattore più importante nella conservazione del materiale digitale.
Alcune ricerche sulla longevità dei supporti magnetici indicano un intervallo compreso tra i 10 e i 30
anni come “vita utile”, a patto che essi siano maneggiati ed archiviati in modo proprio.
Migliorare la stabilità, capacità e longevità dei supporti di memorizzazione è necessario: vi è infatti il
bisogno di ridurre la possibilità, insita nei supporti digitali, di subire perdite o alterazioni dei dati come
conseguenza di degradazione fisica, instabilità delle particelle magnetiche etc.
I dispositivi ottici sono soggetti a danni derivanti da polvere, elevata umidità, rapidi ed estremi sbalzi di
temperatura: risulta palese l'importanza di avere un luogo sicuro in cui riporre i supporti citati.
Un esempio di luogo sicuro può essere una cassaforte o un armadio blindato, ai quali abbiano accesso
solamente il personale addetto alla gestione dell'incidente o coloro citati nelle policies specifiche.
• spazi di archiviazione sicuri (es. casseforti), il cui accesso sarà consentito solamente a coloro
provvisti della chiave o della combinazione.
La conservazione fisica dei supporti rappresenta quindi un punto molto importante nella fase di risposta
all'incidente, in quanto le fonti di fonte di prova danneggiate non potranno essere ammesse in un
eventuale processo legale.
Attualmente non esiste una norma impositiva per le politiche di Log Rotation.
A titolo esemplificativo, durante la normale operatività (log non generati da un'intrusione), i tempi di
conservazione sono nell'ordine di:
A seguito di un'intrusione però (i log devono essere SUBITO masterizzati e firmati digitalmente) i
tempi di conservazione si allungheranno; non è infatti possibile stabilire a priori quando, e per quanto,
saranno necessari all'azienda o all'Autorità Giudiziaria.
Molti casi giudiziari infatti si protraggono per anni prima di essere risolti: un posto sicuro in cui
depositare le fonti di fonte di prova originali risulta perciò di rilevante importanza al fine di prevenire
ogni tipo di contaminazione o alterazione dei dati.
Quando si subisce un accesso non autorizzato, può rendersi necessaria un'azione legale contro l'intruso.
Tuttavia, se le fonti di prova dell'intrusione non sono trattate in modo opportuno, potrebbero diventare
inammissibili in un eventuale processo giudiziario.
E' quindi di fondamentale importanza porre tutta la cura necessaria nelle fasi di acquisizione,
conservazione e protezione delle fonti di prova .
Uno dei motivi per cui le fonti di prova possono risultare inadatte è dovuto al fatto che, all'interno
dell'azienda, le politiche di gestione degli incidenti informatici sono inadeguate (o addirittura del tutto
assenti!).
Troppo spesso infatti manca un valido piano di incident response, il personale è scarsamente
addestrato, o la Chain of Custody risulta incompleta e/o poco chiara.
Nel caso in cui il team di risposta all'incidente si trovi di fronte ad un computer aziendale utilizzato per
creare e diffondere virus informatici e/o per attaccare altri computer, la violazione diventa perseguibile
a livello civile/penale.
Deve perciò esistere una policy che, oltre a segnalare con quale Autorità Giudiziaria si debba prendere
contatto, specifichi quali sono le prime azioni da compiere per trattare e preservare in maniera
opportuna le potenziali fonti di prova .
Nello specifico si dovrà partire dal presupposto che tutta l'area di lavoro, l'ufficio, gli armadi etc. sono
una potenziale “scena del crimine”, non solo il computer specifico.
L'area di lavoro dovrà essere resa fisicamente sicura e protetta, al fine di mantenere l'integrità della
scena e dei supporti di memorizzazione.
Una volta che la sicurezza di base è stata stabilita, la scena non dovrà essere lasciata senza controllo
fino a quando tutto il processo sarà completato: potrà accedervi solamente il personale direttamente
coinvolto nella risposta all'incidente.
Una policy di fondamentale importanza è quella relativa alla compilazione ed all'aggiornamento della
Chain of Custody..
Una volta che i dati sono stati raccolti, essi devono essere protetti da eventuali contaminazioni e/o
alterazioni.
Ricordiamo che gli originali non devono essere utilizzati nell'analisi forense ma si lavorerà solamente
sulle copie verificate.
L'accesso alle fonti di prova deve essere estremamente ristretto e documentato in modo chiaro: un
buon modo per assicurare e documentare che i dati siano rimasti integri è quello di utilizzare la Chain
of Custody.
Un esempio di Chain of Custody si può trovare nella documentazione scaricabile dal sito di IRItaly
(www.iritaly.org ).
Collaborare con l'Autorità Giudiziaria è un fattore di notevole importanza se si vuole che le indagini
abbiano buon esito.
Troppo spesso infatti la denuncia, ed il relativo intervento da parte della Polizia Giudiziaria non viene
fatta in modo repentino: il rischio è quello che non sia più possibile identificare il responsabile
dell'attacco o che le fonti di fonte di prova non possano più essere ritenute inequivocabili in sede
processuale.
3.3.6.2 Legislazione
Per “ammissibilità” si intende che una fonte di prova deve essere conforme a certe “regole” legali.
Per “peso” intendiamo che le fonti di prova devono essere in numero ed importanza sufficiente a
convincere il Giudice dell'effettivo svolgimento dei fatti e/o del contenuto inalterato delle fonti di
prova .
Anche se il “peso” non è un concetto scientifico, possono comunque essere identificati degli attributi di
rilevante importanza quali:
• Autenticità
Bisogna dimostrare che tutte le azioni associate alla movimentazione dei dispositivi hanno
mantenuto le fonti di prova nel loro stato originale.
• Accuratezza
Viene valutata in base alle tecniche, alle procedure, ai tools utilizzati.
• Completezza
Non è sufficiente raccogliere fonti di prova che mostrino l'incidente da un'unica prospettiva o
solo quelle direttamente riconducibili alle azioni compiute dall'attacker.
Per completezza bisognerà considerare e valutare anche quelle che potrebbero dare adito a delle
contraddizioni o creare dei sospetti alternativi.
• Attendibilità
Le procedure di raccolta ed analisi delle fonti di prova non devono creare dubbi sull'autenticità e
veridicità delle fonti di prova.
• Credibilità
Le fonti di prova presentate devono essere chiare, facili da capire e credibili.
Ad esempio presentare un dump binario della memoria così come è stato acquisito può non
essere compreso da personale non tecnico. Se lo stesso dump viene però presentato
accompagnato da una versione formattata, che può essere letta e capita da chiunque, potranno
essere mostrate le relazioni col dump originale, che risulterà più chiaro e quindi più credibile.
All'accuratezza “del contenuto” deve essere affiancata anche l'accuratezza “del processo” utilizzato per
reperire le fonti di prova.
Consigliamo quindi di utilizzare tool possibilmente “non proprietari”, oppure che siano talmente diffusi
e sicuri da costituire uno standard de-facto.
Questo tipo di politica, però, non basta per proteggere dall’accesso non consentito ai sistemi;
bisogna infatti ricordare che le password possono essere vittime di molteplici attacchi, tra i quali
ricordiamo:
• Sniffing: possono essere acquisite nella comunicazione lungo la rete. E’ possibile evitare
questo tipo di attacco non facendo viaggiare in chiaro le password in rete;
• Spoofing: le password possono essere acquisite da terze parti che impersonano l’interfaccia
di login.
Va ricordato che una delle maggiori cause di vulnerabilità delle password è rappresentata dalla
scelta e dalla gestione delle stesse da parte degli utenti.
• vengono scelte password deboli, quali ad esempio data di nascita, nomi propri, etc;
Non tutte le aziende, in ogni caso, realizzano i rischi collegati all’assenza o alla presenza di una
password policy insufficiente. Questi includono anche problemi di denial-of-service e di
formazione degli utenti.
E’ necessario ricordare, nella stesura di una password policy, che essa deve considerare gli aspetti
peculiari del contesto in cui viene inserita e perciò deve variare la sua complessità in dipendenza
delle necessità degli asset aziendali. Le password policy devono essere in accordo con questioni
legali e devono essere elastiche e reattive ai cambiamenti aziendali.
E’ importante, nella redazione di una password policy, considerare il fattore umano, quale fattore
di successo o insuccesso della stessa policy: la scelta di regole troppo complesse o di modifiche
troppo frequenti delle password possono essere percepite dall’utente come motivo di frustrazione
e far fallire la policy prescelta. Bisogna, perciò, valutare il trade-off costi/benefici, onde evitare
che i costi, rappresentati da un eccessivo carico nei confronti degli utenti, non superino il valore
degli asset aziendali da proteggere.
Una policy aziendale relativa alle password dovrebbe essere redatta considerando tutti gli aspetti
sopra citati, ossia le vulnerabilità alle quali sono soggette le password, il comportamento degli
utenti, gli asset aziendali e il trade-off costi/benefici.
• Complessità: dovrebbe essere richiesto, nella fase di creazione della password, l’utilizzo di
un mix di caratteri. Le password dovrebbero contenere sia caratteri minuscoli che maiuscoli
e almeno un carattere non alfabetico (numerici, speciali), non dovrebbero essere facilmente
intuibili e non dovrebbero corrispondere a parole di dizionari (o leggere variazioni di
queste);
• Età: le password dovrebbero essere periodicamente modificate dagli utenti (almeno ogni
30-120 giorni);
• Facilità: la password deve essere facile da ricordare, per evitare che venga scritta, ma
difficile da indovinare;
• Password vuote: non bisognerebbe mai lasciare la possibilità di non impostare una
password;
• Impersonalità: non utilizzare mai come password qualsiasi cosa che possa essere collegato
all’utente che la imposta, come ad esempio una password simile alla login, la propria
professione, data di nascita, etc
• Segretezza: una password dovrebbe essere nota solo all’utente che necessita dell’accesso ad
una determinata risorsa;
Una policy relativa alle password dovrebbe considerare la possibilità degli amministratori di
settare a priori dei controlli sulle caratteristiche delle password, dovrebbero essere perciò
previste:
• restrizioni sulla lunghezza e sul numero minimo di caratteri da utilizzare;
• scadenza della password, onde obbligare gli utenti ad una modifica periodica;
• controllo sulla storia recente delle password utilizzate, onde evitare la ripetizione delle
stesse da parte degli utenti
Infine, bisogna ricordare che la password policy deve essere documentata in modo preciso e
facilmente comprensibile da tutti gli utenti dei sistemi aziendali; essa deve essere comunicata in
maniera trasparente. E’ necessario anche prevedere dei cicli di formazione aziendale per far sì
che gli utenti comprendano il valore della policy e si impegnino a rispettarla.
2. Nella struttura della console in Utenti e gruppi locali fare clic su Utenti.
Pagina 181 di 334
3. Scegliere Nuovo utente dal menu Azione.
• Nome completo;
• Descrizione;
• L'account è disattivato.
2. Nella struttura della console in Utenti e gruppi locali fare clic su Utenti.
Per impostare una password policy nei sistemi Windows è possibile utilizzare i “modelli di
protezione” o “security template”. In seguito verrà definito un modello di protezione tale che
rispetti i seguenti parametri:
La figura 24, mostra il dettaglio della Password Policy e la modifica di uno dei parametri presenti.
Come si può notare dalla figura 24 e dalla figura 25, i parametri presenti per l’impostazione di
una password policy sono:
• storia delle password utilizzate precedentemente;
• età massima delle password;
• età minima delle password;
• lunghezza minima delle password;
• complessità delle password;
• utilizzo di reversibile encryption delle password.
Come si evince dalla figura 25, la Policy settata concorda con quella definita all’inizio del
paragrafo.
4.1.1.1.2 Linux
In questo paragrafo prenderemo in considerazione l’utilizzo di “Password shadow” e
analizzeremo brevemente le differenze con /etc/passwd.
Il meccanismo delle password shadow si basa su un principio molto semplice: nascondere le
password cifrate ai processi che non hanno i privilegi dell'utente root. Infatti, nei sistemi in cui
le password shadow non sono attivate, è il file /etc/passwd, leggibile a tutti i tipi di utenti, che
contiene tali le password cifrate.
Il formato del file /etc/passwd non “oscurato” è il seguente:
utente:pwd:UID:GID:nome_completo:directory:shell
dove:
dove:
• mod: data di ultima modifica della password (espressa in numero di giorni trascorsi dal
01/01/1970);
• val_min: numero di giorni di validità minima della password; entro questo periodo, l'utente
non può cambiarla;
• val_max: numero di giorni di validità massima della password; prima che trascorra questo
tempo, l'utente deve cambiarla;
• preavv: numero di giorni, prima della scadenza, durante i quali l'utente viene avvisato
della necessità di modificare la password;
In figura 30, si può vedere il record creato nel file /etc/passwd e si nota la “x” al posto della
password.
Nel file /etc/shadow, (figura 31), si può notare che il record relativo all’utente creato non ha
ancora la password impostata (al posto della password si trova “!!”), si procede perciò ad inserire
una password per quest’utente.
• massimo numero di giorni di validità di una password: il suo valore viene stabilito
utilizzando il parametro “-x”, in questo esempio sarà posto uguale a 40;
• minimo numero di giorni tra cambiamenti della password: si setta utilizzando il parametro
“-n”. Il suo valore verrà posto uguale a 10;
• numero di giorni di avviso prima della scadenza di una password: si imposta utilizzando il
parametro “-w”, in questo esempio sarà posto uguale a 7;
• numero di giorni dopo la scadenza della password, prima che l'account venga bloccato: si
stabilisce il suo valore grazie al parametro “-i”. Esso sarà posto uguale a 15.
Data di
Data di Fine giorni di Inizio giorni Scadenza Fine tempo Disattivazione
modifica password riserva account
validità di preavviso
“mod” 10 33 40 55 “scad”
Tempo
(giorni)
Giorni di riserva
Giorni di validità
della password
Giorni di preavviso
Validità
minima
Le modifiche possono essere osservate nel file /etc/shadow (figura 35). La figura mostra che i
campi del record iritaly sono stati aggiornati, abbiamo infatti il campo “10” relativo al numero
minimo di giorni tra modifiche della password, il campo “40” relativo alla validità della
password, i campi “7”, e “15”, relativi alla scadenza della password.
L’amministrazione degli utenti ed il settaggio un password policy possono essere effettuati più
agevolmente utilizzando un unico file di configurazione: /etc/login.defs.
Ogni professionista della sicurezza o amministratore di sistema, ad un certo punto della sua
carriera, si scontra con la decisione: è meglio cercare di riparare il danno subito o reinstallare
completamente il sistema e ripartire da zero? La scelta fra queste due alternative deve essere
specificata e motivata nella politica di risposta all’incidente dell’organizzazione.
Prima di entrare nello specifico, consideriamo come si è potuti giungere a dover prendere una
decisione di tale rilevanza. Ovviamente si deve essere verificato un incidente informatico, cioè un
intruso deve in qualche modo aver fatto breccia e compromesso in modo serio il nostro sistema.
A questo punto, si potrebbe pensare di applicare semplicemente delle patch al sistema, ripristinare
la macchina allo stato originario e rimetterla in funzione. Ma per ogni particolare exploit, anche
se si possiede una procedura specifica di ripristino molto dettagliata, è difficile essere certi che
non siano state fatte modifiche al di fuori del suo raggio d’azione. Worm, virus e rootkit possono
diffondersi su qualunque sistema; spesso rimuovono e cancellano file rilevanti, si nascondono in
altre parti del sistema e a volte restano inattivi e possono essere modificati in ogni momento per
eseguire altre azioni dannose. Per questa ragione le procedure di ripristino rilasciate dopo un
grave incidente diventano presto obsolete.
La realtà, come ogni esperto di Incident Response può confermare, è che la scoperta di tutti i
cambiamenti effettuati sul sistema compromesso è estremamente difficile. Una volta entrato nel
sistema, infatti, un attacker può attivare delle backdoor, modificare alcune operazioni standard del
sistema e nascondere dei file. Anche se è installato un tool di controllo dell’integrità dei file
(come Tripwire) è virtualmente impossibile garantire che il sistema sia completamente pulito.
Riparare un sistema compromesso è sicuramente uno degli aspetti più problematici del lavoro di
un professionista che opera nell’ambito della sicurezza informatica.
Mentre il ripristino del sistema potrebbe sembrare la soluzione più semplice, fare il wipe del
sistema e installare una versione pulita del software è spesso la procedura migliore.
Nel paragrafo 1.1 sono state fornite alcune definizioni di “backup” rapportate al contesto di
utilizzo. L’essere attrezzati con backup effettuati regolarmente è molto importante per la gestione
dei problemi di sicurezza. Nel caso in cui il sistema venga compromesso, è in questo modo
sempre possibile ripristinare i propri dati dai file di backup.
Prima di recuperare alcuni file è opportuno effettuare la verifica degli stessi attraverso backup
effettuati in momenti differenti, anche molto tempo addietro, in modo da potersi accertare
dell’integrità dei file stessi. Infatti l’intruso potrebbe aver compromesso tale file molto tempo
prima e i backup più recenti potrebbero quindi contenere una copia già compromessa del file.
Ovviamente esistono una serie di problemi di sicurezza relativi ai backup; è quindi opportuno
assicurarsi di custodirli in un luogo sicuro, verificare e controllare tutte le persone che vi hanno
accesso e sapere con certezza che i backup sono stati creati prima della compromissione.
Un metodo di backup semplice è fare una copia di tutto una volta e poi copiare solo quei file che
sono stati modificati dal precedente backup. Il primo viene chiamato backup completo, i
successivi sono detti backup incrementali.
Un backup completo è spesso più laborioso di uno incrementale, dato che bisogna scrivere più
dati sul nastro, e un solo nastro (o cdrom) potrebbe non bastare; d’altra parte recuperare dati da
backup incrementali può essere molto più faticoso che da un backup completo. Il recupero può
essere ottimizzato copiando tutto quello che è stato modificato dall'ultimo backup completo;
questo modo di operare è un po' più laborioso, ma non ci dovrebbe mai essere bisogno di
recuperare più che un backup completo e uno incrementale.
È importante fare bene i backup, assicurarsi che funzionino e che contengano tutti i dati sensibili
durante la loro creazione, per evitare di scoprire nel momento del bisogno che c’è qualche
problema o dimenticanza. Può anche capitare che tutti i backup siano perfettamente funzionanti,
ma che l'ultimo lettore che poteva leggere quel tipo di file non sia più disponibile.
È importante sottolineare l’importanza di fare il backup di tutti i dati presenti sulla macchina.
L'eccezione principale è costituita dal software che si può facilmente reinstallare, che però può
avere file di configurazione importanti e quindi da salvare.
Un'altra eccezione importante è il filesystem /proc; dato che contiene solo dati che i kernel
genera automaticamente, non è mai una buona idea farne il backup. Specialmente il file
/proc/kcore è del tutto inutile, dato che è solo un'immagine della memoria fisica, ed è anche
piuttosto grande.
Importanti invece sono i file degli utenti (/home) e i file di configurazione del sistema (/etc), ma
probabilmente anche altre cose sparpagliate per il filesystem.
Si possono anche estrarre file o directory specifiche (compresi tutti i file e le sottodirectory in
esse contenuti) dandoli sulla linea di comando:
Si usi l'opzione --list (-t), se se si vogliono solo vedere quali file ci sono in un volume di
backup:
Si noti che tar legge sempre i volumi di backup sequenzialmente, quindi per volumi grandi è
piuttosto lento. Non è possibile, comunque, usare delle tecniche di accesso casuale quando si usa
un'unità a nastro o qualche altro mezzo ad accesso sequenziale.
tar non gestisce bene i file che sono stati cancellati. Se si deve recuperare un sistema da un
backup completo e uno incrementale, e si sono cancellati dei file tra i due backup, questi
esisteranno di nuovo dopo il recupero, il che può essere un problema serio, se questi file hanno
dati importanti che non dovrebbero essere più disponibili.
Powerquest DriveImage
Per completezza si vuole citare anche il software commerciale Powerquest DriveImage con il
quale è possibile salvare il file d'immagine che verrà creato (ossia la copia speculare di una
partizione o dell'intero disco fisso) su un altro disco fisso, su un'altra partizione o, meglio, su CD-
ROM o su di un'unità esterna (ad esempio un supporto tipo Iomega Zip).
Come la maggior parte dei software di disk imaging, DriveImage deve essere eseguito in modalità
DOS a causa delle caratteristiche intrinseche del sistema operativo. Windows, infatti, apre
contemporaneamente decine di file e applicazioni. Con così tanti file aperti (pensate poi che ogni
applicazione carica in memoria numerose librerie necessarie per il suo funzionamento) sarebbe
impossibile creare un'immagine della partizione o del disco. In modalità DOS nessun programma
può disturbare il lavoro di DriveImage.
Gli obiettivi delle azioni che andremo a descrivere consistono nel riportare il sistema al normale
stato di funzionamento nel più breve arco di tempo possibile, cercando di ridurre le possibilità di
un futuro attacco portato a buon fine.
In aggiunta si tenga presente che è bene, nel caso in cui si volessero effettuare delle indagini di
tipo forense, effettuare una copia dell’intero sistema su un altro dispositivo di memorizzazione
attraverso l’utilizzo di un programma apposito (disk image copier).
Per completezza citiamo anche il programma Norton Ghost che permette di fare un'immagine di
un disco o partizione locale, e poter ripristinare così il contenuto del disco in pochi minuti e senza
problemi. Per utilizzare il programma si deve disporre, oltre all'unità di cui si vuol fare il ghost, di
un'altra unità accessibile da DOS. Non è possibile utilizzarlo per dei backup parziali delle unità.
Ghost fa un'immagine completa dell'unità; se trova errori, anche questi andranno a finire
nell'immagine.
Il momento più critico nella ricostruzione di un sistema consiste nello wipe e nella formattazione
dei drive di sistema. Questa attività consiste nella distruzione di tutti i dati memorizzati sul disco
e rende possibile l’installazione da zero di tutti i software di sistema ripuliti da ogni eventuale
virus o worm.
Come detto, queste due operazioni cancellano irrimediabilmente tutte le informazioni presenti sul
disco. Per questa ragione, ci si potrebbe domandare se non sarebbe possibile, molto più
semplicemente, riparare o aggiornare il sistema colpito; questa possibilità è offerta da molti
sistemi operativi.
Se un sistema viene riparato, processo che richiede normalmente un disco di emergenza o di
ripristino, il sistema operativo ripulisce la versione precedente andando a reinstallare o a sostituire
i file di sistema più critici o le applicazioni rimosse. Il problema relativo a questo genere di scelta
consiste nel fatto che tali operazioni di riparazione ripristinano i file di sistema modificati o
cancellati, ma non vanno a controllare tutti i file che sono stati eventualmente aggiunti
dall’intruso. In questo modo tutte le eventuali backdoor, applicazioni aggiuntive o ogni altro
genere di malicious code viene lasciato installato sul sistema, senza che avvenga alcuna modifica
e/o segnalazione.
Per questa ragione è fortemente consigliabile la reinstallazione completa del software, preceduta
da una procedura di formattazione dell’intero sistema compromesso.
Procedura di formattazione
La formattazione è il processo con cui si segnano ex-novo sul mezzo magnetico le tracce e i
settori. Prima che venga formattato, il disco ha una superficie in cui i segnali magnetici si
sovrappongono in maniera caotica, mentre dopo la formattazione si porta un certo ordine nel
Si inserisca il disco di start-up e quando il pc si riavvia e compare sullo schermo un prompt dei
comandi di MS-DOS si digiti il comando fdisk. La schermata che segue illustra la situazione
corrente del disco, cioè in quante partizioni logiche è suddiviso.
Per cancellare una partizione si selezioni l'opzione 3. Si ricorda che con questa operazione tutti i
dati contenuti nella partizione andranno irrimediabilmente persi.
A questo punto, si chiuda fdisk e si riavvii il pc pronto per la formattazione. Per fare questo,
sempre dal prompt di DOS si digiti FORMAT C: .
File System
I filesystem comprendono i metodi e le strutture di dati usate da un sistema operativo per tenere
traccia dei file su un hard disk o su una sua partizione, cioè il modo in cui i file sono organizzati
sui dischi; di questi ne è stata fornita una descrizione nel paragrafo 1.1.2.
La differenza tra un disco o una partizione ed il filesystem che esso contiene è molto importante.
Alcuni programmi (compresi ovviamente quelli che creano i filesystem) operano direttamente sui
settori del disco o della partizione; se c'è un filesystem presente, questo verrà distrutto o
seriamente danneggiato. La maggior parte dei programmi operano su un filesystem e quindi non
funzioneranno su una partizione che non ne contiene uno (o che ne contiene uno del tipo
sbagliato).
Prima che si possa usare un disco o una partizione come filesystem, questo deve essere
inizializzato e bisogna scriverci le strutture di dati per l'archiviazione: questo processo si chiama
creazione di un filesystem.
Linux supporta diversi tipi di filesystem. I più importanti sono:
• minix Il più vecchio e molto probabilmente il più affidabile, ma piuttosto limitato
(mancano alcuni time stamp, i nomi di file sono al massimo di 30 caratteri) e di capacità
ristrette (al massimo 64 MB per filesystem);
• xia Una versione modificata del filesystem minix, che alza i limiti sulla lunghezza dei
nomi di file e sulla dimensione dei filesystem; non introduce però nuove caratteristiche. Non
è molto conosciuto, ma pare che funzioni molto bene;
• ext2/ext3 Il più completo dei filesystem nativi di Linux e al momento anche il più usato. È
disegnato per essere compatibile in avanti, in modo che per usare nuove versioni del codice
non si abbia bisogno di ricreare i filesystem esistenti;
• ext Una versione più vecchia dell'ext2 che non era compatibile in avanti. Non è usato
quasi mai nelle nuove installazioni, perché la maggior parte delle persone si sono convertite
all'ext2/ext3.
Oltre a questi vengono supportati molti filesystem di altri sistemi operativi, per rendere più
semplice lo scambio di file:
• msdos Compatibile con i filesystem FAT di MS-DOS (e OS/2 e Windows NT);
• usmdos Estende il driver msdos sotto Linux, in modo da avere i nomi di file lunghi, i
permessi, i link e i file di device, e da assegnare ciascun file a un utente. In questo modo è
possibile usare un normale filesystem msdos come se fosse uno Linux, eliminando la
necessità di avere una partizione separata per quest'ultimo;
• iso9660 Il filesystem standard per i CD-ROM; viene supportata automaticamente
l'estensione Rock Ridge allo standard per i CD-ROM, che permette di avere i nomi dei file
lunghi;
• nfs Un filesystem di rete che permette la condivisione dei file tra vari computer per
premettere un accesso più facile;
• hpfs Il filesystem di OS/2;
• sysv I filesystem SystemV/386, Coherent e Xenix.
Per prima cosa il floppy viene formattato (l'opzione -n fa in modo che non vengano ricercati i
blocchi danneggiati); poi viene attivata la ricerca con badblocks, con l'output rediretto in un file,
bad-blocks. Infine, si crea il filesystem, con l'elenco dei blocchi danneggiati letto da ciò che è
stato trovato dal comando badblocks.
Si poteva usare nello stesso modo l'opzione -c di mkfs invece di badblocks e un file separato,
come riportato nell'esempio qui sotto.
$ mkfs -t ext2 -c /dev/fd0H1440
mke2fs 0.5a, 5-Apr-94 for EXT2 FS 0.5, 94/03/10
360 inodes, 1440 blocks
72 blocks (5.00%) reserved for the super user
First data block=1
Block size=1024 (log=0)
Fragment size=1024 (log=0)
1 block group
8192 blocks per group, 8192 fragments per group
360 inodes per group
Il primo comando dd crea un'immagine esatta del floppy nel file floppy-image, il secondo copia
l'immagine nel floppy (presumibilmente l'utente ha cambiato floppy prima del secondo comando,
altrimenti la coppia di comandi non è molto utile).
Procedura di wipe
Avviando un’operazione di wiping si potrà, quindi, evitare che qualcuno che dispone dell’accesso
al personal computer possa mettere mano a documenti riservati, precedentemente cancellati,
ricorrendo all’uso di utilità per il recupero dei file.
La funzione per la pulitura del disco di Windows consente di eliminare file non più necessari
liberando spazio su disco. Qualora si dovesse avviare la pulitura, questa interferirebbe con
l’operazione di wiping rallentandola e, nei casi peggiori, causando problemi al file system.
Sure Delete
Sure Delete è un programma gratuito, compatibile con tutte le versioni di Windows, sviluppato
con un unico obiettivo: offrire un software di semplice utilizzo che permettesse di eseguire il
wiping del disco fisso e di qualsiasi altro supporto di memorizzazione.
Il software è costituito da due moduli separati, SD Disk e SD File: l’uno permette di rendere non
più recuperabili i file cancellati in precedenza (ciò è possibile sovrascrivendo più volte tutti i
cluster del disco marcati come spazio libero), l’altro consente di cancellare file e cartelle in modo
sicuro impedendone da subito eventuali tentativi successivi di ripristino.
Durante l’utilizzo di SD Disk, dopo aver avviato il wiping sullo spazio libero, è possibile che
Windows mostri un messaggio che segnala l’imminente esaurimento dello spazio a disposizione
sul disco fisso (il testo completo del messaggio è il seguente: “Spazio su disco dell’unità X
esaurito. Per eliminare i file vecchi o inutilizzati e liberare spazio sull’unità, scegliere il pulsante
Pulitura disco”). È di importanza fondamentale che non acconsentiate all’esecuzione dell’utilità
di Pulitura disco: cliccate sempre sul pulsante Annulla.
Dopo aver formattato il disco, potrebbe risultare necessario creare, modificare o eliminare lo
schema di partizioni precedentemente utilizzato.
Non è facile partizionare un disco nel modo migliore possibile. Peggio ancora, non c'è nessun
modo corretto per farlo, in quanto vengono coinvolti troppi fattori.
La procedura più comune da seguire è avere un filesystem radice (relativamente) piccolo, che
contenga /bin, /etc, /dev, /lib, /tmp e altre cose necessarie per fare partire il sistema: in
questo modo il filesystem radice (nella sua partizione o sul suo disco) è tutto quello che serve per
avviare il sistema. Questo in quanto se il filesystem radice è piccolo e non viene usato
pesantemente, è meno probabile che venga corrotto quando si ha un crash del sistema e quindi
sarà più facile risolvere qualsiasi problema che si potrebbe venire a creare.
Poi si creano delle partizioni separate o si usano dischi separati per l'albero delle directory sotto
/usr, le home directory degli utenti (di solito sotto /home) e lo spazio di swap. Separare le home
directory (con i file degli utenti) in una partizione distinta rende più facili i backup, dato che
spesso non è necessario farlo per i programmi (che risiedono sotto /usr). In un ambiente di rete è
anche possibile condividere /usr tra svariate macchine (ad esempio usando NFS) e riducendo
così lo spazio disco totale richiesto di diverse decine o centinaia di megabyte moltiplicato per il
numero di macchine.
Il problema di avere molte partizioni è che ciò divide lo spazio libero totale in piccoli pezzi;
oggigiorno, essendo i dischi e i sistemi operativi molto più affidabili, molte persone preferiscono
avere solo una partizione che contenga tutti i file. D'altra parte può essere meno doloroso fare il
backup (e il restore) di una partizione piccola.
Per un hard disk piccolo (assumendo che non sviluppiate il kernel), il modo migliore è
probabilmente avere una sola partizione.
Per dischi grandi è probabilmente meglio avere alcune partizioni grandi, giusto in caso vada bene
qualcosa (notate che “piccola” o “grande” sono termini usati in senso relativo: le soglie sono
dettate dal vostro bisogno di spazio disco).
Pagina 204 di 334
Se avete più di un disco potete pensare di tenere il filesystem radice (compreso /usr) su uno e le
home degli utenti su un altro.
Nella documentazione della vostra distribuzione del sistema operativo troverete alcune
indicazioni sullo spazio disco necessario per svariate configurazioni; i programmi installati
separatamente possono fare lo stesso. In questo modo vi sarà possibile pianificare l'uso dello
spazio disco, ma dovreste prepararvi per il futuro e riservare dello spazio extra per le cose di cui
vi accorgerete di avere bisogno.
4.2.2.4 Partizionamento
L’operazione successiva consiste nel partizionare lo spazio presente sul o sui dischi selezionati.
Tale operazione può essere effettuata, in alcuni casi, in maniera automatica.
È però consigliabile, se si ha a disposizione la descrizione della configurazione precedente,
mantenerla inalterata.
Esistono molti programmi per creare e rimuovere partizioni. La maggior parte dei sistemi
operativi ne ha uno proprio, ed è una buona idea usare quello del sistema installato, in caso faccia
qualcosa di particolare che gli altri non fanno. La maggior parte di questi programmi, compreso
quello per Linux, si chiamano fdisk, o variazioni sul tema. I dettagli sull'uso dell'fdisk di Linux
sono riportati nella sua pagina man. Il comando cfdisk è simile a fdisk, ma ha un'interfaccia utente
più usabile.
Ciascuna partizione o partizione estesa ha il proprio file di device. Per convenzione i nomi di
questi file sono composti dal nome del disco e dal numero della partizione, tenendo conto che da
1 a 4 si tratta di partizioni primarie (indipendentemente da quante partizioni primarie ci siano in
Dopo aver creato, attraverso gli step descritti in precedenza, un sistema ripulito da ogni genere di
malicious code, il passo successivo consiste nell’installare il sistema operativo.
Questo genere di attività può variare in modo considerevole a seconda del software utilizzato ed è
quindi consigliabile seguire le linee guida relative all’installazione fornite dal produttore.
In aggiunta, può essere utile verificare la disponibilità di una versione più aggiornata dello stesso
sistema operativo o l’utilità di cambiare software, a seconda delle esigenze aziendali.
Durante il processo di installazione del sistema operativo, verrà richiesto di fornire i driver,
qualora questi non siano già inclusi nel cdrom di installazione del sistema stesso, per le
periferiche plug-&-play rilevate all’interno del sistema.
Si raccomanda di fornire sempre driver aggiornati (solitamente scaricabili dal sito del produttore)
e, possibilmente, certificati dalla ditta produttrice del sistema operativo.
Prima di procedere all’installazione, i driver scaricati dovranno sempre essere controllati con un
antivirus aggiornato e, ove possibile, verificati digitalmente.
È comunque sempre preferibile installare un driver meno recente ma di cui possiamo conoscere
con certezza la provenienza e la cui affidabilità è stata certificata attraverso una fase di testing.
Dopo aver ultimato l’installazione del sistema operativo e dei relativi driver, è importante
applicare tutte le patch sinora rilasciate dal produttore.
Qualora si disponga dei cdrom con tutti gli aggiornamenti richiesti, si raccomanda si installarli
prima di mettere la macchina ondine.
Qualora non si disponesse delle patch necessarie e non si avesse la possibilità di scaricarle da una
terza macchina, è possibile effettuare gli aggiornamenti direttamente via Internet, attraverso
servizi quali Linux Update e Windows/Office Update.
Quest’ultima operazione andrà comunque effettuata una volta installate le patch a in proprio
possesso, in quanto nuovi aggiornamenti di sicurezza vengono rilasciati piuttosto frequentemente
ed è quindi molto probabile che ne siano usciti di nuovi da quando si è fatto l’ultimo download.
Dopo aver installato il sistema operativo, si installino le applicazioni, come i server, le utility e
tutti i programmi necessari per il corretto svolgimento delle attività aziendali.
È possibile, solo nel caso in cui si ha la certezza che i programmi non siano stati coinvolti
nell’attacco, reinstallare le configurazioni critiche e i file di sistema copiandoli dalla macchina
compromessa. Si tenga però presente che tale tipo di operazione è molto rischiosa e deve essere
eseguita solo nel caso in cui è veramente necessaria e si ha la certezza che i file che si sta andando
a copiare non siano stati in alcun modo compromessi.
Prima di riconnettere il sistema alla rete, è necessaria una revisione delle politiche di sicurezza, in
modo tale da non fornire all’attacker le stesse vulnerabilità sfruttate nella precedente intrusione.
Si inizi tale attività rimuovendo tutte le porte inutilmente aperte e tutti i servizi di rete non
necessari. Si utilizzi un portscanner (ad es. Nmap, descritto nel par. 4.6) per determinare quali
server sono in ascolto e si chiudano tutti quelli non essenziali.
In seguito, si controllino tutte le applicazioni attive e si rimuovano tutte quelle ritenute non
necessarie.
L’obiettivo è quello di creare un sistema molto povero in termini di numero di processi attivi e
offerti all’utente, in quanto ciascuno di questi è da considerarsi una potenziale vulnerabilità.
Arrivati a questo punto, si dovrebbe avere a disposizione una replica del sistema originale, ma
ancora offline.
La ricostruzione di una macchina senza tener in conto la connettività alla rete può essere fatta
solo su alcuni sistemi operativi, ma su altri è difficile. Se le circostanze rendono necessario il
collegamento del sistema alla rete, è bene procedere con cautela e con la massima attenzione. Ci
si accerti che tutti i servizi in ascolto siano spenti prima di connettere la macchina.
In aggiunta, la macchina potrebbe essere posta dietro un firewall che blocchi tutto il traffico in
entrata.
Infine, per evitare che un eventuale virus o worm interno alla rete raggiunga nuovamente la
macchina, dovrebbe essere l’unica macchina posta su quel particolare segmento di rete.
Pagina 208 di 334
Una macchina senza patch è infatti estremamente vulnerabile ad un grande numero di problemi;
per questa ragione, ci si accerti che siano state adottate le corrette tecnologie di difesa prima di
collegare una macchina alla rete per effettuare gli aggiornamenti online.
È anche consigliabile modificare tutte le password del sistema, in quanto l’attaccante potrebbe
aver scoperto qualcuna di queste e avere quindi la possibilità di effettuare accessi futuri al
sistema.
Uno scanner delle vulnerabilità è un buon programma da utilizzare durante questo processo.
Questo genere di tool controlla il sistema attraverso una lista di vulnerabilità note e genera un
report di potenziali “buchi” di sicurezza. Ci si accerti che ciascuna di queste vulnerabilità
identificate dal processo siano riparate prima di mettere il sistema online.
4.2.7.1 Nessus
Per effettuare un controllo sul grado di sicurezza e affidabilità della propria rete è
possibile utilizzare i programmi Nessus e nmap (descritti nel par. 4.6).
Nessus è un progetto che ha come scopo quello di fornire alla comunità uno strumento
potente, facile e gratuito per analizzare e scoprire le vulnerabilità di una rete.
Nmap è un'utility per l'esplorazione e l'auditing della propria rete. Disponibile per quasi
tutti i sistemi UNIX (Linux, FreeBSD, NetBSD, OpenBSD, Solaris, ...), attualmente
non ne esiste una versione per Windows.
4.2.8 Conclusioni
Una volta terminate le operazioni sopra descritte, sarà possibile riportare il sistema online.
Tutte le azioni intraprese dovrebbero prevenire, almeno in un primo momento, il ritorno
dell’attacker all’interno del proprio sistema. Se la macchina venisse nuovamente compromessa in
un breve lasso di tempo, le cause potrebbero essere riscontrate nella mancata individuazione della
reale vulnerabilità che ha portato alla compromissione del sistema, oppure nella presenza di
un’ulteriore vulnerabilità non individuata in precedenza.
1. Esaminare i files di log al fine di trovare collegamenti dati da situazioni o attività inusuali. Per
esempio, prendere visione del ‘last’ log contenente informazioni relative agli accessi effettuati
dagli utenti, tutti i log creati da syslog e tutti gli altri security log. Se il firewall o il router usato
scrive log in una posizione differente dal sistema compromesso, ricordarsi di controllare anche
questi log. Notare che questo approccio non è infallibile fino a che non si scrivono log su media
che permettano solamente di eseguire operazioni di append; in situazione diverse da quella
appena citata, molti abili intrusi sono in grado di modificare i log tentando di nascondere le tracce
del loro passaggio.
2. Controllare i files con setuid e setgid attivi presenti in tutto il sistema, in modo particolare i files
con setuid proprietari di root. Spesso gli intrusi lasciano nascoste nel sistema copie di file con
setuid come /bin/bash o /bin/time in modo da garantirsi un futuro accesso al sistema con permessi
di root. Il programma find di UNIX può essere usato per trovare all’interno dell’albero di sistema
file setuid di root e setgid kmem file. Per esempio, possono essere usati comandi di ricerca come
i seguenti per fare una ricerca estesa all’interno sistema:
E’ da notare che gli esempi fatti percorrono l’intero albero delle directory del sistema, compresi
filesystem NFS/AFS montati. Alcune versioni di find supportano l’opzione
“-xdev” che permette di evitare la ricerca in queste tipologie di gerarchie. Per esempio:
Un’altro modo per cercare file di tipo setuid è tramite il comando ncheck eseguto su ogni
partizione del sistema. Per esempio, il comando seguente ricerca setuid files e device speciali
sulla partizione /dev/rsd0g:
ncheck –s /dev/rsd0g
3. Controllare i binari di sistema per accertarsi che siano stati alterati. Gli intrusi possono alterare i
programmi di base dei sistemi UNIX come login, su, telnet, netstat, ifconfig, ls, find, du, df, libc,
sync, alcuni binari citati in /etc/inetd.conf, altri programmi di sistema critici e librerie di oggetti
condivisi. E’ necessario comparare le versioni presenti sul proprio sistema con copie note e
riconosciute dei file in questione, come ad esempio quelle provenienti dal supporto di
installazione del sistema. Bisogna prestare attenzione quando si fa affidamento a copie di backup
e tenere presente che copie di backup potrebbero essere infettate da Trojan Horse. I Trojan Horse
potrebbero in alcuni casi produrre lo stesso checksum e timestamp dei file come nelle versioni
Anche file con nomi come ‘.xx’ e ‘.mail’ sono stati usati (ovvero file che potrebbero apparire
del tutto normali).
10. Esaminare tutte le macchine della rete locale quando si stanno cercando tracce di intrusione. Gran
parte delle volte, se un host è stato compromesso, lo sono anche altre macchine presenti sulla
stessa rete. Questo è vero in modo particolare per le reti in cui è attivo il demone NIS o dove gli
ps –ef | grep yp
Potrebbero essere in escuzione ‘ypbind’ o ‘ypserv’. Anche altri demoni come ‘rpc.passwd’ o
‘rpc.yppasswdd’ potrebbero essere in esecuzione.
1. Esaminare i file di log alla ricerca di connessioni o attività insolite. E’ possibile utilizzare
Event Viewer per controllare la presenza di inusuali strani logon, falle dei servizi o insoliti
reboot del sistema. Nel caso vi siano installati firewall, web server o router che loggano al di
fuori del sistema compromesso, controllare con attenzione questi log, ricordandosi che spesso
gli intrusi modificano i file di log al fine di occultare la loro attività.
2. Controllare account o gruppi di utenti insoliti. E’ possibile utilizzare User Manager o i
comandi ‘net user’, ‘net group’ e ‘net localgroup’ dalla linea di comando. Assicurarsi che
l’account guest sia disabilitato se il sistema non lo richiede.
3. Controllare tutti i gruppi per la presenza di eventuali membership di utenti non valide. Alcuni
dei gruppi di default in NT forniscono speciali privilegi ai membri di quel gruppo. I membri
del gruppo Administrators possono compiere qualsiasi attività sul sistema, i Backup Operators
possono leggere qualsiasi file del sistema. I Power Users possono creare condivisioni.
4. Controllare se esistono inappropriati permessi utente, tramite User Manager sotto le voci
Policy, User Rights. Ci sono 27 differenti permessi che possono essere assegnati a utenti o
gruppi. Solitamente la configurazione di default per questi permessi è sicura.
5. Controllare se sono state fatte partire applicazioni non autorizzate. Ci sono parecchi diversi
metodi con cui un intruso potrebbe far partire un programma back doork, pertanto assicurarsi
di:
• controllare le cartelle di Startup. Notare che ve ne sono due: una per l’utente locale e
una per tutti gli utenti. Quando un utente si logga, tutte le applicazioni in “All Users”
vengono fatte partire, pertanto controllare eventuali applicazioni sospette;
• controllare il registro Locazioni 1;
• controllare se esistono servizi insoliti. Alcuni programmi backdoor si autoinstallano
come servizi, i quali vengono caricati al boot della macchina. I servizi possono essere
abilitati tramite il privilegio utente “Logon as Service”. Controllare i servizi eseguiti
automaticamente all’avvio ed assicurarsi che siano necessari. Verificare inoltre che i
file eseguibili non siano programmi Trojan horse o backdoor.
6. Controllare eventuali alterazioni dei binari confrontando le versioni sul sistema con copie
fidate e non alterate. Porre comunque attenzione nell’utilizzo di copie di backup, poiché anche
queste potrebbero contenere Trojan horse.
I programmi Trojan horse possono produrre la stessa dimensione e lo stesso timestamp
dell’originale del file, pertanto controllare le proprietà del file e i timestamp associati con i
programmi non è sufficiente a determinare se i programmi siano stati modificati. E’ possibile
utilizzare tool quali Tripwire, MD5 e altri che effettuano checksum crittografico, al fine di
individuare eventuali modifiche apportate a programmi o file, purché i tool di checksum siano
mantenuti in luogo sicuro, evitando così modifiche da parte dell’intruso.
Ricordarsi sempre che se una macchina è compromessa, qualsiasi cosa sul sistema potrebbe
essere stata modificata, incluso il kernel, binari, file di dati, processi running, e la memoria.
In generale, l’unico modo fidato per ottenere la macchina ripulita da backdoor e modifiche
dell’intruso è quello di reinstallare il sistema operativo dai supporti di distribuzione originali e
installare tutte le patch di sicurezza prima di connettere la macchina alla rete.
Riconoscere le vulnerabilità sfruttate dall’intruso e installarne le relative patch può non essere
sufficiente.
E’ pertanto consigliato fare un restore del sistema usando binari fidati, reinstallando il sistema
operativo usando i supporti di distribuzione originali.
Successivamente configurare il sistema con i soli servizi che si vogliono offrire, non uno di più.
Controllare che non vi siano punti deboli nei file di configurazione di questi servizi e che questi
servizi siano disponibili solo ad altri sistemi fidati.
In generale, la policy più conservativa è quella di cominciare disabilitando tutto e abilitando solo
servizi necessari.
Configurati i servizi si può passare alla fase di installazione delle patch di sicurezza.
Tale fase è fortemente consigliata, ed è di fondamentale importanza assicurarsi che siano stati
installati i set di patch per ognuno dei propri sistemi.
Un’altra operazione fondamentale consiste nell’effettuare regolarmente aggiornamenti delle patch
installate, assicurandosi della loro provenienza e integrità.
E’ possibile tenersi aggiornati consultando periodicamente bollettini di sicurezza, quali i Past
AusCert advisories e gli External Security Bulletins, disponibili all’indirizzo
http://www.auscert.org.au/Information/Advisories/esb_advisories.html
Nel ripristinare i dati da un backup, assicurarsi che quest’ultimo provenga da una macchina non
compromessa, poiché esiste il rischio di reintrodurre le stesse vulnerabilità sfruttate dall’intruso
per accedere al sistema.
Inoltre, nel caso si stiano ripristinando solamente file di dati e le cartelle personali degli utenti,
ricordarsi che ognuno di questi file potrebbe contenere un Trojan horse.
Porre particolare attenzione ai file .rhosts nelle cartelle personali degli utenti.
I dati presenti all’interno di un sistema compromesso sono spesso modificati dagli intrusi,
pertanto è consigliato verificare l’integrità di:
• pagine web
• archivi ftp
• file nell’home dell’utente
• ogni altro tipo di file presente nel sistema
Gli intrusi avranno quasi certamente installato tool personalizzati al fine di monitorare o accedere
al sistema compromesso.
Le più comuni categorie di file lasciati dagli intrusi sono:
1. Sniffer di rete
Utility che monitora e registra le attività di rete in un file. Gli intrusi di solito li usano per
catturare username e password, inviati in chiaro lungo la rete.
2. Trojan Horse
Programmi che sembrano svolgere una determinata funzione mentre in realtà svolgono funzioni
differenti. Sono utilizzati dagli intrusi per nascondere la loro attività, catturare username e
password, e inoltre creare backdoor per garantirsi accessi futuri al sistema compromesso.
3. Backdoor
Progettati per nascondersi all’interno dell’host, target dell’intrusione, consentono a chi li installa
di accedere al sistema senza il bisogno di autenticarsi o di sfruttare vulnerabilità.
4. Vulnerabilità
La maggior parte delle intrusioni sono il risultato di macchine con versioni software vulnerabili.
Gli intrusi spesso usano tool che sfruttano vulnerabilità conosciute, guadagnandosi accessi non
autorizzati. Questi tool sono spesso lasciati nel sistema all’interno di directory nascoste.
E’ consigliato effettuare ricerche accurate di tali tool e file di output, assicurandosi di utilizzare
copie fidate dei tool utilizzati per la ricerca dei tool di intrusione.
Durante la ricerca dei tool di intrusione su un sistema compromesso:
• su sistemi UNIX, cercare inattesi file ASCII nella directory /dev, oppure binari Trojan nei
file di configurazione, spesso locati in /dev;
• cercare molto attentamente eventuali file o directory nascoste, presenti se un intruso ha
creato un nuovo account e una directory di home;
• su sistemi UNIX, cercare file o directory con nomi strani come “…”(tre punti) o “.. “ (due
punti e alcuni spazi); gli intrusi spesso creano e nascondono file all’interno di tali
directory.
4.3.4.4 Chkrootkit
Chkrootkit è uno strumento per determinare localmente sul sistema tracce di rootkit.
Il pacchetto scaricabile dall’homepage dello strumento contiene:
• chkrootkit: E’ lo script che esegue il controllo sui binari di sistema per identificare
alterazioni a questi file dovute all’uso di rootkit sul sistema in esame. Vengono eseguiti i
seguenti test:
o aliens asp bindshell lkm rexedcs sniffer wted w55808 scalper slapper z2 amd
basename biff chfn chsh cron date du dirname echo egrep env find fingerd gpm
grep hdparm su ifconfig inetd inetdconf init identd killall ldsopreload login ls lsof
mail mingetty netstat named passwd pidof pop2 pop3 ps pstree rpcinfo rlogind
rshd slogin sendmail sshd syslogd tar tcpd tcpdump top telnetd timed traceroute
vdir w write
Aliens tenta di trovare log di sniffer e file di configurazione di sniffer. Cerca in alcune locazioni
di default del sistema. Anche in questo caso non è garantito che la ricerca abbia successo in ogni
caso.
chkproc controlla se le entries in /proc sono nascoste dal comando di sistema ‘ps’ e dalla
chiamata di sistema ‘readdir’. Questo potrebbe essere l’indicatore della presenza di LKM troiani.
Questo comando può essere eseguito con l’opzione –v per ottenere un output del programma più
prolisso.
Installazione
Una volta posizionati all’interno della directory in cui è stato decompresso il tarball è possibile
compilare tutti i programmi digitando:
# make sense
gcc -DHAVE_LASTLOG_H -o chklastlog chklastlog.c
Pagina 217 di 334
gcc -DHAVE_LASTLOG_H -o chkwtmp chkwtmp.c
gcc -DHAVE_LASTLOG_H -o ifpromisc ifpromisc.c
gcc -o chkproc chkproc.c
gcc -o chkdirs chkdirs.c
gcc -o check_wtmpx check_wtmpx.c
gcc -static -o strings strings.c
Utilizzo
chkrootkit deve essere eseguito con i privilegi di root. Il modo più semplice per eseguirlo è
digitando il comando:
# ./chkrootkit
In questo modo vengono eseguiti tutti i test. E’ possibile specificare esclusivamente i test che
desideriamo eseguire come mostrato qui sotto:
Dove ‘testname’ può essere sostituito con uno o più dei test presenti nella lista seguente:
aliens asp bindshell lkm rexedcs sniffer w55808 wted scalper slapper z2 amd basename biff chfn
chsh cron date du dirname echo egrep env find fingerd gpm grep hdparm su ifconfig inetd
inetdconf identd init killall ldsopreload login ls lsof mail mingetty netstat named passwd pidof
pop2 pop3 ps pstree rpcinfo rlogind rshd slogin sendmail sshd syslogd tar tcpd tcpdump top
telnetd timed traceroute vdir w write
Per esempio il comando seguente controlla che non ci siano Trojan Horse nei binari ‘ps’ e ‘ls’ e
inoltre controlla se la l’interfaccia di rete si trova in modo promiscuo.
# ./chkrootkit ps ls sniffer
Con l’opzione ‘-x’ è possibile esaminare stringhe sospette presenti all’interno dei binari e che
potrebbero identificare la presenza di Trojan Horse. In questo caso tutta l’analisi è lasciata
all’utente. Per effettuare questo tipo di analisi è possibile lanciare:
# ./chkrootkit -x | more
Chkrootkit per eseguire i suoi test utilizza i seguenti comandi: awk, cut, egrep, find, head, id, ls,
netstat, ps, strings, sed, uname. Per mezzo dell’opzione ‘-p’ è possibile fornire a chkrootkit un
percorso alternativo da cui caricare dei binari non compromessi per eseguire i suoi test. Per
esempio, per usare dei binari presenti su un cdrom è possibile lanciare, dopo aver montato il
dispositivo cdrom:
# ./chkrootkit -p /cdrom/bin
A volte risulta utile montare il disco di una macchina compromessa su una macchina di fiducia ed
eseguire i test da quest’ultima. Basta montare il disco e specificare la nuova rootdir con l’opzione
‘-r’. Per esempio, supponendo di aver montato il disco sotto /mnt, digitare:
# ./chkrootkit -r /mnt
Messaggi di output
I seguenti messaggi sono stampati a schermo da chkrootkit (ad eccezione delle opzioni ‘-x’ e ‘-q’)
durante il suo funzionamento:
"not tested": Il test non è stato eseguito; questo può avvenire in alcune situzioni:
a) il test è dipendente dal SO;
b) il test dipende da un programma esterno che non è disponibile;
c) sono state inserite alcune opzioni specifiche a linea di comando (es: ‘-r’).
"Vulnerable but disabled": il comando è infetto ma non in uso. (non in esecuzione o commentato
in inetd.conf)
Il problema più grande è determinato dal fatto che la macchina è stata compromessa e l’intruso
possiede i privilegi di root. Probabilmente può essere risolto il problema sostituendo i comandi
troianizzati. Il modo migliore per fare questa operazione è quello di reinstallare i comandi da un
media di installazione sicuro.
4.3.4.5 Tripwire
Tripwire è un software Open Source Security, Intrusion Detection, Damage Assessment and
Recovery, Forensics.
5. Test Mode
Modalità per verificare l’operazione di notifica tramite e-mail, il cui settaggio è specificato nel
file di configurazione. Se MAILMETHOD è settato a SMTP, i valori SMTPHOST e SMTPPORT
saranno usati per inviare la mail. Se MAILMETHOD è settato a SENDMAIL verrà usato il valore
MAILPROGRAM. Se tale notifica funziona correttamente, l’indirizzo specificato in linea di
comando riceverà il seguente messaggio:
Pagina 220 di 334
To: user@domain.com
From: user <user@domain.com>
Subject: Test email message from Tripwire
Alcuni semplici passi per installare Tripwire sul sistema, possono essere sintetizzati nel seguente
modo:
# /etc/tripwire/twinstall.sh
Una volta generati i file di chiave, lo script firmerà la nostra configurazione e i file di policy.
Verrà chiesta nuovamente la nostra “site passphrase” a ogni passaggio di questo procedimento:
Lo script di installazione provvede anche alla generazione di chiavi crittate che usa poi per
firmare e quindi proteggere i file di configurazione e di policy. Una volta crittate e firmate il file
di configurazione /etc/tripwire/tw.cfg e di policy /etc/tripwire/tw.pol generate dallo script
/etc/tripwire/twinstall.sh è consigliata la rimozione dei file di configurazione in chiaro
/etc/tripwire/twcfg.txt e /etc/tripwire/twpol.txt che contengono la versione leggibile da tutti della
configurazione di Tripwire. Una volta spostati o rimossi è possibile vedere quelli crittati e firmati
tramite l’utility ‘twadmin’ con le opzioni ‘--print-cfgfile’ e ‘--print-polfile’. Sempre con la stessa
utility è possibile designare un file di testo esistente (quindi in chiaro) come nuovo file di policy o
configurazione: attraverso l’uso della ‘site key’ impostata nella fasi precedenti il nuovo file viene
crittato e salvato. Le opzioni utilizzabili sono ‘--create-cfgfile’ e ‘--create-polfile’.
# tripwire –init
Please enter your local passphrase:
Parsing policy file: /etc/tripwire/tw.pol
Generating the database...
Potremmo vedere messaggi del tipo “No such file or directory”. Non allarmarsi. Se non viene
scelto di abilitare un servizio o se viene rimosso un pacchetto verranno stampati a schermo questi
avvisi inoffensivi. Quando tutto è completo, viene stampato a video un messaggio di questo tipo:
# tripwire –-check
Il test ha una durata dipendente dal numero di file da analizzare e dalle prestazioni del sistema.
Pagina 222 di 334
Una volta eseguiti correttamente gli step descritti precedentemente, Tripwire ha una vera e
propria ‘fotografia’ dello stato del sistema che verrà usata successivamente per trovare le
eventuali modifiche avvenute ai file critici di sistema. Può essere utile creare una script da
posizionare per esempio dentro a /etc/cron.daily che esegua in modo automatico il controllo di
integrità dei file di sistema critici giorno dopo giorno. Uno script di base che si puù trovare già
incluso in alcune versioni di Tripwire è:
#!/bin/sh
HOST_NAME=`uname -n`
if [ ! -e /var/lib/tripwire/${HOST_NAME}.twd ] ; then
echo "**** Error: Tripwire database for ${HOST_NAME} not found.
****"
echo "**** Run "/etc/tripwire/twinstall.sh" and/or "tripwire --init".
****"
else
test -f /etc/tripwire/tw.cfg && /usr/sbin/tripwire --check
fi
4.3.4.6 LSOF
Lsof è stato soprannominato il coltellino svizzero dell’intrusion detection per il vasto range nel
quale il tool può essere impiegato alla ricerca di tracce di intrusione. Ma come parecchi tool è
tanto utile quanto l’esperienza di chi l’utilizza, soprattutto riguardo lsof, a causa della sua
versatilità.
Opzioni comuni
Utilizzando lsof senza opzioni si genera una lista enorme di file aperti (a seconda del sistema) che
è troppo vasta per essere utile. Tuttavia questa lista potrebbe aiutare a capire qual è il “normale”
comportamento del sistema.
All’inizio, le due opzioni maggiormente utilizzate sono: -p e –i.
Opzione –p: elenca i file aperti per un determinato process id. Per esempio, per vedere i processi
associati a init, digitare: lsof –p 1.
Opzione –P: il tool non converte i numeri di porta coi relativi nomi dei programmi associati con
essi.
Opzione –i: il tool esamina le porte aperte in listening per eventuali tentativi di collegamento. Ciò
aiuta a rilevare segni di intrusione e mettere in evidenza servizi aperti non necessari. Esempio:
Per esempio, è possibile generare uno script che crea una lista dei processi di rete aperti tramite
lsof –i e la confronta periodicamente con quella corrente. Se questo confronto evidenzia
differenze nel numero dei processi aperti o altri criteri predefiniti, lo script può avvisare
l’amministratore che qualcosa è cambiato. Seguendo questa logica, è possibile automatizzare la
ricerca di irregolarità in un ampio range di processi di sistema.
Ricordarsi che l’automazione dipende dalle proprie decisioni in base al comportamento tipico del
sistema. Pertanto se le decisioni iniziali sono sbagliate o incomplete si avrà un falso senso di
sicurezza o un gran numero di falsi positivi su cui indagare.
Esempi di utilizzo
# lsof
# lsof -i –U
Per listare tutti i file di rete Ipv4 aperti e in uso dal processo il cui PID è 1234, usare:
# lsof -i 4 –a –p 1234
Nel caso il sistema supporti Ipv6, per elencare tutti i file di rete Ipv6 in uso:
# lsof –i 6
Per listare tutti i file di ogni tipo di protocollo sulle porte 513, 514, o 515 dell’host locale, usare:
# lsof –i :513-515
Per elencare tutti i file di tutti i protocolli e tutte le porte utilizzate usare:
# lsof –i
Per elencare tutti i file per il nome di login “abe” o l’ID utente 1234 o il processo 567, usare:
# lsof /dev/hd4
# lsof /u/abe/foo
4.4.1 Introduzione
La comunità degli esperti di sicurezza delle reti informatiche scopre nuove vulnerabilità tutti i
giorni. A volte le minacce proliferano in una sola notte, altre volte invece passano mesi prima che
le vulnerabilità siano sfruttate ai danni di aziende in tutto il mondo. Fino a poco tempo fa la
maggior parte degli attacchi organizzati era diretta contro i siti governativi e quelli delle grandi
multinazionali. Di pari passo con lo sviluppo di strumenti di attacco sempre più evoluti ed
automatizzati facilmente reperibili, gli hacker non-professionisti sono in grado di prendere di mira
reti non altrettanto ben protette, come quelle delle piccole e medie imprese e finanche delle reti
domestiche connesse in banda larga ad Internet.
4.4.2 Definizioni
Vulnerability scan
Il documento tratterà gli aspetti relativi alla determinazione della vulnerabilità facendo
riferimento al tool NESSUS. Il progetto Nessus si propone di offrire alla comunità internet uno
strumento gratuito potente e sempre aggiornato in grado di effettuare vulnerability scan da
remoto.
Un security scanner è uno strumento che permette di verificare, all’ interno di una determinata
rete, la presenza di falle di sicurezza che potrebbero permettere un accesso non autorizzato al
sistema.
ftp-data 20/tcp
ftp 21/tcp
ssh 22/tcp # SSH Remote Login Protocol
smtp 25/tcp mail
domain 53/udp nameserver
www 80/tcp http # WorldWideWeb HTTP
www 80/udp # HyperText Transfer Protocol
pop3 110/tcp pop-3 # POP version 3
irc 194/tcp # Internet Relay Chat
x11 6000/tcp x11-0 # X windows system
Un elenco delle associazioni porte <–> servizio conosciute può essere reperito all’indirizzo:
http://www.iana.org/assignments/port-numbers
Un semplice scan si basa sulla ricerche delle cosiddette “ porte aperte”, ovvero verificare se sono
attivati e disponibili determinati servizi sul sistema, e se è possibile dialogare con essi.
È comunque possibile associare a ogni servizio una porta casuale, senza rispettare lo standard.
Associare una porta “non privilegiata” a un web server potrebbe nasconderne in parte la presenza
e
quindi essere meno vulnerabile agli attacchi.
Una volta rilevata la presenza di un “demone” attivo, ovvero di un servizio pronto a dialogare
con altri, è possibile cominciare a reperire le prime informazioni utili a un attacco, come ad
esempio la versione del WebServer o di SSHD presente nel sistema, una volta ottenuta sarà
possibile generare una serie di attacchi mirati a sfruttare le vulnerabilità note di quella versione.
Per questo motivo è di fondamentale importanza mantenere sempre aggiornati i servizi di sistema
che devono essere visibili all’esterno della rete.
Nmap effettua un port scan di tutte le porte possibili basandosi sulle opzioni impostate e fornisce
l’elenco delle porte :
-sS Esegue una scansione di tipo TCP SYN, che è quella predefinita se l'utente è root.
-sT
Esegue una scansione «normale», attraverso la funzione connect() del sistema operativo,
che è quella predefinita se richiesta da un utente comune senza privilegi.
-sF Scansione di tipo TCP FIN.
-sP
Scansione attraverso l'invio di richieste di eco ICMP (ping); serve soltanto per determinare la
presenza dei nodi ipotizzati.
-sU Scansione alla ricerca di servizi UDP.
-sA
Scansione TCP ACK, per determinare la presenza di un firewall e delle sue caratteristiche
generali.
-sW Scansione Window, intesa come una variante del metodo ottenuto con l'opzione -sA.
-sR
Scansione RPC, da abbinare a un altro metodo di scansione, per determinare se le porte di
servizi disponibili corrispondono a servizi RPC.
4.4.5 Nessus
Il progetto Nessus si propone di offrire alla comunità internet uno
strumento gratuito potente e sempre aggiornato in grado di effettuare
vulnerability scan da remoto.
Caratteristiche del tool:
Scan Intelligente
Modulare
Basandosi su un’ architettura client/server, Nessus fornisce un’ estrema flessibilità d’ uso. Il
demone viene eseguito e per mezzo del client, sia testuale che grafico, può essere amministrato da
remoto, permettendo a client diversi l’utilizzo del server da postazioni differenti.
Il tool è in grado di effettuare scan simultanei di un elevato numero di host, il numero varia a
seconda della potenza di calcolo del sistema che ospita il Server Nessus. Un’ altra caratteristica
riguarda la capacità di rilevare la presenza di servizi moltiplicati sulla stessa macchina, come ad
esempio l’esistenza di due Web Server che rispondono a porte differenti. In questi casi lo scan
viene eseguito per entrambi i servizi.
Architettura Plug-in
Ogni test di sicurezza è scritto come plug-in indipendente e esterno al funzionamento di Nessus,
per questo motivo scrivere i propri script di scanning non comporta lo studio del funzionamento
dell’ interno programma. Il comando “nessus-update-plugin” permette di mantenere Nessus
sempre aggiornato relativamente agli ultimi plugin disponibili e alle nuove vulnerabilità scoperte.
NASL
Sempre Aggiornato
Nel database reperibile all’ indirizzo http://www.nessus.org/scripts.php è possibile scaricare gli
ultimi aggiornamenti relativi ai bachi di sicurezza appena scoperti. Il database viene aggiornato
con frequenza giornaliera.
Ottimizzato
Nessus permette un’ accurata selezione dei plug-in che verranno usati durante lo scan, questo
aspetto è molto utile nei casi in cui sia necessario testare solo determinate caratteristiche della
rete. Inoltre la funzionalità “safe check” permette uno scan non intrusivo ma basato sulla
rilevazione delle versioni dei servizi in esecuzione senza tentarne l’exploit.
Supporto SSL
Nessus permette lo scan dei servizi che si appoggiano al protocollo sicuro SSL, come https,
imaps, smtps e altri, semplicemente fornendo al server Nessus i certificati che verranno inseriti
nel suo ambiente PKI.
Attualmente Nessus supporta più di 1200 test di vulnerabilità, che si dividono in 23 categorie
principali:
Backdoors
CGI abuses
CISCO
Denial of Service
Finger abuses
Firewalls
FTP
Gain a shell remotely
Gain root remotely
General
Misc.
Netware
NIS
Port scanners
Remote file access
RPC
Settings
SMTP problems
SNMP
Untested
Useless services
Windows
Windows : User management
Nessus Server
Nessus Server può essere compilato e eseguito sui sistemi:
• NetBSD
• GNU/Linux
• FreeBSD
• Solaris
Nessus Client
Nei sistemi unix Nessus Client usa le librerie GTK
La versione Win32 funziona con tutti i sistemi operativi Microsoft Windows.
• nessus-libraries
• libnasl
• nessus-core
• nessus-plugins
Con questa modalità di installazione si impone l’ esecuzione di un comando remoto sul proprio
sistema, nell’ eventualità che un intruso si intrometta nella comunicazione impersonificando il
vostro DNS, il comando eseguito non sarebbe sicuro e potrebbe contenere codice dannoso.
# nessus-installer.sh
# nesuss-adduser
• Login
• Password
• Autentication Type
• Rules
Benché l’ uso di login e password sia banale è utile descrivere gli altri due aspetti.
Autentication Type permette di scegliere se l’autenticazione tra server e client avverrà in chiaro o
con procedura crittata.
Rules usato per specificare i privilegi dell’ utente. Ogni utente a un suo specifico set di regole che
restringono il range di host scannabili.
La sintassi è:
Esempio:
Le seguenti regole permettono all’ utente creato di eseguire scan verso gli host identificati dagli ip
192.168.1.0/24 , 192.168.3.0/24 , 172.22.0.0/16, e relativa netmask (in notazione binaria) e
bloccare di default tutto il resto.
accept 192.168.1.0/24
accept 192.168.3.0/24
# nessus-rmuser
/usr/local/etc/nessus/nessusd.conf
Il file contiene diversi parametri, inizialmente impostati a valori standard, che se necessario,
possono essere modificati secondo le esigenze. Il file è commentato e quindi autoesplicativo ma
citiamo i più importanti:
Percorso della directory contenente i plug-in fino a quel momento riconosciuti da Nessus:
plugins_folder = /usr/local/lib/nessus/plugins
Nel caso in cui il Sistema che ospita Nessus Sever sia protetto da firewall, sarà necessario aprire
sia in ingresso che in uscita la porta 1241. Un esempio di configurazione di iptables può essere:
###INPUT###
$IPTABLES -A INPUT -i $EXTIF -p tcp --dport 1241 -m state --state ESTABLISHED -j ACCEPT
###OUTPUT###
$IPTABLES -A OUTPUT -o $EXTIF -p tcp --sport 1241 -m state --state ESTABLISHED -j ACCEPT
• Nessusd host, identifica l’ indirizzo del server su cui è in esecuzione Nessus Server
(nessusd)
• Port, numero della porta di comunicazione in ascolto sul server
• Login e Password dell’ utente creato
• Pulsante LOGIN, per iniziare l’autenticazione
Una volta autenticati al sistema, il pulsante di log-in diventa log-out, ed è possibile iniziare
l’impostazione dello scan.
La sezione Plugin visualizza la lista dei possibili scan da effettuare e viene caricata dal server
remoto, qui è possibile scegliere ogni singola tipologia di scan ordinata in base alle diverse
famiglie elencate precedentemente.
Si noti che effettuando un scan del tipo Denial of Service è molto probabile che la connettività del
sistema target venga a mancare. L’ utente può anche utilizzare la funzione upload plugin per
inviare al server nessusd nuovi script di scan, per questa operazione però deve essere munito
degli appropriati privilegi.
Nella sezione preferences è possibile affinare le tecniche di scan immettendo login e password
dei servizi attivi sul target. Tali informazioni vengono usati per offrire ulteriori informazioni e
dati nel report finale.
In questa sezione è inoltre possibile utilizzare una funzionalità avanzata di Nessus ovvero il
salvataggio della sessione. Quando uno scan deve essere effettuato su un elevato range di
indirizzi e per altri motivi deve interrotto, la sessione di analisi può essere ripristinata in un
secondo tempo risparmiando così molto tempo.
Nella sezione User si può affinare la sezione target escludendo da un range di ip un particolare
host, sintassi:
reject <ip>
default accept / reject
Una volta certi che gli ip target siano corretti, onde evitare particolari problemi riguardanti le
policy di sicurezza aziendali, è possibile avviare lo scan che, a seconda della quantità di plugin
selezionati potrà richiedere diverso tempo.
Sezione subnet
La sezione subnet suddivide il range di host analizzati in base alle diverse sottoreti presenti
Sezione Host
Per ogni sottorete sono elencati tutti gli host scannati
Port
Selezionando un host di una sottorete appare l’ elenco delle vulnerabilità riscontrate ordinate in
base al numero di porta.
Gravità
Ad ogni vulnerabilità trovata è associato un determinato livello di rischio
Descrizione
La descrizione della vulnerabilità e le possibili contromisure da adottare per la sua eliminazione
Traduciamo il termine come “conoscenza acquisita”, ovvero quella serie di dati e informazioni
generati da Nessus nel corso di un’analisi. L’idea è quella di salvare tutti i dati relativi ad un
determinato sistema e riutilizzarli quando verrà rieseguito lo scan. Supponiamo di aver effettuato
lo scan di un sistema rivolto nello specifico all’ FTP server in esecuzione su di esso specificando
inoltre, nella sezione preferences, login e password al fine di ottenere un’ analisi più specifica e
precisa. Nel caso in cui si debba rieseguire lo scan a distanza di qualche giorno o mese, se la
• risparmiare tempo
• limitare l’uso della banda
• testare le vulnerabilità della rete solo per nuove vulnerabilità
kb è considerata un’ opzione sperimentale per questo motivo deve essere attivata a tempo di
compilazione con il comando:
# cd nessus-core
# ./configure --enable-save-kb
Per usare questa funzionalità è necessario attivarla nella sezione kb del client di Nessus, tutte le
informazioni raccolte durante l’ analisi daranno salvate sul disco dell’ host remoto nella directory:
/usr/local/var/nessus/username/kbs/
Scannare una rete richiede tempo e utilizzo di banda, se durante un’analisi uno o più host cadono,
per diverse ragioni, sarà necessario rieseguire il test di vulnerabilità dall’ inizio. L’ opzione
session saving nella sezione target salva in:
/usr/local/var/nessus/username/
tutti i dati scambiati tra client e server e permetto il ripristino dello scan dal punto in cui era stato
interrotto.
Come knowledge base, session saving è un’ opzione sperimentale e deve essere compilata con il
comando:
# cd nessus-core
# ./configure --enable-save-sessions
Abilitare l’ opzione nella sezione target, dopo il crash e la riconessione al server Nessus le
informazioni slavate saranno visualizzate nel riquadro. Le sessioni salvate possono essere anche
cancellate.
Nella fase di lesson learning, a fronte dell’avvenuta intrusione, risulta senz’altro opportuno
rimettere in discussione la validità delle policy di sicurezza e della soluzione organizzativa
adottate (argomento approfondito in altro contesto) in base soprattutto ai risultati che l’intrusione
ha portato.
Contemporaneamente è opportuno andare ad effettuare verifiche e correzioni su quei sistemi di
protezione che sono stati oggetto dell’ intrusione, facendo riferimento alle policy aziendali per
quanto riguarda gli aspetti organizzativi e di impostazione, ai fornitori di hardware e software per
gli aggiornamenti e le patch o hot-fix.
In generale verranno qui indicate alcune tra le più probabili fonti di intrusione per i sistemi
Windows e Unix, così come segnalato dal SANS Institute1, per poi dare alcune indicazioni
riguardanti i firewall e la loro revisione.
4.5.1 WINDOWS
1
“The Twenty Most Critical Internet Security Vulnerabilities”, Sans Institute 2003
Pagina 239 di 334
strumento (HFNetChk – Network Security Hotfix Checker) che aiuta gli
amministratori di sistema ad analizzare se nei sistemi locali e remoti sono state
installate le patch più recenti,
iii. Eliminare le applicazioni di esempio non appena si è verificato che l’installazione sia
corretta e che il server funzioni nel modo atteso,
iv. Disabilitare le estensioni ISAPI non necessarie: infatti la maggior parte dei sistemi
IIS non ha bisogno di molte estensioni ISAPI che sono mappate per default e quelle
non utilizzate dovrebbero essere disabilitate. Uno strumento che può essere utilizzato
allo scopo è IIS Lockdown Wizard di Microsoft,
v. Filtrare le richieste http: si può configurare il filtro URLScan per respingere tali
richieste prima che il server tenti di processarle. URLScan è integrato in IIS
Lockdown Wizard ma può essere anche scaricato separatamente.
4.5.1.7 Autenticazione generica di Windows – Account senza password o con password deboli
In quasi tutte le interazioni tra gli utenti e i sistemi informativi vengono utilizzate password, frasi
identificative o codici di sicurezza. La maggior parte delle forme di autenticazione, come la
maggior parte delle protezioni per file e dati, si basa su password fornite dall’utente. Dal momento
che gli accessi correttamente autenticati spesso non vengono registrati, o anche se vengono
registrati non lo sono in modo da fornire alcun segnale di allarme, una password compromessa
rappresenta un’opportunità di esplorare un sistema dall’interno potenzialmente senza essere
identificati. Un aggressore avrebbe accesso completo a qualsiasi risorsa disponibile per quell’utente
e sarebbe molto vicino ad essere in grado di accedere ad altri account, a macchine vicine e forse
anche ad ottenere privilegi di amministrazione. Nonostante questi pericoli, gli account con
password deboli o addirittura senza password rimangono estremamente diffusi e le società con una
buona policy sull’utilizzo delle password ancora troppo rare.
Le più comuni vulnerabilità delle password sono dovute (a) ad account senza password o con
password deboli, (b) al fatto che, a prescindere dalla robustezza delle password, spesso gli utenti
non le proteggono, (c) al fatto che il sistema operativo o il software applicativo creano account di
amministrazione con password deboli o privi di password (d) al fatto che gli algoritmi di hashing
delle password sono noti e spesso gli hash vengono memorizzati in modo da essere accessibili a
chiunque. La difesa migliore e la più corretta contro queste vulnerabilità è una solida policy che
includa le istruzioni per creare delle buone password e che riassuma i comportamenti corretti per
conservarne la riservatezza, unita a una verifica proattiva dell’integrità delle password.
Per quanto vi siano alcuni sintomi osservabili di una generale debolezza delle password, come la
presenza di account attivi appartenenti a utenti che non operano più all’interno dell’organizzazione
o a servizi non più attivi, l’unico modo per accertarsi che ogni singola password sia
sufficientemente robusta è quello di verificare tutte le password con gli stessi strumenti per la
determinazione delle password utilizzati dagli aggressori.
La difesa migliore e la più corretta contro la debolezza delle password è una solida policy che
includa le istruzioni su come generare buone password e descriva i comportamenti corretti per
mantenerne la sicurezza, assieme ad una verifica proattiva dell’integrità delle password.
o Assicursi che le password siano sufficientemente robuste. I meccanismi di definizione delle
password riportate nella policy di sicurezza devono essere sufficientemente articolati;
o Proteggere le password robuste. Anche se le password sono robuste, gli account possono
essere ugualmente compromessi se gli utenti non proteggono adeguatamente la propria
password. Una buona policy include sempre istruzioni che specificano come gli utenti
devono comportarsi nella gestione della propria password ;
o Controllare rigorosamente l’utilizzo degli account. Devono essere verificati continuamente
tutti i requisiti che giustifichino l’esistenza degli account (corrispondenza con utenti reali,
verifica dei diritti di accesso degli account);
4.5.2 UNIX
4.5.2.8 Sendmail
Sendmail è il programma che invia, riceve e inoltra la maggior parte della posta elettronica
elaborata su computer UNIX e Linux. La grande diffusione dell’uso di Sendmail in Internet lo
rende uno degli obiettivi di attacco principali, concretizzatisi in numerosi exploit nel corso degli
anni.
La maggior parte di questi exploit hanno successo solo con le versioni meno recenti del software.
Sendmail, infatti, non ha presentato vulnerabilità gravi negli ultimi due anni. Nonostante questi
problemi ormai vecchi siano stati ben documentati e siano stati risolti nelle versioni più recenti,
sono ancora oggi in circolazione un tale numero di versioni non aggiornate o mal configurate che
Sendmail rimane uno dei servizi più spesso presi di mira.
4.5.2.9 BIND/DNS
Il pacchetto software Berkeley Internet Name Domain (BIND) è l'implementazione di gran lunga
più utilizzata del Domain Name Service (DNS), il sistema che permette di localizzare un server su
Internet (o in una rete locale) utilizzando un nome (ad esempio www.sans.org) senza dover
conoscere il suo specifico indirizzo IP. La diffusione di BIND lo ha reso bersaglio di frequenti
attacchi. Anche se gli sviluppatori di BIND sono storicamente molto rapidi nel correggerne le
vulnerabilità, un numero eccessivo di server non aggiornati o mal configurati rimane ancora esposto
agli attacchi.
4.5.2.10 Autenticazione generica di Unix – Account senza password o con password deboli
In quasi tutte le interazioni tra gli utenti e i sistemi informativi vengono utilizzate password, frasi
identificative o codici di sicurezza. La maggior parte delle forme di autenticazione, come la
maggior parte delle protezioni per file e dati, si basa su password fornite dall’utente. Dal momento
che gli accessi correttamente autenticati spesso non vengono registrati, o anche se vengono
registrati non lo sono in modo da fornire alcun segnale di allarme, una password compromessa
rappresenta un’opportunità di esplorare un sistema dall’interno senza essere identificati. Un
aggressore avrebbe accesso completo a qualsiasi risorsa disponibile per quell’utente e sarebbe
molto vicino ad essere in grado di accedere ad altri account, a macchine vicine e forse anche ad
ottenere privilegi di amministrazione. Nonostante questi pericoli, gli account con password deboli o
addirittura senza password rimangono estremamente diffusi e le società con una buona policy
sull’utilizzo delle password ancora troppo rare.
Le più comuni vulnerabilità delle password sono dovute (a) ad account senza password o con
password deboli, (b) al fatto che, a prescindere dalla robustezza delle password, spesso gli utenti
non le proteggono, (c) al fatto che il sistema operativo o il software applicativo creano account di
amministrazione con password deboli o privi di password, (d) al fatto che gli algoritmi di hashing
delle password sono noti e spesso gli hash vengono memorizzati in modo da essere accessibili a
chiunque. La difesa migliore e la più corretta contro queste vulnerabilità è una solida policy che
includa le istruzioni per creare delle buone password e che riassuma i comportamenti corretti per
conservarne la riservatezza, unita a una verifica proattiva dell’integrità delle password.
Sul sistema locale le password vengono salvate in either /etc/passwd o in /etc/shadow.
/etc/passwd: questo file ha bisogno di essere leggibile da tutti gli utenti della rete per poter
permettere il processo di autenticazione. Se tale file include anche gli hash delle password, allora
ogni utente con accesso al sistema può leggere gli hash e provare a violarli con un password
cracker.
Per custodire gli hash si può utilizzare in alternativa /etc/shadow, che deve essere leggibile solo
da root. Se i vostri account locali non sono protetti da /etc/shadow, allora il rischio per le vostre
password diventa molto alto.
4.6.1 Introduzione
In questo paragrafo tratteremo quali sono i rischi e le debolezze più comuni legate ai sistemi di
Intrusion Detection e proporremo eventuali soluzioni o accorgimenti attualmente adottati o
dibattuti nella comunità IT. Cercheremo, dove possibile, di non parlare di sistemi o tools specifici
ma di fare un'analisi generale sulle debolezze legate ai vari tipi di approccio: non esiste infatti una
soluzione migliore in assoluto ma, in base alle specifiche esigenze (prestazioni, contromisure,
tipologia di attacchi da prevenire etc.) in un determinato momento, sarà spesso necessario un
trade-off tra le diverse alternative a disposizione
Ricordiamo che l' IDS è un componente che non sostituisce il firewall o i vari meccanismi di
logging, ma che è consigliabile che venga affiancato ad essi nel processo di sicurezza dei sistemi.
L' “intrusion detection” è il processo di scoperta, analisi e reporting di attività non autorizzate o
che possono procurare un danno al sistema informativo aziendale.
Questo processo serve a rivelare violazioni avvenute nell'ambito della confidenzialità, integrità e
disponibilità delle risorse e delle informazioni. Gli IDS collezionano informazioni da una
molteplicità di sistemi e fonti sulla propria rete, analizzandole poi alla ricerca di problemi inerenti
la sicurezza. In alcuni casi, i sistemi di rilevazione delle intrusioni, permettono all'utente di
specificare in real-time dei comportamenti da adottare in risposta ai tentativi di intrusione che si
stanno subendo.
Il fenomeno degli IDS ha portato però alcune persone, a pensare che essi siano la panacea per
tutti i loro problemi di sicurezza. Sebbene essi siano un'utilissima arma nell'ambito della
sicurezza informatica, hanno pur sempre delle capacità e possibilità limitate. Aspettarsi troppo da
un IDS può rivelarsi quindi controproducente: è sempre necessario che la sicurezza percepita
coincida con l'effettiva sicurezza del sistema.
I firewall pongono una barriera nel punto di connessione tra Internet e la rete protetta. Sebbene i
firewalls siano un componente necessario per la sicurezza, essi solitamente non sono infallibili.
Essi infatti, il più delle volte sono difficili da installare e configurare correttamente, perfino da
personale esperto. Anche i più piccoli errori di configurazione possono creare un'ampia breccia
nella sicurezza del sistema. Una difficoltà aggiuntiva con i firewall è il fatto che necessitano di
continui aggiornamenti e monitoraggi per essere sicuri che le configurazioni riflettano gli effettivi
livelli di sicurezza richiesti. Gli IDS entrano quindi in gioco quando un attacco è riuscito a
superare la protezione esterna fornita dal firewall.
Un ulteriore modo per caratterizzare le differenze tra firewall e IDS e quello di classificare le
violazioni per origine: non tutte le violazioni infatti provengono dall'esterno della rete.
Nel caso in cui l'attacco provenga da una fonte interna il firewall sarebbe di poca utilità: esso
infatti vede solamente il traffico ai confini tra la rete interna ed Internet. Se il traffico generato a
seguito della violazione della sicurezza non attraversa mai il firewall esso non riuscirà ad
evidenziare che c'è stato un problema.
Infine i firewalls sono a loro volta soggetti ad attacchi, ed esistono praticamente da sempre
strategie volte ad eludere il loro controllo. Un esempio è quello di utilizzare il tunneling per
bypassare le protezioni del firewall (tunneling è la pratica di incapsulare un messaggio in un certo
protocollo, che verrebbe bloccato dal firewall, all'interno di un altro messaggio che il firewall
lascia passare).
Svantaggi:
• le vulnerabilità insite nel livello applicativo (es. in particolari protocolli) possono
diminuire l'effettiva efficienza ed utilità dei controlli application-based
• dipendente da applicazioni specifiche
• invasivo: possono avere notevole impatto sulla stabilità e sulle performance
• difficoltà nell'eseguire test adeguati
Host-Based
Gli Host-IDS (HIDS) utilizzano un sensore (chiamato anche agent) che risiede su ogni host che
deve essere monitorato.
L'agente esamina i log di sistema, del kernel, i files critici del sistema ed altre risorse alla ricerca
di modifiche non autorizzate o di segni di attività sospette. Ogni volta che qualcosa fuori dalla
norma viene riscontrato, degli allarmi vengono generati ed inviati agli amministratori dei sistemi.
Ad esempio, un HIDS può monitorare il registro di sistema per segnalare in tempo degli accessi
non autorizzati; può monitorare i log del kernel per scoprire quando un determinato processo ha
avuto inizio oppure monitorare i login per prendere nota di quando è stato fatto un tentativo di
accesso con una password non corretta.
Monitoraggio dell'attività di login.
Malgrado i notevoli sforzi degli amministratori di rete, ed il recente sviluppo di software di
intrusion detection, ogni tanto un intruso riesce a loggarsi in un sistema sfruttando qualche tipo di
attacco sconosciuto.
Probabilmente l'attacker ha ottenuto in qualche modo una password (facendo del packet sniffing
oppure in altri modi) ed ora ha la possibilità di loggarsi nel sistema da remoto.
Osservare attività insolite nel sistema è il compito di alcuni HIDS. Questo tipo di tool monitora i
tentativi di login e logout, avvertendo l'amministratore di sistema se riscontra dell'attività
inusuale o sospetta.
• creare un MD5 o un altro tipo di checksum su tutti i file di sistema e salvarli in un database:
quando il file verrà modificato anche il relativo checksum risulterà essere diverso da quello
presente nel database.
• salvare l'orario e la data di creazione o modifica di ogni file di sistema: controllare questi
timestamp per verificare ogni cambiamento
• siccome dipendono dal numero dei file e dagli attributi degli oggetti da verificare,
questo approccio può comportare un certo livello di carico, soprattutto per sistemi che
non sono provvisti di determinate capacità computazionali o con risorse limitate
• possono essere effettuate delle modifiche al kernel che rendano vane alcuni tipi di
analisi (es. quelle effettuate sugli attributi dei files etc.)
Una breve lista e descrizione di integrity checkers tools si può trovare nei paragrafi 2.5.3.3 e
3.1.10.
• i NIDS possono risultare molto sicuri contro gli attacchi di rete (ad es.contro i SYN
flood ed i packet storm attacks) e possono essere perfino resi invisibili agli occhi degli
attaccanti
• gli IDS network-based possono avere difficoltà nel processare tutti i pacchetti presenti in
reti grandi o congestionate e, quindi, possono fallire nel riconoscere un attacco lanciato
durante un momento di elevato traffico. Molti produttori stanno cercando di risolvere
questo problema implementando gli IDS direttamente in hardware, indubbiamente più
veloce.
• Molti dei vantaggi dei NIDS non possono essere applicati alle reti switch-based. Gli
switch suddividono le reti in molti piccoli segmenti e forniscono una linea dedicata tra
gli host collegati dallo stesso switch. Molti di questi dispositivi non forniscono un
monitoraggio universale delle porte ma si limitano al monitoraggio di singoli host
• non possono analizzare informazioni criptate. Questo problema aumenta nel momento in
cui una azienda utilizza reti private virtuali (VPN)
• molti NIDS non possono segnalare se un attacco ha avuto successo; possono solamente
stabilire se un attacco è iniziato. Questo significa che se viene rilevato un attacco gli
amministratori devono investigare su ogni host per determinare se è stato colpito o meno
• Il numero e qualità delle signatures su cui si basano alcuni NIDS possono ridurre
l'efficienza del sistema di intrusion detection
Una breve lista e descrizione di tools network based si può trovare nei paragrafi 1.3.2, 2.5.2.1,
2.5.4.1, 3.1.10
Sistemi integrati
Alcuni prodotti di intrusion detection combinano soluzioni a livello di application, di host e
sensori network-based.
Vantaggi:
• è possibile vedere le tracce di un attacco sulle rete e sull'host nello stesso tempo: ciò è di
grande aiuto durante le fasi di valutazione e stima dei danni e di recovery del sistema
Svantaggi:
• non esistono standard industriali che permettono la completa interoperabilità tra i vari
componenti: risulta quindi pressoché impossibile integrare componenti di diversi
vendors
Possiamo catalogare le varie tipologie di IDS in base all'intervallo di tempo che passa dal
momento in cui viene effettuata l'operazione di monitoraggio, fino a quando viene compiuta
l'analisi sugli eventi.
• gli schemi di analisi batch richiedono un minor carico in termini di risorse rispetto ai
sistemi real-time
• i sistemi batch sono preferiti in quelle aziende in cui le risorse ed il personale dedicato
alla sicurezza sono limitati: risulta infatti meno impegnativo utilizzare sistemi che non
obblighino ad intervenire in tempo reale alle sospette violazioni (ad es. intervenire
subito a seguito di un allarme generato dal sistema, magari fuori orario lavorativo).
• sono preferiti in ambienti nei quali i livelli di minaccia sono relativamente bassi ed i
potenziali danni derivanti da singoli attacchi sono invece elevati (ad es. istituti
finanziari). In questi ambienti infatti è solitamente di maggior interesse identificare le
responsabilità dei problemi piuttosto che reagire immediatamente al sospetto incidente.
In queste situazioni un'analisi batch-oriented verrà combinata con altri processi
investigativi allo scopo di identificare il colpevole dell'incidente.
• gli attacchi ai sistemi spesso implicano la ripetizione dell'attacco verso lo stesso target.
Per esempio, un intruso potrebbe riuscire ad installare un Trojan-horse per garantirsi un
facile accesso futuro. L'analisi batch solitamente riesce ad identificare i segni di questo
tipo di attacchi.
• molte procedure a livello giuridico relative alle fonti di prova si basano sull'acquisizione
di log generati e processati da sistemi batch di intrusion detection.
Svantaggi:
• gli utenti raramente possono accorgersi dell'incidente prima che questo venga
completato
• è necessaria una notevole quantità di spazio per salvare i dati necessari all'analisi batch
Sistemi Real-Time
I sistemi real-time prevedono una raccolta delle informazioni, un'analisi ed un reporting,
effettuati in modo continuativo.
• in relazione anche alla velocità nell'analizzare i dati, gli attacchi possono essere scoperti
abbastanza rapidamente da consentire agli amministratori di bloccarli o comunque di
limitare i danni consentendo una più rapida fase di recovery.
• i sistemi di IDS real-time consumano molta memoria e risorse di calcolo degli altri tipi
di IDS, basati su un'analisi posteriore
Anomaly Detection
Le tecniche di anomaly detection partono dal concetto che tutte le attività intrusive sono
necessariamente anomale. Questo significa che è possibile creare un “profilo di attività”
considerate normali: in seguito questo profilo verrà confrontato con gli eventi che avvengono in
tempo reale. Ogni comportamento (sugli host o nelle attività di rete) che risulterà discostarsi da
quello considerato normale verrà loggato e segnalato.
Possono presentarsi quindi un paio di possibilità:
• attività che non sono intrusive possono venire etichettate come intrusive
• attività intrusive che non vengono considerate anomale non verranno segnalate
• non essendo necessaria una conoscenza a priori dell'attacco, questo tipo di sistemi può
rilevare dei tentativi di attacco sconosciuti. Se una rete o un host è attaccato da un nuovo
worm, virus, Denial Of Service, il sistema di intrusion detection statistical-based può
segnalare la presenza di attività sospetta.
• molte reti e sistemi sono estremamente diversi in termini di protocolli, servizi, tempi di
utilizzo etc. Ad esempio, del traffico verso uno specifico host può essere innocuo mentre
verso un altro host può sfruttare delle vulnerabilità specifiche: la stessa definizione di
comportamento “normale” cambia quindi continuamente.
• l'IDS ha il compito di decidere cosa deve essere considerato normale e cosa anomalo,
ma non ha modo di sapere se un comportamento è “buono” o “cattivo”
• la fase di apprendimento può essere lunga e difficoltosa prima di poter avere un sistema
di rilevamento accurato ed efficace.
Il significato è che se si sono verificati gli eventi E1 ed E2, con E2 accaduto dopo E1, allora vi è
l'80% di probabilità che li seguirà l'evento E3, il 15% di probabilità che sarà E4 ed il 5% che sarà
E5. Il problema con questo tipo di approccio è che alcuni scenari di intrusione non siano descritti
come pericolosi nelle regole. In questo caso al verificarsi di una sequenza di eventi non presente
nel database, questa verrà etichettata come “non riconosciuta”.
Il problema può essere parzialmente risolto assegnando ad ogni evento non riconosciuto il ruolo
di sospetto attacco (incrementando però i falsi positivi) oppure al contrario assegnando il ruolo di
evento innocuo (incrementando la possibilità di falsi negativi).
Vantaggi:
• le attività anomale possono essere scoperte e segnalate pochi secondi dopo la verifica
degli eventi
Svantaggi:
• difficoltà nel fissare una soglia adeguata che permetta di ridurre falsi positivi e falsi
negativi
• keystroke monitoring
• pattern matching
Expert systems
I primi sistemi di misuse detection utilizzavano gli expert systems per scoprire le intrusioni
Sistemi come NIDES, MIDAS, e NADIR hanno sistemi esperti che fanno da complemento ai
loro anomaly detectors. In questi IDS le possibili intrusioni sono codificate come regole (rules) di
sistemi esperti. Una regola ha la forma del tipo: se condizione allora azione.
Le regole possono riconoscere dei singoli eventi o una sequenza di eventi che rappresenta lo
scenario dell'intrusione.
Un esempio di expert rule utilizzata da NIDES è la seguente:
1. rule [SimuLogon(#1;*):
2. [+tr:transaction]
3. [+se:session|userid == tr.userid]
4. [?|se.terminal != tr.terminal]
5. ==>
6. [!|printf("SimuLogon: user %s at terminals %s, %s\n",
tr.userid, tr.terminal, se.terminal)]
Questa regola, SimuLogon, è scritta nel linguaggio specifico per sistemi esperti PBEST.
Essa rivela gli utenti loggati ad un terminale che risultano essere già loggati su qualche altro
Vantaggi:
• basandosi sullo stato corrente del sistema si possono utilizzare misure preventive per
evitare specifici attacchi
Svantaggi:
• questo modello può rappresentare un'intrusione solo come una sequenza totalmente
ordinata di azioni predefinite: non è possibile specificare altri modi di intrusione come
ad esempio utilizzando azioni ordinate solo parzialmente
• non è possibile identificare attacchi di denial of service, login falliti, ascolto passivo
Alcuni rimedi alle debolezze dei sistemi state-transitions sono implementati nel modello Pattern
Matching.
Pattern Matching
Il pattern matching è basato sull'osservazione di sequenze fissate di bytes in un singolo pacchetto.
Come suggerisce il nome, questo è un approccio abbastanza rigido ma semplice da implementare.
In molti casi la verifica sul pacchetto viene fatta solamente se esso è associato ad un determinato
indirizzo sorgente o di destinazione, ad un determinato protocollo oppure se destinato o
proveniente da una specifica porta.
Questo aiuta a diminuire il numero di ispezioni eseguite su ogni pacchetto alleggerendo il carico
dei sistemi IDS. Tuttavia, può risultare complicato per questo tipo di sistemi trattare con quei
protocolli che non si avvalgono delle cosiddette well known ports e soprattutto con il traffico
generato da Trojans.
La struttura di una signature in un approccio pattern-matching è simile alla seguente (in uno
pseudo-linguaggio):
SE il pacchetto E' <IPv4>
E <TCP>
E la porta di destinazione E' <2222>
E il payload CONTIENE la stringa <foo,>
ALLORA genera un allarme.
Questo esempio di pattern-matching è molto semplice; si possono poi includere specifici punti in
cui iniziare e finire di ispezionare il pacchetto specificando più nel dettaglio cosa si vuole
monitorare, ad esempio i singoli flag del pacchetto TCP. Più specifici saranno questi parametri,
minore ispezione sarà necessaria per ogni pacchetto che corre sul cavo.
Svantaggi:
• questo metodo è soggetto ad un elevato tasso di falsi positivi se il pattern non è unico,
come chi ha scritto la regola credeva che fosse
• non funzione molto bene con la natura stream-based del traffico di rete, come ad
esempio il traffico HTTP. In questo modo sono facilmente implementabili tecniche di
evasion.
Vantaggi:
• questo metodo richiede uno sforzo di implementazione solo di poco superiore a quello
necessario per un pattern-matching semplice
Pagina 278 di 334
• permette di stabilire una correlazione diretta tra il pattern e l'exploit: è altamente
specifico
Svantaggi:
• questo metodo è soggetto ad un elevato tasso di falsi positivi se il pattern non è unico,
come chi ha scritto la regola credeva che fosse
Vantaggi:
• fornisce avvisi attendibili sulle violazioni delle regole dei protocolli definiti
Svantaggi:
• questo metodo può generare un elevato numero di falsi positivi qualora le RFC siano
ambigue e permettano agli sviluppatori di interpretare ed implementare il protocollo a
propria discrezione. Questi tipi di “violazioni” di protocolli sono molto comuni.
Esiste una differenza in termini di resa tra un IDS ed un IPS: il primo infatti, qualora non sia in
grado di monitorare tutti i pacchetti in arrivo, in generale passa ad una modalità di
Pagina 281 di 334
campionamento controllando solo una parte dei pacchetti. Il livello di monitoraggio diminuisce
ma, oltre a questo, non vi sono ulteriori problemi.
Nel caso di un IPS invece, qualora il sensore non sia in grado di gestire tutto il traffico, i
pacchetti verranno scartati con la conseguente necessità di una ritrasmissione degli stessi: siamo
quindi di fronte ad un possibile collo di bottiglia per il traffico. Un ulteriore rischio è quello dei
falsi positivi: se prima un falso positivo generava un allarme ma consentiva di continuare la
comunicazione, con gli intrusion prevention system si rischia di interrompere connessioni che
non rappresentavano alcun pericolo.
Se oltre a ciò si considera che un IPS, per essere veramente efficace, deve implementare anche
meccanismi che gestiscano la frammentazione IP e la ricostruzione degli stream TCP, allora si
può capire come questa soluzione non sia comunque priva di debolezze soprattutto dal punto di
vista prestazionale.
Honeypots / Honeynets
Una honeynet è uno strumento per imparare. E' una rete di sistemi designata per essere
compromessa. L'idea è simile a quella degli honeypots, anche se con alcune differenze.
“Definiremo un honeypot come “una risorsa il cui valore sta nell'essere attaccata e
compromessa”. Significa che qualsiasi cosa decidiamo di usare come honeypot, la
nostra aspettativa e il nostro risultato è di avere un sistema che venga scoperto,
attaccato e potenzialmente bucato. Tenete a mente che l'honeypot non è una
soluzione. Non fa dei 'fix' a niente. Invece, l'honeypot è uno strumento. Come usarlo
dipende da voi e da cosa volete ottenere, Un honeypot può essere semplicemente un
sistema che emula un altro sistema o un'applicazione, crea un ambiente jailed, o può
essere un sistema standard. Indipendentemente da come costruite e usate l'honeypot,
il suo valore sta nell'essere attaccato.
Dividiamo gli honeypot in due categorie, come stabilito da Marty Roesch, creatore di
Snort. Marty ha indicato che le due categorie di honeypot sono "produzione" e
"ricerca", una distinzione che ho trovato molto utile.
Lo scopo di un honeypot di produzione è di aiutare a ridurre i rischi in una azienda.
L'honeypot aggiunge valore alla sicurezza dell'azienda. La seconda categoria, ricerca,
è costituita da honeypot in grado di raccogliere informazioni sulla comunità blackhat.
Questi honeypot non aggiungono direttamente valore ad una organizzazione.
Piuttosto sono usati per trovare i pericoli, e capire come meglio proteggersi da essi.34”
Una honeynet è qualcosa di differente. Vi sono due principali differenze con un honeypot
tradizionale:
34
(Traduzione di: Honeypots - Definizione e valore degli Honeypots http://www.itvirtualcommunity.net/educational/honeypots.htm)
• La honeynet può utilizzare molteplici sistemi nello stesso tempo: Unix, Linux, Solaris,
Windows NT, router Cisco etc. creando un ambiente di rete realistico, come un sistema
di produzione vero e proprio. Avendo poi a disposizione sistemi con differenti servizi,
come un DNS server Linux, un webserver di Windows NT, un server FTP Solaris etc. si
può imparare molto sui tool e sulle tecniche adottate dagli intrusi.
• Niente è simulato: sono utilizzati sistemi ed applicazioni reali, come quelle che si
trovano solitamente in Internet
Risulta quindi evidente come una honeypot possa essere considerata anche un sistema di
intrusion detection: ogni volta che arriva in ingresso una connessione diretta verso la honeynet
sappiamo di essere di fronte ad una scansione, ad una prova o ad attacco.
I normali sistemi di intrusion detection hanno il comune problema di dover determinare ogni
volta quali attività sono da considerarsi normali e quali sospette. Problemi quali il sovraccarico di
informazioni, i falsi positivi ed i falsi negativi rendono estremamente difficili le attività di analisi
ed identificazione degli attacchi.
Gli honeypots e le honeynets risolvono con semplicità questo problema: tutto il traffico in entrata
o uscita è sospetto per definizione: questo concetto di traffico non legato all'ambiente produttivo
semplifica molto le fasi di acquisizione ed analisi dei dati.
Maggiori informazioni sulle honeynets si possono trovare sul sito ufficiale
http://www.honeynet.org.
Il referente italiano (facente parte anche del progetto IRItaly) della Research Alliance è invece
raggiungibile all'url http://www.honeynet.it.
• reti con un elevato traffico. In questi ambienti l'elevato traffico di rete sovraccarica il
sensore IDS consentendo a traffico potenzialmente dannoso di non venire rilevato
• reti asimmetriche. Nelle reti asimmetriche con la presenza di routers il traffico può
attraversare percorsi diversi prima di raggiungere il dispositivo di intrusion detection;
quest'ultimo talvolta vedrà solo una parte del flusso di dati, rischiando di non
individuare un attacco.
Performance
Il rendimento è uno dei punti più controversi riguardo ai NIDS in quanto è difficile da
quantificare in modo univoco.
Esistono due versioni principali di NIDS sul mercato: una utilizza sensori per reti a 10/100MB, e
l'altra usa sensori per reti con Gigabit di traffico.
Una notevole difficoltà è quella di avere statistiche attendibili sui rendimenti, soprattutto per quei
test effettuati in laboratorio. Il fattore più importante non è infatti quanti attacchi il sensore può
scoprire (che di solito è la prova principale effettuata nei laboratori), bensì quanto efficacemente
il sensore può gestire degli attacchi in una rete normale.
Questo può risultare molto difficile in situazioni in cui il traffico è criptato, come ad es. accade
col traffico SSL o SSH: in questi casi il monitoraggio implica solo uno spreco di CPU visto che
comunque non può venire effettuata alcuna analisi sui pacchetti ricevuti.
Un secondo elemento da considerare nelle prestazioni degli IDS è la dimensione dei pacchetti.
Durante la fase di test molti produttori di NIDS utilizzano pacchetti di dimensioni predefinite,
limitandosi quindi ad una casistica molto ristretta. Il motivo principale di questo atteggiamento
risiede nella volontà di ridurre i costi ed abbreviare i tempi di rilascio del prodotto.
Un ulteriore elemento è la velocità con cui il sensore applica la policy che gli è stata imposta.
Tipicamente un NIDS ha centinaia di signatures da controllare: più signatures dovrà verificare in
un determinato stream, più lungo sarà il tempo necessario. Questo è un fattore molto più critico
per i sistemi che si basano sul pattern-matching piuttosto che quelli basati su protocol-analysis.
Solitamente le variabili per determinare le effettive prestazioni di un NIDS sono troppe, anche se
tipicamente su un sensore a 10/100MB ci si può aspettare un monitoraggio di 60-80MB/s, e su un
sensore Gigabit approssimativamente 400-600MB/s. Indicativamente si ha un carico di utilizzo
del 60-80% su un segmento a 100MB e del 40-60% su un segmento Gigabit.
Reti switched
Innanzitutto vediamo perché gli switch sono diversi dagli hub.
Un hub comprende solo le informazioni di livello 2 della pila ISO-OSI, e copia ogni singolo
pacchetto su tutte le sue porte. In questo caso mettere un sensore IDS su un segmento qualsiasi
consente di monitorare tutto il traffico, anche quello degli altri segmenti.
un attaccante potrebbe ottenere la lista di tutti i file e cartelle presenti nella directory degli scripts
di un web server.
Se questa richiesta verrà suddivisa in 5 diversi pacchetti che passeranno attraverso una routed
network, i sensori NIDS non riusciranno ad identificare la presenza di un attacco.
Attacchi
Verranno ora discusse tre tipologie di attacchi nei confronti dei sistemi di intrusion detection
sniffer-based.
Due di esse cercano di rendere inefficace la protocol-analysis, ostacolando il riconoscimento di
signatures da parte degli IDS. La terza si basa sul fatto di esaurire tutte le risorse provocando dei
malfunzionamenti del sistema. Tutti questi attacchi implicano la manipolazione, talvolta a basso
livello, del traffico di rete.
Diversamente dai normali “spoofing attacks”, queste tecniche sono avvantaggiate dal fatto che
l'attaccante può gestire una sessione propria e non deve cercare di modificare quella di altri
utenti.
Insertion
Un IDS può accettare un pacchetto che un end-system (un server etc.) invece rifiuterà. Un IDS
che fa questo commetterà uno sbaglio nel credere che il sistema finale ha accettato e processato il
pacchetto quando invece ciò non è avvenuto. Un attaccante può sfruttare questa condizione
inviando appositi pacchetti che il sistema finale rifiuterà, ma che l'IDS riterrà validi. Facendo
questo, l'attaccante “inserirà” dati nell'IDS (gli altri sistemi sulla rete invece non si cureranno di
questi pacchetti non validi).
La tecnica sopracitata è definita “insertion attack”, ed è una delle vulnerabilità maggiori dei
sistemi di intrusion detection. Un attaccante può utilizzare questa tecnica per eludere la signature
analysis, permettendo che alcuni attacchi superino il controllo dell'IDS.
Per comprendere come gli attacchi di inserzione confondano la signature analysis, è importante
capire come la tecnica sia usata nei reali sistemi di ID. Una analisi delle firme usa maggiormente
algoritmi di pattern-matching per scoprire le presenza di determinate stringhe in un flusso di dati.
Ad esempio, un IDS che tenta di scoprire un attacco PHF cercherà la stringa “phf” in una
richiesta HTTP di tipo GET, come nella stringa
GET /cgi-bin/phf?
L'IDS troverà facilmente la stringa “phf” effettuando una semplice ricerca della sottostringa.
Tuttavia, il problema diventa più difficile da risolvere quando un attaccante invia la stessa
richiesta ad un webserver, ma costringendo l'IDS a vedere una stringa differente, come ad
esempio
Notate come le lettere che mancano siano proprio quelle che andranno a formare la parola “phf”:
l'IDS vedrà tutti i pacchetti e non segnalerà nulla di anomalo, il webserver invece scarterà i
pacchetti resi non validi dall'attaccante e si ritroverà a dover processare la stringa voluta
dall'attaccante.
Un esempio simile dello stesso attacco è riportato nella figura seguente.
In questo caso un attaccante invia all'IDS uno stream di pacchetti da 1 carattere: inserirà poi un
pacchetto che sarà accettato solo dal sistema di intrusion detection (quello contenente la lettera
“X”).
Come risultato, l'IDS ed il sistema vittima dell'attacco ricostruiranno due stringhe differenti.
In generale, gli insertion attacks avvengono quando l'IDS è poco rigoroso nel processare i
pacchetti rispetto al sistema finale. Un'ovvia reazione a questo problema potrebbe essere quella di
rendere l'IDS il più rigoroso possibile.
Per contro, utilizzando questa soluzione, si rischia di incorrere in un ulteriore problema definito
“evasion attack”.
Evasion
Un end-system può accettare un pacchetto che un IDS invece rifiuta. Un IDS che erroneamente
rifiuta un pacchetto legittimo fallisce nel suo compito.
Questa condizione può essere sfruttata facendo sì che informazioni cruciali non vengano
identificate dall'IDS a causa della sua configurazione troppo restrittiva, e che invece arrivino
intatte al sistema finale. Questi pacchetti quindi “evadono” il controllo che il sistema IDS
dovrebbe effettuare. Intere sessioni possono essere abilmente inserite in pacchetti che evaderanno
il controllo del sistema di intrusion detection: IDS e sistema finale vedranno due stream differenti
Ad esempio, la richiesta originale potrebbe diventare “GET /gin/f” che, per la maggior parte
degli IDS non ha significato.
Nella realtà, gli attacchi di insertion e di evasion non sono cosi semplici da sfruttare. E' possibile,
tuttavia, sfruttare questi attacchi ad un livello più basso che consente di eludere il controllo del
pattern-matching.
Un esempio è costituito dal riassemblaggio dello stream TCP. Molti protocolli di rete sono
semplici e facili da analizzare. Essi consistono nel fatto di inviare una singola richiesta ed
attendere poi la risposta.
Altri protocolli sono più complessi, e richiedono di fare considerazioni su più pacchetti prima di
fare ipotesi sulla transazione che essi rappresentano: per fare questo è indispensabile effettuare un
monitoraggio stateful dell'intero stream dei pacchetti. Protocolli come TCP permettono di inviare
dati suddividendoli in gruppi di pacchetti che arriveranno alla destinazione non con lo stesso
ordine del loro invio
Per una corretta ricostruzione di questo ordine quindi ogni pacchetto viene numerato con un
numero che indica la sua posizione nello stream originale (il cosiddetto sequence number)
Il modo per risolvere questa categoria di problemi è quello di avere un IDS abbastanza
intelligente da sapere come si comporterà ciascun end-system in ogni singola situazione,
garantendo allo stesso tempo delle performance in grado di sopportare elevati carichi di traffico
sulla rete.
Come contrastare le tecniche di insertion e di evasion è una questione ancora ampiamente
dibattuta tra gli studiosi e tra i produttori di IDS: generalmente, come per tutte quelle situazioni in
cui bisogna bilanciare affidabilità e prestazioni, la soluzione è quella di un trade-off tra le due
(troppo spesso invece l'operazione di testing delle implementazioni del protocollo TCP sui vari
prodotti IDS è un problema troppo costoso e che richiede tempo: è facile per alcuni produttori
saltare questa fase quasi totalmente).
Evasion con UNICODE
Dal sito dell' Unicode Consortium (http://www.unicode.org/):
“Unicode provides a unique number for every character,
no matter what the platform,
no matter what the program,
no matter what the language.”
Fondamentalmente i computer gestiscono numeri. Essi identificano e trattano le lettere e gli altri
caratteri assegnando ad ognuno di essi un numero univoco. Prima che Unicode fosse inventato, vi
Pagina 297 di 334
erano centinaia di codifiche differenti per assegnare questi numeri: non esisteva alcuna codifica
che contenesse un numero di caratteri sufficienti. Ad esempio, la sola Unione Europea,
necessitava di diverse tipologie di codifiche per coprire le esigenze di tutte le lingue presenti, per
tutti i simboli tecnici, di punteggiatura etc.
Spesso poi queste entravano in conflitto tra di loro: capitava infatti che uno stesso numero
identificasse due caratteri diversi.
Ogni computer (in special modo i server), necessitava di supportare diversi encoding, altrimenti
vi era il rischio che i dati che passassero attraverso molti sistemi con codifiche differenti,
arrivassero errati a destinazione.
Unicode fornisce un identificatore univoco per ogni carattere di ciascuna lingua, facilitando ed
uniformando la rappresentazione dei vari linguaggi del mondo.
Viene utilizzato in molti standard moderni come Java, LDAP, XML, CORBA 3.0, WML; è
supportato inoltre da leader dell'industria quali Apple, HP, IBM, JustSystem, Microsoft, Oracle,
SAP, Sun, Sybase, Unisys e molti altri. I caratteri Unicode sono chiamati code points e possono
venire rappresentati in questo modo: U+xxxx, dove le 'x' sono cifre esadecimali.
UTF-8
UTF-8 è un formato Unicode per la trasformazione dei code-point in una sequenza da uno fino a
quattro bytes. UTF-8 permette la compatibilità di Unicode col formato ASCII, una codifica molto
utilizzata su Internet. I problemi principali consistono nel fatto che questi caratteri ASCII
possono essere rappresentati in maniera non univoca, oppure che determinati code-point possono
essere utilizzati per modificare i code-point precedenti.
L'Unicode Consortium ha riconosciuto che questa rappresentazione multipla è fonte di problemi
di sicurezza ed ha riveduto lo standard, rendendo la rappresentazione multipla di uno stesso code-
point con UTF-8 illegale.
L'UTF-8 Corrigendum (http://www.unicode.org/unicode/uni2errata/UTF-8_Corrigendum.html)
elenca il nuovo range ammissibile di caratteri UTF-8. Questo cambiamento è stato effettuato solo
recentemente, ed ancora molti sistemi e programmi non si sono adeguati.
Il problema con l'UTF-8 originale è che esso ri-mappa l'insieme completo dei code-point
precedenti ogni volta che la descrizione viene estesa di un byte: quando inizia la rappresentazione
su 2 byte, vengono completamente ripetuti anche i code-points presenti in quella su 1 byte. Lo
stesso accade utilizzando 3 byte. Con 4 byte si avrà poi la rappresentazione Unicode completa.
Ad esempio, il carattere di backslash ' \ ', risulta U+005C. In UTF-8 originale può essere
rappresentato con i caratteri esadecimali 5C, C19C e E0819C. Molte vecchie applicazioni
accettano ancora tutti e tre questi valori.
Un ulteriore problema con Unicode è che alcune applicazioni interpretano allo stesso modo code-
point differenti: viene così meno il principio di univocità dei simboli. Ad esempio, la lettera
maiuscola 'A' in alcuni applicativi può essere associata a molteplici code-point: U+0041,
U+0100, U+0102, U+0104, U+01CD, U+01DE, U+8721. Molti di questi avranno poi a loro volta
Questa vulnerabilità è stata sfruttata ad esempio dal Code Blue Worm. Ricordiamo di applicare ai
prorpi server la patch fornita da Microsoft nell'advisory MS00-057
(http://www.microsoft.com/technet/security/bulletin/ms00-057.asp)
§Naturalmente, una volta resa pubblica questa vulnerabilità, i produttori di IDS hanno rilasciato
delle nuove signatures. Ad esempio alcune regole di Snort per identificare questo attacco sono:
alert tcp !$HOME_NET any -> $HOME_NET 80 (msg: "IDS434 - WEB IIS - Unicode
alert tcp !$HOME_NET any -> $HOME_NET 80 (msg: "IDS433 - WEB-IIS – Unicode
traversal optyx"; flags: AP; content: "..|25|c0|25|af"; nocase;)
alert tcp !$HOME_NET any -> $HOME_NET 80 (msg: "IDS432 - WEB IIS – Unicode
traversal"; flags: AP; content: "..|25|c1|25|1c"; nocase;)
Tutte queste regole identificano semplicemente la presenza dei “due punti”, seguiti da una delle
rappresentazioni UTF-8 dello slash o del backslash.
Falsi positivi
Le categorie più comuni in cui possono essere suddivisi i falsi positivi sono:
• Allarmi generati da altri eventi sulla rete, spesso innocui. Un esempio può essere un
NIDS che genera un allarme di tipo ICMP flood quando, in realtà, vi sono effettivamente
dei dispositivi guasti sulla rete che provocano l'invio di questo tipo di pacchetti.
• Allarmi generati dall'invio di pacchetti che l'IDS non riconosce, da parte di alcuni
dispositivi di rete (come ad esempio i load-balancers).
• Violazioni dei protocolli: gli allarmi vengono generati a causa di traffico non riconosciuto,
spesso per colpa di software scritto male o di implementazioni ambigue dei protocolli.
• “Veri” falsi positivi: sono allarmi generati dagli IDS senza alcun motivo apparente. Spesso
sono causati da bug nel software.
• Allarmi innocui: generati da situazioni reali che, però, non sono per loro natura pericolose.
Ad esempio potrebbe venir generato un allarme solamente visualizzando una pagina web in
cui sia presente il codice sorgente d qualche attacco, mostrato per scopi di analisi o di
ricerca.
• Mancanza di “consapevolezza” degli IDS: spesso questi ultimi non hanno la possibilità di
determinare se l'attacco riconosciuto sarà pericoloso o innocuo per la macchina che stanno
monitorando
• Configurazione della rete: possono derivare da problemi di performance sulle mirror ports
degli switch, oppure se esistono punti della rete che, per sbaglio, non vengono monitorati
da alcun IDS.
• Traffico criptato: questi problemi derivano dal fatto che un IDS non è in grado di
comprendere il contenuto di un certo tipo di traffico criptato.
• Signatures errate: sebbene l'attacco sia conosciuto e la firma relativa esista, essa non è in
grado di rivelare l'attacco o le sue variazioni.
• Attacchi non resi pubblici: se l'attacco esiste ma non viene reso pubblico, i produttori di
IDS non svilupperanno le relative firme.
• Costo. Logicamente questo deve essere commisurato in base ai servizi offerti nei punti
seguenti.
• Costo di utilizzo e di mantenimento del prodotto. Verificare quanto sono efficaci e chiari
i report, se l'output viene salvato in formati standard e portabili oppure se in formati
proprietari, quanto è semplice gestire i falsi positivi, quanto tempo è necessario per
identificare la situazione reale, quante persone ci vogliono per utilizzare il prodotto.
Altri fattori da considerare (ma dei quali i produttori tendono a fornire dei valori non troppo
affidabili) sono:
Libprelude rende più facile il porting di applicazioni già esistenti, affinché esse possano essere
utilizzate per il report verso l'intero sistema Prelude (ad esempio Snort, honeyd, nessus,
nagios, systrace ed hogwash sono stati modificati per includere il supporto a Prelude).
Le relative patch sono disponibili sul sito di Prelude.
Sia i Sensori che i Manager hanno inoltre la capacità di salvare i dati in locale qualora vi sia un
problema sulla rete o di un servizio, che impedisca l'invio dei dati ad un Manager o al Central
Manager.
IDMEF
Il formato di comunicazione utilizzato da Prelude è IDMEF. IDMEF, basato su XML, consente ai
componenti “ibridi” di Prelude di inviare allarmi dettagliati, descrivendo un gran numero di
eventi: attacchi di rete, buffer overflow locali etc.
Tutti i dati vengono inviati in strutture binarie: questo riduce i tempi di elaborazione e la
bandwidth utilizzata da IDMEF. Per mantenere basso il carico di CPU, il team di Prelude ha poi
ottimizzato il motore IDMEF.
La Prelude Library
La libreria di Prelude fornisce le seguenti funzionalità:
• Libsafe – Una libreria pre-caricabile (solo per Linux), che protegge il sistema da attacchi
di tipo buffer overflow.
Prelude NIDS
Prelude-NIDS è il sensore responsabile della cattura e dell'analisi real-time dei pacchetti sulla
rete. Esso utilizza una versione modificata della libreria Pcap.
Quando un pacchetto viene ricevuto, il sensore decodifica gli header e li salva in una struttura
dati interna; vari test sono effettuati a questo punto per determinare se il pacchetto deve essere
considerato valido o meno: dati malformati infatti potrebbero essere stati inseriti nel pacchetto
per rendere instabile il sistema.
Altri test sono poi effettuati sui flag TCP ed IP. Se viene riscontrata un'anomalia, il pacchetto
verrà scartato per prevenire il fallimento di un' analisi successiva. Dopo una verifica sui flag
Il Polymorphic Shell Code Detection Plugin è in grado di scoprire i code paths con differenti
opcodes che si comportano come istruzioni NOP. Se il numero di queste istruzioni supera un
limite preconfigurato, verrà generato un allarme.
ArpSpoof Plugin. Il plugin ArpSpoof verifica la consistenza dei messaggi ARP negli header
Ethernet. Esso invia un allarme se:
• una richiesta ARP è inviata ad un indirizzo UNICAST (richieste ARP valide sono
inviate all'indirizzo BROADCAST) attraverso l'opzione diretta. Una richesta di
UNICAST ARP denota spesso un attacco.
10/100/1000 X/X/?
FullDuplex via Span Port (Mirror port) X
Stealth Logging sull'interfaccia X
Monitoraggio di interfacce multiple su singoli host X
Full Packet Capture X
Filtro BPF X
Decodifica HTTP X
Decodifica RPD X
PortScan Detection X
Polymorphic Shell Code Detection X
ArpSpoof Detection X
IP Defragmentation X
Passive OS Detection X
TCP Flow ReAssembly X
IP Spoof Detection X Contributo: Sylvain de Tilly
SMP/Threading X Rilascio: gennaio
Algoritmo E2xb X Rilascio: gennaio
802.1q (VLAN) Packet Processing X
802.11 (WLAN) AP/Station Monitoring * X
Ruleset Tuning basato sui report di Nessus X
Prelude-LML
Prelude LML, o Prelude Log Monitoring Lackey, è la parte del progetto dedicata agli aspetti di
host-based intrusion detection.
Una funzione è quella di ascoltare sulla rete alla ricerca dei messaggi di Syslog provenienti dai
differenti host su piattaforme eterogenee.
Ogni sistema che genera log dal Syslog Unix standard e li trasmette all'host LML è quindi in
grado di utilizzare il motore di analisi di Prelude-LML.
Alcuni esempi di piattaforme sono:
• Sistemi Unix
• Switch e routers
• Firewall
• Stampanti
• Altri sistemi che sono in grado di trasformare i propri log nel formato Syslog (come ad
esempio MS Windows NT/2K/XP attraverso tools come Ntsyslog)
• Settare il Syslogd del Prelude-LML per ascoltare sulla rete, ed il Prelude-LML potrà analizzare
i log come se fossero in locale
Una volta ricevuti i log si potrà procedere con l'analisi di questi alla ricerca di anomalie: Prelude-
LML ha un sistema di plugin il cui scopo è quello di gestire ed analizzare i messaggi di log.
Uno di questi plugin, chiamato Simple, è un motore per la ricerca di espressioni regolari. Simple è
utilizzato da Prelude-LML per analizzare insiemi di espressioni regolari: ogni insieme di regole
consente di individuare espressioni specifiche per un particolare scopo.
Ad esempio, il ruleset per NetFilter “cercherà” solamente i messaggi netfilter, ed il ruleset
GRSecurity “cercherà” solamente i messaggi GRSecurity. Il file di configurazione dirà a Prelude-
LML quali plugin caricare per l'analisi dei log.
Attualmente, il plugin Simple possiede i seguenti insiemi di regole di parsing:
• IpFw
• NetFilter
• IpChains
• Checkpoint
• Nokia appliance
• NtSyslog
• Cisco’s e Zyxel’s routers logs.
• GRSecurity
• Exim
• Portsentry
• ProFTPd
• Qpopper
• Squid
• Secure Shell Daemon (sshd)
• Vigor
• Vpopmail
• Log specifici di Unix
La scrittura di nuovi rulesets è costantemente in fase di lavorazione.
Libsafe
Libsafe è differente dai due sensori precedenti, in quanto non è stato originariamente sviluppato
dal team di Prelude. Un'altra differenza da Prelude-NIDS e Prelude-LML consiste nel fatto che
Libsafe è una libreria che funziona solo su Linux.
Libsafe è una libreria “pre-caricabile” (attraverso la diret