Два инженера из разных доменов безопасности случайно нацелились друг на друга. Что происходит, когда оба охотника идут по одному следу? Разбор тактики «Захват вожака».
Представьте: вы встраиваете пассивный зонд в сеть конкурента, а через месяц ваш же зонд показывает, что кто-то ещё копается в тех же данных. Вы не знаете, кто он — враг или союзник. В этой статье — реальная история двух инженеров, которые случайно перехватили друг друга, думая, что охотятся на общего противника. Вы узнаете, как работают автоматические разведчики активов, как тестировщики проверяют схемы данных, и почему иногда лучше сначала подтвердить, что враг существует, чем сразу атаковать.
Лео задержался в офисе CoreStack почти до полуночи. Он решил проверить старый зонд, который поставил после инцидента с FinOptima — пассивный пробник, привязанный к IP-диапазону ACL. Несколько месяцев тишины, но сегодня последние строки лога оказались необычными:
[07-17 23:41:03] CAPTURE | SRC: 10.88.*.47 | DST: 203.0.*.0/28
[07-17 23:41:03] PROTO: HTTPS | SNI: acl-collector.internal
[07-17 23:41:03] HEADER: x-data-origin → acl-meta-signature:v1
[07-17 23:41:04] → Body payload includes embedded tag: acl-collector/v3.2
[07-17 23:41:04] → Processing metadata: Apex-Lens/v2.0.0Исходящий запрос от внешнего IP, который не принадлежал ни одному известному узлу ACL. Не прямой скан — HTTPS-пробник, запрашивающий формат данных у коллектора. В теле запроса — маркер data-origin от ACL. Значит, какой-то узел вне сети ACL отправляет данные на коллектор ACL, и его инструмент случайно раскрыл метаданные ACL.
Лео отправил один HTTP-запрос: GET /health. Чисто, безвредно. В тот же момент система Дерека зафиксировала информационное предупреждение.
Дерек взглянул на алерт и проверил лог исходящих запросов. Его песочница каждые 72 часа выполняла плановую проверку формата данных против коллектора ACL. Запрос ушёл в 23:41, и алерт пришёл в ту же секунду. Но он заметил ещё кое-что: три дня назад неизвестный источник обращался по пути /pulse/ingestion/ — без полезной нагрузки, без учётных данных, чисто. Тогда песочница ещё не была настроена на перенаправление фида ACL, и никто не должен был знать об этом узле.
IP-адрес источника: финансовый платёжный диапазон. У Дерека не было дел с этим диапазоном. Он не стал блокировать, а продублировал входящий трафик в изолированный канал и стал ждать следующего хода.
Лео получил ответ 200 OK от узла Дерека, но заметил в заголовках версию nginx и идентификатор шлюза здравоохранения — нестандартная конфигурация для узла ACL. Он отправил второй запрос с кастомным заголовком, формат которого характерен для финансовых платёжных систем.
Дерек увидел заголовок, не ответил, но установил правило на сброс всех последующих запросов с этого IP, ничего не возвращая. Он хотел проверить реакцию на тишину. Лео обошёл блокировку через реверсивный порт на канале передачи данных. Дерек зафиксировал обход и понял: «Ты не ACL». Метод обхода выдавал архитектора, а не безопасника.
Дерек отправил обратно кастомный ICMP-запрос времени — большинство серверов отвечают по умолчанию, и на прикладном уровне не остаётся следов. Лео поймал этот запрос и тоже задумался: тот, кто хочет спрятаться, не будет посылать сигнал. Тот, кто ставит ловушку, тоже.
Лео отправил последний запрос — только заголовок X-Not-ACL: true. Дерек посмотрел на него сорок секунд и ответил тем же: X-Same-Here: true.
На следующий день Лео отправил Дереку адрес — Third Cup. Дерек пришёл после полуночи. Без лишних слов Лео выложил на стол скриншот Slack: в списке внешних наблюдателей инцидента CodeForge значился Automated Compliance Lab. А также версию модели acl-train-2026q2-v3, за которой через две недели вышла v4.
Дерек положил свою карту — нарисованный от руки график сбора данных ACL: путь конфига, адреса назначения, интервал сбора 4–6 часов, сортировка IP по алфавиту. Этот шаблон развёрнут как минимум в трёх разных окружениях клиентов. Лео уточнил: «В четырёх».
Затем Дерек рассказал о проникновении в его песочницу три дня назад — путь /pulse/ingestion/, чистое извлечение, ручная зачистка. Лео спросил, менял ли Дерек путь входа. Тот ответил «нет». Повисла тишина. Они посидели ещё немного, а затем разошлись в разные стороны без рукопожатий.
Что делать прямо сейчас? Проверьте свои системы на наличие «чистых» запросов к нестандартным путям — они могут указывать на ручной анализ. Настройте дублирование входящего трафика для изолированного анализа. И если вы обнаружили неизвестного оператора, не спешите блокировать — сначала попробуйте обменяться сигналами. Иногда подтверждение существования общего врага ценнее, чем победа в первой стычке.
История Лео и Дерека — классический пример тактики «Захват вожака»: оба охотника целились в одного противника, но сначала нашли друг друга. Теперь у них есть точка входа, и они знают, что враг реален.
Хочешь закрепить знания на практике?
Решай задачи на Algolit — интерактивная платформа для обучения
Начать бесплатно →