<summary><strong>Lernen Sie AWS-Hacking von Null auf Held mit</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Wenn Sie Ihr **Unternehmen in HackTricks beworben sehen möchten** oder **HackTricks im PDF-Format herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merch**](https://peass.creator-spring.com)
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) Github-Repositories einreichen.
**Sofort einsatzbereite Einrichtung für Schwachstellenbewertung und Penetrationstests**. Führen Sie einen vollständigen Pentest von überall aus mit 20+ Tools & Funktionen durch, die von der Aufklärung bis zum Bericht reichen. Wir ersetzen keine Pentester - wir entwickeln benutzerdefinierte Tools, Erkennungs- und Exploit-Module, um ihnen etwas Zeit zu geben, tiefer zu graben, Shells zu öffnen und Spaß zu haben.
Das **Simple Mail Transfer Protocol (SMTP)** ist ein Protokoll, das innerhalb der TCP/IP-Suite für das **Senden und Empfangen von E-Mails** verwendet wird. Aufgrund seiner Einschränkungen beim Warten auf Nachrichten beim Empfänger wird SMTP häufig zusammen mit entweder **POP3 oder IMAP** eingesetzt. Diese zusätzlichen Protokolle ermöglichen es Benutzern, Nachrichten in einem Server-Postfach zu speichern und sie regelmäßig herunterzuladen.
In der Praxis ist es üblich, dass **E-Mail-Programme****SMTP zum Senden von E-Mails** verwenden, während sie **POP3 oder IMAP zum Empfangen** verwenden. Auf Unix-basierten Systemen sticht **sendmail** als der am häufigsten für E-Mail-Zwecke verwendete SMTP-Server hervor. Das kommerzielle Paket namens Sendmail umfasst einen POP3-Server. Darüber hinaus bietet **Microsoft Exchange** einen SMTP-Server und die Möglichkeit, POP3-Unterstützung einzuschließen.
Wenn Sie die Möglichkeit haben, **den Opfer dazu zu bringen, Ihnen eine E-Mail zu senden** (zum Beispiel über das Kontaktformular der Webseite), tun Sie es, denn **Sie könnten die interne Topologie** des Opfers sehen, wenn Sie die Header der E-Mail betrachten.
Sie können auch eine E-Mail von einem SMTP-Server erhalten, der versucht, **eine E-Mail an eine nicht existierende Adresse auf diesem Server zu senden** (weil der Server dem Angreifer eine NDN-E-Mail senden wird). Stellen Sie jedoch sicher, dass Sie die E-Mail von einer zugelassenen Adresse senden (überprüfen Sie die SPF-Richtlinie) und dass Sie NDN-Nachrichten empfangen können.
Sie sollten auch **verschiedene Inhalte senden, da Sie möglicherweise interessantere Informationen** in den Headern finden können, wie z.B.: `X-Virus-Scanned: by av.domain.com`\
Wenn der Server NTLM-Authentifizierung unterstützt (Windows), können Sie sensible Informationen (Versionen) erhalten. Weitere Informationen [**hier**](https://medium.com/@m8r0wn/internal-information-disclosure-using-hidden-ntlm-authentication-18de17675666).
Einige SMTP-Server vervollständigen automatisch die Absenderadresse, wenn der Befehl "MAIL FROM" ohne vollständige Adresse ausgegeben wird, wodurch ihr interner Name offengelegt wird:
VRFY (Verify) is a command in the SMTP protocol used to confirm whether a particular username or mailbox exists within a remote mail server. This command can be abused by attackers to gather information about valid user accounts on the target system. It is recommended to disable the VRFY command to prevent user enumeration attacks.
EXPAND ist ein Befehl, der von SMTP-Servern unterstützt wird, um die vollständige Liste der Abonnenten einer Mailingliste anzuzeigen. Dies kann von Hackern ausgenutzt werden, um Informationen über potenzielle Ziele zu sammeln.
**Sofort verfügbare Einrichtung für Schwachstellenbewertung & Penetrationstests**. Führen Sie einen vollständigen Pentest von überall aus mit 20+ Tools & Funktionen durch, die von der Aufklärung bis zum Bericht reichen. Wir ersetzen keine Pentester - wir entwickeln benutzerdefinierte Tools, Erkennungs- & Exploit-Module, um ihnen etwas Zeit zu geben, tiefer zu graben, Shells zu öffnen und Spaß zu haben.
**Zustellungsstatusbenachrichtigungsberichte**: Wenn Sie eine **E-Mail** an eine Organisation an eine **ungültige Adresse** senden, wird die Organisation Sie benachrichtigen, dass die Adresse ungültig war, indem sie Ihnen eine **E-Mail zurücksendet**. Die **Header** der zurückgesendeten E-Mail enthalten möglicherweise **sensible Informationen** (wie die IP-Adresse der Maildienste, die mit den Berichten interagiert haben, oder Informationen zur Antivirensoftware).
Die SMTP-Schmuggel-Schwachstelle ermöglichte es, alle SMTP-Schutzmaßnahmen zu umgehen (weitere Informationen zu den Schutzmaßnahmen finden Sie im nächsten Abschnitt). Weitere Informationen zum SMTP-Schmuggel finden Sie unter:
Organisationen werden daran gehindert, unbefugte E-Mails in ihrem Namen zu versenden, indem sie **SPF**, **DKIM** und **DMARC** einsetzen, da das Spoofing von SMTP-Nachrichten einfach ist.
Ein **vollständiger Leitfaden zu diesen Gegenmaßnahmen** ist unter [https://seanthegeek.net/459/demystifying-dmarc/](https://seanthegeek.net/459/demystifying-dmarc/) verfügbar.
SPF [wurde 2014 "veraltet" erklärt](https://aws.amazon.com/premiumsupport/knowledge-center/route53-spf-record/). Dies bedeutet, dass anstelle eines **TXT-Eintrags** in `_spf.domain.com` ein Eintrag in `domain.com` mit der **gleichen Syntax** erstellt wird.\
Darüber hinaus ist es häufig anzutreffen, dass zur Wiederverwendung früherer SPF-Einträge etwas wie `"v=spf1 include:_spf.google.com ~all"` zu finden ist.
**Sender Policy Framework** (SPF) ist ein Mechanismus, der es Mail Transfer Agents (MTAs) ermöglicht zu überprüfen, ob ein Host, der eine E-Mail sendet, autorisiert ist, indem er eine Liste autorisierter Mailserver abfragt, die von den Organisationen definiert wurden. Diese Liste, die IP-Adressen/Bereiche, Domains und andere Entitäten spezifiziert, die **berechtigt sind, E-Mails im Namen eines Domainnamens zu senden**, enthält verschiedene "**Mechanismen**" im SPF-Eintrag.
| MX | Wenn der Domainname einen MX-Eintrag hat, der auf die Adresse des Absenders auflöst, passt es (d.h. die E-Mail stammt von einem der eingehenden Mailserver der Domain). |
| PTR | Wenn der Domainname (PTR-Eintrag) für die Adresse des Clients in der angegebenen Domain ist und dieser Domainname auf die Adresse des Clients auflöst (forward-confirmed reverse DNS), passt es. Dieser Mechanismus wird nicht empfohlen und sollte vermieden werden, wenn möglich. |
| EXISTS | Wenn der angegebene Domainname zu einer beliebigen Adresse auflöst, passt es (unabhängig von der aufgelösten Adresse). Dies wird selten verwendet. Zusammen mit der SPF-Makrosprache bietet es komplexere Abgleiche wie DNSBL-Abfragen. |
| INCLUDE | Verweist auf die Richtlinie einer anderen Domain. Wenn die Richtlinie dieser Domain bestanden hat, besteht auch dieser Mechanismus. Wenn jedoch die eingeschlossene Richtlinie fehlschlägt, wird die Verarbeitung fortgesetzt. Um die Richtlinie einer anderen Domain vollständig zu delegieren, muss die Weiterleitungs-Erweiterung verwendet werden. |
| REDIRECT | <p>Ein Redirect ist ein Zeiger auf einen anderen Domainnamen, der eine SPF-Richtlinie hostet. Es ermöglicht mehreren Domains, dieselbe SPF-Richtlinie zu teilen. Es ist nützlich, wenn mit einer großen Anzahl von Domains gearbeitet wird, die die gleiche E-Mail-Infrastruktur teilen.</p><p>Die SPF-Richtlinie der im Redirect-Mechanismus angegebenen Domain wird verwendet.</p> |
Es ist auch möglich, **Qualifizierer** zu identifizieren, die anzeigen, **was getan werden soll, wenn ein Mechanismus abgeglichen wird**. Standardmäßig wird der **Qualifizierer "+"** verwendet (d.h. wenn ein Mechanismus abgeglichen wird, bedeutet das, dass er erlaubt ist).\
In der Regel finden Sie **am Ende jeder SPF-Richtlinie** etwas wie: **\~all** oder **-all**. Dies wird verwendet, um anzuzeigen, dass **wenn der Absender keiner SPF-Richtlinie entspricht, die E-Mail als nicht vertrauenswürdig markiert (\~) oder abgelehnt (-) werden sollte**.
* **`~`**: Kennzeichnet SOFTFAIL und dient als Mittelweg zwischen NEUTRAL und FAIL. E-Mails, die dieses Ergebnis erfüllen, werden in der Regel akzeptiert, aber entsprechend markiert.
* **`-`**: Zeigt FAIL an und legt nahe, dass die E-Mail abgelehnt werden sollte.
Im folgenden Beispiel wird die **SPF-Richtlinie von google.com** dargestellt. Beachten Sie die Einbeziehung von SPF-Richtlinien aus verschiedenen Domains innerhalb der ersten SPF-Richtlinie:
Traditionell war es möglich, jede Domain zu fälschen, die keinen korrekten/keinen SPF-Eintrag hatte. **Heutzutage** wird eine **E-Mail von einer Domain ohne gültigen SPF-Eintrag** wahrscheinlich automatisch **abgelehnt/als nicht vertrauenswürdig markiert**.
Um den SPF einer Domain zu überprüfen, können Sie Online-Tools wie: [https://www.kitterman.com/spf/validate.html](https://www.kitterman.com/spf/validate.html) verwenden.
DKIM wird verwendet, um ausgehende E-Mails zu signieren, was ihre Validierung durch externe Mail Transfer Agents (MTAs) ermöglicht, indem der öffentliche Schlüssel der Domain aus dem DNS abgerufen wird. Dieser öffentliche Schlüssel befindet sich in einem TXT-Eintrag der Domain. Um auf diesen Schlüssel zuzugreifen, muss man sowohl den Selektor als auch den Domainnamen kennen.
Um beispielsweise den Schlüssel anzufordern, sind der Domainname und der Selektor unerlässlich. Diese Informationen finden sich im E-Mail-Header `DKIM-Signature`, z. B. `d=gmail.com;s=20120113`.
DMARC verbessert die E-Mail-Sicherheit, indem es auf den SPF- und DKIM-Protokollen aufbaut. Es umreißt Richtlinien, die Mailserver bei der Behandlung von E-Mails aus einer bestimmten Domäne leiten, einschließlich des Umgangs mit Authentifizierungsfehlern und der Weiterleitung von Berichten über E-Mail-Verarbeitungsaktionen.
Wenn ich eine E-Mail von pielovers.demon.co.uk erhalte und es keine SPF-Daten für pielovers gibt, sollte ich dann eine Ebene zurückgehen und SPF für demon.co.uk überprüfen? Nein. Jede Subdomäne bei Demon ist ein anderer Kunde, und jeder Kunde könnte seine eigene Richtlinie haben. Es würde keinen Sinn machen, wenn die Richtlinie von Demon standardmäßig für alle Kunden gelten würde; wenn Demon das tun möchte, kann es SPF-Einträge für jede Subdomäne einrichten.
Daher lautet der Rat an SPF-Verleger: Sie sollten für jede Subdomäne oder jeden Hostnamen einen SPF-Eintrag hinzufügen, der über einen A- oder MX-Eintrag verfügt.
Websites mit Platzhalter-A- oder MX-Einträgen sollten auch einen Platzhalter-SPF-Eintrag haben, der folgendermaßen aussieht: \* IN TXT "v=spf1 -all"
Das ergibt Sinn - eine Subdomäne könnte sich durchaus an einem anderen geografischen Standort befinden und eine sehr unterschiedliche SPF-Definition haben.
Beim Versenden von E-Mails ist es entscheidend, sicherzustellen, dass sie nicht als Spam markiert werden. Dies wird oft durch die Verwendung eines **Relay-Servers erreicht, der vom Empfänger vertraut wird**. Eine häufige Herausforderung besteht jedoch darin, dass Administratoren möglicherweise nicht vollständig darüber informiert sind, welche **IP-Bereiche sicher zuzulassen sind**. Dieses mangelnde Verständnis kann zu Fehlern bei der Einrichtung des SMTP-Servers führen, ein Risiko, das in Sicherheitsbewertungen häufig identifiziert wird.
Ein Workaround, den einige Administratoren verwenden, um Probleme bei der E-Mail-Zustellung zu vermeiden, insbesondere im Zusammenhang mit der Kommunikation mit potenziellen oder laufenden Kunden, besteht darin, **Verbindungen von jeder IP-Adresse zuzulassen**. Dies wird durch Konfigurieren des Parameters `mynetworks` des SMTP-Servers erreicht, um alle IP-Adressen zu akzeptieren, wie unten gezeigt:
Um zu überprüfen, ob ein Mail-Server ein offenes Relay ist (was bedeutet, dass er E-Mails von jeder externen Quelle weiterleiten könnte), wird häufig das `nmap`-Tool verwendet. Es enthält ein spezifisches Skript, das für diesen Test entwickelt wurde. Der Befehl für einen ausführlichen Scan auf einem Server (zum Beispiel mit der IP 10.10.10.10) auf Port 25 mit `nmap` lautet:
Wenn Sie einen Fehler bei der Verwendung der dkim Python-Bibliothek beim Parsen des Schlüssels erhalten, können Sie gerne den folgenden verwenden.\
**HINWEIS**: Dies ist nur eine schnelle Lösung, um schnelle Überprüfungen durchzuführen, falls aus irgendeinem Grund der OpenSSL-Privatschlüssel **nicht von dkim geparst werden kann**.
\# Dies sendet eine nicht signierte Nachrichtmail("deine\_email@gmail.com", "Testbetreff!", "Hey! Das ist ein Test", "Von: administrator@opfer.com");# Code from https://github.com/magichk/magicspoofing/blob/main/magicspoofmail.pyimport osimport dkim #pip3 install dkimpyimport smtplibfrom email.mime.multipart import MIMEMultipartfrom email.mime.text import MIMETextfrom email.mime.base import MIMEBase# Set paramsdestination="destination@gmail.com"sender="administrator@victim.com"subject="Test"message\_html="""\<html>\<body>\<h3>This is a test, not a scam\</h3>\<br />\</body>\</html>"""sender\_domain=sender.split("@")\[1]# Prepare postfixos.system("sudo sed -ri 's/(myhostname) = (.\*)/\\\1 = "+sender\_domain+"/g' /etc/postfix/main.cf")os.system("systemctl restart postfix")# Generate DKIM keysdkim\_private\_key\_path="dkimprivatekey.pem"os.system(f"openssl genrsa -out {dkim\_private\_key\_path} 1024 2> /dev/null")with open(dkim\_private\_key\_path) as fh:dkim\_private\_key = fh.read()# Generate emailmsg = MIMEMultipart("alternative")msg.attach(MIMEText(message\_html, "html"))msg\["To"] = destinationmsg\["From"] = sendermsg\["Subject"] = subjectheaders = \[b"To", b"From", b"Subject"]msg\_data = msg.as\_bytes()# Sign email with dkim## The receiver won't be able to check it, but the email will appear as signed (and therefore, more trusted)dkim\_selector="s1"sig = dkim.sign(message=msg\_data,selector=str(dkim\_selector).encode(),domain=sender\_domain.encode(),privkey=dkim\_private\_key.encode(),include\_headers=headers)msg\["DKIM-Signature"] = sig\[len("DKIM-Signature: ") :].decode()msg\_data = msg.as\_bytes()# Use local postfix relay to send emailsmtp="127.0.0.1"s = smtplib.SMTP(smtp)s.sendmail(sender, \[destination], msg\_data)
**Weitere Informationen zu diesen Schutzmaßnahmen finden Sie unter** [**https://seanthegeek.net/459/demystifying-dmarc/**](https://seanthegeek.net/459/demystifying-dmarc/)
Normalerweise enthält `/etc/postfix/master.cf`, wenn installiert, **Skripte zur Ausführung**, wenn z. B. eine neue E-Mail von einem Benutzer empfangen wird. Zum Beispiel bedeutet die Zeile `flags=Rq user=mark argv=/etc/postfix/filtering-f ${sender} -- ${recipient}`, dass `/etc/postfix/filtering` ausgeführt wird, wenn eine neue E-Mail vom Benutzer mark empfangen wird.
SMTP (Simple Mail Transfer Protocol) is a TCP/IP protocol used in sending and receiving e-mail. However, since it is limited in its ability to queue messages at the receiving end, it is usually used with one of two other protocols, POP3 or IMAP, that let the user save messages in a server mailbox and download them periodically from the server.
**Sofort einsatzbereite Einrichtung für Schwachstellenanalyse & Penetrationstests**. Führen Sie einen vollständigen Pentest von überall aus mit 20+ Tools & Funktionen durch, die von der Aufklärung bis zum Bericht reichen. Wir ersetzen keine Pentester - wir entwickeln benutzerdefinierte Tools, Erkennungs- & Exploitationsmodule, um ihnen etwas Zeit zu geben, tiefer zu graben, Shells zu öffnen und Spaß zu haben.