Пока вы согласовываете бюджет на защиту, человек, который соберётся вам навредить, читает о вас то же, что доступно вам сегодня бесплатно: журнал выданных сертификатов, ваши же вакансии, архивы вашего сайта. Ему не нужны закупки и доступ — достаточно вечера и любопытства. Аудит видимости — это попытка посмотреть на компанию его глазами, пока он не посмотрел всерьёз.
Дальше — что смотреть, в каком порядке и при каких условиях это применимо к вам. Бюджета не требуется: только время и выход в интернет не из офисной сети.
Тупик: сначала сканер
Первое, что пробуют почти все: взять сканер, натравить его на свои адреса и получить список брешей. Выглядит как работа, звучит как работа — и не отвечает на главный вопрос.
Дело в устройстве инструмента. Сканер отвечает на вопрос «что не так с хостами из моего списка», а список вы даёте сами: из учётной системы, из памяти, из того, что компания считает своими активами. Аудит видимости нужен ровно для другого — узнать, чего в списке нет. Забытый стенд, домен, зарегистрированный на человека, а не на компанию, сервис, поднятый в облаке без ведома тех, кто ведёт учёт, старая DNS-запись, указывающая на давно выключенную машину, — всё это вне задания. Сканер промолчит не потому, что плох, а потому что его так спросили.
Пентест — та же ловушка, только дороже: границы теста согласуют по тому же списку. Не попал поддомен в договор — тестер его не увидит, и вы вместе с ним.
И третий слой слепоты: сетевые инструменты в принципе не читают вакансии, архивы и базы утечек. А именно там лежит то, по чему выбирают цель.
Порядок, из которого мы исходим: сначала перечень того, что видит посторонний, потом инструменты по этому периметру. Не «вместо» — «до».
Шаг ноль: якорный список
Аудит не бывает шире списка того, что вы считаете своей компанией. Выпишите заранее: домены, бренды, юридические лица, продукты с отдельными именами. Если про домен, зарегистрированный «на всякий случай», никто не вспомнит — его не проверит никто, включая вас.
Служебное: делайте проверки не из офисной сети и не через корпоративные DNS — внутренний взгляд отличается от внешнего, а нужен именно внешний. И всё описанное ниже — только про свои домены и свои адреса.
Если по ходу всплывает актив компании, которого нет в списке, — это не шум, а первая находка.
Что видно снаружи и где это смотреть
DNS и сертификаты: скелет
DNS публичен по устройству. Записи MX и SPF показывают, у кого вы держите почту и кто ваши почтовые провайдеры; TXT-записи с проверочными строками — квитанции о сервисах, которые вы подключали: каждая строка проверки — чей-то сервис. Имена поддоменов рассказывают про устройство: vpn, git, ci, test, stage — это структура, изложенная вслух. Бывает и обратное: записи, указывающие на уже не существующие машины, — след забытой инфраструктуры.
Главный источник здесь — публичные журналы, куда попадает каждый сертификат, который должны принимать браузеры. Выгрузите по своему домену все имена, на которые когда-либо выпускались сертификаты, и сверьте со своей инвентаризацией. Внутренние имена попадают в сертификаты, потому что их заказывают как обычные, — и в журнал тоже. Разница двух списков и есть ядро результата: активы, о которых вы не знали. Журнал к тому же опережает сканеры: имя появляется в нём раньше, чем сервис начинает отвечать. Выпускать wildcard-сертификаты вместо отдельных имён можно, это уменьшает утечку имён — но не отменяет саму сверку.
Слой применим ко всем, у кого есть домен; чем старше компания, тем интереснее сверка.
Сервисы и файлы: то, что отвечает
С чистой внешней точки проверьте, что отвечает на ваших адресах: админ-панели, тестовые стенды, API, удалённый доступ. На каждый ответивший сервис два вопроса: должен ли он отвечать снаружи вообще — и что кричит его баннер: имя продукта, версия, внутренний код. Молчащий баннер — это дороже для того, кто присматривается.
Файлы: каталог .git в корне сайта, резервные копии, конфиги с паролями, выгрузки таблиц. Способы — перебор типовых имён каталогов и поисковые запросы по типам файлов на своём домене. И помните про архивы веба: «удалить со страницы» не значит «убрать из мира».
Если всё у вас в одном облаке с одной точкой входа, слой будет небольшим. Если за плечами история самостоятельного поднятия серверов — находки соберутся именно здесь.
Утечки и код
Адреса вашего домена в агрегаторах утечек искать нужно, но считать бесполезно. Полезно вычитать: список адресов из утечек минус список активных ящиков — получится очередь на принудительную смену паролей. Отдельная строка очереди — адреса уволенных: там, где отключение учёток делается руками, ящики переживают людей, и почта ушедшего сотрудника — готовая дверь к восстановлению паролей и корпоративной переписке.
Код: поищите свой домен на публичных хостингах кода — рядом с доменом часто живут адреса внутренних систем и ключи. Личные репозитории сотрудников с рабочим кодом — туда же. И откройте собственную фронтенд-сборку: всё, что попало в браузер, публично по определению; поищите в собственном JavaScript то, что похоже на ключ.
Документы: скачайте с собственного сайта все PDF и прочитайте свойства. Имена авторов, внутренние пути, забытые комментарии — дёшево, быстро, отрезвляюще.
Слой работает при любом размере компании; очередь растёт с возрастом.
Люди и тексты
Вакансия — самый честный документ о вашем нутре: стек, параллельные позиции в одной роли показывают, где растут команды, формулировки показывают боль — «разберёте завалы» говорит про наследованную систему больше, чем внутренний отчёт. Вакансия в безопасность сообщает, что охрану собирают. Профессиональные соцсети: сотрудники сами собирают вашу оргсхему и обновляют её чаще, чем HR. Доклады, посты в сообществах, фотографии офиса с бейджами и экранами, геометки. Корпоративные новости: списки клиентов и поставщиков читают не только ваши аудиторы — про перечень в цепочке поставки, который кто-то читает, у нас есть отдельный материал.
К каждому публичному артефакту один вопрос: «что этот текст говорит о том, как мы устроены внутри?»
Вес слоя растёт, если в вашей модели угроз есть адресная социальная инженерия — тогда «люди» важнее «портов».
Как превратить находки в работу
Результат аудита — таблица, а не отчёт: что нашли / где / кто владелец / что делать / к какому сроку. Колонка владельца — место, где умирают аудиты: находка без имени рядом не закрывается, потому что закрытие — это чьё-то решение о простое, а «общими силами» такие решения не принимаются. Срок в таблице — дата, а не пожелание: находки без дат кочуют из отчёта в отчёт.
У каждой находки два глагола: убрать или признать. Убрать снаружи — удалить запись, закрыть порт, сменить ключ, вычистить вакансию. Признать активом — назначить владельца и поставить в учёт. Третий рефлекс — «запретить» — всерьёз не работает: архивы хранят уже опубликованное, а поток возобновляется, потому что вакансию всё равно придётся публиковать, чтобы нанять. Запрет меняет следующую публикацию, но не чистит увиденное.
Приоритеты — из экономики атакующего, а не из громкости заголовков. Оцените каждую находку дважды: во что обойдётся её использование постороннему и во что — закрытие вам. Первая очередь — то, что дёшево обоим: использование без особых инструментов и закрытие за вечер. Дорогие в закрытии находки идут отдельным списком с бюджетом, а не в общую кучу.
Сам аудит — заодно проверка вашей мониторинговой системы. Первый проход предупредите своих: сэкономите нервы и отличите аудит от атаки. Когда аудит станет регулярным — попробуйте молча: если перечисление вашего периметра никто не заметил, это тоже находка, и она идёт в ту же таблицу.
Регулярность лучше строить не по календарю, а по триггерам: новый сертификат в журнале, новый отвечающий поддомен, новая вакансия, адрес домена в свежей утечке. Календарный аудит стареет между датами; триггер срабатывает в момент появления. Дёшево, потому что триггер сверяет списки, а не сканирует сети.
Позиция редакции
Мы считаем: периметр компании — то, что видит посторонний без паролей. Запись в учётной системе — намерение, а не периметр. Отсюда порядок трат: аудит видимости — до закупки средств защиты, потому что закупка усиливает известное, а риск живёт в неизвестном. И вести аудит должен тот, кто распоряжается сроками и бюджетом: половина находок — не тикеты, а решения «закрыть или признать», и принимать их нечему, кроме вас.
Явное условие, при котором мы неправы: если всё, что появляется у компании снаружи, проходит через один контролируемый канал — один аккаунт регистратора, один процесс публикации и один способ заводить поддомены — и вы можете это проверить. Проверка без веры в процессы: возьмите журнал выданных сертификатов за любой период и сверьте со своей инвентаризацией. Каждая запись нашла владельца, ни одна не удивила — позиция к вам неприменима, продолжайте в том же духе. Удивила хоть одна — считайте, первый аудит видимости вы уже провели.