
На последнем CTF одна команда потратила сорок минут на OSINT-таск, который решался за пять. Весь флаг лежал в EXIF-комментарии фотографии, а ребята гоняли никнейм через reverse image search и копались в давно удалённых профилях. Знакомо? OSINT-категория выглядит простой ровно до момента, когда садишься решать. Инструменты есть, данные открыты, но без внятного workflow задача превращается в хаотичное перескакивание между десятком вкладок — и через час ты понимаешь, что пропустил зацепку в первом же профиле. Разберём три базовых вектора OSINT с нуля для CTF — поиск по username, разведку по email и анализ метаданных фото — с конкретными командами, цепочкой действий и разбором ловушек, на которые попадаются даже опытные игроки.
Прежде чем открывать терминал, разберёмся с логикой заданий. Большинство OSINT-тасков в CTF строятся по одному шаблону: организаторы дают стартовую точку — никнейм, email, фотографию или URL — и ждут, что участник по цепочке открытых источников доберётся до флага. Согласно CTF OSINT reference, типичный паттерн: «You are given a starting point — a name, username, email, photo, or website URL». Задача — собрать разрозненные куски и выстроить из них маршрут к ответу.
По классификации MITRE ATT&CK техники, которые мы используем в CTF OSINT, попадают в тактику Reconnaissance. Поиск по соцсетям — T1593.001 (Social Media), работа с поисковиками и дорками — T1593.002 (Search Engines), сбор email-адресов — T1589.002 (Email Addresses), определение местоположения по фото — T1591.001 (Determine Physical Locations). В реальном пентесте эти же техники применяются на этапе разведки перед атакой. В CTF — для нахождения флага. Механика идентична, различается только цель.
Типичные стартовые точки OSINT для CTF:
Отличие CTF от реальной разведки по открытым источникам: все данные размещены организаторами намеренно. Нет этических ограничений по ст. 7 ФЗ-152, потому что «субъект» — вымышленный персонаж. Но привычка работать системно и документировать находки пригодится, когда перейдёте к реальным задачам.
Username — самая частая стартовая точка в CTF OSINT. Задача: по одному никнейму найти все связанные аккаунты на разных платформах и вытащить из них флаг или следующую зацепку. Разведка по открытым источникам начинается именно здесь — с первого цифрового следа.
Sherlock — основной инструмент для массового поиска username по сотням сайтов. Он шлёт запросы к каждой платформе и проверяет, существует ли аккаунт с заданным именем. В CTF это первый шаг после получения никнейма.
Запуск простой — указываешь username, получаешь список найденных платформ. Но есть нюанс, который регулярно ломает новичков: Sherlock даёт ложные срабатывания. Некоторые платформы возвращают HTTP 200 на любой запрос, и инструмент помечает аккаунт как найденный, хотя его не существует. По данным CTF OSINT reference, платформенные false positives — документированная проблема, поэтому whatsmyname.app ведёт актуальный список таких платформ и учитывает их при проверке.
Maigret — форк Sherlock с расширенной базой сайтов и дополнительной аналитикой. Он умеет вытаскивать метаданные профилей: bio, дату регистрации, ссылки и другие публичные данные (username metadata mining). Для CTF это критично — иногда флаг спрятан не на самой странице профиля, а в метаданных, которые Sherlock просто не покажет. Maigret формирует отчёт в PDF с собранной аналитикой — удобно, когда таймер тикает.
# Sherlock: установка и поиск username по платформам
# pip install sherlock-project
sherlock targetuser123 --output results.txt
# Maigret: расширенный поиск с отчётом
maigret targetuser123 --pdf report.pdf
Порядок действий при работе с username:
WhatsMyName.app — веб-сервис, который проверяет username по нескольким сотням сайтов (база обновляется чаще, чем у Sherlock). Работает через браузер. Запускайте его параллельно с Sherlock — базы пересекаются не полностью, и один инструмент находит то, что пропустил другой. Ещё один чекер — namechk.com — изначально создавался для проверки доступности никнеймов при регистрации, но в CTF работает как быстрая проверка существования аккаунтов.
Критический момент: если автоматические OSINT инструменты для начинающих ничего не нашли — это не тупик. В CTF часто используют платформы, которых нет в базах. Проверяйте вручную: Steam, Discord, Telegram, GitHub, Flickr. Организаторы тасков любят прятать профили на менее очевидных площадках.
Я не раз сталкивался с ситуацией, когда автоматика молчит, а профиль обнаруживается через обычный Google dork: "targetuser123" site:reddit.com или inurl:targetuser123. Поисковая разведка через Search Engines (T1593.002 по MITRE ATT&CK) — это не только про инструменты, но и про ручную работу с операторами поиска. Оператор site: ограничивает выдачу конкретной платформой, кавычки требуют точного совпадения — базовые приёмы Google dorking, которые закрывают массу задач.
Если стартовая точка — email-адрес, стратегия меняется. Здесь нужно определить, на каких сервисах этот email зарегистрирован, не засветился ли он в утечках данных и нет ли связи с другими аккаунтами. Поиск по email OSINT — всегда многоступенчатый процесс.
holehe — Python-утилита, которая проверяет, зарегистрирован ли email на конкретных сервисах. Механизм работы красивый: утилита использует формы восстановления пароля и регистрации — шлёт запрос «забыл пароль» и по ответу сервиса определяет, существует ли аккаунт. Для большинства платформ это пассивный метод, но некоторые сервисы всё же отправляют владельцу письмо о попытке восстановления — что потенциально заметно для хозяина аккаунта.
Для CTF holehe полезен тем, что показывает конкретные платформы с активной регистрацией. Дальше идёшь на эти платформы и ищешь профиль по email или связанному username. Организаторы иногда регистрируют фейковый аккаунт на одной неочевидной платформе — holehe её найдёт, Sherlock — нет, потому что Sherlock ищет по username, а не по email.
h8mail работает по другому вектору — поиск email в публичных утечках данных. Он обращается к нескольким API и paste-сервисам, показывая, в каких утечках адрес фигурирует. В CTF организаторы иногда создают фейковые записи на Pastebin или аналогичных площадках, имитируя утечку с паролем или дополнительными данными. h8mail такие записи находит и вытаскивает контекст.
Have I Been Pwned (HIBP) — сервис Троя Ханта для проверки email по базам утечек. Масштаб данных, который сервис агрегирует, впечатляет цифрами: утечка LinkedIn (2012) — 164 611 595 записей с email-адресами и паролями. Tumblr (2013) — ещё 65 469 298 записей. Combo-лист Exploit.In (2016) объединил 593 427 119 уникальных email-адресов из множества источников. В 2024 году скомпрометировали даже Internet Archive (archive.org) — 31 081 179 записей с email, паролями и username'ами.
В CTF утечки используются двумя способами. Первый: организаторы создают email, который «засветился» в реальной или имитированной утечке, и участник должен найти связанный пароль или username. Второй: сам факт наличия email в определённой утечке — зацепка для следующего шага. Если email нашёлся в утечке платформы X — значит, на этой платформе есть аккаунт с данными.
Порядок действий при работе с email в CTF:
"target@email.com" — paste-сервисы, форумы, публичные профили@ и прогоняете через SherlockОдин нюанс, который часто упускают в азарте: часть email до собаки — это потенциальный username. Если адрес dr4gonfly99@gmail.com, то dr4gonfly99 — первый кандидат для поиска по username OSINT. Очевидно? Да. Но под давлением таймера забывается в половине случаев.
Анализ метаданных фото — самый «благодарный» вектор в CTF OSINT. Если задание содержит фотографию, первое действие — вытащить EXIF до любых других манипуляций. По рекомендациям из CTF OSINT reference (ctf.support): «Before uploading, always check the image locally with exiftool — flags and coordinates are often left in metadata». Звучит элементарно, но количество людей, которые сначала загружают фото в Google Lens и только потом вспоминают про EXIF, стабильно удивляет.
exiftool — стандарт для извлечения метаданных из изображений. Читает EXIF, IPTC, XMP и десятки других форматов из JPEG, PNG, TIFF и прочих типов файлов. В контексте OSINT с нуля — это первый инструмент, который нужно поставить и научиться запускать.
# Все метаданные из изображения
exiftool challenge_photo.jpg
# Только GPS-координаты
exiftool -gpslatitude -gpslongitude challenge_photo.jpg
# Комментарии и описания — частые места для флага
exiftool -comment -usercomment -imagedescription challenge_photo.jpg
# Абсолютно все поля, включая неизвестные
exiftool -a -u -g1 challenge_photo.jpg
Где именно прячут флаги в EXIF-данных фотографии:
| Поле EXIF | Что ищем | Частота в CTF |
|---|---|---|
| Comment / UserComment | Прямой текст флага или подсказка | Высокая |
| ImageDescription | Закодированный флаг (Base64, hex) | Средняя |
| Artist / Author | Username или ссылка на профиль | Средняя |
| GPS Position | Координаты места, имя которого — часть флага | Высокая |
| Software / Creator Tool | Подсказка в названии программы | Низкая |
| XMP-dc:Description | Расширенные метаданные, скрытый текст | Средняя |
GPS-координаты в EXIF — классика тасков на геолокацию по фото OSINT. Камеры смартфонов записывают координаты в метаданные по умолчанию. В CTF организаторы либо оставляют реальные координаты (и нужно определить место), либо подменяют их — координаты ведут к объекту, название которого является частью ответа.
Формат GPS в EXIF — градусы, минуты, секунды (DMS): например, 55 deg 45' 21.00" N, 37 deg 37' 02.00" E. Для работы с картами конвертируйте в десятичный формат и вставляйте в Google Maps. Большинство онлайн-конвертеров делают это за секунду.
Ловушка, на которую я попадался не один раз: exiftool показывает координаты, находишь точку на карте, записываешь название города — и это неправильный ответ. Организаторы подменили координаты, они указывают на конкретное здание (музей, памятник, мост), название которого нужно использовать как ключ для дешифровки другой части задания. Всегда проверяйте не просто где точка, а что именно находится по этим координатам. Zoom in до упора.
Дополнительный приём: команда strings challenge_photo.jpg извлекает все текстовые строки из бинарного файла. Иногда флаг вписан не через стандартные EXIF-поля, а просто как текстовая строка, дописанная в конец файла. exiftool такое не покажет, а strings — покажет. Это на стыке OSINT и forensics, но в CTF границы между категориями размыты.
Не каждая фотография в CTF содержит метаданные. Соцсети — Twitter/X, Facebook, Instagram — удаляют EXIF при загрузке. Если метаданные пусты, переходите к визуальному анализу и обратному поиску.
Обратный поиск изображений — загрузка картинки в поисковик для нахождения оригинала или визуально похожих снимков. Три основных движка дают принципиально разные результаты, и использовать нужно все три:
| Движок | Сильная сторона | Когда использовать |
|---|---|---|
| Google Lens | Распознавание объектов, текста на вывесках | Первый шаг, универсальный инструмент |
| Yandex Images | Распознавание лиц, СНГ и восточноевропейский контент | Когда на фото есть люди или кириллица |
| TinEye | Точные совпадения, хронология появления изображения | Когда нужно найти первоисточник публикации |
Приём из практики: не загружайте фото целиком. Если на изображении есть вывеска магазина, логотип или характерный объект — вырежьте этот фрагмент и ищите его отдельно через Google Lens. По данным CTF OSINT reference: «Isolate distinctive elements (shop signs, building facades) and search via Google Lens for better results than full-scene search». Кропнутый фрагмент почти всегда даёт более точные результаты, чем полная сцена.
Когда нет ни EXIF, ни совпадений в reverse image search, остаётся анализ визуального содержимого. Систематический чеклист для геолокации по фото:
Для верификации координат по теням используют SunCalc — сервис показывает положение солнца в любой точке мира на любую дату и время. В CTF это помогает, когда на фото видны длинные тени и есть данные о дате съёмки из EXIF (даже если GPS удалён, дата может остаться). Для поиска по элементам инфраструктуры — OpenRailwayMap для железных дорог и OpenInfraMap для энергетических объектов. Звучит экзотично, но в GeoGuessr-подобных CTF-тасках эти ресурсы спасали не раз.
Ещё один неочевидный приём: если на фото есть отражённый или зеркальный текст (вывеска в отражении лужи или стекла), переверните изображение горизонтально и прочитайте текст. Поиск по фрагменту текста в кавычках через Google часто выводит на конкретный адрес.
Разберём конкретную цепочку действий на примере задания: «Найдите флаг, связанный с пользователем dr4gonfly99». Стартовая точка — только username.
Шаг 1: пробиваем username. Запускаем python3 sherlock dr4gonfly99. Допустим, результаты показывают аккаунты на GitHub, Reddit и Steam. Параллельно проверяем через WhatsMyName.app — он дополнительно находит Flickr. Открываем каждый профиль вручную, игнорируя платформы, которые Sherlock пометил как найденные, но где профиль фактически отсутствует (false positive).
Шаг 2: анализируем профили. На GitHub — пустой репозиторий, но в bio указан email: dr4gonfly99@proton.me. На Reddit — два поста в географическом сабреддите. На Steam — аватарка с фотографией улицы. На Flickr — три фотографии с описаниями.
Шаг 3: проверяем email. Прогоняем dr4gonfly99@proton.me через holehe — подтверждается регистрация на нескольких платформах, включая Flickr (уже нашли) и WordPress. Идём на WordPress — находим блог с одним постом, в тексте которого есть ссылка на «любимое место».
Шаг 4: вытаскиваем EXIF. Скачиваем фотографии с Flickr, запускаем exiftool photo.jpg. В поле GPS Position — координаты Берлина. В поле UserComment — flag{0s1nt_m4st3r_2025}.
Шаг 5: верифицируем. Координаты совпадают с географией Reddit-постов. Флаг найден.
Вся цепочка: username → GitHub (email) → holehe (WordPress + Flickr) → EXIF (флаг + координаты). Четыре шага, три инструмента, ноль взлома. Это и есть практический OSINT для CTF.
За время решения CTF-тасков по OSINT я собрал список граблей, на которые наступал сам или наблюдал у других:
Подменённые метаданные. Организаторы намеренно вписывают в EXIF ложные GPS-координаты, ведущие в океан или на Северный полюс. Если координаты выглядят абсурдно — это подсказка: настоящий ответ нужно искать не в метаданных, а в визуальном содержимом фото. Иногда подмена тоньше — координаты ведут на реальное место, но это не конечный ответ, а промежуточный шаг.
Мёртвые аккаунты. Username существует на платформе, но профиль пуст или удалён. Wayback Machine (web.archive.org) может показать сохранённую копию профиля до удаления. Кеш Google тоже стоит проверить: cache:URL_профиля покажет последнюю проиндексированную версию страницы. Организаторы иногда намеренно удаляют профиль после создания задания, ожидая, что участник догадается проверить архивы.
Флаг в нестандартном EXIF-поле. Не ограничивайтесь полями Comment и GPS. Используйте exiftool -a -u -g1 image.jpg — эта команда покажет абсолютно все поля, включая неизвестные и кастомные. Флаг может лежать в Photoshop:DocumentNotes, IPTC:Caption-Abstract или в любом произвольном XMP-поле.
False positives автоматики. Sherlock говорит «аккаунт найден», а при переходе — страница 404 или чужой профиль с совпавшим шаблоном URL. Каждую ссылку из автоматического отчёта нужно проверять визуально. Полагаться на зелёные галочки в терминале — путь к потере времени.
Кодированные флаги. Флаг лежит в метаданных, но в Base64, hex или ROT13. Строка вроде ZmxhZ3t0ZXN0fQ== — это Base64 от flag{test}. Учитесь распознавать форматы кодирования визуально: Base64 содержит = в конце, hex состоит из символов 0-9 и a-f, а ROT13 выглядит как бессмысленный текст латиницей.
Соцсети стирают EXIF. Twitter/X, Facebook, Instagram удаляют метаданные при загрузке изображений. Если задание ссылается на фото в соцсети — ищите оригинал через Wayback Machine, альтернативные хостинги или другие платформы, которые EXIF не трогают (Flickr, Google Photos по прямой ссылке).
Вложенные файлы. В тасках повышенной сложности внутри JPEG может быть спрятан ZIP или другой файл (стеганография). Это уже за пределами чистого OSINT и ближе к forensics, но базовая проверка не повредит — binwalk challenge_photo.jpg покажет, есть ли внутри что-то лишнее.
Три правила, экономящие время:
exiftool. Пять секунд проверки спасают от двадцати минут ручного анализаБольшинство CTF-игроков, с которыми я общаюсь, относятся к OSINT как к «лёгкой категории» — не надо реверсить бинарники, не надо писать эксплойты. Это ловушка. По факту OSINT-таски забирают больше всего времени на соревнованиях. Не потому что они сложные технически, а потому что участники подходят к ним без системы. Запускают Sherlock, получают двадцать результатов, открывают каждый, теряются в десятке вкладок и через час осознают, что пропустили зацепку в первом же профиле.
Проблема не в инструментах — Sherlock, exiftool и holehe работают за секунды. Проблема в отсутствии чёткого workflow: стартовая точка → автоматический перебор → ручная верификация → следующая зацепка → флаг. Кто выстраивает эту цепочку до старта таймера — тот забирает first blood.
И второй момент, который мало кто проговаривает вслух: CTF OSINT — не абстрактное упражнение. По данным CrowdStrike Global Threat Report 2025, 75% реальных вторжений начинаются с использования действительных учётных данных, а IBM X-Force фиксирует рост атак через валидные креды на 71% за год. Те же техники разведки — сбор email'ов (T1589.002), поиск по соцсетям (T1593.001), анализ утечек — реальные атакующие применяют для подготовки к credential stuffing и целевому фишингу. Разница только в целях: мы ищем текстовый флаг, они — точку входа в инфраструктуру. OSINT-категория в CTF — не разминка между «настоящими» тасками, а тренировка навыка, который напрямую конвертируется в профессию. Если хочется не просто решать таски, а пройти путь до OSCP с системной подготовкой по веб-разведке — на WAPT эту цепочку проходят в первых модулях с лабами на каждый вектор.
🚀 Хочешь закрепить на практике? Реши задачи по теме на HackerLab — категория «pentest-machines».
0 комментариев
Пожалуйста, войдите, чтобы оставить комментарий.
Загрузка комментариев...