
На третьем Maltego Community OSINT CTF одна из команд получила единственную зацепку — email davidjs1@deliveryotter.com. Из адреса вытащили username davidjs1, проверили его на Bluesky и нашли профиль, в bio которого валялась строка synt{L0h_t0g_z3}. Кто-то в команде опознал ROT13, декодировал и сдал флаг flag{Y0u_g0t_m3} за четыре минуты. Другие команды ковыряли то же задание больше часа — гуглили email целиком, перебирали платформы наугад, пробовали искать привязанные аккаунты вручную.
Разница между четырьмя минутами и часом — не талант. Это набор отработанных OSINT-приёмов: поиск по никнейму, чтение метаданных, reverse image search, Google Dorking. Ниже — разбор каждого приёма с командами и примерами из реальных CTF-заданий.
OSINT-категория на CTF — задания, где флаг спрятан не в уязвимости сервера, а в открытых источниках: социальных сетях, метаданных файлов, публичных реестрах, спутниковых снимках. Вам дают зацепку (ник, фото, IP-адрес, фрагмент документа) и просят найти конкретный ответ. Подробнее — в нашем обзоре osint для специалиста по информационной безопасности.
В отличие от web или pwn, здесь не нужен Kali с набором эксплойтов. Нужен браузер, пара утилит командной строки и — что важнее любого инструмента — системный подход к перебору гипотез. Шаблона, решающего любой OSINT-таск, не существует. Но повторяющиеся паттерны есть, и именно их стоит разобрать.
Типовые категории OSINT-заданий на соревнованиях:
Microsoft.AppRuntime.5017.214.zip — он и был ответом.Все эти категории объединяет один принцип: разведка на основе открытых источников — это методология, а не конкретный инструмент. Sherlock, ExifTool, Google Dorking решают конкретные подзадачи. Ваша задача — разбить основную цель на подзадачи и последовательно закрыть каждую. По классификации MITRE ATT&CK целая тактика Reconnaissance описывает именно то, чем вы занимаетесь на OSINT-заданиях: Search Open Websites/Domains (T1593), Search Engines (T1593.002), Code Repositories (T1593.003), Gather Victim Identity Information (T1589). Отработка этих техник на CTF напрямую прокачивает навыки для пентеста и threat intelligence.
Больше половины OSINT-заданий на CTF начинаются с никнейма. Вам дают username (или email, из которого username извлекается) — и нужно найти все связанные аккаунты, вытащить из них информацию и собрать флаг. Это прямая реализация техники Gather Victim Identity Information (T1589) из MITRE ATT&CK.
Три основных инструмента для username search, каждый со своей нишей:
Sherlock — самый известный. Проверяет никнейм по 300+ сайтам, выдаёт список найденных профилей. Предусловия: Python 3.6+, интернет. Запуск минимален:
python3 sherlock.py target_username
# Результат: список URL с найденными профилями
# Фильтрация по конкретным сайтам:
python3 sherlock.py target_username --site twitter --site github
Maigret — форк Sherlock с расширенной базой (2000+ сайтов) и аналитикой сверху. Умеет генерировать HTML-отчёт с данными, которые вытащил из профилей: имя, город, дата регистрации. Для CTF Maigret часто полезнее Sherlock — он покрывает нишевые платформы (Keybase, Mastodon-инстансы, региональные форумы), где авторы тасков любят прятать зацепки. Запуск аналогичен: maigret target_username --html.
WhatsMyName — веб-проект с открытой JSON-базой сайтов для проверки. Работает через браузер на whatsmyname.app без установки. Хорош для быстрой проверки «в поле», когда нет доступа к терминалу.
Типичный сценарий на CTF: дано email user42@example.com. Первый шаг — вытащить username user42 и прогнать через Maigret. Среди найденных профилей ищете тот, где в bio, посте или аватарке спрятан флаг или следующая зацепка. На Maltego Community CTF (согласно их walkthrough) задание Account Attribution-1 строилось именно так: email → username → профиль на Bluesky → ROT13-строка в bio → декодированный флаг.
Главная ошибка новичков — путать username и display name. Username (@davidjs1) — уникальный идентификатор на платформе, часть URL профиля. Display name (David Johnson) — произвольная строка, которую пользователь меняет когда захочет. На CTF задание может дать display name и ожидать, что вы сами найдёте username. Или наоборот — дать username одной платформы, под которым на другой платформе человек зарегистрирован с вариацией.
Что проверить, если username search ничего не дал:
target, target_, target.osint, target2024. Авторы тасков часто используют слегка модифицированный ник на разных платформах.TargetUser и targetuser — потенциально разные аккаунты.target42 на GitHub и t4rg3t на Twitter. Ищите связующие элементы: одинаковый аватар, совпадение текста в bio, ссылки между аккаунтами.Ещё один приём для расширения цифрового следа: если задание даёт email — проверьте его через Have I Been Pwned (haveibeenpwned.com). Сервис покажет, в каких утечках фигурирует адрес. Классы данных из утечки (usernames, IP-адреса, даты рождения) дают дополнительные зацепки. Скажем, утечка Plex в 2015 году включала usernames наряду с email — если целевой адрес там был, вы получаете ещё один ник для поиска.
Второй по частоте тип OSINT-заданий на CTF — файл с метаданными. Вам дают фотографию, PDF, DOCX или аудио, и флаг спрятан в служебных полях, которые не видны при обычном просмотре. Категория кажется простой, но именно на ней теряется большинство очков — из-за банальной невнимательности.
ExifTool — стандарт для извлечения метаданных из файлов более 200 форматов. Одна команда покрывает 90% CTF-заданий по метаданным:
exiftool suspicious_image.jpg
# Выводит ВСЕ поля: GPS, камера, автор, софт, комментарии
# Для рекурсивного анализа папки с файлами задания:
exiftool -r ./challenge_files/
# Извлечь thumbnail из JPEG:
exiftool -b -ThumbnailImage photo.jpg > thumb.jpg
На что смотреть в выводе ExifTool:
| Поле метаданных | Что может содержать | Пример флага / зацепки |
|---|---|---|
| GPS Position | Координаты съёмки | Вбить в Google Maps — получить адрес |
| Author / Artist | Имя создателя файла | Флаг напрямую или ник для username search |
| Comment / XP Comment | Произвольный текст | Часто флаг в чистом виде или Base64 |
| Software / Creator Tool | Программа создания | Подсказка на следующий шаг расследования |
| Thumbnail Image | Миниатюра внутри JPEG | Оригинал до редактирования (замазки) |
| Create Date | Дата создания | Уточнение временного окна события |
Авторы заданий иногда помещают флаг в нестандартные поля (XMP, IPTC), которые не показываются при беглом просмотре свойств файла в ОС. Только exiftool с полным выводом гарантирует, что вы ничего не пропустите. Я на этом обжигался: один раз 40 минут искал флаг в hex-дампе, а он лежал в IPTC-поле Caption-Abstract. Обидно.
Метаданные — не единственное место. Несколько приёмов, которые спасают на CTF:
PDF-документы содержат свойства Title, Subject, Keywords — видны через exiftool file.pdf или через Ctrl+D в PDF-ридере. Авторы тасков прячут зацепки в полях, куда никто не смотрит: Producer, Trapped, Custom Properties.
DOCX и XLSX — это ZIP-архивы. Распакуйте командой unzip report.docx -d extracted/ и загляните в файл docProps/core.xml. Там лежат metadata автора, дата последнего изменения, а иногда и скрытые комментарии, которые не видны при открытии документа в Word.
Строки в бинарных файлах. Если ExifTool ничего полезного не показал, а задание явно про файл — попробуйте strings suspicious_image.jpg | grep -i flag. Иногда флаг тупо дописан в конец файла как обычный текст. Не стеганография, не шифрование — просто текст после маркера конца JPEG. На CTF для новичков такое встречается регулярно.
ELA (Error Level Analysis). Онлайн-сервис FotoForensics (fotoforensics.com) показывает области изображения, которые подвергались редактированию — они отображаются ярче на карте ошибок сжатия. На CTF это помогает обнаружить вклеенный текст или замазанную область, под которой скрыт нужный фрагмент.
GEOINT-задания — одна из самых зрелищных категорий на OSINT CTF. Вам дают фотографию без метаданных и просят определить место съёмки, время или конкретный объект на снимке. Ни GPS-координат, ни подписей — только визуальные подсказки. Чистый детектив.
Первое действие при любом задании с картинкой — reverse image search. Три сервиса, которые стоит проверять последовательно (каждый работает по своему алгоритму, и результаты различаются):
Конкретный пример. На Maltego CTF (задание Account Attribution-2) участникам дали фотографию с видом на характерное здание через реку. Через reverse image search в Google определили ориентир — здание Парламента Будапешта. Затем через Google Street View подобрали ракурс и вычислили, что фото сделано из Hotel Victoria. Альтернативный путь — поиск по публичным веб-камерам: на EarthCam нашлась камера в том же отеле с идентичным видом, что подтвердило локацию.
Если reverse image search не находит совпадений — обрежьте фото. Уберите небо, оставьте только здание или вывеску. Поисковики часто работают лучше с фрагментами, чем с полным кадром. Ещё один приём — зеркально отразить изображение: авторы тасков иногда намеренно это делают, чтобы затруднить прямой поиск.
Часть заданий просит не только «где» сделан снимок, но и «когда». Тут работает хронолокация — определение времени суток по положению солнца и теням на фото.
Алгоритм по шагам:
На Maltego CTF (задание Account Attribution-3) участники использовали высоту здания Парламента Будапешта (~96 метров — публичная информация) как референс для оценки длины тени. По углу солнца в SunCalc и наблюдаемой тени определили, что фото сделано между 8:00 и 10:00 утра. Это и был правильный ответ.
Дополнительные визуальные маркеры времени, которые стоит проверять:
Google Dorking — использование операторов поиска для точечных запросов. По MITRE ATT&CK это техника Search Engines (T1593.002, Reconnaissance). На CTF дорки работают в двух сценариях: найти информацию о таргете в индексе Google или обнаружить контент, который автор задания «случайно» оставил проиндексированным.
Ключевые операторы и их применение:
| Оператор | Назначение | Пример для CTF |
|---|---|---|
site: |
Ограничить поиск одним доменом | site:pastebin.com "target_username" |
inurl: |
Искать строку в URL страницы | inurl:user/target42 |
filetype: |
Искать файлы конкретного типа | filetype:pdf "confidential" site:target.com |
intitle: |
Искать строку в заголовке | intitle:"index of" target_files |
"точная фраза" |
Точное совпадение фразы | "target_username" "flag{" |
cache: |
Кешированная версия страницы | cache:deleted-page.example.com |
Комбинируйте операторы для точности: site:github.com "target_username" filetype:py найдёт Python-файлы конкретного пользователя на GitHub. Это напрямую реализует технику Code Repositories (T1593.003) — поиск в публичных репозиториях, где разработчики иногда оставляют credentials и конфиденциальные данные прямо в коде.
Частая ошибка новичков: поиск target_username без кавычек — результаты тонут в нерелевантном шуме. Кавычки для точного совпадения — первое правило дорков.
Wayback Machine (web.archive.org) хранит снимки веб-страниц за разные годы. На CTF этот архив спасает в двух ситуациях:
Удалённый контент. Автор задания опубликовал пост или страницу, затем удалил — но Wayback Machine успел сохранить копию. Вбейте URL в поисковую строку архива и проверьте доступные снапшоты по датам.
Изменённые профили. Пользователь сменил bio, аватар или username. В архивной версии могут остаться старые данные, которые и нужны для решения. Это особенно актуально для заданий, где цифровой след человека разнесён по времени.
Если Wayback Machine не архивировал нужную страницу — проверьте альтернативы: кеш Google (cache:URL) и кеш Яндекса (через «сохранённая копия» в результатах поиска). Поисковые боты индексируют страницы значительно чаще, чем краулер archive.org.
Для поиска в Code Repositories (T1593.003) не ограничивайтесь GitHub. Проверяйте GitLab, Bitbucket и особенно Gist — site:gist.github.com "target_username" часто находит сниппеты кода, которых нет в публичных репозиториях пользователя.
Вместо того чтобы бросаться в поиск по всем инструментам одновременно — используйте метод последовательных подзадач. Разберём полный цикл решения.
Задание: дан email suspect@example.org. Найдите город, в котором подозреваемый провёл встречу.
Шаг 1 — Извлечение зацепок. Из email берём username suspect и домен example.org. Два направления для поиска.
Шаг 2 — Username search. Прогоняем suspect через Maigret: maigret suspect --html. Находим аккаунты на Twitter, GitHub, Reddit.
Шаг 3 — Анализ контента аккаунтов. Twitter — пусто. GitHub — один репозиторий без кода, но в README ссылка на сокращённый URL. Reddit — пост с фотографией вида из окна, подпись «meeting day».
Шаг 4 — Работа со ссылками. Сокращённый URL из GitHub ведёт на хостинг изображений. Скачиваем фото. Параллельно скачиваем фото из Reddit-поста.
Шаг 5 — Metadata check. Запускаем exiftool meeting_photo.jpg. GPS-координат нет (автор удалил EXIF). Но в поле Creator стоит iPhone 14 Pro, в Create Date — конкретная дата.
Шаг 6 — Visual analysis. На фото видно здание с характерной архитектурой и вывеска на иностранном языке. Reverse image search через Yandex Images находит совпадение — известный ориентир в конкретном городе.
Шаг 7 — Верификация. Через Google Street View подтверждаем ракурс. Вид совпадает с определённой точкой. Ответ: название города (или конкретный адрес, в зависимости от формата флага).
Ключевое в этом методе: на каждом шаге решается одна подзадача, результат фиксируется, и только потом — переход к следующей. Не пытайтесь одновременно анализировать фото, гуглить ник и перебирать дорки. Это тот же workflow, что использует аналитик при реальной OSINT-разведке: зацепка → расширение поверхности данных → верификация находки.
Про формат флага. Формат всегда указан в условии задания. Если ответ Budapest, а формат FLAG{answer} — сдавайте FLAG{Budapest}. Ошибки в регистре, пробелах и транслитерации — частая причина отклонения правильного по сути ответа. Перед сдачей перечитайте условие буквально.
Про кодировки. Если найденная строка выглядит как бессмыслица — попробуйте стандартные декодировки: ROT13 (synt → flag), Base64 (строка заканчивается на = или ==), URL-encoding (символы %XX), hex (пары символов 0-9, a-f). На CTF для OSINT для новичков экзотические шифры встречаются редко — обычно хватает одного из четырёх вариантов.
Прошло 20 минут и прогресса нет — пройдитесь по списку:
По никнейму: - Попробовали вариации с цифрами, точками и подчёркиваниями? - Проверили нишевые платформы (Bluesky, Mastodon, Keybase), а не только крупные соцсети? - Разделили display name и username — искали каждый отдельно? - Проверили email в Have I Been Pwned для поиска дополнительных ников? - Посмотрели GitHub Gists и GitLab помимо основного GitHub?
По файлу и метаданным:
- Запустили exiftool с полным выводом, а не просто свойства файла в ОС?
- Попробовали strings file | grep -i flag?
- Проверили thumbnail внутри JPEG — он мог сохранить оригинал до редактирования?
- Распаковали DOCX/XLSX как ZIP и проверили docProps/core.xml?
- Открыли файл в hex-редакторе, проверили начало и конец?
По фото и геолокации: - Сделали reverse image search во всех трёх поисковиках (Yandex, Google Lens, TinEye)? - Попробовали обрезать фото и искать по фрагменту? - Прочитали текст на вывесках — язык указывает на страну? - Проверили доменные зоны на номерных знаках автомобилей? - Если место известно — проверили SunCalc для определения времени по теням?
По общим паттернам: - Перечитали условие задания буквально? Подсказка часто спрятана в формулировке. - Проверили исходный код HTML-страницы задания? Иногда зацепка в комментариях. - Попробовали декодировать подозрительные строки: ROT13, Base64, URL-encoding, hex? - Поискали в Google точные фразы из условия задания в кавычках? - Проверили Wayback Machine для ссылок, упомянутых в задании?
Если нашли данные, но они не подходят как флаг — ищите связь между найденными фрагментами. Сложные OSINT-таски на CTF часто требуют склейки нескольких кусочков. Как в примере с BTC-кошельком на KubanCTF: три фрагмента адреса (начало из текста + середина из QR-кода + конец из верхней строки) складывались в полный 34-символьный адрес, по которому уже находилась связь с WannaCry и Lazarus Group.
За пару лет подготовки OSINT-тасков для CTF и участия в чужих турнирах я заметил закономерность: 80% заданий уровня easy и medium решаются комбинацией трёх базовых приёмов — username search, анализ EXIF метаданных и Google Dorking. Не пятнадцати хитрых техник, а трёх, доведённых до автоматизма.
Проблема новичков не в нехватке инструментов. Maigret ставится за минуту, ExifTool работает одной командой, дорки — просто операторы поиска. Проблема — в отсутствии дисциплины расследования: умения записывать каждый шаг, фиксировать тупики и последовательно отсекать гипотезы. Команды, которые ведут заметки (буквально «проверил X — результат Y — следующая гипотеза Z»), на каждом турнире решают вдвое больше тасков, чем те, кто хаотично прыгает между инструментами.
OSINT — не интуиция и не магия «умного гуглинга». Это воспроизводимый процесс с чёткими шагами. Чем раньше начнёте относиться к нему как к процессу, тем быстрее перестанете застревать. Попробуйте взять любой таск с прошедшего CTF (архивы лежат на CTFtime), решить его по шагам из этой статьи и записать каждый шаг. Если хотите системно закрыть базу — на IB Basics эту цепочку разбирают с лабами, а не обрывками из случайных видео.
🚀 Хочешь закрепить на практике? Реши задачи по теме на HackerLab — категория «pentest-machines».
0 комментариев
Пожалуйста, войдите, чтобы оставить комментарий.
Загрузка комментариев...