Pentesting Lab – come realizzare un laboratorio virtuale
In questo articolo vedremo come realizzare un laboratorio virtuale per poter effettuare in tutta sicurezza un test di intrusione nei confronti di un sistema operativo o di un’applicazione Web, tenendoci a debita distanza dalle disposizioni del Codice Penale, vedasi gli articoli 614 “Violazione di domicilio”, 615- ter “Accesso abusivo ad un sistema informatico o telematico”, 635-bis “Danneggiamento di informazioni, dati e programmi informatici”, 635- quater “Danneggiamento di sistemi informatici e telematici”.
Importanza di un Pentesting Lab per la Sicurezza Informatica
Sebbene si tratti di una procedura poco entusiasmante, il neofita/smanettone si renderà presto conto dell’importanza di tempo e risorse spese in tale operazione, essendo libero di sferrare qualsivoglia attacco e simulare i più disparati scenari. Come è facile intuire, la virtualizzazione viene in aiuto al nostro scopo. Ad oggi le soluzioni di emulazione più popolari per l’utente medio sono rappresentate da VMWare Player e VirtualBox di Oracle; nel prosieguo della guida ci avvarremo di proprio quest’ultimo software in quanto molto completo e distribuito secondo i termini GNU GPL.
È da premettere che per una buona fruibilità dei sistemi virtualizzati sono necessari alcuni requisiti hardware quali RAM da almeno 8 GB, un processore con un clock superiore a 2.00 GHz e un BIOS in grado di supportare VT-x. Una volta installato l’applicativo adatto al nostro sistema operativo (Linux, Mac o Windows che sia), possiamo cominciare a sporcarci le mani. Suddividiamo il lavoro in lato vittima e lato attaccante.
Scenari di Test nel Pentesting Lab: Sistemi Vulnerabili Linux e Windows
Lato vittima
Qui abbiamo diversi possibili scenari a seconda dell’obiettivo che si desidera raggiungere: se intendiamo esercitarci gradualmente, magari con Web app da compromettere, il mondo Linux e l’open source ci offrono una vasta gamma di sistemi e applicazioni volutamente vulnerabili, anche con diversi gradi di difficoltà. Di seguito un valido elenco:
➔ http://sourceforge.net/projects/virtualhacking/files/os/metasploitable
➔ http://sourceforge.net/projects/virtualhacking/files/os/dvl
➔ https://hack.me
➔ http://www.hackthissite.org
Se invece ci sentiamo più temerari e pronti a lanciarci in una sfida più vicina al mondo reale, il consiglio è quello di puntare a macchine virtuali di casa Microsoft: fortunatamente gli sviluppatori di Redmond hanno messo a disposizione alcune versioni di prova di sistemi operativi e applicazioni liberamente scaricabili e preconfezionate per le principali piattaforme di virtualizzazione. Rimando per il materiale al sito:
➔ https://developer.microsoft.com/en-us/microsoft-edge/tools/vms
Illustreremo proprio quest’ultimo caso, premettendo che le impostazioni date di seguito – una versione di Windows 7 con Internet Explorer 8 – valgono in generale per qualsiasi
altro sistema operativo. Scarichiamo ed eseguiamo il file .ova , confermando l’importazione delle impostazioni della macchina virtuale come da figura:
Per maggiore comodità installiamo le Guest Additions dal menu Dispositivi e abilitiamo gli appunti condivisi e il trascinamento/rilascio bidirezionali (o unidirezionali).
È sempre buona norma creare da subito un clone della macchina appena lanciata: facciamo clic con il tasto destro su Clona avendo cura di spuntare la checkbox che reinizializza gli indirizzi MAC delle schede di rete:
Utile anche catturare diversi snapshot man mano che si effettuano installazioni o modifiche al sistema operativo. Potrebbe essere una buona idea anche installare programmi che l’utente medio utilizza frequentemente (come ad esempio Adobe reader, Flash player) che sovente hanno sofferto di vulnerabilità. Troviamo una lista su:
Per rendere più interessante la sfida, è possibile poi installare antivirus, attivare firewall, eseguire patch, aggiornamenti e così via.
Configurazione della Rete nel Pentesting Lab
La nostra macchina virtuale è quasi pronta ma dobbiamo ancora decidere come disporla in rete di modo da poter comunicare con la macchina attaccante che creeremo più
avanti. A questo proposito, VirtualBox prevede diverse modalità di comunicazione in rete che passeremo brevemente in rassegna:
❏ NAT
E la modalità predefinita e più sicura del programma. In questo modo la macchina virtuale è separata dal resto della LAN fisica ma risulta raggiungibile dalle altre macchine che si trovano sul sistema che le sta ospitando; può navigare tranquillamente su internet in quanto il traffico viene indirizzato attraverso il gateway di VirtualBox che ritrasmette i pacchetti come se fossero generati dall’host.
❏ Scheda con Bridge
In questo modo la macchina virtuale risulta essere presente sulla rete (come un normale computer collegato) e quindi può accedere alla rete fisica esattamente come la macchina che la sta ospitando. Si dice che la scheda di rete virtuale fa da ‘ponte’ per la scheda di rete fisica del nostro computer.
❏ Rete interna
Con questa impostazione viene creata una rete virtuale (denominata di default ‘intnet ‘) il cui traffico risulta visibile alle sole macchine al suo interno. La rete sarà dunque isolata e non esposta ad internet.
❏ Scheda solo Host
Questa modalità prevede una rete interna individuata (denominata per impostazione predefinita ‘vboxnet0 ‘) alla quale si collegano le macchine virtuali. Queste ultime risultano tuttavia visibili anche alla macchina ospite, e quindi in grado di fornire i servizi DHCP. È necessario però intervenire anche nelle preferenze di VirtualBox per aggiungere appunto il nome della nuova rete e abilitare il server DHCP.
Ai fini dello scenario che abbiamo appena creato, il consiglio per realizzare un laboratorio a scopi didattici è quello di adottare le modalità scheda con Bridge oppure Rete interna; la prima, sebbene consenta di accedere ad internet e navigare, è senza dubbio meno sicura per macchine vulnerabili che montano server Web; la seconda, di contro, non ha accesso diretto ad internet ma consente di effettuare test locali in maniera più sicura. Ricordiamoci di dare a ciascuna macchina virtuale la stessa impostazione di rete scelta inizialmente.
Installare applicazioni Web vulnerabili
Come inizialmente accennato, il mondo dell’open source offre applicazioni e server Web vulnerabili per potersi esercitare. DVWA, acronimo di Damn Vulnerable Web Application, è tra le più conosciute e apprezzate nel suo genere; vediamo come procedere alla sua installazione nel sistema vittima.
Dobbiamo innanzitutto procuraci XAMPP, un pacchetto software multipiattaforma che comprende server HTTP, FTP, database e linguaggi di programmazione. Scarichiamolo da:
➔ https://www.apachefriends.org/it/download.html
e procediamo alla sua installazione senza modificare alcuna impostazione:
Ora scarichiamo DVWA dal sito:
e scompattiamo il file zip secondo impostazione predefinita. Successivamente, incolliamo questa cartella sotto C:\xampp\htdocs , rinominandola in ‘dvwa’. Siamo quasi pronti per lanciare la nostra applicazione, diamo solo qualche aggiustatina ai database cui si appoggia.
Apriamo il file ‘passwords’ che troviamo nella cartella C:\xampp e verifichiamo qual è la parola chiave prevista per il database MySQL (generalmente il campo è lasciato vuoto).
Portiamoci ora su C:\xampp\htdocs\dvwa\config e rinominiamo – se XAMPP non dovesse averlo già fatto di default in fase di installazione – il file config.inc.php.dist in config.inc.php.
Apriamolo poi con il blocco note ed eliminiamo la password nel campo ‘ db_password ‘. Il risultato finale sarà il seguente:
Eseguiamo il programma XAMPP e abilitiamo i servizi che serviranno alla nostra Web app dannatamente vulnerabile, ossia Apache e MySQL:
Apriamo il browser di Internet Explorer e inseriamo come indirizzo:
➔ http://localhost/dvwa
Infine clicchiamo sul pulsante che genera/resetta il database di DVWA. Apparirà la schermata seguente, a riprova che la nostra applicazione è configurata in maniera corretta e pronta per essere attaccata:
Configurazione del Sistema Lato Attaccante nel Pentesting Lab
Lato attaccante
Creare una macchina attaccante è decisamente più semplice; il modo più rapido è procurarsene una preconfezionata e Kali Linux rappresenta ancora una volta un ottimo punto di riferimento. Troviamo il materiale su:
➔ https://www.kali.org/downloads
Anche qui importiamo il file .ova scaricato e il nostro computer lato hacker sarà subito operativo.
Se invece volessimo provare un’altra distribuzione Linux dedicata al pentesting, seguiamo i seguenti step. Procuriamoci la ISO del sistema desiderato e apriamo VirtualBox; clicchiamo dunque sul pulsante Crea e completiamo la procedura guidata:
Impostiamo quantità di memoria e di spazio sul disco fisso da assegnare alla macchina (sconsiglio di utilizzare l’opzione di allocazione dinamica).
Per concludere, impostiamo la stessa modalità di rete della macchina vittima e verifichiamo con un ping che le due macchine virtuali colloquino tra loro (su Windows generalmente è necessario disattivare il firewall). Ricordo che i comandi per visualizzare l’indirizzo IP da terminale sono:
A cura di: Milo Caranti
Dopo aver frequentato la facoltà di Giurisprudenza, lavora attualmente come programmatore e svolge attività consulenziale per uno studio legale di Milano. Da sempre appassionato di Sicurezza informatica e vicino alle attuali tematiche in ambito ICT, è autore del libro ”Guida al Pentesting con Parrot Security OS”.