I passaggi illustrati nell’articolo sono stati redatti a solo scopo dimostrativo e sfruttano vulnerabilità note. Bertoldi Cybersecurity e i suoi collaboratori non hanno alcuna responsabilità per gli utilizzi impropri di quanto esposto.
L’e-mail spoofing è una delle tecniche criminali più utilizzate per veicolare malware di ogni genere e si basa sulla falsificazione di diverse informazioni come, ad esempio, l’identità di un host (computer o server connesso in rete) o il mittente di un messaggio.
Una volta che un attaccante riesce ad impersonare qualcun altro all’interno di una rete, gli è possibile intercettare informazioni riservate, diffonderne di false o effettuare qualsiasi tipo di attacco mirato ad ottenere l’accesso ad informazioni “riservate” e credenziali degli utenti.
Indice degli argomenti
La struttura di una e-mail
Per capire come funziona un attacco e-mail spoofing è utile conoscere la struttura di una e-mail e comprendere come viene composto un messaggio di posta elettronica.
Una e-mail è composta da due parti:
- header: è formato dai campi mittente, destinatario, data e oggetto, di cui i primi tre sono obbligatori. Tutti questi elementi sono quelli visualizzati nel programma di gestione della posta elettronica (client desktop o webmail) e possono essere falsificati da chi spedisce, sia tramite il client di posta sia utilizzando una sessione telnet, come vedremo a breve.
- envelope: identifica con precisione il percorso delle e-mail attraverso i suoi passaggi, dall’indirizzo IP di invio all’indirizzo IP di ricezione.
Attacco e-mail spoofing: analisi del target e fase preparatoria
Per portare a termine con successo un attacco di tipo e-mail spoofing, dobbiamo completare alcune fasi preparatorie necessarie a reperire le informazioni necessarie a colpire con precisione il nostro target. Analizziamole in dettaglio.
Ricerca OSINT
La fase della ricerca OSINT si prefigura come fase iniziale di un attacco e-mail spoofing e serve per trovare nome, cognome ed informazioni personali delle persone da attaccare all’interno del dominio (target).
Come fare: Si possono utilizzare gli strumenti disponibili sul sito pipl.com oppure eseguire direttamente ricerche sui social network come, ad esempio, LinkedIn o Facebook.
Analisi del dominio ed e-mail scraping
Questa fase viene portata a termine per trovare degli indirizzi di posta generici e non appartenenti al dominio, anche se in questa fase è già possibile trovare gli indirizzi e-mail target.
Come fare: L’analisi può essere fatta manualmente sfogliando il sito internet o utilizzando gli strumenti disponibili su hunter.io e maildb.io.
Si possono reperire dati utili anche tramite la e-mail di risposta automatica inviata dal form di registrazione del sito internet.
Studio del criterio con i quali sono stati costruiti gli indirizzi e-mail
Serve per capire la struttura degli indirizzi e-mail in modo tale da ricostruire quello del target. Utilizzando i tool sopra indicati riusciamo anche ad individuare il modello usato per costruire gli indirizzi. Le scelte più comuni sono: nome.cognome@nomedominio.ext o inizialenome.cognome@nomedominio.ext.
Nelle aziende più strutturate, inoltre, gli indirizzi e-mail corrispondono ai nomi utente di LDAP o dei servizi di directory.
Spedizione di una e-mail al target
Questa fase serve per ottenere una risposta con il modello della firma in calce ed il RAW (formato grezzo) dell’e-mail da analizzare.
Per verificare che l’indirizzo e-mail al quale lo stiamo spedendo sia corretto, possiamo effettuare una callback verification di tipo RCPT TO, che descriveremo più avanti.
Come fare: ad esempio, è possibile spacciarsi per un cliente o partner che chiede informazioni commerciali o informazioni che il target è tenuto a dare.
Durante questa fase, ci interessa solo ottenere risposta, non quale sia il tipo di risposta.
Consultazione DNS di dominio
Durante questa fase, andremo a consultare i DNS del dominio target per ottenere informazioni relative ai record MX, SPF, DKIM, DMARC, provider del server di posta ed eventuali sistemi di filtraggio che torneranno utili per scegliere il tipo di attacco.
Come fare: è possibile utilizzare i tool dnsspy.io o mxtoolbox.com per avere una panoramica dei DNS configurati sul dominio target.
Attacco e-mail spoofing: i dettagli
L’attacco di spoofing, in base agli elementi trovati, può avvenire nei seguenti modi.
Falsificazione dell’header tramite client di posta
- Condizioni ideali (l’attacco andrà sicuramente a buon fine):
- SPF con valore “?all”, “+all” o “~all”
- DKIM inesistente
- DMARC inesistente
- Sistema di filtraggio inesistente
- Condizioni medie (è possibile che la mail di spoofing riceva il Tag spam):
- SPF -all
- DKIM presente
- DMARC inesistente
- Sistema di filtraggio inesistente o esistente
- Condizioni sfavorevoli (è possibile che l’attacco non arrivi a destinazione e che l’attaccante sia rilevato tramite i report RUA e RUF):
- SPF -all
- DKIM presente
- DMARC presente con report RUA e RUF
- Sistema di filtraggio presente
- Condizioni negative (l’attacco non andrà a buon fine, è possibile che l’attaccante sia rilevato tramite i report RUA e RUF):
- SPF -all
- DKIM presente
- DMARC presente con report RUA e RUF configurati e con tag value p e sp impostati su “reject” e tag value aspf e adkim impostati su “s”
- Sistema di filtraggio presente
Per eseguire questo tipo di attacco possiamo sfruttare la possibilità di modificare l’header di una mail, facendo credere al destinatario che il messaggio di posta elettronica proviene da un indirizzo lecito.
La mail in questione, se analizzata, restituirà il reale indirizzo di provenienza, quindi per spedirla dovremmo utilizzare un indirizzo non riconducibile a noi.
Come esempio per effettuare l’attacco, useremo il client di posta Mozilla Thunderbird insieme ad un plugin denominato “Header Tools Lite” (scaricabile dalla pagina ufficiale di thunderbird.net) che consente la modifica dell’header delle e-mail.
Dopo avere installato e attivato il plugin andiamo a comporre una mail, clicchiamo in alto sul campo mittente A e scegliamo l’opzione Personalizza campo Da… oppure clicchiamo Freccia SU una volta selezionato il campo mittente.
Saremo quindi in grado di modificare l’indirizzo di spedizione con un indirizzo falso.
Possiamo quindi comporre il messaggio assicurandoci di aver inserito la firma, ricevuta durante la fase preparatoria dell’attacco.
Si consiglia di non inserire mai allegati malevoli all’interno del messaggio poiché essi verranno analizzati in fase di ricezione compromettendo l’effettiva ricezione della mail; inseriamo piuttosto un link fidato all’interno del messaggio che porti alla pagina di download dell’eventuale payload.
Nella figura sottostante possiamo analizzare la mail che il target riceverà, con header modificato:
Come detto prima, se viene analizzato il codice RAW della mail è possibile risalire al vero mittente:
- nel campo “envelope-from” ci sarà il mittente reale;
- nel campo “From” ci sarà invece il mittente falsificato, che è quello che viene visualizzato nei client di posta.
Falsificazione dell’header tramite client di posta con attacco ASCII
Sfrutta lo stesso meccanismo dell’attacco precedente, ma in questo caso si andrà a modificare la mail di invio con indirizzo di dominio che differisce di una singola lettera rispetto a quello reale, ma che al lettore sembra uguale. Ad esempio, è possibile sostituire la lettera “l” (la elle minuscola) con la “I” (la i maiuscola), ottenendo una situazione del genere: lettera.com sostituibile con Iettera.com.
Questo tipo di attacco è il più devastante perché la mail a tutti gli effetti è falsa ma non è falsa secondo le regole di dominio, quindi molto probabilmente non verrà intercettata dai sistemi di sicurezza (salvo che siano opportunamente configurati con delle black list create ad-hoc).
Sessione telnet sulla piattaforma di filtraggio della posta
Questa tecnica si utilizza per attacchi intra dominio o per attaccare due domini presenti sulla stessa piattaforma.
È da scegliere quando le condizioni sopra indicate non permettono nessun tipo di attacco.
Per portarlo a segno, bisogna individuare la piattaforma di filtraggio che usa il target e crearsi un’utenza a pagamento, o di prova sulla stessa piattaforma. Dopodiché, è necessario autorizzare l’indirizzo IP dal quale si esegue lo spoofing oppure, se presenti, utilizzare i tool interni alla piattaforma già autorizzati (e-mail client o telnet).
Poiché la batteria dei server SMTP è condivisa fra tutti gli utenti autenticati alla piattaforma, tramite una sessione telnet avviata verso la piattaforma stessa sarà possibile spedire e-mail tra indirizzi/domini autenticati alla piattaforma indipendentemente da quali essi siano.
In questo caso sia l’header sia l’envelope della e-mail sono autentici in quanto la piattaforma è autorizzata a spedire per conto del dominio.
Per maggiore chiarezza, autenticandoci alla piattaforma di filtraggio tramite una sessione telnet possiamo spedire tra indirizzi del dominio xyx.com non mio o da indirizzi del dominio abc.com al dominio xyz.com sempre non miei.
Questo tipo di attacco si basa sul fatto che le piattaforme di filtraggio condivise danno per scontato che un utente autenticato sia “trusted”, quindi gli permettono di utilizzare i server SMTP condivisi a piacimento.
Sessione telnet direttamente sul server di posta
Si utilizza per attacchi intra dominio.
È da scegliere quando le condizioni sopra indicate non permettono nessun tipo di attacco e sul mail server non è stato attivato un meccanismo di anti-spoofing (se sul server di posta è configurato l’anti-spoofing è necessario usare la metodologia spiegata nell’attacco ASCII per superare questa protezione).
Per portarlo a segno, bisogna individuare l’IP del mail server utilizzato dal target: per fare ciò, possiamo cercare il record associato alla webmail o il record MX nei DNS di dominio, oppure analizzando il RAW della mail ricevuta in fase di pre-attacco.
Se il server di posta è “bindato” con il sistema di filtraggio su tutte le porte (ovvero, accetterà connessioni solo ed esclusivamente dal sistema di filtraggio) non sarà possibile aprire sessioni Telnet ed effettuare l’attacco.
Come effettuarlo: assolutamente senza lasciare le nostre tracce. Bisogna quindi eliminare ogni possibile riferimento a noi e far partire le connessioni, ad esempio, da una macchina su cui è installata la distribuzione Tails Linux.
Se usiamo Tails è necessario prima installare TELNET poiché ne è sprovvisto di default. Per farlo, è sufficiente utilizzare questi semplici comandi:
- sudo su
- apt-get install telnet
- terminata l’installazione, apriamo una shell da Tails attivando i socks di TOR (se l’IP risulta essere inserito in blacklist, resettare il circuito TOR).
Sostituire mail.server.ext con l’IP del server di posta o con il suo nome DNS:
- torsocks telnet mail.server.ext 25
Presentarsi al server con qualsiasi nome di dominio (preferibilmente lo stesso del destinatario):
- helo domain1.com
Inseriamo il comando MAIL FROM e l’indirizzo dal quale facciamo partire l’email (se il server ha l’antispoofing bisogna modificare uno o più caratteri come descritto nell’attacco ASCII):
- MAIL FROM:<alice@domain1.com>
Inseriamo il comando RCPT TO Indirizzo reale al quale facciamo arrivare l’email. Deve essere una email esistente sul server di posta:
- RCPT TO:<bob@domain1.com>
A questo punto, diamo il comando DATA per iniziare a scrivere la mail:
- DATA
e scriviamo infine il contenuto della mail. Si consiglia di copiare il contenuto di esempio riportato a seguire, modificarlo come più desideriamo e incollarlo successivamente nella sessione telnet: questo perché non potremmo correggerlo una volta digitato.
Note: l’e-mail deve terminare sempre con il carattere “.” (punto) seguito da un INVIO.
From: Alice <alice@domain1.com>
Subject: Oggetto della mail
Date: Thu, 04 Oct 2019 10:25:36 +0200
To: bob@domain1.com
Messaggio di test.
Chiudiamo la sessione telnet dando il comando:
- QUIT
A questo punto, possiamo effettuare una callback verification “RCPT TO”. Sfruttando i comandi visti prima è possibile verificare che l’indirizzo di posta che ci interessa esiste realmente.
Per farlo, quando diamo il comando MAIL FROM è sufficiente inserire un mittente vuoto (solitamente accettato):
- MAIL FROM:<>
Dopodiché, all’interno del comando RCPT TO andiamo ad inserire l’indirizzo del quale vogliamo verificare l’esistenza:
- RCPT TO: indirizzo@datestare.ext
Se il server ci risponderà con Recipient OK avremo la conferma che l’indirizzo esiste e potremmo chiudere la sessione.
Attacco email alle Whitelist
È da scegliere quando le condizioni sopra indicate non permettono nessun altro tipo di attacco. Questo tipo di attacco si basa sulle whitelist create dagli utenti di un dominio per permettere a dei contatti fidati di spedire mail che altrimenti sarebbero bloccate dal sistema di filtraggio o categorizzate come spam.
Solitamente, se una persona riceve continuamente mail da un indirizzo fidato, ma queste ultime vanno a finire nella casella SPAM o vengono bloccate dal sistema di filtraggio ha la possibilità di mettere in whitelist gli indirizzi, in modo tale che il sistema di filtraggio non controlli più le mail inviate con quell’indirizzo.
Se si conoscono uno o più indirizzi inseriti nella whitelist del target è possibile “spoofare” questi indirizzi e mandare messaggi senza essere controllati dal sistema di filtraggio. Tramite questo tipo di attacco, dato che il messaggio passa trasparente al sistema di filtraggio, è possibile anche inviare allegati malevoli (sconsigliato comunque, perché potrebbero essere intercettati da ulteriori layer di sicurezza).
Attacco e-mail spoofing: le soluzioni per proteggersi
Per prevenire ed eliminare definitivamente il pericolo di un attacco e-mail spoofing è necessario implementare le misure di sicurezza di seguito elencate.
Sicurezza DNS: SPF, DKIM e DMARC
Queste tre chiavi DNS devono essere correttamente implementate per assicurare il migliore tasso di recapito e sicurezza possibili. L’SPF (Sender Policy Framework) si occupa di identificare quali sono gli indirizzi IP abilitati a spedire per il nostro dominio; DKIM (DomainKeys Identified Mail) è una chiave pubblica che certifica la mail; DMARC (Domain-based Message Authentication, Reporting and Conformance), infine, serve per identificare e prevenire l’email spoofing. Per fare ciò utilizza SPF e DKIM e permette ai destinatari l’invio di segnalazioni al fine di monitorare la protezione del dominio da mail fraudolente.
Sistema di filtraggio della posta elettronica
Filtra tutta la posta in ingresso ed in uscita isolando spam, malware e virus. Filtrando le e-mail inviate evita che il dominio finisca in blacklist spam qualora una o più postazione di invio siano compromesse.
Anti-spoofing sul server di posta
La sicurezza anti spoofing confronta envelope from e header from e verifica che gli indirizzi siano presenti sul server. Se la condizione è valida, il server richiede l’autenticazione per inviare l’email. Questo tipo di sicurezza non previene l’attacco ASCII.
Binding tra server di posta e sistema di filtraggio
Per evitare che malintenzionati possano aprire direttamente sessioni telnet verso il nostro server di posta è necessario autorizzare solo gli IP del sistema di filtraggio ad aprire connessioni verso il server di posta. Questo viene fatto tramite apposite configurazioni direttamente sul server di posta.