
Ein E-Mail-Spoofing-Testwerkzeug, das darauf abzielt, SPF/DKIM/DMARC zu umgehen und DKIM-Signaturen zu fälschen.🍻
espoofer ist ein Open-Source-Testwerkzeug, um die SPF-, DKIM- und DMARC-Authentifizierung in E-Mail-Systemen zu umgehen. Es hilft Mailserver-Administratoren und Penetrationstestern zu überprüfen, ob der Ziel-Mailserver und -Client anfällig für E-Mail-Spoofing-Angriffe sind oder missbraucht werden können, um Spoofing-E-Mails zu senden.
Abbildung 1. Ein Beispiel unserer Spoofing-Angriffe auf Gmail (Behoben, Demovideo)
E-Mail-Spoofing ist eine große Bedrohung für sowohl Einzelpersonen als auch Organisationen (Yahoo-Breach, John Podesta). Um dieses Problem zu adressieren, verwenden moderne E-Mail-Dienste und Websites Authentifizierungsprotokolle – SPF, DKIM und DMARC – um E-Mail-Fälschungen zu verhindern.
Unsere neueste Forschung zeigt, dass die Implementierung dieser Protokolle unter einer Reihe von Sicherheitsproblemen leidet, die ausgenutzt werden können, um SPF-/DKIM-/DMARC-Schutz zu umgehen. Abbildung 1 demonstriert einen unserer Spoofing-Angriffe, um DKIM und DMARC in Gmail zu umgehen. Für weitere technische Details siehe unseren Black Hat USA 2020 Vortrag (mit Präsentationsvideo) oder das USENIX Security 2020 Paper.
In diesem Repository fassen wir alle von uns gefundenen Testfälle zusammen und integrieren sie in dieses Tool, um Administratoren und Sicherheitspraktikern zu helfen, solche Sicherheitsprobleme schnell zu identifizieren und zu lokalisieren.
Latex-Version:
@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,
}
Word-Version:
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
Python-Version: Python 3 (>=3.7).
espoofer hat drei Arbeitsmodi: Server ('s', Standardmodus), Client ('c') und Manuell ('m'). Im Server-Modus arbeitet espoofer wie ein Mailserver, um die Validierung in empfangenden Diensten zu testen. Im Client-Modus arbeitet espoofer als E-Mail-Client, um die Validierung in sendenden Diensten zu testen. Der Manuelle Modus wird für Debug-Zwecke verwendet.

Abbildung 2. Drei Arten von Angreifern und ihre Arbeitsmodi
Um espoofer im Server-Modus auszuführen, benötigen Sie: 1) eine IP-Adresse (1.2.3.4), bei der der ausgehende Port 25 nicht vom ISP blockiert wird, und 2) eine Domain (attack.com).
attack.com setzenselector._domainkey.attacker.com TXT "v=DKIM1; k=rsa; t=y; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDNjwdrmp/gcbKLaGQfRZk+LJ6XOWuQXkAOa/lI1En4t4sLuWiKiL6hACqMrsKQ8XfgqN76mmx4CHWn2VqVewFh7QTvshGLywWwrAJZdQ4KTlfR/2EwAlrItndijOfr2tpZRgP0nTY6saktkhQdwrk3U0SZmG7U8L9IPj7ZwPKGvQIDAQAB"
attack.com setzenattack.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
}
Sie können die case_id aller Testfälle mit der Option -l auflisten:
python3 espoofer.py -l
python3 espoofer.py
Sie können die case_id in der config.py ändern oder die Option -id in der Befehlszeile verwenden, um verschiedene Fälle zu testen:
python3 espoofer.py -id server_a1
Um espoofer im Client-Modus auszuführen, benötigen Sie ein Konto beim Ziel-E-Mail-Dienst. Dieser Angriff nutzt das Versagen einiger E-Mail-Dienste aus, eine ausreichende Validierung von E-Mails durchzuführen, die von lokalen MUAs empfangen werden. Zum Beispiel versucht [email protected], sich als [email protected] auszugeben.
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-Sende-Server-IP und Port
"username": b"[email protected]", # Ihr Kontobenutzername und Passwort
"password": b"your_password_here",
},
}
Sie können die case_id aller Testfälle mit der Option -l auflisten:
python3 espoofer.py -l
Hinweis:
sending_serversollte die SMTP-Sende-Server-Adresse sein, nicht die Empfangs-Server-Adresse.
python3 espoofer.py -m c
Sie können die case_id in der config.py ändern und erneut ausführen, oder Sie können die Option -id in der Befehlszeile verwenden:
python3 espoofer.py -m c -id client_a1
Hier ist ein Beispiel des manuellen Modus:
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
Sie sind willkommen, einen Pull-Request zu senden, um hier Ihren Fehlerbericht einzureichen.
Sie können es im Authentication-results-Header in den Roh-Nachrichtenheadern überprüfen. Wenn der Header dmarc=pass anzeigt, hat die E-Mail die DMARC-Authentifizierung bestanden. Sie können einige Demovideos hier ansehen.
Es gibt mehrere mögliche Gründe, wenn das Senden einer E-Mail fehlschlägt: 1) Ihr ISP blockiert ausgehende E-Mails an Port 25, um Spam zu verhindern. In diesem Fall müssen Sie die Erlaubnis des ISP einholen; 2) die IP-Adresse steht in der Spam-Liste des Ziel-E-Mail-Dienstes. In vielen Fällen können Sie das Problem hier lösen: https://www.spamhaus.org/lookup/ ; 3) einige E-Mail-Dienste überprüfen, ob ein PTR-Eintrag für die sendende IP vorhanden ist. Möglicherweise müssen Sie auch den PTR-Eintrag setzen, um diese Überprüfung zu umgehen; 4) die E-Mail kann die Formatvalidierung des Ziel-E-Mail-Dienstes nicht bestehen. Sie möchten vielleicht einen anderen Testfall ausprobieren.
Derzeit konzentriert sich espoofer auf die Umgehung der SPF-/DKIM-/DMARC-Authentifizierung und zielt nicht auf die Umgehung von Spam-Filtern ab. Sie könnten jedoch versuchen, eine vertrauenswürdige sendende IP-Adresse, Domain und einen harmlosen Nachrichteninhalt zu verwenden, um den Spam-Filter zu umgehen.
Nach unseren früheren Erfahrungen filtern einige E-Mail-Dienste verdächtige E-Mails stillschweigend.
Sie müssen einen eigenen autoritativen DNS-Server einrichten, anstatt DNS-Hosting-Dienste von Drittanbietern zu verwenden, da einige DNS-Hosting-Dienste Einschränkungen beim Setzen von Sonderzeichen haben. Siehe Issue.
Sie sind willkommen, weitere Testfälle hinzuzufügen.