OSINT и футпринтинг
Ещё до того, как первый пакет дойдёт до вашей цели, авторизованный атакующий уже составил карту ваших поддоменов, стека, сотрудников и утёкших секретов — всё из публичных данных. Это футпринтинг, и он определяет весь ход атаки.
Лид red-team открывает новый проект против компании, к которой он никогда не прикасался. Он не запускает сканер. Он не шлёт цели ни одного пакета. Первые два дня он читает: лог Certificate Transparency, индекс поиска по коду, три вакансии, маркетинговую презентацию, которую кто-то забыл на публичном CDN, и профили платформенной команды в LinkedIn. К пятнице у него есть список из 140 хостнеймов, которые с трудом перечислила бы и собственная команда эксплуатации, точная версия аутентификационного шлюза, имя CI-системы и URL Slack-вебхука, закоммиченный в форк репозитория два года назад. Он ни на что не «нападал» — каждый прочитанный байт был опубликован добровольно. Но теперь он знает цель лучше, чем большинство её инженеров, а сама атака ещё даже не началась. Это футпринтинг, и это та фаза атаки, которую защитники почти никогда не видят.
К концу урока вы поймёте, сколько авторизованный атакующий узнаёт о ваших системах из одних только публичных данных — ещё до отправки единственного пакета — и какие из этих утечек вы реально можете перекрыть.
Сначала авторизация: пассивная разведка тоже в скоупе
Всё, что ниже, предполагает, что вы работаете в рамках подписанного контракта с явным скоупом — лаборатория, CTF, программа bug bounty со списком разрешённых активов или ваша собственная инфраструктура. «Это же просто публичные данные» — не индульгенция, позволяющая пропустить авторизацию. Сбор сотрудников цели, перечисление её облачных активов и каталогизация утёкших секретов — это разведка против названной организации; вне авторизованного проекта это всё ещё может перейти юридические и этические границы (и почти наверняка нарушает правила bug bounty). Футпринтингу мы учим ради защиты: вы не сократите поверхность атаки, которую ни разу не видели так, как её видит атакующий. Читайте это как blue-team, узнающий то, что red team знает давно.
Определяющее свойство футпринтинга — он пассивен. Атакующий взаимодействует только с третьими сторонами — поисковиками, публичными реестрами, собственными опубликованными страницами цели — и никогда не шлёт трафик, который логи цели приписали бы атаке. Нет порт-скана, который зацепил бы IDS, нет неудачного входа, всплеска на дашборде, аномального запроса в WAF. Эта асимметрия и есть суть: разведка — самая длинная фаза реальной атаки и фаза с наименьшим шансом обнаружения. В терминах ATT&CK это тактика Reconnaissance (TA0043) — работа, которая происходит до первоначального доступа, та часть, что почти никогда не попадает в таймлайн инцидента, потому что ничто в ней не коснулось жертвы.
Что на самом деле утекает через «публичное»
Ошибка защитников — представлять свою поверхность атаки как диапазоны IP и хостнеймы, которые они намеренно публикуют. Реальная поверхность куда больше, и большая её часть утекает через системы, которые никто не считает связанными с безопасностью. Несколько самых богатых источников:
- Логи Certificate Transparency. Каждый TLS-сертификат, выданный публичным CA, по дизайну заносится в append-only CT-логи, чтобы браузеры могли обнаруживать ошибочную выдачу. Побочный эффект: каждый хостнейм, на который вы когда-либо повесили сертификат —
staging.,internal-vpn.,grafana., недоделанныйnew-billing., — теперь навсегда доступен для поиска. Отозвать публикацию нельзя. Один лишь CT регулярно вскрывает поддомены, о существовании которых забыла сама команда цели. - DNS и WHOIS. Агрегаторы passive DNS (записывающие исторические резолвы, виденные по всему интернету) раскрывают старые IP, заброшенные хосты и форму вашей инфраструктуры — а вы при этом ни разу не отвечаете на запрос от атакующего. WHOIS и данные регистратора утекают владение, name-серверы и паттерны регистрации, связывающие активы между собой.
- Дорки в поисковиках. Точечные запросы (
site:,filetype:,inurl:) вытаскивают проиндексированные админ-панели, открытые конфиги, листинги директорий и страницы ошибок, утекающие стектрейсы. Контент проиндексировал Google, а не запросил у цели атакующий. - Код и секреты. Публичные репозитории, гисты и форки утекают захардкоженные ключи, внутренние хостнеймы, API-эндпоинты и архитектуру в комментариях. Секрет, закоммиченный однажды и «удалённый», живёт вечно в истории git и в форках и зеркалах, которые его скопировали.
- Люди и метаданные. Вакансии называют ваш точный стек («нужно 3 года Kafka, Istio и Snowflake»). Доклады и презентации описывают вашу архитектуру. Метаданные документов содержат имена пользователей и внутренние пути. Агрегаторы утечек связывают почты сотрудников с паролями, переиспользованными в других местах.
Заметьте паттерн: ни один из этих источников не требовал, чтобы атакующий коснулся цели. Каждый — третья сторона, которую цель сама добровольно кормила годами.
От разрозненных утечек к единой карте
Навык, отличающий зрелого оператора от новичка, — не сбор большего объёма данных, а корреляция. Любая отдельная запись CT или вакансия — шум. Ценность появляется при перекрёстных переходах между источниками: хостнейм из CT резолвится (через passive DNS) в IP облачного диапазона; этот диапазон плюс вакансия с упоминанием «EKS» говорят, что это Kubernetes; публичный репозиторий сотрудника, названного в той вакансии, утекает паттерн ingress-хостнеймов — и теперь internal-admin.[паттерн].example.com становится высокоценной догадкой, которую вы нашли, ни разу не сканируя. Каждый источник — слабый сигнал; карта — произведение их соединения.
Цифры объясняют, почему это важно. На зрелой организации Certificate Transparency плюс passive DNS плюс пара словарей поддоменов регулярно превращают оценку «у нас, может, 30 публичных хостов» в 150–300 обнаруженных хостнеймов, большую долю которых команда безопасности не считала выставленной наружу. Этот разрыв заполняют теневое IT, забытые staging-окружения, активы поглощённых компаний и одноразовые маркетинговые микросайты. Пробой почти никогда не приходит через парадную дверь, которую вы укрепили, — он приходит через legacy-2019.example.com, на котором всё ещё крутится непропатченное приложение и о котором никто не помнил, что оно в интернете.
▸Почему это работает
Почему пассивная разведка настолько опаснее для защитника, чем активный скан? Потому что вся модель обнаружения защитника построена вокруг трафика к его активам — IDS, WAF, рейт-лимиты, алерты на аномалии. Футпринтинг не генерирует ничего из этого. Запросы атакующего идут в Google, Censys, crt.sh, GitHub и агрегаторы утечек — но не на ваши серверы. К моменту, когда вы увидите единственный аномальный запрос, у атакующего уже есть список целей, отпечатки версий и утёкший секрет для проверки. Ваша видимость начинается в тот момент, когда разведка заканчивается, — ровно в тот момент, когда вы уже проиграли информационную войну.
Что вы реально можете перекрыть
Футпринтинг не неостановим — но контроли здесь про сокращение того, что вы публикуете, а не про блокировку атакующего (запретить чтение сторонних данных невозможно). Защитная программа выглядит как непрерывное управление поверхностью атаки: перечисляйте собственные CT-логи и passive DNS так, как это сделал бы атакующий, и сверяйте этот список с вашей инвентаризацией активов — чтобы забытый staging.-хост нашли вы первыми. Выводите из эксплуатации то, что не нужно: каждый выведенный хост — это хост, который не может утечь. Сканируйте собственные репозитории и CI на закоммиченные секреты и считайте любой утёкший секрет сожжённым: ротируйте его, потому что история git вечна. Удаляйте метаданные из публичных документов и объясняйте командам, что вакансии и доклады — это каналы разведки. Ничто из этого не делает вас невидимыми; оно сокращает поверхность и убирает лёгкие победы.
Ваша инвентаризация говорит о ~30 публичных хостах. Отчёт авторизованной red-team по футпринтингу перечисляет 210, включая несколько забытых staging- и доставшихся от поглощений поддоменов. Какой ответ реально снижает риск?
Почему пассивный футпринтинг почти никогда не появляется в таймлайне инцидента цели?
Red team находит 210 хостнеймов у организации, считавшей, что у неё ~30 публичных хостов. Чем вероятнее всего объясняется разрыв?
Упорядочи рабочий процесс пассивного футпринтинга от первого действия до пригодного списка целей, ни разу не коснувшись цели:
- 1 Вытащить все хостнеймы из логов Certificate Transparency по домену
- 2 Зарезолвить и обогатить их через passive DNS, найдя живые IP и диапазоны
- 3 Перейти к поиску по коду + вакансиям, чтобы вывести стек и паттерны именования
- 4 Скоррелировать источники в одну карту и ранжировать хосты по вероятной ценности (забытые/legacy первыми)
- 01Объясни, почему пассивный футпринтинг настолько опасен для защитника и почему он редко появляется в таймлайне инцидента.
- 02Что на самом деле утекает через публичные данные и почему ключевой навык — корреляция, а не сбор?
Футпринтинг — фаза пассивной разведки, происходящая до того, как любой пакет дойдёт до цели. Работая только в рамках авторизации, атакующий читает сторонние и публичные источники — логи Certificate Transparency, passive DNS, дорки в поисковиках, публичный код и утёкшие секреты, вакансии и дампы утечек, — ни один из которых не касается цели, поэтому IDS, WAF и логи жертвы не записывают ничего (Reconnaissance в ATT&CK, TA0043). Определяющая асимметрия: видимость защитника начинается лишь тогда, когда разведка заканчивается. Зрелый навык — корреляция: соединение слабых сигналов между источниками превращает предполагаемые ~30 публичных хостов в 150–300 обнаруженных, где разрыв заполняют забытые staging, активы поглощённых компаний и теневое IT, — и пробой обычно приходит через один из них, а не через укреплённую парадную дверь. Чтения публичных данных не заблокировать, поэтому защита — непрерывно футпринтить себя: перечислять собственные CT и passive DNS, сверять с инвентаризацией, выводить ненужное, сканировать репозитории на секреты и ротировать утёкшее, удалять метаданные из публичных документов. В следующий раз, когда кто-то скажет «но это же просто публичное», ваш рефлекс: публичное — ровно там, где и живёт поверхность атаки.
Практика
Начни сверху. Задачи идут от простого к сложному: вспомнить факт, применить к случаю, затем senior-уровень. Открой, попробуй, потом открой ответ.
Что-то непонятно?
Задай вопрос по этому уроку. Вопросы анонимны и попадают напрямую автору — урок станет лучше.