Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
espoofer — Инструмент для тестирования подделки email, который направлен на обход SPF/DKIM/DMARC и подделку подписей DKIM.🍻 | Kitploit
Инструменты/GitHubGitHub/chenjj/espoofer
Инструменты фишингаАнализ уязвимостейТестирование на ПроникновениеСтатьи и ИсследованияОбучение и ОбразованиеБезопасность Электронной Почты
GitHubchenjj/espoofer

espoofer

Инструмент для тестирования подделки email, который направлен на обход SPF/DKIM/DMARC и подделку подписей DKIM.🍻

Репозиторий
1.7k2814 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
Сайт

espoofer

espoofer — это инструмент с открытым исходным кодом для тестирования на проникновение, предназначенный для обхода аутентификации SPF, DKIM и DMARC в почтовых системах. Он помогает администраторам почтовых серверов и специалистам по тестированию на проникновение проверить, уязвим ли целевой почтовый сервер и клиент для атак с подделкой электронной почты или может ли он быть использован для отправки поддельных писем.


Рисунок 1. Пример нашей атаки с подделкой на Gmail (Исправлено, Видео демонстрации)

Зачем создавать этот инструмент?

Подделка электронной почты представляет собой серьёзную угрозу как для частных лиц, так и для организаций (утечка Yahoo, John Podesta). Для решения этой проблемы современные почтовые сервисы и веб-сайты используют протоколы аутентификации — SPF, DKIM и DMARC — для предотвращения подделки писем.

Наши последние исследования показывают, что реализация этих протоколов страдает рядом проблем безопасности, которые можно использовать для обхода защиты SPF/DKIM/DMARC. На рисунке 1 показана одна из наших атак с подделкой, которая обходит DKIM и DMARC в Gmail. За дополнительными техническими подробностями обращайтесь к нашему докладу на Black Hat USA 2020 (с видео презентации) или статье на USENIX Security 2020.

  • Слайды Black Hat USA 2020 (PDF): You have No Idea Who Sent that Email: 18 Attacks on Email Sender Authentication
  • Статья USENIX Security 2020 (PDF): Composition Kills: A Case Study of Email Sender Authentication
    • Награда за лучшую статью

В этом репозитории мы собрали все тестовые случаи, которые нашли, и объединили их в этот инструмент, чтобы помочь администраторам и специалистам по безопасности быстро выявлять и локализовать такие проблемы безопасности.

Пожалуйста, используйте следующую цитату, если вы проводите научные исследования (нажмите меня).

Версия LaTeX:

root@kitploit:~
@inproceedings{chen-email,
author = {Jianjun Chen and Vern Paxson and Jian Jiang},
title = {Composition Kills: A Case Study of Email Sender Authentication},
booktitle = {29th {USENIX} Security Symposium ({USENIX} Security 20)},
year = {2020},
isbn = {978-1-939133-17-5},
pages = {2183--2199},
url = {https://www.usenix.org/conference/usenixsecurity20/presentation/chen-jianjun},
publisher = {{USENIX} Association},
month = aug,
}

Версия Word:

Jianjun Chen, Vern Paxson, and Jian Jiang. "Composition kills: A case study of email sender authentication." In 29th USENIX Security Symposium (USENIX Security 20), pp. 2183-2199. 2020.

Установка

  • Загрузите этот инструмент
root@kitploit:~
git clone https://github.com/chenjj/espoofer
  • Установите зависимости
root@kitploit:~
sudo pip3 install -r requirements.txt

Версия Python: Python 3 (>=3.7).

Использование

espoofer имеет три режима работы: сервер ('s', режим по умолчанию), клиент ('c') и ручной ('m'). В режиме сервера espoofer работает как почтовый сервер для проверки валидации в принимающих сервисах. В режиме клиента espoofer работает как почтовый клиент для проверки валидации в отправляющих сервисах. Ручной режим используется для отладки.


Рисунок 2. Три типа атакующих и их режимы работы

Режим сервера

Для запуска espoofer в режиме сервера вам понадобятся: 1) IP-адрес (1.2.3.4), исходящий порт 25 которого не блокируется вашим интернет-провайдером, и 2) домен (attack.com).

  1. Настройка домена
  • Установите публичный ключ DKIM для attack.com
root@kitploit:~
selector._domainkey.attacker.com TXT  "v=DKIM1; k=rsa; t=y; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDNjwdrmp/gcbKLaGQfRZk+LJ6XOWuQXkAOa/lI1En4t4sLuWiKiL6hACqMrsKQ8XfgqN76mmx4CHWn2VqVewFh7QTvshGLywWwrAJZdQ4KTlfR/2EwAlrItndijOfr2tpZRgP0nTY6saktkhQdwrk3U0SZmG7U8L9IPj7ZwPKGvQIDAQAB"
  • Установите SPF-запись для attack.com
root@kitploit:~
attack.com TXT "v=spf1 ip4:1.2.3.4 +all"
  1. Настройте инструмент в config.py
root@kitploit:~
config ={
	"attacker_site": b"attack.com", # attack.com
	"legitimate_site_address": b"[email protected]", # legitimate.com
	"victim_address": b"[email protected]", # [email protected]
	"case_id": b"server_a1", # server_a1
}

Вы можете просмотреть список case_id всех тестовых случаев с помощью опции -l:

root@kitploit:~
python3 espoofer.py -l
  1. Запустите инструмент для отправки поддельного письма
root@kitploit:~
python3 espoofer.py

Вы можете изменить case_id в config.py или использовать опцию -id в командной строке для тестирования разных случаев:

root@kitploit:~
python3 espoofer.py -id server_a1

Режим клиента

Для запуска espoofer в режиме клиента вам нужна учётная запись на целевом почтовом сервисе. Эта атака использует тот факт, что некоторые почтовые сервисы не выполняют достаточную проверку писем, полученных от локальных MUA. Например, [email protected] пытается выдать себя за [email protected].

  1. Настройте инструмент в config.py
root@kitploit:~
config ={
	"legitimate_site_address": b"[email protected]",  
	"victim_address": b"[email protected]", 
	"case_id": b"client_a1",

	"client_mode": {
		"sending_server": ("smtp.gmail.com", 587),  # SMTP сервер отправки и порт
		"username": b"[email protected]", # Имя пользователя и пароль вашей учётной записи
		"password": b"your_passward_here",
	},
}

Вы можете просмотреть список case_id всех тестовых случаев с помощью опции -l:

root@kitploit:~
python3 espoofer.py -l

Примечание: sending_server должен быть адресом SMTP-сервера отправки, а не сервера приёма.

  1. Запустите инструмент для отправки поддельного письма
root@kitploit:~
python3 espoofer.py -m c

Вы можете изменить case_id в config.py и запустить снова, или использовать опцию -id в командной строке:

root@kitploit:~
python3 espoofer.py -m c -id client_a1

Ручной режим

Пример ручного режима:

root@kitploit:~
python3 espoofer.py -m m -helo attack.com -mfrom <[email protected]> -rcptto <[email protected]> -data raw_msg_here -ip 127.0.0.1 -port 25

Скриншоты

  1. Краткий обзор тестовых случаев.

Ошибки, найденные с помощью этого инструмента

  • Демонстрационное видео обхода DMARC в Gmail.com, https://youtu.be/xuKZpT0rsd0
  • Видео обхода DMARC в Outlook.com, https://youtu.be/IsWgAEbPaK0
  • Видео обхода DMARC в Yahoo.com, https://youtu.be/DRepfStOruE
  • Видео обхода DMARC в Protonmail.com, https://youtu.be/bh4_SoPniMA
  • CVE-2020-12272, отчёт об ошибке обхода OpenDMARC, https://sourceforge.net/p/opendmarc/tickets/237/
  • CVE-2019-20790, отчёт об ошибке обхода OpenDMARC и pypolicyd-spf, https://sourceforge.net/p/opendmarc/tickets/235/
  • Отчёт об ошибке обхода DMARC в Mail.ru на HackerOne, https://hackerone.com/reports/731878

Присылайте pull request, чтобы добавить свой отчёт об ошибке сюда.

Вопросы и ответы

  1. Как узнать, что письмо успешно обошло аутентификацию DMARC?

Вы можете проверить это в заголовке Authentication-results в сырых заголовках письма. Если заголовок показывает dmarc=pass, это означает, что письмо прошло аутентификацию DMARC. Вы можете посмотреть некоторые демонстрационные видео здесь.

  1. Почему письма не отправляются?

Существует несколько возможных причин, если вам не удаётся отправить письмо: 1) ваш интернет-провайдер блокирует исходящие письма на порт 25 для предотвращения спама. В этом случае необходимо запросить разрешение у провайдера; 2) IP-адрес находится в спам-списке целевого почтового сервиса. Во многих случаях проблему можно решить здесь: https://www.spamhaus.org/lookup/ ; 3) некоторые почтовые сервисы проверяют наличие PTR-записи для отправляющего IP; возможно, вам также потребуется установить PTR-запись, чтобы пройти эту проверку; 4) письмо не проходит проверку формата целевым почтовым сервисом; попробуйте использовать другой тестовый случай.

  1. Почему письмо попадает в папку со спамом? Есть ли способ этого избежать?

На данный момент espoofer сосредоточен на обходе аутентификации SPF/DKIM/DMARC и не нацелен на обход спам-фильтров. Однако вы можете попробовать использовать респектабельный отправляющий IP-адрес, домен и безобидное содержимое письма, чтобы обойти спам-фильтр.

  1. Почему я успешно отправил письмо, но оно не появилось ни во входящих, ни в папке со спамом?

В нашем предыдущем опыте некоторые почтовые сервисы незаметно фильтруют подозрительные письма.

  1. При тестировании server_a5/a6, почему я не могу установить специальные символы, например "(" в домене?

Вам потребуется настроить собственный авторитетный DNS-сервер, а не использовать сторонние службы хостинга DNS, так как некоторые службы хостинга DNS имеют ограничения на установку специальных символов. См. issue.

Благодарности

Приветствуется добавление дополнительных тестовых случаев.

Скачать инструмент