
Uno strumento di test per lo spoofing delle email che mira a bypassare SPF/DKIM/DMARC e falsificare le firme DKIM.🍻
espoofer è uno strumento di test open-source per bypassare l'autenticazione SPF, DKIM e DMARC nei sistemi email. Aiuta gli amministratori di server di posta e i penetration tester a verificare se il server e il client di posta elettronica target sono vulnerabili ad attacchi di spoofing email o possono essere abusati per inviare email di spoofing.
Figura 1. Un caso dei nostri attacchi di spoofing su Gmail (Risolto, Video dimostrativo)
Lo spoofing email è una grande minaccia sia per gli individui che per le organizzazioni (Yahoo breach, John podesta). Per affrontare questo problema, i moderni servizi email e i siti web impiegano protocolli di autenticazione -- SPF, DKIM e DMARC -- per prevenire la falsificazione delle email.
La nostra ultima ricerca mostra che l'implementazione di questi protocolli soffre di numerosi problemi di sicurezza, che possono essere sfruttati per bypassare le protezioni SPF/DKIM/DMARC. La Figura 1 dimostra uno dei nostri attacchi di spoofing per bypassare DKIM e DMARC in Gmail. Per maggiori dettagli tecnici, consulta il nostro Black Hat USA 2020 talk (con video della presentazione) o USENIX security 2020 paper.
In questo repository, riassumiamo tutti i casi di test che abbiamo trovato e li integriamo in questo strumento per aiutare amministratori e professionisti della sicurezza a identificare e localizzare rapidamente tali problemi di sicurezza.
Versione Latex:
@inproceedings{chen-email,
author = {Jianjun Chen and Vern Paxson and Jian Jiang},
title = {Composition Kills: A Case Study of Email Sender Authentication},
booktitle = {29th {USENIX} Security Symposium ({USENIX} Security 20)},
year = {2020},
isbn = {978-1-939133-17-5},
pages = {2183--2199},
url = {https://www.usenix.org/conference/usenixsecurity20/presentation/chen-jianjun},
publisher = {{USENIX} Association},
month = aug,
}
Versione Word:
Jianjun Chen, Vern Paxson, and Jian Jiang. "Composition kills: A case study of email sender authentication." In 29th USENIX Security Symposium (USENIX Security 20), pp. 2183-2199. 2020.
git clone https://github.com/chenjj/espoofer
sudo pip3 install -r requirements.txt
Versione Python: Python 3 (>=3.7).
espoofer ha tre modalità di lavoro: server ('s', modalità predefinita), client ('c') e manual ('m'). In modalità server, espoofer funziona come un server di posta per testare la validazione nei servizi di ricezione. In modalità client, espoofer funziona come un client email per testare la validazione nei servizi di invio. La modalità manual è utilizzata per scopi di debug.

Figura 2. Tre tipi di attaccanti e le loro modalità di lavoro
Per eseguire espoofer in modalità server, è necessario avere: 1) un indirizzo IP (1.2.3.4), la cui porta 25 in uscita non sia bloccata dal provider, e 2) un dominio (attack.com).
attack.comselector._domainkey.attacker.com TXT "v=DKIM1; k=rsa; t=y; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDNjwdrmp/gcbKLaGQfRZk+LJ6XOWuQXkAOa/lI1En4t4sLuWiKiL6hACqMrsKQ8XfgqN76mmx4CHWn2VqVewFh7QTvshGLywWwrAJZdQ4KTlfR/2EwAlrItndijOfr2tpZRgP0nTY6saktkhQdwrk3U0SZmG7U8L9IPj7ZwPKGvQIDAQAB"
attack.comattack.com TXT "v=spf1 ip4:1.2.3.4 +all"
config ={
"attacker_site": b"attack.com", # attack.com
"legitimate_site_address": b"[email protected]", # legitimate.com
"victim_address": b"[email protected]", # [email protected]
"case_id": b"server_a1", # server_a1
}
Puoi elencare il case_id di tutti i casi di test usando l'opzione -l:
python3 espoofer.py -l
python3 espoofer.py
Puoi cambiare il case_id in config.py o usare l'opzione -id nella riga di comando per testare diversi casi:
python3 espoofer.py -id server_a1
Per eseguire espoofer in modalità client, è necessario avere un account sui servizi email target. Questo attacco sfrutta la mancata validazione sufficiente delle email ricevute dai MUA locali da parte di alcuni servizi email. Ad esempio, [email protected] tenta di impersonare [email protected].
config ={
"legitimate_site_address": b"[email protected]",
"victim_address": b"[email protected]",
"case_id": b"client_a1",
"client_mode": {
"sending_server": ("smtp.gmail.com", 587), # SMTP sending serve ip and port
"username": b"[email protected]", # Your account username and password
"password": b"your_passward_here",
},
}
Puoi elencare il case_id di tutti i casi di test usando l'opzione -l:
python3 espoofer.py -l
Nota:
sending_serverdeve essere l'indirizzo del server SMTP di invio, non l'indirizzo del server di ricezione.
python3 espoofer.py -m c
Puoi cambiare il case_id in config.py ed eseguirlo di nuovo, oppure usare l'opzione -id nella riga di comando:
python3 espoofer.py -m c -id client_a1
Ecco un esempio di modalità manuale:
python3 espoofer.py -m m -helo attack.com -mfrom <[email protected]> -rcptto <[email protected]> -data raw_msg_here -ip 127.0.0.1 -port 25
Benvenuto a inviare una pull request per segnalare il tuo bug qui.
Puoi verificarlo nell'intestazione Authentication-results nelle intestazioni del messaggio grezzo. Se l'intestazione mostra dmarc=pass, significa che l'email ha superato l'autenticazione DMARC. Puoi guardare alcuni video dimostrativi qui.
Ci sono diverse possibili ragioni se non riesci a inviare un'email: 1) il tuo provider blocca le email in uscita sulla porta 25 per prevenire lo spam. In questo caso, devi chiedere il permesso al provider; 2) l'indirizzo IP è nella lista di spam dei servizi email target. In molti casi, puoi risolvere il problema qui, https://www.spamhaus.org/lookup/ ; 3) alcuni servizi email controllano se esiste un record PTR per l'IP mittente, potresti dover impostare anche il record PTR per bypassare questo controllo; 4) l'email non supera la validazione del formato del servizio email target, potresti voler provare un caso di test diverso.
Attualmente, espoofer si concentra sul bypass dell'autenticazione SPF/DKIM/DMARC e non mira al bypass del filtro antispam. Ma puoi provare a utilizzare un indirizzo IP mittente affidabile, un dominio e un contenuto del messaggio benigno per bypassare il filtro antispam.
Nelle nostre esperienze precedenti, alcuni servizi email filtrano silenziosamente le email sospette.
Dovrai configurare il tuo server DNS autorevole, invece di utilizzare servizi di hosting DNS di terze parti, poiché alcuni servizi di hosting DNS hanno restrizioni sull'impostazione di caratteri speciali. Vedi issue.
Benvenuto ad aggiungere altri casi di test.