Capture the Flag (CTF) — это игра, в которой участники пытаются захватить флаг противников и защитить свой. Популярной ее сделали командные шутеры вроде Quake и Team Fortress, но в какой-то момент хакерам пришла идея спроецировать CTF на информационную безопасность. О том, как выглядит результат, и пойдет речь в этой статье.

Хакерский CTF хоть и построен на правилах классического Capture the Flag, однако с годами очень сильно видоизменился. Сейчас CTF в контексте информационной безопасности может означать даже соревнования, которые далеки от обычного захвата флага. Множественные эксперименты с правилами и механикой проведения привели к появлению массы типов и разновидностей CTF. Вот основные из них.

CTF на PHDays 2016
CTF на PHDays 2016
 

Attack-Defence

Этот вид CTF считается классическим, поскольку использует правила Capture the Flag в чистом виде. Организаторы выдают командам некий образ (vulnbox) — чаще всего это виртуалка, но может быть ноутбук, сервер или удаленный доступ к чему-то. Там развернута система, а в ней — несколько сервисов, которые написаны на разных языках программирования. Причем написаны так, чтобы в них имелись множественные уязвимости.

У команд обычно есть абсолютные права на виртуалке, хотя встречаются и частные случаи, когда доступ ограниченный, например — DEF CON. Образы обязательно полностью одинаковые, а соответственно, и уязвимости в сервисах — тоже. Основная идея CTF — искать уязвимости в своей системе и атаковать чужие. Почти всегда vulnbox — это дистрибутив *nix.

Хоть все сервисы и должны быть написаны на разных языках, кое-что одинаковое у них есть: к каждому можно получить доступ извне. Например, это может быть веб-сервер, написанный на Python с использованием Flask или Django, либо скомпилированный бинарный файл (зачастую без исходников), который слушает какой-нибудь порт и выполняет определенные действия. Короче, все, что может прийти на ум организаторам.

Иногда даже приходится писать свои сервисы с нуля — это отступление от классической модели CTF, но такое тоже встречается. В этом случае на какой-то порт сыплются определенные пакеты, а участники должны написать обработчик для них.

Как организаторы узнают, что тот или иной сервис взломан? В этом им помогают проверочные боты. Они имитируют действия легитимного пользователя, который применяет сервис по назначению. Каждый раунд бот каким-то особым для каждого сервиса образом отправляет на него некую секретную информацию. Эта информация и является флагом. На следующий раунд бот приходит и проверяет, доступен ли предыдущий флаг и верен ли он, а затем ставит новый. Организаторы таким образом узнают, что сервис работает корректно. Продолжительность и количество раундов описываются в правилах и могут варьироваться от игры к игре.

Вот пример того, как действует бот. Представь, что есть сервис, который имитирует работу почтового сервера. Бот подключается, регистрирует новый почтовый ящик и сам себе отправляет сообщение, в котором содержится флаг. На следующий раунд бот заходит под ранее зарегистрированным аккаунтом и читает флаг, отправленный в предыдущем раунде. Если флаг сходится с тем, который содержится у него в базе, то бот считает, что сервис работает верно. После этого он снова регистрирует учетную запись и повторяет все с начала.

Успешная атака — это обнаружение уязвимостей, которые позволят читать чужие сообщения. Если команда находит такую уязвимость, то она сможет прочесть сообщение бота и таким образом захватить флаг.

Случается, что бот не может забрать флаг с предыдущего раунда. Например, виртуалка упала, либо команда сделала кривые исправления сервиса, либо другая команда с помощью уязвимости удалила или изменила этот флаг. Тогда организаторы считают, что сервис у команды недоступен. Пока сервис работает корректно, команда получает очки за защиту. Если нет, то в раунды его недоступности не получает ничего.

Помимо очков за защиту, есть второй вид очков — за атаку. Они начисляются за сдачу флагов, которые хранятся в сервисах других команд. Формулы для расчета этих очков очень сильно разнятся от соревнования к соревнованию. В формулу, к примеру, может быть заложено число команд, которые тоже украли этот флаг, а может и не быть. Часто еще учитывается место в рейтинге команды, у которой был украден флаг.

Любое изменение формулы подсчета очков очень сильно влияет на механику игры. Например, если члены одной команды первыми нашли уязвимость и написали к ней эксплоит, то зачастую есть смысл атаковать только слабые команды, поскольку сильные могут проанализировать трафик и украсть эксплоит. Зато если в формуле учитывается ранг команды и за сильные будут давать значительно больше очков, то эта тактика может оказаться невыгодной. Еще часто встречается правило, что команды не могут сдавать флаги за сервисы, которые у них самих недоступны.

Коэффициент, который соответствует числу команд, также укравших этот флаг, тоже немаловажен. С ним получается, что чем меньше команд смогли сдать определенный флаг, тем он дороже. В общем, главное — читать перед каждым CTF регламент и продумывать тактику в соответствии с ним.

На что похож флаг?

В регламенте соревнования всегда очень четко прописано, как именно должны выглядеть флаги. Это нужно, чтобы участники хорошо понимали, что именно им нужно защищать и красть. Чаще всего флаги выглядят примерно так: 322d4e510659dc1e3a9d5b6d6df6c3e0. Но опять же организаторы могут придумать совершенно любой вид флага.

 

Task-Based CTF

Это наиболее популярный вид CTF, поскольку он проще других в реализации. Вместо того чтобы ломать друг друга, команды делают определенные задания. За решение заданий дают флаг — сдав его, команда получает очки. Обычно в таком CTF есть несколько веток заданий — каждая по своей дисциплине. Давай пройдемся по наиболее популярным.

Продолжение доступно только участникам

Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», увеличит личную накопительную скидку и позволит накапливать профессиональный рейтинг Xakep Score! Подробнее

Вариант 2. Открой один материал

Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.


Check Also

Неинновационные инновации. Откуда растут корни технологий Apple

Тройная камера, умный режим HDR, «ночной режим» Night Shift, True Tone, Liquid Retina Disp…

3 комментария

  1. Аватар

    A.T.

    14.06.2016 at 22:27

    Совершенно не вдохновляет. Жалкая потуга изобразить «хакерскую» игру, с заранее ясным финалом и заранее ясным результатом как будет реагировать система игры по правилам.

    Другое дело реальный взлом реальных систем, когда не знаешь заранее результат, и как будет реагировать биомасса (люди или искусственные алгоритмы) на том конце провода. Есть адреналин, есть злость, есть драйв, есть стратегия, есть некоторое количество времени (заранее не известное) на обдумывание и никогда не известно кто кого. Это больше похоже на жизненное хакерство. И без слащавых дружеских селфи. Должен быть цинизм, а не радость.

  2. Аватар

    dk@itkur.ru

    20.06.2016 at 09:22

    Важно позитивнее смотреть на жизнь.

Оставить мнение