На проекте по инвентаризации активов для логистической компании Nmap обнаружил 340 хостов с открытыми портами - ровно столько, сколько ожидала IT-служба. Всё чисто, все довольны. А потом пассивная разведка через Certificate Transparency и Shodan добавила ещё 87 хостов, о которых не знал ни один отдел. Среди них - забытый staging с устаревшей Log4j, два поддомена с дефолтным WordPress и API-эндпоинт без аутентификации. Эти точки не ответили бы на прямой Nmap-скан: они прятались за CDN или не резолвились в известные IP-диапазоны. Активное и пассивное сканирование видят разные фрагменты attack surface. Разделять их - гарантированно пропустить часть периметра.
Почему одного Nmap не хватает для анализа внешнего периметра компании
В матрице MITRE ATT&CK разведка делится на два класса. Первый - техники прямого сканирования: Active Scanning (T1595, Reconnaissance) с подтехниками Scanning IP Blocks (T1595.001) и Vulnerability Scanning (T1595.002). Второй - сбор информации без контакта с целью: Gather Victim Network Information (T1590, Reconnaissance) с подтехниками DNS (T1590.002) и IP Addresses (T1590.005), а также Search Open Technical Databases (T1596, Reconnaissance). Подробнее - в нашем руководстве по asset management пентест.Атакующие используют обе группы последовательно. Сначала пассивная разведка строит карту без единого пакета к инфраструктуре. Затем активное сканирование уточняет: какие сервисы живы, какие версии ПО крутятся, какие порты слушают. Если blue team ограничивается Nmap-сканом известных IP-диапазонов - команда работает в парадигме «проверяю то, что знаю». Shadow IT, забытые поддомены, сервисы за CDN - всё это выпадает из зоны видимости.
По данным RiskIQ (2024), средняя организация экспонирует более 500 уникальных активов через публичные пассивные источники - и большинство из них не числятся в инвентаре IT-отдела. Сканирование внешнего периметра компании без OSINT-компонента - это аудит половины площади.
Бизнес-логика атаки тут простая: злоумышленник ищет самое слабое звено. Ему не нужен основной веб-сервер с WAF и IDS - ему нужен тот staging-сервер с Jenkins, который DevOps забыл выключить полгода назад. Пассивная разведка находит именно такие цели.
Nmap сканирование сети: активное сканирование портов на периметре
Nmap остаётся стандартом для активного сканирования портов. При работе с внешним периметром его задача - определить открытые порты, идентифицировать версии сервисов и собрать баннеры. Каждый отправленный SYN-пакет - прямая реализация техники Active Scanning (T1595): он фиксируется в логах IDS/IPS и firewall целевой инфраструктуры.На практике сканирование крупного периметра (сотни и тысячи IP-адресов) требует двухфазного подхода. Первая фаза - быстрый SYN-скан всех портов для построения карты живых хостов. Вторая - точечное определение версий и запуск NSE-скриптов по найденным сервисам.
Bash:
# Фаза 1: быстрый SYN-скан 65535 портов
nmap -sS -p- --min-rate 5000 -Pn -oG phase1.gnmap 198.51.100.0/24
# Фаза 2: детализация по найденным портам
nmap -sV -sC -Pn -p 22,80,443,8080,8443 -oA phase2 198.51.100.0/24
nmap -A на всё подряд:-sS- SYN-скан (полуоткрытый), быстрее полного TCP-connect и создаёт меньше логов на стороне цели--min-rate 5000- минимальная скорость отправки пакетов; значения выше 10000 при интернет-сканировании приводят к потерям пакетов и ложным негативам-Pn- не проверять доступность хоста пингом; админы часто блокируют ICMP, и без этого флага Nmap пропустит живые хосты-sV -sC- определение версий сервисов и запуск дефолтных NSE-скриптов (safe category); скриптssl-certпокажет CN и SAN из TLS-сертификата,http-title- заголовок веб-страницы-oGи-oA- вывод в grepable и все форматы для последующей автоматизации
Что Nmap не покажет: поддомены, не резолвящиеся в известные IP-диапазоны; активы за CDN (Cloudflare, Akamai), где реальный IP скрыт; исторические DNS-записи; утечки учётных данных и API-ключей в публичных репозиториях. Всё это - зона ответственности пассивной разведки.
Отдельно про NSE-скрипт
smb-vuln-ms17-010: он проверяет наличие CVE-2017-0144 (EternalBlue, CVSS 8.8 High) за секунды. Уязвимость из каталога CISA KEV с пометкой RANSOMWARE - и она до сих пор обнаруживается на периметрах организаций, не отключивших SMBv1. Если Nmap её нашёл - это приоритет немедленного реагирования, без вариантов.OSINT-фреймворк для разведки: пассивная разведка домена
Пассивная разведка - сбор данных о цели без отправки трафика в её инфраструктуру. Источники: DNS-резолверы, реестры сертификатов, Shodan, Censys, архивы Wayback Machine, публичные репозитории кода. По MITRE ATT&CK это техники Gather Victim Network Information (T1590, Reconnaissance) и Search Open Technical Databases (T1596, Reconnaissance).Для blue team тут принципиальный момент: пассивная разведка позволяет увидеть периметр глазами атакующего без создания записей в журналах собственных средств защиты. Firewalls, IDS/IPS, WAF - ни один из них не обнаружит пассивную разведку, потому что наблюдатель обращается к сторонним реестрам и базам данных, а не к инфраструктуре организации напрямую. CyCognito в своих отчётах акцентируют именно этот разрыв.
DNS intelligence разведка и Certificate Transparency
DNS-энумерация без трансфера зоны - первый шаг footprinting и reconnaissance. subfinder и amass собирают поддомены из десятков источников одновременно: API публичных DNS-резолверов, VirusTotal, SecurityTrails, Censys. Командаsubfinder -d example.com -all -o subs.txt за 2-3 минуты выдаёт список поддоменов, который Nmap никогда бы не обнаружил - потому что Nmap-у нужен IP, а subfinder работает на уровне доменных имён.DNS-разведка раскрывает не только поддомены:
- MX-записи - какие почтовые серверы используются, внешний это хостинг или собственный
- TXT-записи - SPF/DKIM/DMARC конфигурация, показывающая какие IP и сервисы авторизованы для отправки писем от имени домена
- NS-записи - кто управляет DNS, и есть ли признаки shadow DNS (записи у стороннего провайдера, не согласованные с IT)
dev.internal.example.com или staging-api.example.com), запись появляется в CT-логе до того, как поддомен начнёт отвечать. Запрос к crt.sh возвращает полную историю сертификатов домена - включая поддомены dev-окружений, staging-серверов и внутренних систем, которые не должны быть публичными.На одном из аудитов CT-логи показали 14 поддоменов вида
jenkins-*.client.example.com - каждый с отдельным Let's Encrypt сертификатом. Ни один не числился в инвентаре. Три из четырнадцати оказались доступны из интернета с дефолтным паролем. Занавес.Shodan, Censys и картирование attack surface без единого пакета
Shodan и Censys - поисковые системы по интернет-инфраструктуре. Они постоянно сканируют весь IPv4-диапазон и индексируют баннеры сервисов, TLS-сертификаты, HTTP-заголовки и скриншоты веб-интерфейсов. Когда аналитик ищетssl.cert.subject.cn:"example.com" в Censys или hostname:example.com в Shodan - результат приходит из уже собранных данных. Ни одного пакета к инфраструктуре организации не уходит.Что дают эти инструменты для инвентаризации активов компании:
- IP-адреса, ассоциированные с организацией по сертификатам и баннерам, но не входящие в известные диапазоны
- Версии ПО из HTTP-заголовков (
Server: Apache/2.4.49) и TLS handshake - Открытые панели администрирования (Kibana, Grafana, phpMyAdmin), которые могут висеть на нестандартных портах
- IoT-устройства, IP-камеры и принтеры с интерфейсами в интернете
Дополнительные инструменты: theHarvester (email-адреса, поддомены из поисковиков), SpiderFoot (автоматизированный OSINT-фреймворк с 200+ модулями, но шумный - требует тюнинга), Google Dorks (поиск утечек через операторы
site:, filetype:, inurl:).SSL/TLS checker: проверка сертификатов как источник разведки
SSL/TLS checker - не только про проверку HTTPS-настройки. При анализе внешнего периметра компании проверка сертификатов решает три задачи.Первая - обнаружение активов. Поле Subject Alternative Name (SAN) в TLS-сертификате часто содержит десятки доменных имён - как внешних, так и внутренних. Один wildcard-сертификат может раскрыть всю структуру поддоменов, включая имена вида
jira.corp.example.com или vpn-backup.example.com.Вторая - оценка гигиены инфраструктуры. Просроченные сертификаты, самоподписанные сертификаты на продакшен-сервисах, SHA-1 вместо SHA-256 - индикаторы небрежного управления. Для атакующего это сигнал: если сертификаты не обновляют - патчи тоже вряд ли ставят вовремя.
Третья - отслеживание изменений. Появление нового сертификата для поддомена - ранний индикатор: кто-то разворачивает сервис. Если это легитимный процесс - отлично. Если typosquat или фишинговый домен - нужно реагировать. NSE-скрипт
ssl-cert в Nmap, sslyze и testssl.sh закрывают эту задачу и из активного, и из пассивного контура.Сравнение активного и пассивного сканирования
Главная ошибка - воспринимать два подхода как конкурирующие. Они дополняют друг друга.| Критерий | Активное сканирование (Nmap) | Пассивная разведка (OSINT) |
|---|---|---|
| Взаимодействие с целью | Прямое: SYN/ACK пакеты к хостам | Нет: данные из третьих сторон |
| Видимость для SOC | Да: записи в IDS, firewall, SIEM | Нет: невозможно обнаружить |
| Актуальность данных | Реальное время: порт открыт сейчас | Возможна задержка: кэш, архивы |
| Обнаружение shadow IT | Нет: только указанные IP | Да: CT-логи, DNS-архивы, Shodan |
| Поддомены за CDN | Не видит реальный IP | Видит через CT и исторический DNS |
| Версии ПО | Точные: banner grabbing | Приблизительные: кэшированные баннеры |
| Правовые риски | Требует авторизации | Минимальные: публичные источники |
| Нагрузка на инфраструктуру | Есть: высокий rate вызывает проблемы | Нет |
| Основные инструменты | Nmap, Masscan, Nuclei | subfinder, amass, Shodan, Censys, theHarvester |
| MITRE ATT&CK | T1595 (Active Scanning) | T1590, T1596 |
| Когда НЕ подходит | Активы за CDN, неизвестные IP | Нужна подтверждённая актуальность |
Данные пассивной разведки могут быть устаревшими - баннер в Shodan мог быть собран неделю назад. Пассивная разведка формирует гипотезы, активное сканирование их подтверждает. В этой связке - сила подхода.
Recon workflow пентест: от пассивной разведки до активного скана
📚 Часть контента скрыта. Этот материал доступен участникам сообщества с рангом One Level или выше
Получить доступ просто — достаточно зарегистрироваться и проявить активность на форуме
Получить доступ просто — достаточно зарегистрироваться и проявить активность на форуме
. Запуск
nuclei -t cves/2021/CVE-2021-44228.yaml -l alive_hosts.txt - стандартная практика после сканирования периметра. Обе упомянутые CVE (Log4Shell и EternalBlue) находятся в каталоге CISA KEV с пометкой RANSOMWARE.Шаг 7. Diff и алертинг. Сравниваем результаты с предыдущим прогоном. Новый открытый порт, новый поддомен, изменение версии ПО - потенциальный инцидент, который уходит в тикет-систему.
Весь пайплайн покрывает обе стороны MITRE ATT&CK: пассивные техники T1590.002 (DNS), T1590.005 (IP Addresses), T1596 (Search Open Technical Databases) и активные T1595.001 (Scanning IP Blocks), T1595.002 (Vulnerability Scanning).
Автоматизация пайплайна для непрерывного мониторинга
Разовый аудит показывает состояние на дату проверки. Через неделю DevOps поднимет сервис, маркетинг запустит лендинг у нового хостера, подрядчик откроет тестовый порт и забудет его закрыть. Единственный способ не пропустить изменения - автоматизация.Минимальный пайплайн на bash для ежедневного запуска по cron:
Bash:
#!/bin/bash
DOMAIN="example.com"
DATE=$(date +%Y%m%d)
DIR="/opt/recon"
subfinder -d $DOMAIN -all -silent > $DIR/$DATE-subs.txt
cat $DIR/$DATE-subs.txt | httpx -silent > $DIR/$DATE-alive.txt
nmap -sS -Pn --top-ports 1000 -iL $DIR/$DATE-alive.txt \
-oG $DIR/$DATE-nmap.gnmap 2>/dev/null
diff $DIR/baseline-nmap.gnmap $DIR/$DATE-nmap.gnmap \
> $DIR/$DATE-diff.txt
[ -s $DIR/$DATE-diff.txt ] && \
mail -s "Perimeter change: $DOMAIN" soc@company.com \
< $DIR/$DATE-diff.txt
sslyze и запись в базу данных для построения тренда.Стоимость - VPS за 1000-2000 рублей в месяц плюс время специалиста на настройку и разбор алертов. Коммерческое EASM-решение решает ту же задачу за 500 000 - 2 000 000 рублей в год. Для компании с 5-10 доменами и 2-3 специалистами в ИБ-отделе открытые инструменты закрывают 80% потребностей. SpiderFoot (self-hosted) дополняет картину, собирая 200+ источников threat intelligence в единый граф связей - бесплатно.
Инструменты для внешнего пентеста: выбор под задачу
Выбор инструмента зависит от этапа пайплайна:| Инструмент | Тип | Задача | Когда НЕ подходит |
|---|---|---|---|
| Nmap | Активный | Порты, версии, NSE-скрипты | Не видит поддомены, бесполезен за CDN |
| Masscan | Активный | Быстрый скан больших IP-диапазонов | Грубый fingerprinting, пропускает UDP |
| subfinder | Пассивный | Subdomain enumeration | Без API-ключей результат ограничен |
| amass | Пассивный/Активный | DNS enum, ASN mapping | Ресурсоёмкий, долгий в полном режиме |
| Shodan | Пассивный | Поиск сервисов, баннеров, IoT | Данные могут отставать на 1-7 дней |
| Censys | Пассивный | TLS-сертификаты, хосты | Бесплатный тариф: 250 запросов/месяц |
| theHarvester | Пассивный | Email, поддомены, VHost | Часть источников требует API-ключей |
| SpiderFoot | Пассивный | Автоматизированный OSINT (200+ модулей) | Шум в результатах, требует тюнинга |
| httpx | Активный* | Проверка живых HTTP/HTTPS хостов | Создаёт минимальные записи в логах |
| Nuclei | Активный | Проверка CVE по YAML-шаблонам | Создаёт записи в логах цели |
| testssl.sh | Активный | SSL/TLS аудит | Подключается к целевому серверу |
\*httpx отправляет HTTP-запрос к цели, но используется после пассивного этапа как фильтр.
Непрерывный анализ внешнего периметра компании vs разовый аудит
Между пентестом раз в год по требованию регулятора и непрерывным мониторингом - пропасть. FireMon формулирует точно: мониторинг внешнего attack surface - не одноразовый аудит, а постоянный динамический процесс, который адаптируется по мере изменения среды.Что меняется между ежегодными аудитами:
- Новые поддомены - DevOps создаёт среды для каждого спринта
- Облачные ресурсы - маркетинг арендует VPS для промо-кампании
- Забытые окружения - staging, который «временно» стал постоянным
- DNS-изменения - подрядчик поменял A-запись и создал open redirect
- Новые сертификаты - каждый Let's Encrypt фиксируется в CT-логах
Рекомендуемая частота прогонов зависит от динамики инфраструктуры:
- Subdomain enumeration - ежедневно (пассивная, нулевая нагрузка)
- Shodan/Censys обогащение - ежедневно (API-запросы)
- Nmap-скан известных хостов - еженедельно (активный, требует окна)
- Полный Nmap-скан новых IP - по алерту от пассивного контура
- SSL/TLS аудит - еженедельно
- Полный прогон всего пайплайна - ежемесячно с пересмотром baseline
Реальная защита начинается не с покупки инструмента, а с пайплайна: пассивная разведка генерирует гипотезы, активное сканирование подтверждает, diff-анализ ловит изменения, алерт уходит в SOC. Весь цикл работает автоматически, каждый день, без участия человека до момента разбора алерта. Средства для этого бесплатны и открыты.
Самый частый аргумент против: «нет людей на поддержку скриптов». Но людей нет и на разбор 200 алертов коммерческого сканера, если за ними никто не следит. Проблема не в инструментах - проблема в отсутствии процесса, который связывает обнаружение с реагированием. Без этой связки что бесплатный bash-скрипт, что решение за два миллиона - одинаково бесполезны. Если интересно как другие команды строят такой пайплайн - на codeby.net есть тред, где разбираем конфиги мониторинга периметра и интеграции с тикет-системами.