Qualsiasi software che abbia una vulnerabilità nel proprio codice può essere soggetto all’attacco di un exploit: ne esistono decine di migliaia, più o meno dannosi e per qualsiasi piattaforma, quindi è molto importante conoscerli e imparare a difendersi. 
Il sistema operativo stesso, così come i software applicativi quali il browser Web, il lettore di PDF, il lettore multimediale, i plug-in, prevedono architetture complesse, implementate in milioni di righe di codice. È dunque inevitabile che tale codice contenga errori che possono originare vulnerabilità che se scoperte e usate da utenti malintenzionati possono essere sfruttate mediante exploit o altro malware.
Un altro aspetto importante degli exploit sta nel fatto che in fase di sviluppo si sfrutta spesso la capacità del software di interagire con gli altri programmi sia locali che remoti così da poter ambire ad attaccare anche i sistemi informatici che cooperano con la macchina target infettata: si innesca così una reazione a catena.

Il termine exploit (in inglese “sfruttare”), in informatica, identifica una tipologia di software - script, virus, worm o un semplice eseguibile - che, sfruttando una specifica vulnerabilità di un sistema, permette l’esecuzione di codice malevolo al fine di ottenerne il controllo parziale o totale in base ai privilegi ottenuti. Generalmente infatti un exploit colpisce il sistema prima con dei privilegi minimi in modo da non destare “sospetto” per poi elevarsi, nei casi più gravi, fino a root o administrator con la tattica del “privilege escalation”.

Come funziona un exploit?

Chiaramente ogni exploit funziona in modo diverso a seconda delle vulnerabilità che sfrutta e dei privilegi che deve ottenere.
In generale un exploit comincia a lavorare quando il software colpito riceve in input un determinato dato che può essere una stringa scritta sul terminale o, direttamente, un file. Ad esempio quando un programma, per negligenza del programmatore, non effettua determinati controlli sull’input può accadere che vada in “buffer overflow”.

""""

Come sappiamo, ogni input ricevuto dal programma viene collocato in una specifica locazione di memoria che chiaramente è limitata dal sistema operativo; ora, se si dà in input un dato che sfora questa grandezza, il programma andrà a sovrascrivere altre zone di memoria e se sovrascriviamo le zone di memoria giuste allora potremo far eseguire alla macchina del codice non previsto.
Questo è il principio su cui si basano la maggior parte degli exploit.

Come vengono scritti gli exploit?

Diciamo che non si tratta di programmazione accessibile a tutti i programmatori. Generalmente i linguaggi comuni utilizzati sono il C, Perl e PHP. In molti casi però non basta la programmazione ad alto livello, quindi bisogna scendere a livelli più bassi, fino ad agire su singoli bit e bytes.
Se volete vedere qualche esempio di exploit, anzi ben più di qualche esempio, potete consultare exploit-db.com che attualmente contiene circa 40000 scripts in costante aumento.

""""

 

Come difendersi da un exploit?

In realtà un metodo non c’è. L’unica cosa che potrebbe almeno limitare la possibilità di essere colpiti da un exploit è AGGIORNARE qualsiasi applicativo software e soprattutto il vostro sistema operativo.
In questo campo ad esempio Linux è un sistema operativo che aiuta, in quanto ha una gestione dei privilegi più intelligente rispetto magari a Windows; di contro però il suo codice è liberamente accessibile (open-source based).


""""

Abbiamo detto che gli exploit lavorano su porzioni di codice fallate dei programmi, ebbene se questo codice viene aggiornato allora è ovvio che il pericolo sarà scampato, almeno temporaneamente. 
Spesso infatti chi scopre una vulnerabilità di un software decide di comunicarlo agli sviluppatori, ma c’è anche chi invece trattiene queste informazioni con scopi criminali (è l’esempio dei black hat).

Dopo questa buona base di teoria possiamo passare finalmente alla pratica. Per questo episodio in particolare andremo ad utilizzare “Metasploit” che è una suite contenente una miriade di tool, moduli e plugin orientate alla scansione e allo sfruttamento delle vulnerabilità di un sistema: useremo tale software per effettuare un attacco dalla Backbox alla Metasploitable.  

Avviamo entrambe le macchine virtuali e eseguendo da terminale il comando ifconfig per verificarne gli IP.

""""

Dopodichè con Zenmap effettuiamo una scansione sull’IP della Metasploitable per detectare le porte aperte (per ovvi motivi in questo caso ce ne saranno tantissime). 

Per avviare la console di “metasploit” lanciamo dal terminale “sudo msfconsole”: automaticamente vi renderà disponibile tutto il suo fornitissimo database di exploits, payloads, encoders etc.

""""

Per lanciare un exploit ovviamente bisogna conoscerne il nome, mentre il primo comando per selezionarlo è “use <nome_del_modulo>”.
Dopodichè bisogna specificare tutti i parametri necessari per completare l’attacco; quindi diamo “set RHOST <ip_vittima>”. Infine per lanciare definitivamente l’exploit usiamo il comando “exploit”.
""""

Attenzione! Ogni exploit ha bisogno di parametri differenti a seconda delle vulnerabilità che sfrutta e dei privilegi che deve ottenere e siccome il nostro scopo non è quello di formare piccoli lamer, ma principalmente di aiutarvi a difendervi e acquisire consapevolezza nel campo della sicurezza informatica, in questo caso abbiamo riportato solo quelli principali. Per approfondimenti potete consultare la documentazione presente su questa pagina, oppure, direttamente dal terminale, lanciare il comando “help” per avere una lista dei comandi con relativa descrizione.

Tutto questo è utile per farvi capire che non esistono dispositivi che non abbiano alcuna vulnerabilità software - o comunque potranno acquisirle nel tempo -  abbiamo visto che portare a termine un attacco exploit non è così difficile come può sembrare, ma è ancora più semplice AGGIORNARE tutti i vostri programmi! Adesso avete più consapevolezza di quanto sia importante un’operazione, quale gli updates, che quotidianamente snobbiamo con leggerezza.

Ad esempio l’exploit che abbiamo usato per realizzare l’articolo consente, con solo un paio di parametri, di ottenere il controllo COMPLETO della macchina vittima, addirittura fino alla formattazione totale della stessa!