понедельник, 30 марта 2026 г.

Subfinder: ставим внешний периметр на «сигнализацию»

Как выстроить непрерывный мониторинг внешних активов

В первой статье мы разобрали Assetfinder — утилиту, которая за минуту показывает, что атакующий изучает ваш периметр без реального подключения.

Но Assetfinder не улучшали с 2019 года — нет интеграции с Shodan, Censys, современными threat intelligence платформами. Хотя используемые утилитой источники (CT-логи, Wayback) обновляются и работают. И еще минус: утилита даёт срез на один момент времени. А требуется непрерывный мониторинг и реагирование.

Инфраструктура меняется каждый день. Появляются новые поддомены. Разработчики поднимают сервисы. DevOps автоматически выпускает сертификаты.

Одноразовая проверка — это не контроль периметра. Это фотография поля боя.

Subfinder решает другую задачу: не «посмотреть один раз», а наблюдать постоянно.

Что такое Subfinder

Инструмент от команды ProjectDiscovery — той же, что делает httpx, nuclei, naabu. Написан на Go, активно поддерживается: последние коммиты — 2025 год.

Та же задача, что у Assetfinder: пассивное перечисление поддоменов. Но другой масштаб:

  • 40+ источников данных против ~10 у Assetfinder
  • Конфигурируемые API-ключи для каждого источника
  • Фильтрация wildcard-записей через резолвинг (в связке с dnsx)
  • Рекурсивный поиск поддоменов поддоменов
  • Rate limiting на уровне каждого провайдера
  • JSON-вывод для интеграции в любой пайплайн

Работает сразу после установки — без ключей. Но настоящая мощь начинается с API.

Установка

go install -v github.com/projectdiscovery/subfinder/v2/cmd/subfinder@latest

После установки можно посмотреть полный список источников и сразу понять, что требует ключа, а что работает без него:

subfinder -ls

В выводе источники с пометкой * требуют API-ключ — без него они молчат. Это сразу объясняет разницу между двумя режимами работы.

Два режима: поверхностный и глубокий

Быстрый запуск — без ключей:

subfinder -d example.ru

Работает сразу после установки. Использует только открытые источники без *: crt.sh, AlienVault OTX, Common Crawl, HackerTarget, Wayback Machine и другие. Это лучше Assetfinder.

Полный режим — со всеми источниками, включая платные:

subfinder -d example.com -all

Подключает источники с * — Shodan, Censys, SecurityTrails и другие. Медленнее, но охват максимальный. Использовать для плановых проверок, не для быстрого скрининга.

Источники данных: что даёт каждый

Subfinder делит источники на категории. Понимание категорий важнее знания списка — это объясняет, почему одни источники находят то, что пропускают другие.

Certificate Transparency: crt.sh, CertSpotter — всё то же, что Assetfinder, но с актуальными запросами и обработкой ошибок.

Интернет-сканеры: Shodan, Censys, BinaryEdge, Fofa — сервисы, которые сами сканируют весь публично доступный интернет и хранят историю. Находят поддомены, которые пропущены CT-логами: хосты с самоподписанными сертификатами, старые IP-адреса с баннерами, сервисы на нестандартных портах с публичной доступностью. Важно: они видят только то, что отвечает из интернета — сервисы за VPN или IP-вайтлистами остаются невидимыми.

Threat intelligence: VirusTotal, SecurityTrails, ThreatBook — базы, которые собирают данные из анализа вредоносного ПО, фишинговых кампаний, DNS-трафика. Находят поддомены, которые атакующие уже используют или использовали.

GitHub и публичный код: GitHub — поиск упоминаний поддоменов в репозиториях, конфигах, комментариях к коду. Разработчики регулярно «светят» внутренние адреса в публичных репо.

DNS-агрегаторы: WhoisXML API, Chaos, RapidDNS — исторические данные DNS-разрешений.

Настройка API-ключей

При первом запуске subfinder создаёт файл конфигурации:

~/.config/subfinder/provider-config.yaml

Структура файла:

binaryedge:
  - YOUR_API_KEY
censys:
  - API_ID:API_SECRET
shodan:
  - YOUR_API_KEY
securitytrails:
  - YOUR_API_KEY
github:
  - ghp_YOUR_TOKEN
virustotal:
  - YOUR_API_KEY

Большинство сервисов дают бесплатный tier с ограничениями по запросам. Для регулярного мониторинга одного-двух доменов бесплатных лимитов хватает.

Что подключить в первую очередь — по соотношению «усилие / результат»:

  • GitHub Token — бесплатно, регистрация уже есть у всех, резко расширяет покрытие
  • VirusTotal — бесплатный план, 500 запросов в день
  • Censys — бесплатный план для исследователей
  • SecurityTrails — 50 бесплатных запросов в месяц

Ключевые флаги

# Только поддомены (без связанных доменов)
subfinder -d example.com -silent

# Указать конкретные источники
subfinder -d example.com -sources crtsh,github,shodan

# Исключить ненужные источники
subfinder -d example.com -exclude-sources alienvault

# Рекурсивный поиск (поддомены поддоменов)
subfinder -d example.com -recursive

# Сохранить в файл
subfinder -d example.com -o subdomains.txt

# JSON-вывод для автоматизации
subfinder -d example.com -oJ -o subdomains.jsonl

# Список доменов из файла
subfinder -dL domains.txt -o all_subs.txt

# Ограничение rate limit для конкретного источника
subfinder -d example.com -rls "shodan=5/s,censys=2/s"

От одноразовой проверки к непрерывному мониторингу

Вот где Subfinder принципиально отличается от Assetfinder.

Логика мониторинга: нашёл новые поддомены — проверил живые — отправил алерт:

# Концептуальная схема пайплайна (упрощено)
subfinder -dL domains.txt -all -silent \
  | anew known_subs.txt \
  | httpx -mc 200,201,301,302 -silent \
  | notify

Для production используйте cron вместо бесконечного цикла — процесс не умрёт при перезапуске шелла:

# Запуск каждый час через cron (-max-time защищает от зависания при проблемах с источником)
0 * * * * /path/to/subfinder -dL /opt/monitor/domains.txt -all -silent -max-time 10 | anew /opt/monitor/known_subs.txt | httpx -mc 200,201,301,302 -silent | notify

Флаг -max-time 10 — максимальное время работы в минутах. Без него процесс может зависнуть, если один из источников не отвечает, и cron накопит очередь зависших задач.

Важно про флаг -all: он запускает все источники параллельно и может исчерпать бесплатные лимиты API за несколько минут. SecurityTrails, например, даёт всего 50 запросов в месяц — при ежечасном мониторинге с -all лимит сгорит за сутки. Для регулярного мониторинга ограничьте скорость или выбирайте источники явно:

# Безопасный режим для мониторинга с ключами
subfinder -dL domains.txt -all -silent -rl 15 -rls "shodan=2/s,censys=1/s,securitytrails=1/s"

Флаги: -rl — глобальный максимум запросов в секунду, -rls — лимит по конкретному источнику в секунду.

Для ежедневного мониторинга разумнее не -all, а выбранные источники с высокими лимитами:

# Экономный режим для ежедневного мониторинга
subfinder -dL domains.txt -sources crtsh,github,certspotter,hackertarget -silent

Что делает каждый инструмент:

  • subfinder — собирает поддомены из всех источников
  • anew — фильтрует только новые находки, которых не было в прошлый раз
  • httpx — проверяет, что новые поддомены реально отвечают
  • notify — отправляет в Slack, Telegram, Discord или на email

Результат: вы узнаёте о новом внешнем сервисе в течение часа после его появления. Раньше, чем про него напишут в баг-репорте.

Пайплайн для разового аудита

Если нужна полная картина прямо сейчас:

# Шаг 1: собрать все поддомены (assetfinder + subfinder вместе дают больше)
assetfinder --subs-only example.com > subs_raw.txt
subfinder -d example.com -all -silent >> subs_raw.txt
sort -u subs_raw.txt > subs_unique.txt

# Шаг 2: резолвинг и фильтрация wildcard
cat subs_unique.txt | dnsx -resp -silent -o subs_resolved.txt

# Шаг 3: проверить живые веб-серверы
cat subs_resolved.txt | httpx -mc 200,201,301,302,403 -silent -o live_subs.txt

# Шаг 4 (опционально): скрининг на уязвимости
nuclei -l live_subs.txt -severity medium,high,critical

Использовать оба инструмента вместе — не дублирование. Источники частично не пересекаются. Комбинация даёт более полное покрытие.

Wildcard-домены: частая ловушка

Некоторые компании используют wildcard DNS: *.example.com резолвится в один IP. Без фильтрации subfinder выдаст тысячи «поддоменов», которых нет — просто потому что источники возвращают любые строки из своих баз.

Начиная с конца 2025 года Subfinder имеет встроенные модули резолвинга и обнаружения wildcard — он умеет отбрасывать мусорные записи самостоятельно. Тем не менее, передача вывода в dnsx остаётся стандартом де-факто: dnsx даёт жёсткую валидацию с контролем резолверов, таймаутами и подробным выводом.

# Резолвинг с фильтрацией wildcard — надёжный вариант
subfinder -d example.com -silent | dnsx -resp -silent

Без резолвинга список — сырой материал. После него — поверхность атаки.

Важно про ограничения

Subfinder — пассивный инструмент. Он не находит поддомены, которых нет ни в одном публичном источнике: полностью внутренние сервисы за VPN, хосты без сертификатов и без публичных DNS-запросов.

Для полного покрытия поверхности атаки пассивного OSINT недостаточно. Рядом должен стоять OWASP Amass в активном режиме — брутфорс словарём, перебор зон. Это отдельная тема.


Ещё один момент: больше источников — больше шума. Без фильтрации wildcard и резолвинга список будет содержать несуществующие хосты. Валидация через httpx или dnsx обязательна.

Характеристика Assetfinder Subfinder OWASP Amass
Поддержка Нет новых источников (с 2019) Активная (2025) Активная (OWASP)
Источников ~10 40+ 50+
Настройка Никакой YAML-конфиг Сложная
Wildcard-фильтрация Нет Встроена (с 2025) + dnsx Через резолвинг
Непрерывный мониторинг Нет Да (через пайплайн) Да
Когда использовать Быстрый первый взгляд Регулярный мониторинг Глубокий аудит

Итог

Assetfinder показывает проблему. Subfinder позволяет её контролировать.

Разница не в количестве источников. Разница в том, что Subfinder можно встроить в процесс — и получать сигнал каждый раз, когда в вашем внешнем периметре появляется что-то новое.

Новый поддомен — это окно в вашу инфраструктуру, которое кто-то открыл. Вопрос в том, узнаете ли вы об этом первым.

Следующая статья серии: OWASP Amass — когда пассивного OSINT недостаточно и нужен активный брутфорс зон.