Перейти к содержимому
VC
Кейс № 27 · OSINT · Аналитика

Конкурентная разведка по открытым источникам: от публичной ссылки до владельца инфраструктуры

Собственный инструмент, не клиентский проект. По одной публичной рекламной ссылке за 30–60 минут восстанавливается техническая цепочка: на чём стоит инфраструктура, какой трекер её обслуживает и кто за ней стоит. Только бесплатные открытые источники — ни одной платной подписки. Плюс отдельный документ правил, который появился после того, как методология поймала собственную ошибку.

Тип
Собственная методология · внутренняя разработка
Стек
bash · whois / dig / openssl · crt.sh · URLscan
Время на цепочку
30–60 минут
Итог
12 шагов · 0 ₽ на платные сервисы
01 · Боль

Ссылка публичная, но не говорит ничего

Вы видите рекламную ссылку конкурента или ссылку в письме от потенциального контрагента. Она публичная — но по ней нельзя сходу ответить ни на один практический вопрос. Куда она реально ведёт: между кликом и финальной страницей стоит фильтр, который посетителю «не из целевой аудитории» отдаёт нейтральную заглушку. Кто владелец: регистрация домена закрыта privacy-провайдером. Какой трекер её обслуживает: нигде не написано — платформы не подписываются.

Коммерческий ответ на эту задачу — платные подписки на пассивный DNS, историю сертификатов и атрибуцию инфраструктуры. Это сотни долларов в месяц, и они всё равно закрывают только часть вопросов: сервис покажет соседние домены, но не скажет, какой трекер стоит внутри и означает ли соседство общего владельца.

Второе место, где ломается такая работа, — не сбор данных, а дисциплина вывода. Собрать признаки легко. Легко и переоценить их: увидеть у двух разных цепочек общий промежуточный сервис и объявить их одной операцией. Такой вывод хуже отсутствия вывода — он выглядит обоснованным и на нём принимают решения.

02 · Решение

12 шагов, два скрипта и дисциплина вывода

Методология состоит из двух половин, и вторая важнее первой. Первая — сбор: воспроизводимый, скриптованный, оставляющий артефакты. Вторая — правила интерпретации: какой признак доказывает владельца, а какой встречается у сотен независимых операторов и не доказывает ничего.

01
Регистрация

WHOIS: регистратор, дата создания домена, privacy-провайдер, NS-серверы

02
Инфраструктура

DNS-записи A / NS / SOA / MX / TXT, SAN сертификата, история в crt.sh

03
Отпечаток стека

HEAD-запрос: заголовки сервера, X-Powered-By, имена cookie

04
Живой проход

Реальная цепочка перенаправлений с параметрами настоящего посетителя

05
Пассивные архивы

Публичные сканы, пассивный DNS, веб-архив: что видели до вас

Сбор сведён к одной команде

Скрипт 01-recon.sh принимает на вход домен и за один заход проходит WHOIS, DNS, разбор сертификата, историческую выборку из прозрачности сертификатов, HEAD-запрос, публичные сканы, пассивный DNS и веб-архив. Каждый шаг ложится отдельным файлом в рабочую папку — это артефакт, к которому можно вернуться, приложить к выводу и сравнить с повторным прогоном того же домена через месяц. Разведка, существующая только в терминале аналитика, не разведка.

Живой проход вынесен в отдельный скрипт — намеренно

Фильтр показа отдаёт нейтральную страницу всем, кто не похож на целевого посетителя: не тот регион, не тот тип устройства, не тот источник перехода. Поэтому 02-live-click.sh делает запрос с параметрами настоящего посетителя и снимает с него всё, что видно:

  • полную цепочку перенаправлений — каждый хоп это отдельный домен и, возможно, отдельный участник
  • Set-Cookie на каждом хопе — имена cookie опознают платформу лучше, чем содержимое страницы
  • заголовки ответа по хопам: сервер, признаки фреймворка, идентификаторы CDN
  • финальный ответ с реальным содержимым — то, ради чего вся цепочка и построена

Отдельный файл здесь — не косметика. Это единственный шаг, который отправляет запрос с подставленным источником перехода; он не должен уезжать случайно в составе обычного сбора. Разделение зафиксировано прямо в комментарии скрипта, чтобы решение пережило автора.

Опознание трекера по сигнатуре, а не по названию

Трекер нигде не представляется. Но каждая платформа оставляет отпечаток, и он устойчивее любой надписи на странице. Справочник tracker-signatures.md — это таблица «признак → платформа», которая пополняется на каждом разборе:

  • служебный заголовок ответа, уникальный для одной платформы — самый сильный признак, опознание мгновенное
  • форма имени cookie и её структура — например, имя с хешем фиксированной длины и подписью значения
  • форма пути в URL перехода: где стоит идентификатор кампании, где — идентификатор партнёра
  • набор полей в JSON интеграции — состав ключей однозначно маппится на конкретный класс платформ
  • имя балансировщика в DNS облачного провайдера — часто внутреннее кодовое имя проекта оператора

Код на странице говорит о команде больше, чем страница

Отдельный шаг — чтение собранных JS и CSS не на предмет логики, а на предмет следов авторов: жёстко зашитые адреса служебных эндпоинтов, названия внутренних сущностей, и главное — комментарии на нелатинице. Одна-две строки на родном языке разработчика сужают круг кандидатов сильнее, чем весь остальной технический сбор. Это дешёвый шаг, который почти всегда пропускают.

Правила атрибуции — отдельный документ, а не абзац в конце

В цепочке участвует не один игрок, а несколько независимых: слой маскировки показа, трекер, промежуточный сервис перенаправления, конечный продавец. Каждый — отдельная компания, и каждый может обслуживать десятки не связанных между собой клиентов. Поэтому в attribution-rules.md признаки разделены на два списка: те, что доказывают конкретного оператора, и те, что встречаются у всех подряд. Вывод делается по первой уникальной сигнатуре в цепочке, а не по последнему хопу и не по общим промежуточным звеньям.

Ноль платных источников — это ограничение, а не экономия

Весь сбор строится на том, что доступно любому: whois-сервер регистратуры, публичные DNS-резолверы, прозрачность сертификатов, публичные сканы страниц, пассивный DNS и веб-архив. Ограничение полезно методологически: оно заставляет опираться на признаки, которые можно перепроверить независимо, а не на вердикт закрытого сервиса, который нельзя ни оспорить, ни воспроизвести.

03 · Стек

Инструменты, которые уже стоят на любой машине

bash + curl

Весь сбор — обычный shell-скрипт без зависимостей и без установки

whois

Регистратор, дата создания домена, privacy-провайдер, NS — первый фильтр

dig (A / NS / SOA / MX / TXT)

Карта DNS: хостинг, почта, верификации внешних сервисов

openssl s_client + x509

SAN сертификата — все смежные домены, выпущенные под одним сертом

crt.sh

Прозрачность сертификатов: историческая enumeration субдоменов и связанных имён

URLscan.io API

Публичные сканы: полная цепочка загруженных ресурсов, заголовки и cookie

Пассивный DNS (HackerTarget / OTX)

Бесплатные аналоги платных сервисов истории DNS

Wayback Machine

Как домен выглядел раньше — часто до того, как его закрыли приватностью

python3 (stdlib)

Разбор JSON-ответов прямо в пайпе, без установки пакетов

Markdown + git

Справочники сигнатур и правил атрибуции версионируются вместе со скриптами

bashcurlwhoisdigopensslcrt.shURLscanpassive DNSWaybackpython3git
04 · Результат

Методология, которая ловит собственные ошибки

Время на цепочку
30–60 мин

от публичной ссылки до названного оператора, его стека и способа проверки

Бюджет на данные
0 ₽

ни одной платной подписки на пассивный DNS, историю сертификатов или атрибуцию

Разобранные цепочки
3

три независимых разбора; каждый пополнил справочники новыми сигнатурами

Самый ценный результат — пойманная собственная ошибка

На третьем разборе атрибуция сначала была неверной. Две разные цепочки сходились на одном промежуточном сервисе перенаправления, и это выглядело как доказательство общего владельца — признак яркий, воспроизводимый и абсолютно ложный. Ошибка вскрылась на следующем шаге: в заголовках ответа нашлась сигнатура трекера, принадлежащая одной конкретной платформе и не встречающаяся у других. Оператор оказался другим — и это подтвердилось независимо, через публичный сайт владельца этой платформы.

Правило, которое из этого выросло

Общие инструменты не доказывают общего владельца. Формулировка попала в attribution-rules.md вместе с явным списком признаков, которые ничего не доказывают, хотя выглядят убедительно:

  • anycast-адреса популярного CDN — общий пул на всех клиентов тарифа
  • самый массовый регистратор и его дефолтный privacy-провайдер — это про популярность, а не про связь
  • сторонний сервис перенаправления в середине цепочки — независимый SaaS, им пользуются десятки не связанных операторов
  • типовой шаблон лендинга и стандартный набор cookie популярного фреймворка

Итоговый алгоритм короткий: найти первый хоп с уникальной сигнатурой, опознать по нему платформу, подтвердить вторым независимым признаком — и только тогда называть оператора. Совпадение по общей инфраструктуре идёт в вывод как дополнительное свидетельство, никогда как основное.

Что осталось после трёх разборов

Репозиторий с плейбуком, двумя переиспользуемыми скриптами и двумя справочниками, которые растут с каждым новым разбором. Плюс чеклист сдачи — список полей, которые обязаны быть заполнены, прежде чем вывод считается готовым: кто оператор, где публично подтверждается, какой стек, чем именно доказана атрибуция. Чеклист нужен ровно для того же, для чего нужны правила: чтобы уверенность аналитика не подменяла собой доказательство.

Общий итог, если убрать детали: методология, которая ловит собственные ошибки, полезнее методологии, которая всегда уверена. Документ теперь отвечает не только на вопрос «как узнать», но и на вопрос «когда вы ещё не знаете».

05 · Применимость

Где ещё ложится та же методология

Кейс не про рекламные ссылки. Это типовая задача «по одному публичному идентификатору восстановить, кто стоит за инфраструктурой, и не ошибиться в выводе». Она встречается сильно чаще, чем кажется:

  • Проверка контрагента перед сделкой — возраст домена, реальный владелец инфраструктуры, связанные площадки под тем же сертификатом, история в веб-архиве
  • Техническая разведка конкурента — на чём построен сайт, какая аналитика и какие внешние сервисы подключены, что было на домене год назад
  • Клоны и фишинг под ваш бренд — сеть доменов-двойников обычно выдаёт себя общим сертификатом и общей инфраструктурой
  • Due diligence перед покупкой домена или проекта — что на нём размещалось раньше и с чем он связан по истории сертификатов
  • Аудит собственного периметра — та же разведка, направленная внутрь: какие ваши поддомены и внутренние имена видны снаружи бесплатно
Что переиспользуется на следующих проектах
  • Скрипт one-shot разведки: домен на входе — папка с артефактами по каждому шагу на выходе
  • Изолированный скрипт живого прохода — рискованный запрос никогда не уходит в составе обычного сбора
  • Справочник «признак → платформа», который пополняется каждым новым разбором
  • Правила атрибуции: явное разделение признаков на доказывающие и не доказывающие
  • Чеклист сдачи разбора — обязательные поля вывода, чтобы результат не оставался в голове аналитика
Похожая задача?

Если вопрос звучит как «кто за этим стоит» — ответ чаще всего уже публичен

Большая часть ответов лежит в бесплатных источниках — их нужно собрать в правильном порядке и корректно интерпретировать. Разбор одной цепочки — 30–60 минут; методология, скрипты и справочники остаются у вас и работают дальше без меня.

Готовы начать?

Аудит за 5 000 ₽ — с конкретным отчётом и сметой

Расскажу что внедрить в вашем бизнесе в первую очередь, какая будет окупаемость, и нужен ли вообще AI для вашей задачи (иногда — нет).

Или просто напишите свой вопрос — отвечу в течение 2 часов