Penetration Testing tra le nuvole con Amazon Web Service e Kali Linux

La tecnologia Cloud ha portato sicuramente innumerevoli vantaggi al mondo dell’Information Tecnology, permettendo alle aziende e ai privati di disporre di spazio di storage, potenza di calcolo, servizi di elaborazione e analisi dei dati, servizi di database relazionali e molto altro, sostenendo costi sicuramente inferiori rispetto al disporre di tale tecnologia in proprio presso la propria struttura e permettendo al contempo di poterne usufruire in qualunque luogo ci si trovi.

Disporre di un laboratorio con varie macchine dove potersi esercitare e studiare, oppure altre per eseguire dei Vulnerability Assessment o veri e propri Penetration Testing, senza disporre fisicamente di tali macchine, è quindi una realtà che grazie ai servizi Cloud oggi è possibile. Molti sono i Provider che offrono completi e potenti servizi Cloud (Google Cloud Platform, Microsoft Azure, Amazon Web Service, …) e tutti offrono un periodo di prova gratuito. Quello che vi illustrerò oggi è Amazon Web Service (AWS) che offre ben un anno di prova dei suoi molti servizi, ovviamente con delle limitazioni che per il nostro scopo vanno comunque benissimo. Possiamo vederle collegandoci al sito https://aws.amazon.com/it/free. Su questa pagina potremmo esplorare le limitazioni del piano gratuito ma conoscere anche tutti i servizi messi a disposizione da AWS come si vede nell’immagine che segue.

Quello che faremo sarà quindi creare una macchina Kali Linux attraverso il servizio EC2, “un servizio Web che fornisce capacità di elaborazione sicura e scalabile nel cloud” di Amazon. Come prima cosa dobbiamo registrarci e creare appunto un piano gratuito. Lo faremo andando nella relativa pagina di registrazione e inserendo tutti i dati necessari. A quel punto, dopo esserci autenticati nella Console di Gestione AWS con le nostre credenziali, ci troveremo di fronte la finestra che segue.

Da questa maschera la funzione utile per il nostro scopo è “Launch a virtual machine”. Non avendone ancora la procedura ce ne farà creare una portandoci sulla maschera “Step 1: Choose an Amazon Machine Image (AMI)”, il luogo dove si potranno scegliere moltissime Macchine virtuali che AWS mette a disposizione e offerte dai relativi produttori. Cliccando sul menù a sinistra “AWS Marketplace” ci troveremo nell’archivio dei prodotti software disponibili, per non sfogliarli tutti possiamo direttamente inserire nel campo di ricerca “Kali” e premere invio. Ci verrà quindi proposto Kali Linux come si vede nell’immagine che segue.

Come possiamo notare sotto l’icona c’è la dicitura “Free tier eligible” che significa appunto che possiamo utilizzarla senza dover pagare. Vedremo più avanti che tale Sistema Operativo sarà sempre gratuito, non sarà però la stessa cosa per le risorse hardware sulle quali installare tale sistema. Scegliamo a questo punto “Select” sulla destra dello schermo. A quel punto troveremo davanti a noi tutti i vari prezzi che si potrebbero sostenere con questo servizio e come vediamo, appunto, sono divisi in Software, il quale sarà sempre gratis, mentre il costo dell’hardware dipenderà dalla macchina che si sceglierà. Ad ogni modo avendo scelto il piano gratuito per un anno non pagheremo nemmeno quello ma saremo obbligati a scegliere una sola determinata macchina. Premiamo quindi “Continue” e ci troveremo davanti la seguente maschera.

Appena entrati sulla maschera “Step 2: Choose an Instance Type” di default sarà selezionata la macchina t2.medium che dispone di 2 vCPUs a 2.3 GHz, Intel Broadwell E5-2686v4 e 4 GB di memoria RAM, ma noi invece per mantenere il piano gratuito dobbiamo accertarci di selezionare la t2.micro (come nella figura in alto) che dispone invece di 1 vCPUs a 2.5 GHz, Intel Xeon Family e 1 GB di memoria RAM. Facciamo attenzione a scegliere proprio questa, che è l’unica disponibile per il piano gratuito, perché se non lo facciamo violiamo i limiti e pagheremo. Così pagheremo se violeremo qualsiasi altra limitazione imposta.

A questo punto selezioniamo in basso a destra “Next: Configure Instance Details” trovandoci di fronte la seguente videata che fa parte dello “Step 3: Configure Instance Details”.

In questa maschera dobbiamo scegliere la rete e le sotto-reti sulle quali la macchina si troverà ad operare. Per la precisione dovremmo impostare un VPC, ossia il nostro Virtual Private Cloud. Potremmo utilizzare quello di default ed una relativa subnet, ma per ordine e soprattutto per scegliere in autonomia i parametri, decidiamo di creare tutto nuovo. Sulla riga Network premiamo a destra “Create new VPC” e poi sulla maschera seguente il bottone grande in alto “Create VPC”.

Sulla maschera di creazione di una nuova VPC inseriamo un nome (io ho usato Pen_Test_AWS) e il relativo blocco di indirizzi IPV4. Come dicono le istruzioni non possiamo creare un blocco più grande di /16 ma giusto /16 si, potendo avere così a disposizione 65.534 indirizzi IP disponibili da poter suddividere. Io non ho particolari esigenze e 254 indirizzi mi vanno bene quindi creo una rete /24 (10.0.0.0/24). Gli altri parametri li possiamo lasciare così. A quel punto premiamo “Yes, Create” e chiudiamo la scheda sulla quale eravamo tornando così alla maschera di prima “Step 3: Configure Instance Details”. A quel punto premendo il simbolo della freccia che ruota vicino al bottone “Create new VPC possiamo impostare alla riga Network il VPC creato da noi. A quel punto comparirà il messaggio che non esistono subnet per quel VPC come da immagine sotto.

Dovremmo a questo punto indicare la, o le, subnet che fanno capo alla nostra rete, ossia al nostro VPC. Premiamo quindi il bottone “Create new subnet”. Si aprirà un’altra scheda del browser dove vedremo le altre subnet già presenti e dove premendo il bottone blu in alto a sinistra “Create Subnet” creeremo la nostra subnet da abbinare alla rete (VPC) creata prima.

Nella finestra che appare (immagine in alto) inseriamo il nome della subnet, scegliamo il nostro VPC creato prima e ci verrà mostrato il suo blocco di IP da suddividere. Inseriremo in basso le subnet (una per volta) che costituiranno la nostra rete. Nel mio caso ho creato una sola subnet, la 10.0.0.0/24, quindi premiamo il bottone “Yes, Create”. Ci troveremo nuovamente nella scheda del browser VPC Dashboard. Questa volta non chiuderemo questa scheda, perché prima di procedere sistemiamo alcuni parametri di rete. Alla VPC Dashboard potremo sempre tornare andando qui https://console.aws.amazon.com/vpc/

Avendo creato un nuovo VPC e una nuova Subnet, e non avendo utilizzato quelle di default, dobbiamo indicare a questo punto quale dev’essere il Gateway (Virtual Router) che la nostra nuova rete deve utilizzare per navigare. Spostiamoci pertanto nella sezione “Internet Gateway”, cliccando il relativo tasto sulla barra dei menu di sinistra. Ci troveremo di fronte la maschera seguente.

Come possiamo osservare nell’immagine in alto l’unico Internet Gateway (Router) presente, quello di default, è “attached” al VPC di default e non al VPC creato nuovo da noi. Se lasciassimo così non ci sarebbe permesso navigare con la nostra macchina Kali e di conseguenza non potremmo nemmeno raggiungerla per utilizzarla. A questo punto abbiamo due strade, o creiamo un nuovo “Interne Gateway” a cui fare l’“attach” del nostro VPC oppure possiamo tenere il Gateway di default e attaccare il nostro VPC al posto di quello di default. Scelgo questa seconda via e quindi in alto seleziono “Actions” e poi “Detach from VPC” come vediamo nell’immagine in basso.

Sulla finestra che appare confermo l’operazione premendo “Detach”, quindi poi faccio l’operazione inversa premendo nuovamente “Actions” ma questa volta “Attach to VPC” e inserendo a quel punto, sulla nuova maschera che compare, il mio nuovo VPC e tornando infine nuovamente sulla VPC Dashboard.

Successivamente dobbiamo inserire la route affinchè la macchina Kali e tutte quelle eventuali della nostra rete sappiano che Gateway utilizzare per andare in internet. Premiamo a sinistra la sezione “Route Tables” e poi la tab “Routes” in basso. Dovrebbe apparire una situazione come questa.

Come si vede selezionando in alto la riga relativa al nostro VPC, in basso nella tab “Routes” esiste una sola rotta. Quella che si riferisce alla rete locale. Non c’è quella che permette alle macchine della rete e quindi alla nostra Kali di andare in internet ed essere raggiunta da noi. Procediamo cliccando “edit” nella sezione “Routes” in modo da poter aggiungere la route e quindi premiamo il bottone “Add another route” che sarà comparso più sotto. A quel punto aggiungiamo la route 0.0.0.0/0 e semplicemente passando sopra la colonna target comparirà il gateway. A quel punto premiamo “Save” per confermare l’aggiunta della route che permetterà al nostro Kali di navigare in internet e raggiungere qualsiasi indirizzo. Dovrà comparire una situazione come l’immagine sotto.

A questo punto possiamo chiudere la scheda del browser relativa alla VPC Dashboard e tornare su quella dove eravamo rimasti negli step di creazione dell’Istanza di Kali ed esattamente allo “Step 3: Configure Instance Details” nel punto dove inserire la Subnet che abbiamo creato. Premiamo sempre la freccia rotante in modo da aggiornare la network e comparirà quindi la subnet che abbiamo creato, nel mio caso indica anche che ho 251 indirizzi disponibili. Procediamo abilitando il campo “Auto-assign Public IP” in modo che la nostra macchina abbia l’indirizzo pubblico assegnato automaticamente e poter essere raggiungibile, come vediamo nell’immagine sotto. Ci troveremo quindi una situazione come quella della seguente immagine. Possiamo a quel punto lasciare tutti gli altri parametri così come sono e premere il bottone in basso “Next: Add Storage” per aggiungere il disco fisso alla macchina che stiamo creando.

Ci troveremo quindi allo step “Step 4: Add Storage” nel quale aggiungere il disco fisso sul quale far girare la nostra istanza di Kali Linux.

Come ci ricordano le istruzioni presenti sulla maschera, per restare nel nostro piano gratuito possiamo indicare un disco grande al massimo 30 GB e di tipologia SSD o Magnetico. Nel mio caso, come vediamo nell’immagine in alto, ho confermato quello che la procedura mi proponeva e cioè un disco di 25 GB del tipo “General Purpose SSD (GP2)”. A quel punto possiamo premere il bottone in basso “Next: Add Tags” per trovarci appunto nella mashera “Step 5: Add Tags” che vediamo di seguito.

Qualora si abbiano varie istanze (macchine), Amazon EC2 rende più facile la loro gestione attraverso l’utilizzo dei “tags”, ossia coppie di valori case-sensitive da poter assegnare ad ogni istanza.

Per saperne di più è possibile consultare la documentazione ufficiale di AWS al seguente indirizzo https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html?icmpid=docs_ec2_console.

In questo caso non ho intenzione di assegnare tags alla mia unica istanza e quindi premo il bottone in basso “Next: Configure Security Group”. Questa sarà una sezione molto importante in quanto è qui che creiamo le prime regole del firewall per accedere in remoto alla nostra Kali Linux e comandarla. Ci troviamo quindi di fronte alla seguente maschera.

Eccoci arrivati allo “Step 6: Configure Security Group”. Creiamo il nostro “Security Group” lasciando il pallino su “Create a new security group” e scrivendo il nome che desideriamo dargli nella riga “Security group name:”. Nell’immagine in alto vediamo il nome che ho attribuito io. Gli altri parametri possiamo lasciarli così ma possiamo anche modificarli o aggiungerne di nostri a piacere. Di default AWS per Kali Linux lascia aperta una porta SSH (porta 22) raggiungibile da chiunque (vediamo l’indirizzo 0.0.0.0/0). La procedura ci avvisa di come sia pericoloso lasciare la porta aperta per tutti gli indirizzi, quindi se ci collegheremo sempre dallo stesso indirizzo IP possiamo impostare invece un unico indirizzo restringendo moltissimo la possibilità di tentativi di attacco da terzi. Ricordiamoci che la nostra macchina si trova a tutti gli effetti in internet e quindi eventuali vulnerabilità sarebbero facilmente individuabili e sfruttabili.

Volendo aggiungere altre porte e servizi alla nostra istanza basterà premere il bottone “Add Rule” e indicare le informazioni volute. Al momento lascio solo la porta 22 raggiungibile in SSH e premo il bottone “Review and Launch” per mandare finalmente in esecuzione la mia macchina. Si apre la maschera dello “Step 7: Review Instance Launch” che ci mostra il riepilogo di tutte le impostazioni. Si prosegue premendo il bottone “Launch”.

A questo punto comparirà la maschera, che si vede nell’immagine sopra, che ci permetterà di creare una coppia di chiavi (una pubblica che rimane ad AWS e una privata che scaricheremo) grazie alle quali potremmo collegarci da remoto in maniera sicura alla nostra istanza senza necessità di digitare utente e password.

Scegliamo nella prima casella di selezione “Create a new key pair” e quindi sotto digitiamo il nome della chiave da scaricare. A quel punto scarichiamo la chiave con il bottone “Download key pair” e una volta scaricata la custodiamo in un luogo sicuro e la teniamo nella macchina dal quale ci collegheremo al nostro Kali. A quel punto finalmente lanciamo l’istanza premendo “Launch Instances”. Comparirà una maschera con varie istruzioni, sia sul funzionamento sia per il collegamento. Quindi in basso premendo “View Instances” andremo direttamente alla nostra istanza che sarà stata avviata come da immagine più sotto.

Nell’immagine vediamo la nostra istanza in stato “running” e più in basso i dettagli del tipo di istanza, la zona di riferimento, il Security Group e soprattutto l’indirizzo IP pubblico che ci servirà per raggiungere la nostra macchina. A questo punto tutto è pronto per poterci collegare e disporre di una macchina Kali sulle nuvole.

Come dicevano le istruzioni, è importante come prima cosa aggiornare la macchina, e poi farlo spesso, per poter disporre degli ultimi pacchetti e risolvere eventuali bug dei software e del Sistema Operativo. Le istruzioni ci avvisavano inoltre che qualora si volesse eseguire attività di Penetration Testing occorre fare riferimento alla sezione apposita della documentazione di AWS, cosa che vedremo tra poco.

Nel frattempo per poterci collegare alla macchina abbiamo vari sistemi. Da Windows con Putty o ancora meglio installando Git per Windows. Ad ogni modo esiste un’ottima documentazione per l’avvio di macchine Linux che comprende anche come collegarsi https://aws.amazon.com/it/getting-started/tutorials/launch-a-virtual-machine/ e qui invece qualora ci fossero problemi di collegamento utilizzando SSH https://aws.amazon.com/it/premiumsupport/knowledge-center/ec2-linux-ssh-troubleshooting/?icmpid=support_rt_kc_articles

Da Linux è molto più semplice collegarsi perché SSH è già presente nelle varie distribuzioni. Utilizzando ad esempio un’altra Kali Linux basterà aprire un terminale e, avendo ben a mente dove risiede il file della chiave privata che abbiamo scaricato, digitare il seguente comando:

# ssh -i {percorso completo al file .pem} ec2-user@{indirizzo IP pubblico dell’istanza}.

dove ec2-user è l’utente e l’IP pubblico è quello che abbiamo visto assegnata all’istanza prima.

Nell’immagine sopra vediamo il comando digitato per collegarci sapendo che la chiave privata era sulla Scrivania. A quel punto il collegamento avviene e siamo dentro la nostra macchina Kali. Giusto per conferma lancio qualche comando, tra cui quello per vedere lo spazio disponibile accorgendomi che sul disco di 25 Gb mi rimangono ora 16 Gb liberi a mia disposizione.

Avendo ora il controllo di una macchina Kali Linux potrei decidere di creare delle macchine target e costruirmi così un piccolo laboratorio sul clound, utilizzabile pertanto da qualsiasi luogo semplicemente avendo un computer e una connessione internet a disposizione. Oppure potrei utilizzare questa unica macchina Kali per eseguire attività di Vulnerability Assessment o Penetration Testing qualora un amico o un cliente me lo commissioni. Attenzione però, oltre la ovvia autorizzazione necessaria del cliente/amico, in questo caso utilizzando risorse e indirizzi pubblici di Amazon, occorre chiedere autorizzazione anche a questa attraverso un apposito modulo di richiesta. Risposta che avverrà in media dopo 2 giorni. Esiste una documentazione specifica messa a disposizione da AWS qualora siano proprio quelle le attività che vogliamo eseguire con la nostra macchina. E si trova qui https://aws.amazon.com/it/security/penetration-testing/

Abbiamo visto quanto sia facile poter disporre di una macchina d’attacco nel cloud, comandabile da qualsiasi computer collegato ad internet. Chiudo questo pezzo con uno spunto di riflessione. E se comandassimo la nostra macchina sulle nuvole semplicemente con lo smartphone? Potremmo disporne davvero in ogni dove e in ogni quando. Potrebbe essere l’argomento di un prossimo articolo, ma intanto date sfogo alle vostre conoscenze informatiche.

A cura di: Antonio Sagliocca

Profilo Autore

Red Team Manager, certificato “Ethical Hacker Master” e “Penetration Tester Professional”, ha una grande passione ed esperienza nella Sicurezza Informatica e la fortuna di lavorare in tale ambito.
Socio CLUSIT scrive su alcune riviste online ed è relatore a eventi pubblici di sensibilizzazione sulla sicurezza in Internet oltre a formatore nelle aziende. Dal 2016 collabora con le Cattedre di “Informatica Giuridica” e “Informatica Giuridica Avanzata” dell’Università degli Studi di Milano.
Per la rivista Internazionale “Ciberspazio e Diritto” vol. 18 n.57 (1-2017) edito da STEM Mucchi Editore, ha scritto la pubblicazione “Open Source Intelligence e Deep Web: scenari moderni delle Investigazioni Digitali”.
Ha scritto i capitoli “Le minacce più comuni: difendersi da malware e da altri attacchi” e “La protezione dalle frodi, dal phishing e dalle estorsioni online” di alcuni volumi per studenti universitari a cura di Giovanni Ziccardi e Pierluigi Perri pubblicati nel 2017 e 2019 ed editi da Giuffrè Editore.

Condividi sui Social Network:

Articoli simili