Una delle prime necessità che si incontrano quando ci si inizia a cimentare con tematiche di information security è quella di mettere in piedi un piccolo laboratorio da utilizzare come "palestra" per le proprie sperimentazioni. In questo articolo impareremo a:
- realizzare l'architettura fisica e logica del nostro laboratorio;
- recuperare macchine in modo economico;
- isire conoscenza sugli strumenti software utilizzabili.
Cosa ci serve?
Innanzitutto diamo un occhio ai componenti necessari per il nostro piccolo hacking lab:
- un router (possibilmente wireless) e una connessione ad Internet;
- almeno una macchina "attacker";
- almeno una macchina "victim" (meglio due).
Lo schema è riportato in fig. 1.
Configurazione di rete
Dai testi sul networking abbiamo appreso che esistono classi di indirizzi IPv4, definite nella RFC1918, destinate all'uso all'interno delle LAN e quindi "non-routable". Senza addentrarci nei meccanismi del subnetting, sappiamo che queste classi sono:
- 10.0.0.0 - 10.255.255.255 (classe A);
- 172.16.0.0 - 172.31.255.255 (16 classi B contigue);
- 192.168.0.0 - 192.168.255.255 (256 classi C contigue).
Nel nostro caso attingiamo quindi agli IP di una qualsiasi delle 256 sottoreti di classe C. Utilizzando una subnet mask a 24 bit (255.255.255.0) otterremo 256 - 2 (escludendo gli indirizzi di sottorete e di broadcast) = 254 IP disponibili all'interno della stessa subnet, ad esempio: 192.168.1.x ove x è compreso tra 1 e 254. Come è noto, nel caso avessimo bisogno di navigare in Internet (per scaricare software, pacth e quant'altro), ci penserà il NAT (Network Address Translation) sul router a schermare i nostri IP rispetto al mondo esterno.
Recuperare computer economici
Come sappiamo tutti, il processo industriale per la produzione di nuovi PC ha un impatto ambientale notevole. Recuperando macchine "vecchie" possiamo allungarne la vita, riducendo anche l'inquinamento. Ci sono varie possibilità:
- mercatini online, siti di annunci, etc.
- fiere e mercatini dell'informatica (es. http://www.i6bs.it/fiere.htm);
- associazioni e terzo settore, come ad esempio il Trashop a Roma (Officina.binarioetico.org);
- scuole, università, fondazioni ed enti governativi.
Virtualizziamo?
I vantaggi delle macchine virtuali sono ormai arcinoti e non mi dilungo sulla questione. Vorrei però invitare i lettori a tenere d'occhio l'aspetto del carico computazionale che, soprattutto nel caso di computer con hardware datato, riveste un'importanza primaria se si vogliono ottenere delle risposte in tempi "umani". Per chi ha tempo (ma soprattutto voglia) qui c'è un'ampia trattazione su quale piattaforma utilizzare per la virtualizzazione: personalmente mi discosto poco da VMware e Virtualbox. Vorrei solo spendere una parolina in più sulle modalità di lavoro delle macchine virtuali. Molti di voi sanno che esistono tre modi di mettere in rete una virtual machine:
- bridged: la virtual machine si presenta sulla LAN come se fosse una macchine reale;
- NAT: la virtual machine lavora dietro un meccanismo di NAT virtuale, per cui rimane separata dal resto della LAN reale, ma è contattabile da tutte le altre macchine virtuali che girano sullo stesso sistema ospite;
- Host-Only: è l'opzione più indicata se si vuole tenere completamente separata la macchina virtuale dal mondo Internet.
Facciamo quindi attenzione a scegliere l'opzione giusta, in funzione del ruolo che vogliamo far giocare alla virtual machine.
Software
Una prima lista di strumenti la trovate su Sectools. Come molti di voi già sanno, esistono distribuzioni Linux già "pacchettizzate", contenenti tutti i tools necessari: basti citare l'ultranoto Backtrack, oppure BackBox, Samurai o ancora DEFT Linux, quest'ultimo molto più orientato alla Computer Forensics.
Tra i software commerciali vale certamente la pena di ricordare Core Impact e Immunity Canvas ma ce ne sono molti altri), nonché Nessus, inizialmente open e poi passato (ahimè) ad una politica di tipo commerciale.
Permettetemi però una piccola digressione sul punto. Gli strumenti vanno scelti in base a quello che si vuole (o deve) fare: è perfettamente inutile "rimpinzare" una macchina di software e poi non sapere né quali tool usare né come usarli. Il mio personale consiglio è "pochi ma buoni", a seconda del tipo di attività, approfondendone soprattutto le opzioni d'uso, in modo da iniziare a costruirsi una "cassetta degli attrezzi" contenente solo oggetti utili.
Altra osservazione che mi sembra più che doverosa: sperimentare gli strumenti software (anche quelli automatici) va benissimo all'inizio; quando però bisogna condurre delle attività finalizzate ad ottenere obiettivi ben precisi (come ad esempio nell'ambito di un Penetration Test) è fortemente consigliato seguire metodologie standard, come ad esempio OSSTMM o OWASP.
Attraverso l'utilizzo di metodologie siffatte, possiamo definire obiettivi, testare in modo puntuale ogni singolo item, documentare i risultati ottenuti. Ovviamente abbiamo finora parlato di come equipaggiare una macchina "attacker". Per quanto concerne invece la o le macchine vittima o target, il mio personale consiglio è di metterne in piedi più di una con sistemi operativi e versioni differenti, facendo certamente ampio uso di macchine virtuali. In questo modo possiamo costruirci la nostra lista di macchine target basandoci soprattutto sui sistemi operativi più diffusi, in modo da avere una casistica sufficientemente esaustiva, almeno nello start-up del laboratorio.
Sperimentiamo
Ora che abbiamo messo in piedi il laboratorio, non ci resta che passare ai nostri esperimenti. Oltre ad attaccare le macchine target che abbiamo già predisposto, esistono una serie di sistemi deliberatamente vulnerabili, creati apposta per sperimentare le tecniche di attacco senza fare danni in giro.
Tra questi annoveriamo certamente WebGoat, un progetto Open portato avanti dalla community OWASP. WebGoat è una web application che consente di imparare, passo dopo passo, le varie tecniche di attacco. Attraverso un percorso di oltre 30 lezioni, l'utente deve dimostrare il grado di comprensione di un problema di sicurezza (e delle relative tecniche di attacco) lanciando degli exploit contro vulnerabilità reali inserite appositamente nella web application. Ad esempio, in una lezione può essere chiesto di trafugare (finti) numeri di carta di credito utilizzando tecniche di SQL injection.
Un altro interessante progetto di OWASP, simile a WebGoat è Vicnum. Altri esempi di applicazioni web deliberatamente vulnerabili potete trovarli su RandomStorm oppure Moth o ancora Dojo, ma ce ne sono altre ("Google is your friend") e di alcune è disponibile anche direttamente la macchina virtuale già pronta. Molto interessanti sono anche i progetti De-Ice e Hackerdemia di Heorot, che fornisce dei LiveCD contenenti sia i sistemi target da attaccare che le relative direttive ed istruzioni (in forma di wiki).
Da non sottovalutare inoltre il ricorso a vecchie applicazioni, reperibili su OLDApps e suddivise per sistema operativo. NOTA: quando installate sulla vostra macchina una di queste web application, il vostro computer diventa vulnerabile per cui staccatelo dalla rete (o lavorate in macchina virtuale).
Stay tuned!
Di fondamentale importanza è certamente l'aggiornamento sulle ultime minacce/vulnerabilità individuate, sulla base delle quali vengono poi realizzati gli exploit. Fonti autorevoli in tal senso sono certamente Packet Storm Security, il sito del SANS Institute - Internet Storm Center, BugTraq di SecurityFocus, Rootsecure o in Italia, il sito del CERT-SPC. Sperando che questa "panoramica" possa esservi stata d'aiuto non mi resta che augurarvi buono studio!