Attacco e-mail spoofing: Capirlo per difendersi

Disclaimer

I passaggi di seguito illustrati, sono stati redatti a solo scopo dimostrativo e sfruttano vulnerabilità note.
Bertoldi Cybersecurity ed i suoi collaboratori non hanno alcuna responsabilità per gli utilizzi impropri di questa guida.

Introduzione

Una e-mail è composta da due parti :

Header

Composto da più campi: il mittente, il destinatario, la data e l’oggetto.
I campi Da (mittente), A (destinatario) e la data sono obbligatori.
Gli elementi sopracitati, sono quelli che visualizzate nel vostro programma di posta (client o webmail), possono essere falsificati da chi spedisce sia tramite il client di posta  che 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.

Analisi / Pre-Attacco

  • Ricerca OSINT

    E’ la fase iniziale 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 al seguente link: pipl.com

  • Analisi del dominio | E-mail scraping

    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 indirizzo e-mail target.

    Come fare: L’analisi può essere fatta manualmente o utilizzando gli strumenti disponibili ai seguenti links: hunter.io e maildb.io
    Si possono reperire dati utili anche tramite la e-mail di risposta automatica inviata dal form di registrazione.

  • 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 spesso ci viene indicato il modello ustao per costruire gli indirizzi. Le scelte più comuni sono: [email protected] oppure [email protected]
    (nelle aziende più strutturate solitamente gli indirizzi e-mail corrispondono ai nomi utente di Ldap o dei servizi di directory).

  • Spedizione di un 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 posiamo effettuare una callback verification RCPT  TO, descritta 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 è importante solo che ci rispondano 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 ci torneranno utili per scegliere il tipo di attacco.

    Come fare: Possiamo usare il tool dnsspy.io o mxtoolbox.com per avere una panoramica dei DNS configurati sul dominio target.

Attacco

L’attacco di spoofing, in base agli elementi trovati, può avvenire nei seguenti modi:

1. Falsificazione dell’header tramite client di posta

Come e quando sceglierlo:

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, l’attaccante sarà 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

1. Falsificazione dell’header tramite client di posta

Condizioni ideali

Condizioni medie

Condizioni sfavorevoli

Condizioni Negative

(l’attacco andrà sicuramente a buon fine)

(è possibile che la mail di spoofing riceva il Tag spam)

(è possibile che l’attacco non arrivi a destinazione e che l’attaccante sia rilevato tramite i report RUA e RUF)

(l’attacco non andrà a buon fine, è possibile che l’attaccante sia rilevato tramite i report RUA e RUF)

  • SPF con valore “?all”, “+all” o “~all”
  • DKIM inesistente
  • DMARC inesistente
  • Sistema di filtraggio inesistente
  • SPF -all
  • DKIM presente
  • DMARC inesistente
  • Sistema di filtraggio inesistente o esistente
  • SPF -all
  • DKIM presente
  • DMARC presente con report RUA e RUF
  • Sistema di filtraggio presente
  • 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 si utilizzerà la possibilità di modificare l’header di una mail, facendo credere al destinatario che l’e-mail 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” (Download sulla pagina ufficiale di thunderbird.net) che consente la modifica dell’header delle e-mail.

Dopo aver installato e attivato il plugin andiamo a comporre una mail, clicchiamo in alto sul campo mittente 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 di pre-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.

Questa sarà 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

2. Falsificazione dell’header tramite client di posta con attacco ASCII

Sfrutta lo stesso meccanismo dell’attacco precedente, in questo caso però si andrà a modificare la mail di invio con indirizzo di dominio che differisce di una singola lettera con quella reale, ma che per il lettore risulterà identico. Si può fare ad esempio su domini che contengono la lettera L, che verrà sostituita dalla lettera I maiuscola (es. 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).

3. Sessione telnet sulla piattaforma di filtraggio della posta

Si utlizza per attacchi intra dominio o per attaccare due domini presenti sulla stessa piattaforma.
Quando sceglierlo:
È 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 o 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 che l’envelope della e-mail sono autentici in quanto la piattaforma è autorizzata a spedire per conto del dominio.
Per maggiore chiarezza autenticandomi alla piattaforma di filtraggio tramite una sessione telnet posso 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.

4. Sessione telnet direttamente sul server di posta

Si utilizza per attacchi intra dominio.
Quando sceglierlo:
È 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 che usa il target, per fare ciò possiamo cercare nei DNS di dominio, il record associato alla webmail o il record MX, 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 Tails.

Se usiamo Tails è necessario prima installare TELNET poiché ne è sprovvisto di default:

sudo su
apt-get install telnet

  1. Aprire una shell da Tails attivando i socks di TOR

    (Note: 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
  2. Presentarsi al server con qualsiasi nome di dominio (preferibilmente lo stesso del destinatario)

    helo domain1.com
  3. 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:<[email protected]>
  4. Inseriamo il comando “RCPT TO” Indirizzo reale al quale facciamo arrivare l’email, deve essere una email esistente sul server di posta:

    RCPT TO:<[email protected]>
  5. A questo punto diamo il comando DATA per iniziare a scrivere la mail:

    DATA
  6. E scriviamo infine il contenuto della mail:

    Si consiglia di copiare il contenuto di esempio che trovate qui sotto, modificarlo a parte come più desiderate e incollarlo successivamente nella sessione telnet, questo poiché non potremmo correggerlo una volta digitato.
    NOTE: L’e-mail deve terminare sempre con il carattere . (punto) seguito da un INVIO.

    From: Alice <[email protected]>
    Subject: Oggetto della mail 
    Date: Thu, 04 Oct 2019 10:25:36 +0200
    To: [email protected] 
    
    Messaggio di test. 
    
    .
    
  7.  Chiudiamo la sessione telnet dando il comando QUIT:

    QUIT

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: [email protected]

Se il server ci risponderà con “Recipient OK” avremo la conferma che l’indirizzo esiste e potremmo chiudere la sessione.

5. Attacco 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 quest’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).

Remediation

Per prevenire ed eliminare definitivamente questo tipo di attacchi è necessario implementare le misure di sicurezza (IntactMail) di seguito elencate:

Sicurezza DNS: SPF, DKIM e DMARC

Questi 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) invece è una chiave pubblica che certifica la mail, mentre DMARC serve per identificare e prevenire l’email spoofing, per fare questo utilizza SPF e DKIM e permette ai destinatari l’invio di segnalazioni al fine di monitorare la protezione del dominio da mail fraudolente.

Scopri subito come configurarli con la nostra guida ! ->

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 nel caso 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.

Ti è piaciuto il nostro articolo ?

Ti è piaciuto il nostro articolo ?