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