
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