
На Maltego Community OSINT CTF задания варьировались от атрибуции аккаунтов через Bluesky до хронолокации по длине тени на фотографии Будапешта. Разница между лидерами и остальными — не в знании редких утилит, а в умении выстроить цепочку: от одной находки к следующей, без хаотичного перебора всего подряд. Здесь разбираю конкретные техники OSINT в CTF — с командами терминала, цепочками дорков и чеклистом, который можно открыть прямо во время соревнований.
В реальном пентесте OSINT — этап разведки, первое звено kill chain. По MITRE ATT&CK сюда попадают поиск по открытым веб-ресурсам (T1593, Reconnaissance), работа с соцсетями (T1593.001), использование поисковых движков (T1593.002), сбор данных об идентичности жертвы (T1589) и определение физического местоположения (T1591.001). В CTF эти техники применяются напрямую: вместо подготовки к initial access цель — вытащить флаг из данных, которые валяются в открытом доступе. Подробнее — в нашем статье о osint для специалиста по информационной безопасности.
CTF-платформы делят OSINT-задания на устоявшиеся категории. Понимание категории — первый шаг к выбору инструмента:
| Категория | Что ищем | Типовые инструменты | ATT&CK-маппинг |
|---|---|---|---|
| SOMINT (Social Media) | Профили, посты, связи между аккаунтами | Sherlock, Maigret, ручные дорки | T1593.001 Social Media |
| GEOINT (Geospatial) | Координаты, город, здание по фото | Google Lens, Yandex Images, SunCalc | T1591.001 Determine Physical Locations |
| IMINT (Image Intelligence) | Скрытые данные в метаданных изображений | ExifTool, strings, binwalk | T1589 Gather Victim Identity |
| Cyber Threat Intel | Инфраструктура — IP, домены, сертификаты | VirusTotal, Shodan, crt.sh | T1593.002 Search Engines |
| Credential / Leak OSINT | Утечки, связки email-пароль | HIBP, dehashed, Google Dorks | T1589.002 Email Addresses |
Если в условии задания фотография здания — это GEOINT, и начинать нужно с reverse image search, а не с exiftool. Если дан email — это SOMINT или Credential OSINT, и первое действие — username enumeration. Типичная ошибка новичков: запуск всех инструментов подряд вместо выбора по категории. Я видел команды, которые гоняли Sherlock по 300 платформам, когда ответ лежал в EXIF-комментарии к картинке.
Метаданные EXIF — проверка, которая занимает тридцать секунд и закрывает приличную долю IMINT-заданий. Авторы тасков часто прячут флаги в полях Comment, Artist, Copyright или даже в GPS-координатах, зашитых в JPEG-снимки. Проблема русскоязычных разборов — все говорят «проверьте метаданные», но не показывают конкретные команды и не объясняют, какие поля искать.
Требования к окружению: ExifTool 12.x+ (в Kali Linux установлен по умолчанию; на Ubuntu/Debian — sudo apt install libimage-exiftool-perl; macOS — brew install exiftool). RAM: любой объём, утилита работает offline. Python не нужен.
Базовая команда для полного дампа метаданных:
exiftool -a -u -g1 suspicious_image.jpg
Флаг -a выводит дублирующиеся теги, -u показывает неизвестные (кастомные) поля, -g1 группирует по категориям. Именно неизвестные поля — частое место, где CTF-авторы прячут флаг. Для PDF-файлов команда аналогична: exiftool document.pdf покажет Author, Creator, Producer, а иногда и скрытый XMP-комментарий с флагом.
Что искать в выводе:
48 deg 51' 29.88" N, 2 deg 17' 40.20" EТипичный сценарий на практике: задание категории SOMINT даёт email вроде user123@example.com — из него вытаскиваешь username user123, через enumeration находишь профиль на Bluesky или другой платформе. В био профиля лежит ROT13-кодированная строка — synt{L0h_t0g_z3}, которая декодируется в flag{Y0u_g0t_m3}. Метаданные и атрибуция — звенья одной цепочки.
Если exiftool возвращает минимум данных — файл strip'нут от метаданных. Не паникуем. Следующий шаг — команда strings для поиска читаемых строк в бинарных данных.
Для изображений strings suspicious_image.jpg | grep -i flag — грубый, но часто рабочий приём: авторы задания могут вставить флаг как текстовый блок в конец файла, за пределами JPEG-данных. Для PDF-документов strings document.pdf | grep -i "ctf\|flag\|key" ищет паттерны флага.
Если и это не дало результатов — проверяем файл на стеганографию: binwalk suspicious_image.jpg покажет вложенные архивы или дополнительные файлы внутри изображения. Стеганография и OSINT часто пересекаются в CTF — задание может выглядеть как OSINT, но требовать извлечения скрытого файла. Тут главное не зарыться в кроличью нору: если binwalk ничего не нашёл, возвращайтесь к условию задания.
Google Dorks — техника использования продвинутых поисковых операторов для обнаружения данных, которые не должны были оказаться в индексе. По данным OWASP, Security Misconfiguration (A05:2021) остаётся одним из ключевых рисков веб-приложений, и именно Google Dorks позволяют находить последствия таких ошибок конфигурации. В CTF дорки решают задачи от поиска утёкших документов до обнаружения скрытых поддоменов.
| Оператор | Назначение | Пример |
|---|---|---|
site: |
Ограничить поиск одним доменом | site:target.com filetype:pdf |
filetype: |
Искать конкретный тип файла | filetype:env intext:password |
intext: |
Искать строку в теле страницы | intext:"flag{" site:pastebin.com |
intitle: |
Искать в заголовке страницы | intitle:"index of" "parent directory" |
inurl: |
Искать в URL | inurl:admin inurl:login |
cache: |
Кэшированная версия страницы | cache:target.com/secret.html |
- (минус) |
Исключить результаты | site:*.target.com -www |
"..." (кавычки) |
Точное совпадение фразы | "confidential" filetype:doc |
Операторы комбинируются. Запрос site:example.com filetype:xls intext:password ищет Excel-файлы с паролями на конкретном домене. Для CTF полезен запрос "flag{" site:github.com — разработчики иногда коммитят тестовые флаги в публичные репозитории. Да, так бывает.
Поиск утёкших конфигурационных файлов: filetype:env intext:"DB_PASSWORD" или filetype:env intext:"aws_access_key_id" находит файлы .env с секретами, случайно попавшими в индекс. В реальных пентестах это маппится на Security Misconfiguration (OWASP A05:2021); в CTF — прямой путь к флагу.
Поиск по соцсетям через Google: site:linkedin.com "Evil Corp LLC" или site:twitter.com "Evil Corp" "security". Вместо ручного просмотра каждой соцсети — один запрос через Google с фильтром site:. Экономит минуты, которые на CTF стоят дорого.
Обнаружение скрытых поддоменов: site:*.target.com -site:www.target.com покажет поддомены, которые не видны на основном сайте. Для CTF с заданным доменом это часто даёт dev-среды, staging-серверы или забытые панели администрирования.
Поиск по GitHub-коммитам: site:github.com "target_username" password или "target_company" filename:.git-credentials — GitHub-коммиты регулярно содержат секреты. Авторы CTF-заданий создают фейковые репозитории с историей коммитов, где флаг был удалён из файла, но остался в git-истории. git log --all --full-history -- secret.txt и git show <commit>:secret.txt — ваши друзья.
Google применяет rate limiting: при интенсивном использовании дорков поисковик запросит капчу. Обход — использовать разные поисковики (Bing, Yandex, DuckDuckGo поддерживают аналогичные операторы с минимальными отличиями в синтаксисе) или увеличивать паузы между запросами. На CTF с таймером лучше чередовать движки, чем ждать снятия капчи.
GEOINT-задания в CTF дают фотографию и просят определить место, а иногда и точное время съёмки. Здесь важна не утилита, а методология: от крупных визуальных признаков к мелким деталям. Язык вывесок, направление движения, форма номерных знаков — всё это сужает область поиска быстрее любого инструмента.
Разные поисковые движки индексируют разные массивы изображений. При работе с reverse image search всегда проверяйте минимум два движка:
| Движок | Сильная сторона | Слабая сторона | Когда использовать |
|---|---|---|---|
| Google Lens | Широкое покрытие, распознаёт здания и объекты | Хуже работает с лицами, агрессивно кропает | Геолокация по архитектуре и ландшафту |
| Yandex Images | Лучший движок для поиска по лицам — тут он вне конкуренции | Меньше покрытие за пределами СНГ | Деанонимизация по фото человека |
| TinEye | Находит точное совпадение и более ранние копии | Не распознаёт объекты, только pixel-match | Определение первоисточника изображения |
По опубликованным разборам, на одном из CTF Maltego задание категории GEOINT требовало определить отель по фотографии Венгерского парламента в Будапеште. Участники использовали Google Lens для распознавания здания, затем переключились на анализ ракурса: через веб-камеры (EarthCam и аналоги) нашли камеру с совпадающим углом обзора. Подход «распознать ориентир → определить ракурс → верифицировать через альтернативный источник» — универсален для GEOINT-заданий.
Перед загрузкой изображения в reverse image search всегда проверяйте его локально: exiftool image.jpg и strings image.jpg — координаты и флаги часто спрятаны прямо в метаданных. Обидно потратить полчаса на геолокацию, когда ответ был в EXIF.
Хронолокация — определение времени съёмки по положению солнца и длине теней на фотографии. Техника применялась на Maltego CTF для задания Account Attribution 3, где нужно было определить временной диапазон фотографии Будапешта.
Алгоритм:
Для задания с Будапештом участники использовали Венгерский парламент (высота около 96 метров) как эталонный объект. Сопоставление тени с симуляцией SunCalc позволило сузить время съёмки до утреннего диапазона. Метод работает для любого объекта с известной высотой — фонарные столбы, здания, антенны. Главное — чтобы тень была видна на фото, а не обрезана кадром.
Username enumeration — поиск аккаунтов по имени пользователя на десятках платформ одновременно. В CTF типовое задание: дан email или username, нужно найти связанный профиль на другой платформе, где спрятан флаг или подсказка.
Требования к окружению: Python 3.9+, pip. RAM: 2 ГБ достаточно. Требуется доступ в интернет.
Два основных инструмента — Sherlock и Maigret. Sherlock проверяет username по нескольким сотням платформ; Maigret — его расширенный форк с поддержкой более 2000 сайтов.
# Sherlock — быстрый перебор
pip install sherlock-project
sherlock davidjs1 --timeout 10 --print-found
# Maigret — расширенный перебор с отчётом
pip install maigret
maigret davidjs1 --timeout 10 -HP
Флаг --timeout 10 ограничивает ожидание ответа от каждого сайта, --print-found (Sherlock) или -HP (Maigret) выводят только найденные аккаунты. Maigret с флагом -HP дополнительно генерирует HTML-отчёт с деревом связей.
Критически важное ограничение: оба инструмента дают false positives. Много. Сайт может вернуть HTTP 200 на любой username, и инструмент отметит его как найденный. Каждый результат нужно верифицировать вручную — открыть URL и проверить, существует ли реальный профиль. На CTF с таймером это раздражает, но без верификации утонете в шуме.
Ручная альтернатива через Google Dorks: "davidjs1" site:twitter.com | site:github.com | site:reddit.com — один запрос проверяет несколько платформ с меньшим количеством ложных срабатываний. Для СНГ-ориентированных заданий: "davidjs1" site:vk.com | site:t.me — Telegram и ВКонтакте часто фигурируют в CTF с русскоязычным контекстом.
Авторы CTF-заданий размещают данные на веб-странице, затем удаляют их. Задача участника — раскопать удалённое. Два основных источника:
Wayback Machine (web.archive.org) хранит исторические снапшоты веб-страниц. Если задание даёт URL, первый шаг: https://web.archive.org/web/*/target-url.com покажет все сохранённые версии. Флаг может находиться в версии страницы за определённую дату — проверяйте несколько снапшотов, не только последний.
Кэш Google — быстрый доступ к последней индексированной версии через оператор cache:target.com/page. Работает для недавно удалённого контента, пока Google не обновил индекс.
Cachedview.nl и archive.today — альтернативные кэш-сервисы. Полезны, когда Wayback Machine не имеет снапшота, а кэш Google уже обновился. Бывает окно в пару дней, когда спасает только archive.today.
В типичном CTF-задании категории Cyber Threat Intel может быть дан подозрительный IP-адрес. Участники ищут артефакты через вкладку Relations в VirusTotal — например, ZIP-архив, коммуницировавший с этим IP, имя которого и есть флаг. Wayback Machine и VirusTotal дополняют друг друга: первый восстанавливает удалённый контент, второй показывает инфраструктурные связи.
| Инструмент | Преимущества | Ограничения | Когда использовать | Когда не использовать |
|---|---|---|---|---|
| ExifTool | Полный дамп метаданных, работает offline, поддерживает 400+ форматов | Только метаданные — не анализирует визуальный контент | Первый шаг при получении любого файла | Если файл strip'нут от метаданных |
| Google Dorks | Бесплатно, фильтрация по домену/типу/содержимому | Rate limiting, капча при интенсивном использовании | Поиск утечек, документов, конфигов, поддоменов | Когда данные не проиндексированы |
| Sherlock | Быстрый перебор username по 300+ платформам | Много false positives, не проверяет содержимое профиля | Начальная разведка по username | Когда нужна точная атрибуция (верифицировать вручную) |
| Maigret | 2000+ платформ, HTML-отчёт с визуализацией | Медленнее Sherlock, ещё больше false positives из-за объёма | Глубокая разведка по username после Sherlock | Если нужна скорость на CTF с таймером |
| Yandex Images | Лучший reverse search по лицам | Меньше покрытие за пределами СНГ и Восточной Европы | GEOINT по лицам и CНГ-контенту | Для поиска по англоязычным ландшафтам |
| Google Lens | Распознаёт здания, текст, объекты | Хуже с лицами, иногда агрессивно кропает результаты | Геолокация по архитектуре, ориентирам, вывескам | Для поиска по лицам — берите Yandex |
| SunCalc | Точная хронолокация через симуляцию солнца | Требует известных координат и даты | Определение времени съёмки по теням | Если на фото нет видимых теней |
| Wayback Machine | Миллиарды архивных снапшотов | Не все сайты архивируются, задержка индексации | Восстановление удалённого контента | Для свежих (часы) удалений — кэш Google быстрее |
Разберём типовую цепочку OSINT-задания на основе сценария, характерного для CTF категории SOMINT (Account Attribution).
Условие (иллюстративный пример): перехвачен email user123@example.com. Нужно найти связанный профиль в соцсети и извлечь флаг из био.
Шаг 1 — извлечение username. Из email выделяем username: user123. Большинство людей используют один username на нескольких платформах — это и есть наша зацепка.
Шаг 2 — username enumeration. Запускаем sherlock user123 --timeout 10 --print-found. В выводе получаем список платформ, где найден аккаунт. Но Sherlock может не проверять Bluesky — платформа относительно новая. Поэтому параллельно проверяем вручную: https://bsky.app/profile/user123.bsky.social.
Шаг 3 — анализ профиля. Профиль на Bluesky существует. В био написано: synt{L0h_t0g_z3}. Структура похожа на флаг, но символы — не те, что ожидаем.
Шаг 4 — распознавание кодировки. Слово synt — характерный паттерн ROT13. ROT13 — подстановочный шифр со сдвигом 13: synt → flag. Декодируем всю строку: echo 'synt{L0h_t0g_z3}' | tr 'A-Za-z' 'N-ZA-Mn-za-m'. Результат: flag{Y0u_g0t_m3}.
Шаг 5 — верификация формата. Флаг соответствует формату Th1s_i5_fl4g, указанному в условии. Задание решено.
Цепочка рассуждений заняла четыре перехода: email → username → платформа → кодировка → флаг. Каждый переход — одна логическая операция. Именно эта разбивка на подзадачи отличает системный подход от хаотичного перебора инструментов.
Второй тип цепочки, который встречается реже, но ценится выше — работа с Cyber Threat Intel. Задание даёт IP-адрес. Первый шаг — VirusTotal: ввести IP, перейти на вкладку Relations, просмотреть связанные файлы. Среди артефактов может находиться ZIP-архив — его имя и есть флаг. Тут ключевая компетенция — знание платформ разведки (VirusTotal, Shodan, WHOIS через T1596.002), а не конкретных инструментов.
Для тренировки OSINT-навыков между CTF-соревнованиями подходят специализированные платформы:
| Платформа | Фокус | Уровень | Формат |
|---|---|---|---|
| GeoGuessr | Геолокация по панорамам | Начальный — продвинутый | Интерактивная карта |
| OSINT CTF (osint.industries) | Реалистичные OSINT-сценарии | Средний | Jeopardy-задания |
| TryHackMe (комната OSINT) | Базовые техники разведки | Начальный | Пошаговые задания |
| HackTheBox (OSINT challenges) | Продвинутая разведка | Средний — продвинутый | Jeopardy без подсказок |
| Sourcing Games | Поиск по LinkedIn и соцсетям | Начальный | Квест-формат |
Требования: браузер с доступом в интернет, установленный ExifTool и Python 3.9+ (для Sherlock/Maigret). Отдельная VM не нужна — все инструменты лёгкие.
Чеклист для использования прямо на соревнованиях. Порядок действий — от быстрых проверок к трудоёмким:
exiftool -a -u -g1 файл. Проверить GPS, Comment, Artist, UserComment. Если пусто — strings файл | grep -i flagsherlock username --timeout 10. Проверить результаты вручнуюsite:*.domain.com -www, filetype:env site:domain.com. Проверить Wayback Machine: web.archive.org/web/*/domain.comcache:url в Google, Wayback Machine, archive.todayecho 'строка' | tr 'A-Za-z' 'N-ZA-Mn-za-m'), Base64 (echo 'строка' | base64 -d), hex decodeДевять из десяти OSINT-заданий на CTF решаются комбинацией ExifTool, Google Dorks и reverse image search. Sherlock и Maigret помогают, но только на этапе username enumeration — дальше работает голова, а не скрипт.
Я наблюдаю устойчивый паттерн на CTF-соревнованиях: команды, которые проигрывают, тратят первые десять минут на запуск всех OSINT-инструментов разом. Команды, которые выигрывают, тратят эти десять минут на анализ условия задания и построение гипотезы. Sherlock на 300+ платформах по одному username выдаёт десятки ложных срабатываний; если не знаешь, какую платформу искать, результат утонет в шуме. Google Dork с точным оператором site: решает ту же задачу за один запрос, без false positives. Инструмент — последнее звено в цепочке, не первое.
Второй момент, который почти не обсуждается в русскоязычных разборах: хронолокация и работа с тенями. На западных CTF (Maltego, TraceLabs, GeoGuessr CTF) GEOINT-задания с хронолокацией — стандарт. В русскоязычном CTF-сообществе эта техника практически неизвестна, и команды, владеющие SunCalc, получают серьёзное преимущество на заданиях, где остальные даже не знают, с чего начать. Разведка по открытым источникам — дисциплина, которая развивается через нарешивание и построение ментальных моделей: чем больше разных типов заданий решил, тем быстрее мозг выдвигает правильную гипотезу на новом. Если хочешь не просто читать writeup'ы, а пройти всю цепочку от разведки до эксплуатации самостоятельно — на WAPT разведка покрывается в первых модулях, а дальше собирается полная атака с лабами на каждый кейс.
🚀 Хочешь закрепить на практике? Реши задачи по теме на HackerLab — категория «pentest-machines».
0 комментариев
Пожалуйста, войдите, чтобы оставить комментарий.
Загрузка комментариев...