
Первый CTF — онлайн-jeopardy на 24 часа. Я пришёл ломать серверы соперников, а попал на платформу с двумя сотнями задач-головоломок в шести категориях. Два часа ушло на разбор правил, ещё час — на осознание, что половина моих инструментов бесполезна для категорий, о которых я вообще не слышал. Итог: нижняя четверть таблицы. Через год та же команда из трёх человек на attack-defense турнире вошла в десятку — и дело было не в скачке навыков, а в понимании того, как устроены форматы CTF соревнований. Разница между «решай головоломки» и «обороняй инфраструктуру, одновременно атакуя чужую» определяет всё: набор инструментов, состав команды, стратегию на каждую минуту. Разберём оба формата так, чтобы к первому турниру вы пришли с ясной картиной.
CTF (Capture The Flag) — соревнования по кибербезопасности, где участники ищут скрытые строки-«флаги» в уязвимых системах, файлах или приложениях. Флаг — строка в определённом формате, заданном организаторами. Выглядит примерно так: flag{you_found_me} или CTF{s3cur1ty_r0cks}. Формат объявляют заранее, чтобы ты точно знал, что ищешь.
По данным CTFtime — крупнейшего агрегатора capture the flag соревнований — ежегодно проходят сотни турниров: от студенческих на 20 команд до глобальных с тысячами участников. Первый jeopardy CTF провели на конференции DEF CON в 2000 году (по данным blog.cyber-edu.co), и с тех пор формат разделился на два направления:
Есть ещё mixed CTF — гибрид обоих форматов, и King of the Hill — борьба за удержание контроля над общим сервером. Но jeopardy и attack-defense — два фундамента, от которых отталкивается всё остальное. Понимание того, как проходят соревнования CTF в каждом из этих форматов, определяет успех участия.
Jeopardy — самый распространённый формат среди онлайн CTF для начинающих. Причина проста: он масштабируется от одного участника до тысячи команд, не требует сложной сетевой инфраструктуры и допускает удалённое участие из любой точки мира.
Механика прямолинейная. Организаторы размещают задачи на платформе (чаще всего CTFd — open-source система, которую легко поднять в Docker). Каждая задача привязана к категории и стоит определённое количество баллов. Выбираете задачу, скачиваете файл или подключаетесь к сервису, находите флаг и вбиваете его в поле на платформе. Порядок решения — на ваше усмотрение: можете начать с лёгких за 50 баллов или сразу вгрызться в 500-балльный хардкор.
Время обычно ограничено: от 6 до 48 часов. На DEF CON CTF Qualifier 2020 свыше 1300 команд из разных стран соревновались в онлайн-формате (по данным blog.cyber-edu.co). DefCamp D-CTF 21-22 собрал более 1000 команд и свыше 3000 игроков из 96 стран — тоже полностью онлайн. Участвовать в CTF соревнованиях jeopardy-формата можно и в одиночку — ограничения задаёт конкретный организатор.
Задачи в jeopardy CTF делятся на категории. Каждая проверяет отдельный набор навыков. Вот основные — и что стоит знать о каждой.
Web — поиск и эксплуатация уязвимостей в веб-приложениях. SQL-инъекции, XSS, SSRF, обход авторизации. По классификации OWASP, 94% приложений содержат проблемы с контролем доступа (A01:2021 — Broken Access Control), инъекции — на позиции A03:2021. Именно такие сценарии моделируют CTF-задачи. В терминах MITRE ATT&CK web-задачи чаще имитируют технику Exploit Public-Facing Application (T1190, Initial Access). На практике: находите уязвимый параметр, подбираете payload, вытаскиваете флаг.
PWN (binary exploitation) — эксплуатация уязвимостей в скомпилированных программах. Buffer overflow, format string, heap exploitation. Обычно дают бинарник для Linux, к которому нужно написать эксплойт. Основной инструмент — библиотека pwntools для Python. Категория считается одной из самых зубодробительных — зато и баллов дают больше всего.
Crypto (криптография) — взлом шифров и анализ криптографических протоколов. От классического Цезаря и Виженера до RSA с косяками в реализации. Задачи могут включать кодировки — Morse, Base64, XOR. Для тренировки рекомендую CryptoPals — практический курс по криптоатакам, после которого RSA перестаёт казаться магией.
Reverse (reverse engineering) — препарирование программ без исходного кода. Дан бинарник или APK — нужно понять логику, найти проверку пароля или зашитый ключ. Основные инструменты: Ghidra (бесплатный декомпилятор от NSA — да, тот самый NSA) и IDA Pro. Категория требует терпения: иногда сидишь часами, разбирая ассемблерный код, и в какой-то момент картинка щёлкает.
Forensics — цифровая криминалистика. Анализ дампов памяти, сетевого трафика (pcap-файлы), образов дисков. Нужно восстановить удалённые файлы, извлечь данные из дампа или найти следы вторжения. Wireshark — ваш главный друг. Вопросы в forensics-задачах звучат типично: «Какой IP-адрес жертвы?», «Какой файл просматривал атакующий?», «Какая версия FTP используется?» (по данным Cybrary).
Stegano (стеганография) — поиск скрытой информации в изображениях, аудиофайлах или видео. Инструменты: steghide, exiftool, binwalk. Один из популярных приёмов — текст, спрятанный в спектрограмме аудиофайла. Категория — чистый перебор: единого подхода нет, пробуешь инструмент за инструментом, пока что-нибудь не вывалится.
OSINT — разведка по открытым источникам. Профили в соцсетях, метаданные файлов, открытые базы данных. Задачи проверяют навыки поиска информации, а не технического взлома. Иногда удивляешься, сколько можно раскопать по одной фотографии.
Misc (miscellaneous) — всё, что не вписывается в другие категории. Головоломки, задачи на программирование, нестандартные челленджи. Иногда — просто «следуйте описанию и попробуйте».
Admin — задачи на системное администрирование: настройка серверов, управление правами доступа, анализ конфигураций.
Не обязательно владеть всеми категориями на старте. Для первого турнира хватит уверенности в 2-3 категориях (web + crypto + misc — самый доступный набор), а дальше — наращивайте арсенал от турнира к турниру.
В jeopardy CTF используются две модели скоринга, и разница между ними напрямую влияет на стратегию.
Статический скоринг — каждая задача стоит фиксированное количество баллов. Лёгкая — 100, средняя — 250, сложная — 500. Баллы не меняются в ходе турнира. Модель простая, но с подвохом: организаторы субъективно оценивают сложность, и иногда «лёгкая» задача за 100 баллов оказывается злее «средней» за 250.
Динамический скоринг — задача стартует с максимумом баллов, и стоимость падает по мере того, как всё больше команд её решают. Решили три команды — она «стоит» 450 баллов. Решили пятьдесят — 150. По данным CTF-Wiki, стоимость снижается до заданного минимума и дальше не падает. Модель честнее: рынок сам определяет реальную сложность.
First blood — бонусные очки за первое решение задачи. По данным CTF-Wiki, первые три команды получают отметки first blood, second blood, third blood и дополнительные баллы. Это создаёт гоночную динамику в первые минуты после открытия задач.
Из скоринга следует стратегия: начинайте с категорий, в которых сильны, чтобы собрать first blood, пока другие команды ещё читают условия. Потом переключайтесь на дорогие задачи, которые мало кто решил.
Если jeopardy — олимпиада по решению задач, то attack-defense — боевые учения в реальном времени. Формат чаще используется на финалах крупных турниров и очных соревнованиях. Финал DEF CON CTF — классический пример. RuCTF, организованный командой HackerDom — ещё один известный attack-defense турнир (по данным FluidAttacks).
Каждая команда CTF получает идентичный набор уязвимых сервисов на выделенном сервере. Задача двойная: найти уязвимости в своих сервисах и закрыть их (defense), одновременно эксплуатируя те же уязвимости у соперников и забирая их флаги (attack). По данным CTF-Wiki, attack-defense соревнования обычно проводятся офлайн и длятся около 48 часов — это проверка не только технических навыков, но и физической выносливости. Кофе заканчивается быстрее, чем уязвимости.
Три механики attack-defense CTF, которые русскоязычные источники почти не раскрывают.
Gamebox — виртуальный сервер с набором уязвимых сервисов. Каждая команда получает идентичную копию. Все gamebox-ы одинаковы на старте: одни и те же сервисы, одни и те же дыры. Команда подключается по SSH и начинает копать код. По данным CTF-Wiki, организаторы часто раскрывают детали окружения за 30 минут или за день до старта — атаковать ещё нельзя, но можно готовить инфраструктуру защиты.
Тики (раунды) — соревнование разбито на интервалы по 1-5 минут. В каждом тике организатор обновляет флаги в сервисах всех команд. Задача: за каждый тик вытащить свежие флаги у соперников и защитить свои. По данным SimulationsLabs, на DEF CON 2025 тики составляли 1-5 минут. Давление постоянное: нельзя потратить час на анализ одного сервиса, пока по остальным утекают флаги.
Чекеры (checkers) — автоматические скрипты организаторов, которые проверяют работоспособность ваших сервисов. Закрыли уязвимость, но сломали функциональность — чекер это обнаружит. Потеря баллов за доступность (SLA) бывает катастрофичнее, чем потеря флага. Нельзя просто выключить уязвимый сервис: он должен отвечать на запросы, как будто им пользуется легитимный пользователь. Грубо говоря, нужно залатать дыру так, чтобы снаружи ничего не изменилось.
Scoring в attack-defense строится из трёх компонентов: очки за захваченные флаги соперников (attack), штрафы за потерянные собственные флаги (defense) и штрафы за неработающие сервисы (SLA). По данным CTF-Wiki, все команды стартуют с одинаковым количеством очков. Если ваш сервис скомпрометирован — вы теряете баллы, соперник их получает. Zero-sum game: каждый ваш провал — чей-то успех.
В jeopardy каждый может тихо решать свои задачи. В attack-defense без координации команды вы проиграете за первый час. Типичное распределение ролей:
Attack team (2-3 человека) — сканируют сервисы соперников, ищут уязвимости, пишут эксплойты. Начинают со сканирования подсети: nmap -sV -p- <subnet> — определение версий сервисов. Это техника Network Service Discovery (T1046, Discovery) по MITRE ATT&CK. Найденные уязвимости сразу передают defense-команде для патча на своём gamebox-е.
Defense team (2-3 человека) — анализируют код сервисов, ищут уязвимости и патчат их, не ломая функциональность. Мониторят входящий трафик для обнаружения атак соперников. Один из сильных приёмов — перехватить эксплойт соперника из трафика и передать attack-команде для использования против остальных. По сути, противник сам приносит вам оружие.
Infrastructure (1-2 человека) — автоматизация: скрипты для сдачи флагов, мониторинг SLA, анализ трафика через инструменты вроде Tulip. Без автоматизации вручную сдавать флаги каждый тик — нереально.
Captain — координирует команду, расставляет приоритеты. Главный вопрос каждый тик: патчить сервис, который нас ломают, или сначала написать эксплойт для атаки того же сервиса у соперников?
Ключевые различия форматов CTF соревнований — в таблице:
| Параметр | Jeopardy | Attack-defense |
|---|---|---|
| Формат участия | Онлайн или офлайн | Чаще офлайн |
| Размер команды | 1-10 человек | 5-10 человек |
| Длительность | 6-48 часов | 24-48 часов |
| Тип задач | Независимые, по категориям | Уязвимые сервисы |
| Навыки атаки | Да | Да |
| Навыки защиты | Нет | Да |
| Автоматизация | Желательна | Необходима |
| Работа в команде | Полезна | Критична |
| Подходит новичкам | Да | Нет, нужен опыт |
| Динамика | Темп задаёте сами | Тики каждые 1-5 минут |
| Инфраструктура | Не нужна, всё на платформе | Gamebox, SSH, общая сеть |
Для новичков jeopardy — однозначный старт. Можно участвовать в одиночку, выбирать задачи по силам, гуглить подходы. Attack-defense требует сыгранной команды, навыков патчинга кода вживую и опыта работы под давлением.
Ещё одна разница, которую редко проговаривают: jeopardy тестирует глубину в конкретной категории. Если вы отлично знаете web — можете набрать максимум в web-задачах и не трогать pwn. В attack-defense уязвимости распределены по разным сервисам, и слепые пятна команды бьют по общему результату. Нет варианта «я не буду делать криптографию» — если сервис с крипто-уязвимостью не закрыт, команда теряет баллы каждый тик.
Отдельно стоит формат King of the Hill — промежуточный вариант. Команды борются за контроль над общими серверами: эксплуатируете уязвимость, устанавливаете свой флаг, удерживаете позицию, пока соперники атакуют. На финале DEF CON CTF 2025 KotH использовался как отдельный компонент наряду с attack-defense (по данным SimulationsLabs). Одного эксплойта недостаточно — нужно удерживать позицию, пока остальные пытаются вас оттуда выкинуть.
CTFtime.org — центральный агрегатор CTF-событий. Расписание турниров, рейтинг команд, архивы задач с прошедших соревнований — всё здесь.
Ключевой параметр для новичка — вес события (weight). CTFtime присваивает каждому соревнованию рейтинг от 0 до 100 по сложности (по данным FluidAttacks). Высокий вес = сложнее задачи и конкурентнее участники. Для первого турнира ищите события с весом 15-30: задачи будут доступными, но нетривиальными. Для сравнения: saarCTF — один из крупнейших онлайн attack-defense турниров — имеет вес 97.22 (по данным SimulationsLabs). Это уровень топ-команд мира, туда новичку лезть рано.
Помимо CTFtime, актуальные события публикуются на ctfnews.ru (для русскоязычного сообщества), в Telegram-каналах CTF-команд и на страницах конференций.
Отдельно про writeup-ы — разборы задач после соревнований. На CTFtime участники публикуют пошаговые описания решений. Чтение writeup-ов — один из самых эффективных способов расти: вы видите ход мысли опытного игрока, его инструменты и приёмы. Я после каждого турнира — решённого или нет — читаю writeup-ы к задачам, на которых застрял. Иногда оказывается, что до решения оставался один шаг, а иногда — что копал вообще не туда.
Если вы ещё не участвовали в CTF или пробовали пару раз и не поняли, куда двигаться — вот конкретный план действий.
Минимальный набор для первого jeopardy CTF:
Онлайн CTF площадки для тренировки:
Пример типичной первой задачи (категория misc или crypto):
Флаг скрыт в файле secret.txt, закодированном в base64.
$ echo "Q1RGe3cwd195MHVfZjBVbmRfMXR9" | base64 -d
CTF{w0w_y0u_f0Und_1t}
Получили файл, определили кодировку, декодировали одной командой, сдали флаг. Первые задачи на реальных соревнованиях устроены ровно так же — только вместо base64 может быть XOR, ROT13 или кастомный шифр. Принцип один: идентифицировать метод сокрытия и применить обратную операцию.
Есть мнение, что начинать с jeopardy проще, а attack-defense — для продвинутых. Формально так и есть. Но я убеждён, что большинство новичков застревают в jeopardy навсегда — решают одни и те же web-задачи на трёх площадках и перестают расти. Jeopardy развивает навык решения изолированных головоломок. Attack-defense учит мыслить как защитник: видеть инфраструктуру целиком, расставлять приоритеты, работать под давлением времени и чужих атак. Именно эти навыки нужны в реальной работе — будь то SOC, пентест или incident response.
После 3-5 jeopardy-турниров ищите команду для attack-defense, даже если кажется, что не готовы. Первый AD будет провальным — это нормально. Но за два дня AD вы узнаете о защите больше, чем за полгода решения изолированных тасков. Разница между CTF-игроком и специалистом по ИБ — в способности защищать, а не только ломать. На IB Basics эту логику «от атаки к защите» дают системно — без требования «вы должны знать Linux на уровне X», берут с любого старта.
🚀 Хочешь закрепить на практике? Реши задачи по теме на HackerLab — категория «pentest-machines».
0 комментариев
Пожалуйста, войдите, чтобы оставить комментарий.
Загрузка комментариев...