
Массовый проверятель подмены доменов с использованием авторитетного анализа записей SPF и DMARC, настраиваемой, проверенной в реальных условиях логикой подмены и опциональным перечислением DKIM.
Spoofy — это программа, которая проверяет, можно ли подделать список доменов на основе записей SPF и DMARC. Возможно, вы спросите: «Зачем нам ещё один инструмент для проверки возможности подделки домена?»
Что ж, Spoofy отличается, и вот почему:
- Собственная, протестированная вручную логика подделки (без догадок и предположений, результаты реальных тестов)
- Обнаружение записей на основе стандартов: оценка SPF по RFC 7208 и обход дерева DMARC по RFC 9989, включая
sp/npдля поддоменов- Точные массовые запросы через общий кэширующий резолвер с отказоустойчивостью (1.1.1.1, 8.8.8.8, 9.9.9.9)
- Счётчик DNS-запросов и void-запросов SPF, а также обнаружение незарегистрированных доменов в SPF include
- Опциональное перечисление селекторов DKIM через API
Spoofy требует Python 3.9+. Установите его из PyPI:
pip3 install spoofy
spoofy -d example.com
Или запустите его из клона с помощью pip3 install -r requirements.txt и ./spoofy.py вместо spoofy. Использование показано ниже:
Usage:
spoofy -d [DOMAIN] -o [stdout, xls or json] -t [NUMBER_OF_THREADS] [--dkim] [--dns-server IP]
OR
spoofy -iL [DOMAIN_LIST] -o [stdout, xls or json] -t [NUMBER_OF_THREADS] [--dkim] [--dns-server IP]
Options:
-d : Process a single domain.
-iL : Provide a file containing a list of domains to process (blank lines and # comments are skipped).
-o : Specify the output format: stdout (default), xls, or json.
-t : Set the number of threads to use (default: 4).
--dkim : Enable DKIM selector enumeration via API (optional).
--dns-server : Query this resolver instead of 1.1.1.1, 8.8.8.8 and 9.9.9.9.
Examples:
spoofy -d example.com -t 10
spoofy -d example.com --dkim
spoofy -iL domains.txt -o xls
spoofy -iL domains.txt -o json --dkim
(Таблица возможности подделки перечисляет все комбинации конфигураций SPF и DMARC, влияющие на доставку во входящие, за исключением модификаторов DKIM.) Скачать здесь
| Код | Результат | SPOOFING_POSSIBLE |
|---|---|---|
| 0 | Подделка возможна | true |
| 1 | Подделка поддомена возможна | true |
| 2 | Подделка организационного домена возможна | true |
| 3 | Подделка может быть возможна (p=quarantine с pct < 100) | null |
| 4 | Подделка может быть возможна (зависит от почтового ящика) | null |
| 5 | Подделка организационного домена может быть возможна (зависит от почтового ящика) | null |
| 6 | Подделка поддомена может быть возможна (зависит от почтового ящика) | null |
| 7 | Подделка поддомена возможна, подделка организационного домена может быть возможна | true |
| 8 | Подделка невозможна | false |
| 9 | Невозможно определить (сбой DNS-запроса) | null |
Вердикт — это проверенный код для механизма all в SPF домена и тегов p, sp и aspf в DMARC в том виде, в котором они записаны в записи. spoofy/master_table.py содержит электронную таблицу в виде данных (python3 -m spoofy.master_table перезаписывает её после изменений в таблице), а test.py проверяет, что каждая строка воспроизводится. Входные данные, не охваченные таблицей, обрабатываются следующим образом:
p с aspf, но без sp (24 непроверенные комбинации): sp по умолчанию равен p, поэтому используется проверенная строка с явно указанным sp._dmarc): результат для поддомена, проверенный для записей SPF и DMARC родителя, с np вместо sp, если поддомен не существует.pct ниже 100 с p=quarantine: код 3, так как невыборочная почта получает p=none. При p=reject невыборочная почта всё равно помещается в карантин, поэтому pct не меняет вердикт.t=y (режим тестирования RFC 9989): политика понижается на один уровень (reject до quarantine, quarantine до none) перед запросом.Создание таблицы возможности подделки включало перечисление всех соответствующих конфигураций SPF и DMARC, их комбинирование, а затем сбор информации SPF и DMARC с использованием ранней версии Spoofy на большом количестве доменов правительства США. Проверка того, можно ли подделать комбинацию SPF и DMARC, проводилась с использованием набора для пентеста безопасности электронной почты на emailspooftest с использованием Microsoft 365. Однако первоначальное тестирование проводилось с использованием Protonmail и Gmail, но было обнаружено, что эти сервисы используют проверки обратного поиска, которые влияли на результаты, особенно при тестировании подделки поддоменов. В результате для тестирования использовался Microsoft 365, так как он обеспечивал больший контроль над обработкой почты.
После первоначального тестирования с использованием Microsoft 365 некоторые комбинации были перепроверены с использованием Protonmail и Gmail из-за различий в обработке баннеров в письмах. Protonmail и Gmail могут помещать поддельную почту во входящие с баннером или в спам без баннера, что приводит к тому, что некоторые комбинации SPF и DMARC сообщаются как «Зависит от почтового ящика» при использовании Spoofy. В отличие от них, Microsoft 365 помещает оба случая в спам. Процесс тестирования и сбора данных занял несколько дней, после чего была составлена хорошая мастер-таблица, которая использовалась в качестве основы для логики возможности подделки Spoofy.
Этот инструмент предназначен только для тестирования и академических целей и может использоваться только там, где было дано строгое согласие. Не используйте его в незаконных целях! Ответственность за соблюдение всех применимых местных, государственных и федеральных законов лежит на конечном пользователе. Разработчики не несут никакой ответственности и не отвечают за любое неправомерное использование или ущерб, причинённый этим инструментом и программным обеспечением.
Этот проект лицензирован под Creative Commons Attribution-NonCommercial 4.0 International License — подробности см. в файле LICENSE.