
На моём первом Attack-Defense я потерял все флаги за 40 минут. Не потому что соперники оказались гениями — я просто не знал, что сервисы нужно патчить до того, как бросаться атаковать чужие vulnbox'ы. Пока я ковырял соседний веб-сервис через Burp Suite, три команды уже вытащили мои флаги через тривиальную SQL-инъекцию, которую я даже не открыл в исходниках. Нулевой скорборд и бессонная ночь над write-up'ами — вот цена неправильного выбора формата для первого соревнования.
После 20+ сыгранных capture the flag соревнований в обоих форматах и организации собственного CTF-джема на 30 человек я точно знаю: выбор между Jeopardy и Attack-Defense на старте — это разница между «втянулся» и «больше никогда».
Capture the flag соревнования делятся на два принципиально разных формата: Jeopardy (он же Task-Based) и Attack-Defense. Есть экзотика вроде Belluminar (придуман POC SECURITY из Южной Кореи, впервые показан на POC2015) или Boot2Root (уязвимые виртуалки для самостоятельного взлома), но 95% событий на CTFtime — один из двух основных видов CTF для новичков. Подробнее — в нашем статье о создание ctf заданий.
Разница между ними не в сложности задач, а в модели стресса и темпе принятия решений. Jeopardy CTF — марафон: 24-48 часов, набор изолированных задач, можно встать за кофе и вернуться через час. Attack-Defense — спринт на 6-10 часов, где каждый тик (1-5 минут) кто-то ломает ваши сервисы, а вы должны одновременно атаковать и защищаться. Выбрать не тот формат для первого CTF соревнования — гарантированный способ разочароваться в дисциплине целиком.
Jeopardy — самый распространённый формат CTF соревнований и лучшая точка входа для тех, кто хочет начать участвовать в CTF. Организаторы публикуют набор задач (тасков), в каждом спрятан флаг — строка вроде flag{s0m3_s3cr3t}. Нашли флаг, вбили на платформе (чаще всего CTFd) — получили очки.
По данным cyber-edu.co, первый Jeopardy-формат был представлен на DEF CON в 2000 году. С тех пор он стал доминирующим: DEF CON CTF Qualifier 2020 собрал более 1300 команд со всего мира.
Понимание категорий — основа подготовки к CTF соревнованию. Каждая бьёт по отдельному набору навыков:
Web — поиск и эксплуатация уязвимостей веб-приложений: SQL-инъекции, XSS, SSRF, IDOR. По данным OWASP Top 10 2021, Broken Access Control (A01:2021) обнаруживается в 94% протестированных приложений — именно такие баги чаще всего ложатся в основу web-тасков. В реальной работе это прямой аналог техники Exploit Public-Facing Application (T1190, Initial Access) по MITRE ATT&CK.
Pwn (Binary Exploitation) — pwn задания CTF требуют эксплуатации уязвимостей в скомпилированных программах: buffer overflow, format string, heap exploitation. Основной инструмент — pwntools (Python-библиотека). Категория, которая заставляет разбираться, как процессор на самом деле исполняет код — без этого понимания тут делать нечего.
Reverse — анализ программ без исходного кода. Ghidra, IDA и radare2 — рабочие лошадки категории.
Crypto — криптографические задачи от классического Caesar cipher до атак на RSA с малым экспонентом. Для быстрого декодирования — CyberChef, для глубокого погружения — CryptoPals.
Forensics — цифровая криминалистика: анализ дампов памяти, образов дисков, pcap-файлов в Wireshark. Частая задача — восстановить действия атакующего по сетевому трафику. По сути, детективная работа: вот тебе улики, собери картину.
Stegano — стеганография: поиск данных, скрытых в изображениях, аудио, видео. Типовой набор: exiftool для метаданных, steghide для JPEG, binwalk для вложенных файлов.
OSINT — разведка по открытым источникам: метаданные фотографий, публичные профили, базы данных утечек. Задача может звучать как «найдите город, где сделано это фото» — и дальше 40 минут в Google Maps, пока не узнаешь вывеску кафе на заднем плане.
Misc / Joy — всё, что не вписывается в другие категории: логические головоломки, задачи на скриптинг, иногда откровенный trolling от организаторов (и это бывает весело).
Формат позволяет выбирать порядок решения и фокусироваться на сильных сторонах. Не знаете pwn — берите web. Слабы в crypto — переключайтесь на forensics. Для тех, кто только пробует себя в CTF, эта гибкость критична.
Русскоязычные гайды почти не раскрывают механику скоринга, а она напрямую влияет на стратегию. По данным emergentmind.com и ctf-wiki.org, основных моделей три:
Static scoring — каждый таск стоит фиксированное количество баллов (100, 200, 500). Просто и прозрачно, но не стимулирует скорость.
Dynamic / Time-decay scoring — стоимость задачи падает по мере того, как её решают другие команды. Формула бывает линейной или экспоненциальной. На практике: задача за 500 очков после 50 решений стоит уже 150. Тактический вывод — хватайте сложные задачи первыми, пока они дорогие. Некоторые платформы удерживают полную стоимость первые 2-4 часа, после чего включают decay.
First blood bonus — первые три команды, решившие задачу, получают дополнительные очки. В терминологии CTF: first blood, second blood, third blood. На крупных Jeopardy CTF (CSAW CTF, Plaid CTF) first blood даёт ощутимый рывок в таблице.
Есть и гибридные модели с rank-based множителями, где бонус рассчитывается геометрически по порядковому номеру решения. Знание конкретной модели скоринга на вашем соревновании меняет тактику: при decay-скоринге на старте берёте не то, что хорошо знаете, а то, что решат немногие.
Attack-Defense — исторически первый формат capture the flag соревнований. Первый DEF CON CTF прошёл в 1996 году на четвёртой конференции DEF CON в Лас-Вегасе именно в этом формате. В России движение Attack-Defense стартовало с UralCTF в 2006 году в Екатеринбурге, организованного командой HackerDom. Участвовали тогда всего две команды, а флаги принимались вручную — никакой автоматизации ещё не существовало.
Каждая команда получает идентичный сервер — vulnbox — с набором уязвимых сервисов. Все vulnbox'ы объединены в общую игровую сеть. Подключение обычно через VPN-конфигурацию (WireGuard) от организаторов.
Игра идёт 6-10 часов и разбита на раунды — тики. Один тик — от 1 до 5 минут. По данным maplebacon.org, для 8-часовой игры с 5-минутными тиками получается ~96 раундов. В каждом тике происходит:
Три компонента начисления очков за каждый тик:
Сервис в Attack-Defense — прямой аналог таска в Jeopardy: программа с одной или несколькими уязвимостями. Сервисы могут быть веб-приложениями (Go/Python с исходным кодом), бинарниками для реверса или чем-то совсем нестандартным. На ENOWARS 8, например, был пиратский форум (pwn-категория, только бинарник без исходников), а на FAUST CTF 2024 — приложение для шеринга локации с API на Go.
Первая мысль новичка на Attack-Defense: «Выключу уязвимый сервис — никто не украдёт мои флаги». Логично? Логично. Но не сработает. Чекеры — автоматические скрипты организаторов — каждый тик проверяют, что сервис жив и ведёт себя корректно. Считайте их легитимным пользователем вашего сервиса.
Возможные статусы сервиса в каждом тике (по данным maplebacon.org и ctf-gameserver.org):
OK — всё работает штатноDOWN — сервис недоступен, таймаут или обрыв соединенияFAULTY — сервис доступен, но ведёт себя некорректноFLAG_NOT_FOUND — сервис работает, но чекер не нашёл размещённый флагRECOVERING — сервис восстанавливается после сбояЛюбой статус кроме OK — потеря SLA-очков. Задача — закрыть уязвимость, НЕ сломав функциональность. Это ядро инфраструктуры Attack-Defense и прямой аналог реальной работы: в проде тоже нельзя «просто выключить» уязвимый сервис, чтобы защититься. Заказчик вам спасибо не скажет.
| Критерий | Jeopardy CTF | Attack-Defense CTF |
|---|---|---|
| Длительность | 24-48 часов | 6-10 часов |
| Формат | Онлайн или офлайн | Преимущественно офлайн |
| Можно играть соло | Да | Нет (минимум 3-4 человека) |
| Уровень стресса | Средний, свободный темп | Высокий, каждый тик на счету |
| Нужен свой сервер | Нет | Да (vulnbox от организаторов) |
| Ключевой навык | Решение изолированных задач | Multitasking: атака + защита + мониторинг |
| Подготовка | Решать задачи на тренажёрах | Скрипты автоматизации, работа с Docker |
| Порог входа | Низкий | Высокий |
| Связь с реальной ИБ | Пентест, forensics, OSINT | Incident response, hardening, SOC |
| Популярные примеры | CSAW CTF, Plaid CTF, picoCTF | DEF CON CTF, ENOWARS, FAUST CTF |
Если только начинаете — стартуйте с Jeopardy. Это не «для слабых»: даже топовые команды, играющие финал DEF CON CTF (Attack-Defense), набирают состав и оттачивают навыки именно на Jeopardy-турнирах.
Этот чек-лист собран после 15+ соревнований и кучи набитых шишек. Работает как для онлайн CTF для начинающих, так и для офлайн-турниров.
Минуты 0-10: разведка доски задач. Откройте полный список тасков. Не хватайте первый попавшийся — это ошибка, которую я совершал раз пять. Отсортируйте по категориям и найдите свою сильную сторону. Посмотрите на стоимость: если скоринг динамический — задачи за 500 очков через час превратятся в 200. Решайте дорогие первыми.
Минуты 10-20: low-hanging fruit. Возьмите 1-2 самые дешёвые задачи из знакомой категории. Misc и OSINT часто содержат таски на 5-10 минут. На web-тасках первым делом проверяйте robots.txt — флаги или подсказки часто валяются именно там. Быстрые решения разогревают и дают психологическую уверенность.
Минуты 20-60: фокусная работа. Выберите одну задачу среднего уровня из сильной категории. Если застряли дольше 20 минут — переключайтесь, не сжигайте первый час на один таск. Записывайте ход решения: это будущий CTF write-up и учебный материал.
Типичные ошибки: не читать описание задачи целиком (подсказки в тексте бывают жирными), работать без заметок (через три часа не вспомните, что пробовали), пытаться решить всё в одиночку при наличии команды.
Attack-Defense — принципиально другой зверь. Здесь первый час определяет результат всей игры.
Минуты 0-15: оборона. Подключитесь к vulnbox через VPN. Проверьте SSH-доступ. Если организаторы используют Docker Compose (ENOWARS и FAUST CTF обычно так делают), docker ps покажет запущенные контейнеры с сервисами. Сделайте бэкап текущего состояния — один неудачный патч может поломать сервис, чекер поставит FAULTY, и придётся откатываться. Я на втором Attack-Defense потерял 20 минут на восстановление после кривого патча, потому что не сделал бэкап. Не повторяйте.
Минуты 15-30: поиск уязвимостей в своих сервисах. Читайте исходный код (если дан) или реверсите бинарник. Ищите инъекции (Injection — A03:2021 по OWASP), hardcoded credentials (аналог техники Credentials In Files, T1552.001 по MITRE ATT&CK), path traversal. Каждая найденная уязвимость — это эксплойт, который работает и против всех соперников: серверы-то идентичны.
Минуты 30-60: патч + атака. Закройте самые очевидные дыры. Проверьте, что чекер по-прежнему возвращает OK. Затем напишите эксплойт и запустите его против всех соперников одновременно через скрипт-thrower:
import requests
TEAMS = ["10.60.1.1", "10.60.2.1", "10.60.3.1"]
PORT = 8080
for ip in TEAMS:
try:
r = requests.get(f"http://{ip}:{PORT}/api/notes",
params={"id": "' UNION SELECT flag FROM secrets--"},
timeout=3)
if "flag{" in r.text:
print(f"[+] Flag from {ip}: {r.text}")
except Exception as e:
print(f"[-] {ip}: {e}")
Это демонстрация концепции — на реальном соревновании эксплойт будет сложнее, но структура та же: цикл по IP-адресам команд, отправка payload, парсинг флага, сабмит на gameserver.
Критическая ошибка (и именно она стоила мне первого Attack-Defense): бросаться атаковать, не закрыв свои дыры. За 30 минут, пока вы пишете эксплойт, пять команд уже утащили ваши флаги через ту же самую уязвимость.
CTFtime.org — главный агрегатор capture the flag соревнований в мире. Анонсы, результаты, CTFtime рейтинг команд, архивы задач — всё в одном месте.
Weight (вес) соревнования — число от 0 до 100, отражающее престижность и сложность. Для первого раза ищите CTF с weight 0-25. Всё, что выше 50 — уровень DEF CON Quals, HITCON и аналогичных топовых событий, туда рано.
Format — фильтруйте по «Jeopardy» для старта. Attack-Defense без подготовленной команды из 4-5 человек — потеря времени.
Duration — для первого CTF оптимальны 24-48 часов. За 6-часовой турнир новичок не успеет войти в ритм.
Рекомендованные платформы для подготовки к CTF:
Для тех, кто в России — ctfnews.ru собирает календарь отечественных соревнований. Российское CTF-сообщество выросло из UralCTF/RuCTF (первые межвузовские турниры по международным правилам прошли в 2007-2008 годах) и сегодня включает школьные, студенческие, корпоративные и международные турниры. В 2009 году RuCTFE собрал 43 команды из разных стран — на тот момент первое международное CTF-событие в России.
На HackerLab.pro есть задачи по 12 категориям (web, pwn, forensics, crypto и другие), которые подходят для регулярной тренировки между соревнованиями. Нужна регистрация, после неё доступны таски всех уровней сложности.
Для Jeopardy CTF формально можно играть соло. Но даже на первом соревновании команда из 2-3 человек даёт преимущество: пока один застрял на web, второй закрывает crypto.
Для Attack-Defense минимальный жизнеспособный состав — 4 человека:
| Роль | Задача | Инструменты |
|---|---|---|
| Defender / Patcher | Ищет уязвимости в своих сервисах, патчит | Исходный код, Ghidra, grep |
| Attacker | Пишет эксплойты и thrower'ы | pwntools, Burp Suite, Python |
| Traffic Analyst | Мониторит сетевой трафик | tcpdump, Wireshark, tshark |
| Infra / Automation | Поддерживает инфраструктуру, автоматизирует сабмит флагов | Docker, bash, Python |
На практике роли пересекаются. Traffic analyst ловит в pcap-дампах чужие эксплойты и передаёт их атакеру для повторного использования — traffic replay легальная и очень эффективная тактика. Defender, закрыв уязвимость, передаёт описание атакеру, который тут же пишет эксплойт для чужих серверов. Конвейер, где каждый знает свой участок.
Где искать CTF команду для новичков: - Тематические чаты в Telegram (CTF.Moscow, RuCTF) - Университетские CTF-клубы - Форумы codeby.net - Прямо на CTFtime — у многих команд открытый набор
Не ждите идеального состава. На моём первом Jeopardy нас было трое: я, парень с forensics-бэкграундом и студент со знанием Python. Мы заняли 120-е место из 400 команд — и разобрали потом каждый нерешённый таск по CTF write-up'ам. Через три месяца тот же состав вошёл в топ-50.
Не нужно ставить 50 утилит заранее. Вот рабочий минимум, который закроет 80% задач:
| Категория | Инструмент | Зачем |
|---|---|---|
| Web | Burp Suite Community | Перехват HTTP-запросов, тестирование инъекций |
| Pwn | pwntools (Python) | Написание эксплойтов для бинарных задач |
| Reverse | Ghidra | Декомпиляция и анализ бинарников |
| Crypto | CyberChef | Декодирование, конвертация, анализ шифров |
| Forensics | Wireshark | Анализ pcap-файлов и сетевого трафика |
| Stegano | exiftool, binwalk | Метаданные и скрытые данные в файлах |
| Общее | Kali Linux (VM) | Предустановленный набор ИБ-инструментов |
Kali ставьте в виртуальную машину (VirtualBox или VMware), не на основную систему. На соревнованиях вы будете скачивать подозрительные файлы и запускать чужой код — изоляция обязательна. Потренировавшись на кошках, можете потом собрать свой набор под конкретные категории.
Секрет прогресса в CTF — не количество сыгранных турниров, а количество разобранных задач после них. CTF write-up — пошаговый разбор решения, который публикуют участники после соревнования.
Формула простая: сыграли CTF — не решили 70% задач (это нормально для новичка, не расстраивайтесь) — нашли write-up'ы по каждой нерешённой задаче — прошли решение руками, повторив каждый шаг — на следующем CTF решили на 20% больше. Работает безотказно.
Где искать: раздел writeups на CTFtime у каждого соревнования, GitHub-репозитории команд, личные блоги участников. Многие топовые команды (C4T BuT S4D, HackerDom, perfect blue) публикуют подробные разборы с кодом.
Если хочется не ждать write-up'ов, а тренироваться с мгновенной обратной связью — на HackerLab.pro категории web и crypto дают именно это: решили или нет, без ожидания.
Выбор между Jeopardy и Attack-Defense на старте — вопрос не амбиций, а здравого смысла. Я видел десятки новичков, которые приходили на Attack-Defense «потому что там настоящий хакинг» — и уходили через два часа с пустым скорбордом и уверенностью, что CTF не для них. Те же люди на Jeopardy через месяц решали web-таски среднего уровня и получали first blood на студенческих турнирах.
Attack-Defense даёт уникальный опыт real-time incident response, но без фундамента из Jeopardy этот опыт превращается в бессистемный хаос. По моим наблюдениям, 3-4 сыгранных Jeopardy — минимальный порог, после которого Attack-Defense начинает приносить пользу, а не фрустрацию.
Начинайте с Jeopardy, набирайте базу по категориям, собирайте команду — и через пару месяцев пробуйте Attack-Defense, когда уже будете понимать, как работает SQL-инъекция, а не гуглить это в разгар тика. Если хочется не просто решать таски вслепую, а системно разобраться, почему эксплойт работает и как устроена защита — на курсе IB Basics эту базу закрывают без академического тона.
🚀 Хочешь закрепить на практике? Реши задачи по теме на HackerLab — категория «pentest-machines».
0 комментариев
Пожалуйста, войдите, чтобы оставить комментарий.
Загрузка комментариев...