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. Оформи подписку на «Хакер», чтобы читать все статьи на сайте

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

Вариант 2. Купи одну статью

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


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

Подпишитесь на ][, чтобы участвовать в обсуждении

Обсуждение этой статьи доступно только нашим подписчикам. Вы можете войти в свой аккаунт или зарегистрироваться и оплатить подписку, чтобы свободно участвовать в обсуждении.

Check Also

ФБР обвинило иранского правительственного хакера во взломе HBO и вымогательстве 6 млн долларов

ФБР и Министерство юстиции США, сообщили, что нашли виновного во взломе HBO и преждевремен…