Как выстроить непрерывный мониторинг внешних активов
В первой статье мы разобрали 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 недостаточно и нужен активный брутфорс зон.