Карта внешней поверхности атаки

Отдельные находки — домены, IP, открытые порты, сертификаты — обретают смысл, только когда сведены в единую карту вашей внешней поверхности.

Внешняя поверхность атаки (external attack surface) — совокупность всех ваших активов, доступных из интернета: доменов, поддоменов, IP-адресов, открытых сервисов, сертификатов и связанных с ними точек входа.

Предыдущие уроки давали отдельные техники: DNS/WHOIS, Shodan/Censys, Certificate Transparency. По отдельности это разрозненные факты. Сила защитника — собрать их в одну картину и управлять ею непрерывно. Эта дисциплина называется Attack Surface Management (ASM): постоянно знать, что у вас выставлено наружу, и держать это под контролем.

Зачем это знать защитнику

Нельзя защитить то, о существовании чего не знаешь. Большинство громких инцидентов связаны не с неизвестной уязвимостью, а с забытым активом: поддомен, который никто не вёл; сервер, оставшийся после миграции; тестовая база на публичном IP. Атакующий мыслит как разведчик: собирает всю вашу поверхность и бьёт по самому слабому звену. ASM переворачивает это: вы строите ту же карту первыми и закрываете слабые места до того, как их найдут.

Шаг 1. Discovery — обнаружение активов

Сначала собираем активы из всех открытых источников и сводим воедино. Принцип — пассивно и широко:

ИсточникЧто даёт
WHOIS / RDAPдомены, диапазоны IP, организация-владелец, ASN
DNS (A/MX/NS/TXT/CNAME)хосты, почта, сторонние сервисы, поддомены
Certificate Transparencyподдомены из SAN, в т.ч. нигде не опубликованные
Shodan / Censysоткрытые порты, версии ПО, баннеры сервисов
Пассивный DNSистория IP и поддоменов, старая инфраструктура

Результат — единый список активов: домены → поддомены → IP → открытые сервисы. Важно объединять данные: один поддомен из CT нужно сопоставить с его IP из DNS и открытыми портами из Shodan, чтобы получить полную «карточку актива».

Шаг 2. Inventory — инвентаризация и атрибуция

Каждый обнаруженный актив нужно отнести к одной из категорий:

  • Известный и нужный — есть в реестре, кто-то за него отвечает, он должен быть публичным.
  • Известный, но лишний — публичен без необходимости (управляющая панель, dev-стенд наружу).
  • Неизвестный (shadow IT) — не числится в реестре: забытый сервер, теневой проект, тень после миграции. Самая опасная категория.

Ведите реестр активов как живой документ: владелец, назначение, обоснование публичности, дата последней проверки. Без реестра ASM превращается в разовый аудит, а нужна непрерывность.

Шаг 3. Prioritize — оценка риска

Не все находки равны. Приоритет повышают: чувствительность сервиса (база данных, аутентификация, админка), устаревшая версия с известными CVE, отсутствие шифрования (открытый HTTP, Telnet), дефолтные учётные данные, признаки заброшенности (просроченный сертификат). Это даёт очередь на устранение — от самого опасного к менее значимому.

Шаг 4. Remediate — что закрыть и убрать

Для каждой категории — своё типовое действие:

Забытый поддомен / висящий CNAME  -> удалить DNS-запись (риск takeover)
База/панель на публичном IP        -> увести за VPN/приватную сеть
Устаревшее ПО с CVE                 -> обновить или вывести из эксплуатации
Открытый порт без причины           -> закрыть на файрволе / security-группе
Дефолтные креды                     -> сменить немедленно, включить 2FA
Избыточный сервис                   -> вывести из эксплуатации (decommission)

Главный принцип сокращения поверхности — «меньше выставлено наружу — меньше можно атаковать». Каждый публичный актив должен иметь явную причину быть публичным; всё остальное убирается или прячется за периметром.

Как это работает под капотом

ASM — это не разовый скан, а цикл: discovery → inventory → prioritize → remediate → снова discovery. Поверхность постоянно меняется: разработчики поднимают сервисы, маркетинг регистрирует домены, миграции оставляют хвосты. Поэтому карту нужно пересобирать регулярно (хотя бы ежемесячно, а триггеры вроде CT-алерта — в реальном времени) и сравнивать с предыдущей: что появилось нового? Именно дельта между снимками ловит свежие забытые активы прежде, чем их найдёт злоумышленник.

Как защититься

  • Сделайте ASM непрерывным. Автоматизируйте сбор из DNS, CT, Shodan/Censys по своим доменам и диапазонам; сравнивайте новые снимки с предыдущими и реагируйте на дельту.
  • Ведите единый реестр активов. Каждый публичный актив — с владельцем, назначением и обоснованием. Нет обоснования — кандидат на удаление.
  • Сокращайте поверхность по умолчанию. Управляющие интерфейсы, базы, dev/staging — за VPN или в приватной сети, а не на белом IP.
  • Закрывайте процессом, а не разово. Вывод сервиса из эксплуатации = удалить DNS-запись → снять сертификат/ресурс → закрыть порты, именно в таком порядке, чтобы не оставить висящих записей.
  • Алертьте на новое. Shodan Monitor на новые порты, CT-мониторинг на новые имена — чтобы узнавать о появлении актива в момент его появления.

Правовая рамка: строить карту своей поверхности из открытых источников законно и необходимо. Те же действия против чужой инфраструктуры без письменного разрешения владельца — разведка перед атакой и могут квалифицироваться по ст. 272 УК РФ. ASM применяйте к своим или явно авторизованным активам; для оценки чужих систем нужен договор на пентест.

Итоги

  • Внешняя поверхность атаки — все доступные из интернета активы; защитить можно только то, что вы знаете.
  • ASM — непрерывный цикл: обнаружение → инвентаризация → приоритизация → устранение → снова обнаружение.
  • Самая опасная категория — неизвестные активы (shadow IT): забытые серверы и хвосты миграций.
  • Защита: единый реестр активов, сокращение публичной поверхности по умолчанию и алерты на любое новое имя или порт.
Проверьте себя
1. Что в подходе Attack Surface Management считается самой опасной категорией активов?
AИзвестные и нужные публичные сервисы
BНеизвестные активы (shadow IT): забытые серверы и хвосты миграций
CВнутренние сервисы за VPN
DСертификаты в CT-логах
2. В каком порядке корректно выводить публичный сервис из эксплуатации, чтобы не оставить уязвимости?
AСначала закрыть порты, потом всё остальное в любом порядке
BУдалить DNS-запись, затем снять сертификат/ресурс, затем закрыть порты
CСначала снять сертификат, оставив DNS-запись активной
DДостаточно просто выключить сервер