
Параллельный сканер перехвата DNS, обнаруживающий уязвимости записей CNAME, NS, AXFR, SPF, MX, SRV и устаревших A-записей у облачных провайдеров, с многоуровневым цепочечным анализом.
Сканер перехвата DNS
Subjack — это сканер перехвата DNS, написанный на Go и предназначенный для параллельного сканирования списка доменов и выявления тех, которые можно перехватить. Благодаря скорости и эффективности Go этот инструмент особенно эффективен при массовом тестировании. Всегда вручную перепроверяйте результаты, чтобы исключить ложные срабатывания.
Subjack обнаруживает:
include:, позволяющие подделку emailТребуется Go
go install github.com/haccer/subjack@latest
subjack -w subdomains.txt -t 100 -timeout 30 -o results.txt -ssl
Subjack может читать домены из stdin, что позволяет легко передавать вывод из других инструментов:
subfinder -d example.com | subjack -ssl -o results.json
cat domains.txt | subjack -t 20 -o results.txt
С флагом -ns subjack выполняет два типа проверок перехвата серверов имён:
Просроченные NS-домены: Проверяет, не истёк ли срок регистрации какого-либо из серверов имён домена и доступен ли он для покупки. Злоумышленник, зарегистрировавший просроченный сервер имён, может получить полный контроль над всеми DNS-записями домена — может указывать любые записи куда угодно, перехватывать почту, выпускать сертификаты и многое другое.
«Висящие» NS-делегирования: Обнаруживает, когда NS-записи домена указывают на облачных DNS-провайдеров, но размещённая зона была удалена. Subjack запрашивает у каждого сервера имён SOA-запись — если все возвращают SERVFAIL или REFUSED, зона исчезла и потенциально может быть перехвачена. Поддерживаемые провайдеры:
ns-*.awsdns-*)ns-cloud-*.googledomains.com)ns*-*.azure-dns.*)ns*.digitalocean.com)ns*.vultr.com)ns*.linode.com)subjack -w subdomains.txt -ns -o results.json
С флагом -ar subjack разрешает A-записи и проверяет, жив ли IP-адрес. Когда компания закрывает облачный сервер, но забывает удалить DNS A-запись, IP возвращается в пул провайдера. Злоумышленник может создавать новые экземпляры у этого провайдера, пока не получит тот же IP, и получить контроль над поддоменом.
Subjack определяет облачного провайдера (AWS, GCP, Azure, DigitalOcean, Linode, Vultr, Oracle), когда это возможно, что упрощает выбор правильной платформы. Обнаружение использует ICMP-пинг (требуется root) с запасным вариантом TCP на портах 80/443.
sudo subjack -w subdomains.txt -ar -o results.json
Результаты помечаются как STALE A RECORD и должны быть проверены вручную — неотвечающий IP не всегда означает, что его можно вернуть.
С флагом -axfr subjack пытается выполнить передачу DNS-зоны (AXFR), что может раскрыть все DNS-записи домена. Subjack не ограничивается тестированием официальных серверов имён домена — он также перебирает распространённые имена NS-хостов (ns1, dns-0, ns-backup и т.д.), поскольку скрытые или забытые серверы имён часто остаются незащищёнными даже после того, как основные были заблокированы.
subjack -d example.com -axfr -o results.json
subjack -w domains.txt -axfr -o results.json
Результаты помечаются как ZONE TRANSFER с указанием уязвимого сервера имён и количества раскрытых записей.
С флагом -mail subjack проверяет два вектора перехвата, связанных с электронной почтой:
Перехват SPF include: Анализирует SPF TXT-записи и проверяет, не просрочены ли домены, указанные в директивах include:, и доступны ли они для регистрации. Злоумышленник, зарегистрировавший включённый домен, может отправлять полностью аутентифицированные письма от имени цели, обходя SPF и DMARC.
Перехват MX-записей: Проверяет, не просрочены ли цели MX-записей и доступны ли они для регистрации. Злоумышленник, контролирующий почтовый сервер, может перехватывать всю входящую почту — сбросы паролей, коды 2FA и многое другое.
subjack -w domains.txt -mail -o results.json
Эти проверки выполняются автоматически при каждом сканировании:
Перехват цепочек CNAME: Прослеживает многоуровневые цепочки CNAME (до 10 уровней) и проверяет, можно ли захватить какой-либо промежуточный целевой домен. Стандартное обнаружение CNAME проверяет только первый шаг — цепочки позволяют найти более глубокие возможности перехвата.
Перехват SRV-записей: Проверяет распространённые SRV-записи (SIP, XMPP, LDAP, Kerberos, IMAP, CalDAV и т.д.) на предмет просроченных и доступных для регистрации целевых доменов.
Вы можете использовать scanio.sh — своего рода PoC-скрипт для массового поиска уязвимых поддомов с использованием результатов Rapid7 Project Sonar. Этот скрипт парсит дамп, находит нужные CNAME-записи и создаёт большой список поддомов для проверки с помощью subjack на возможность враждебного перехвата. Пожалуйста, используйте это ответственно.
Ваш файл wordlist должен содержать список поддомов, по одному на строку:
assets.xen.world
assets.github.com
b.xen.world
big.example.com
cdn.xen.world
dev.xen.world
dev2.twitter.com
Дополнительная информация о DNS-перехвате:
| Флаг | Описание | По умолчанию |
|---|
-d | Один домен для проверки | |
-w | Путь к списку поддоменов (wordlist) | |
-t | Количество параллельных потоков | 10 |
-timeout | Секунд ожидания до тайм-аута соединения | 10 |
-o | Вывод результатов в файл (используйте расширение .json для JSON-вывода) | |
-ssl | Принудительное использование HTTPS (может повысить точность) | false |
-a | Отправлять запросы на каждый URL, а не только на те, где найдены CNAME (рекомендуется) | false |
-m | Помечать мёртвые CNAME-записи, даже если домен недоступен для регистрации | false |
-r | Путь к списку DNS-резолверов (по одному IP на строку, при ошибке используется 8.8.8.8) | |
-ns | Проверять перехват NS (просроченные NS-домены + «висящие» облачные делегирования DNS) | false |
-ar | Проверять устаревшие A-записи, указывающие на мёртвые IP (может потребоваться root для ICMP) | false |
-axfr | Проверять передачу зоны (AXFR), включая перебор NS | false |
-mail | Проверять перехват SPF include и MX-записей | false |
-v | Показывать больше информации по каждому запросу | false |