Что такое Defense CTF?

« Маленькое приключение AvoidAttack »

#1

About Defense CTF

  Defense CTF - один из форматов соревнований Capture The Flag (CTF), где команды выступают в роли защитников и обеспечивают безопасность своих ресурсов от атак со стороны ботов.

  В отличие от классического Attack-Defense, где команды одновременно защищаются и атакуют, в Defense CTF команды сосредоточены исключительно на защите собственной инфраструктуры, а их успех зависит от того, насколько эффективно реализуется защита сервисов

#2

AvoidAttack

  «AvoidAttack Checksystem» - платформа для проведения соревнований в формате Defense CTF, разработанная o1d_bu7_go1d

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

#3

Vulnboxes

  У каждой команды есть свой виртуальный сервер, который называется vulnbox, где располагаются сервисы. Все команды на старте игры находятся в равных условиях, т.е. на каждом vulnbox расположены исходники сервисов, в которых заранее заложен ряд уязвимостей, одинаковый для всех команд без исключений. Vulnbox может быть на основе любой операционной системы, в зависимости от выбора организаторов, но наиболее часто используется либо Ubuntu, либо Debian.

#4

Services

  В свою очередь, каждый сервис - это определенное приложение, выполняющее определенные функции и работающее по сети. Сервисы могут быть как бинарными, так и на web-основе.

#5

Docker

  Зачастую, оперирование приложениями происходит в рамках Docker, сделано это для удобства развертывания и устранения различных проблем, например, с зависимостями или совместимостью. Поэтому в текущих реалиях Docker - незаменимая технология. Перед тем, как играть в Attack-Defense или же в Defense CTF, необходимо изучить основы работы с Docker и Docker Compose.

#6

Game architecture

  В наиболее упрощенном варианте игровая архитектура выглядит следующим образом:

Fantom Image

  Игроки получают от организаторов VPN-конфиг для доступа к своему vulnbox по SSH, а также к клиентской части игровой платформы, где игроки могут отслеживать свой прогресс (Scoreboard).

  Общая статистика по всем командам выглядит следующим образом:

Fantom Image

  А так выглядит детальная статистика одной из команд:

Fantom Image

  Далее поговорим об условных обозначениях, которые показаны на скриншоте выше.

#7

Checkers

  Checker - скрипт, который проверяет корректность работы целевого сервиса. В рамках платформы AvoidAttack один скрипт проверять часть функционала того или иного сервиса. Таких скриптов может быть несколько для одного сервиса, количество зависит от общего объема функциональных блоков сервиса.

  Если Checker - скрипт, от которого не требуется защита со стороны участников, то со Sploit ситуация ровно противоположная.

#8

Sploits

  Sploit - скрипт, используемый для атаки на уязвимый сервис с целью демонстрации уязвимости и получения несанкционированного доступа к целевому ресурсу. В некоторых отдельных случаях Sploit или Checker может называться Bot.

#9

Platform Signs

  Разберемся более детально, что подразумевают под собой представленные на одном из скриншотов статусы:

😀 Success Checker

Cитуация, когда проверяющий скрипт подтверждает правильную работу сервиса, т.е. тесты или запросы выполняются успешно и возвращают ожидаемые результаты.

😔 Failure Checker

Cитуация, когда проверяющий скрипт обнаруживает ошибку в работе сервиса, т.е. тесты или запросы возвращают неверные результаты или не выполняются вовсе.

💀 Down/Dead

Cитуация, когда сервис конкретной команды не отвечает на все запросы типа Checker. В этом случае Sploits не отрабатывают, но за это предусмотрен отдельный штраф в виде уменьшения очков.

😈 Success Sploit

Cитуация, когда проверяющий скрипт успешно эксплуатирует уязвимость в целевом сервисе

😎 Failure Sploit

Cитуация, когда проверяющиему скрипту не удается проэксплуатировать уязвимость на целевом сервисе, что свидетельствует об исправлении уязвимости

💥 Script Error 💤

Cитуации, когда проверяющие скрипты отрабатывают с внутренней ошибкой, независящей от игрока.

#10

Platform Signs

  Соответственно, для каждого раунда отображаются количественные значения тех или иных проверок, а также итог по баллам за раунд для каждого сервиса. Каждое количественное значение имеет под собой значение в виде очков, указанное в шапке таблицы над условными обозначениями.

#11

Example

  Если обратить внимание на скриншот выше с результатами отдельной команды, то можно заметить, что для сервиса atom_power_station в 7 раунде прошли 3 чекера с состоянием Fail. Для каждого чекера с состоянием Fail количество очков составляет -5. Тогда за 3 чекера получится -15 очков. Также указано, что сервис находится в состоянии Down. За это состояние получаем -60 очков. Итог: -15 + (-60) = -75 очков за 7 раунд для сервиса atom_power_station у команды.

#12

Monitoring

  Возникает закономерый вопрос: каким образом команде отслеживать атаки на сервисы? Правильно - настроить средство мониторинга на своем vulnbox. На GitHub есть множество проектов с системами мониторинга, нацеленных на игру в формате Attack-Defense, но они могут быть полезными и при Defense CTF

  *Стоит отметить, что представленные ниже системы реагируют на флаги, а не только отслеживают трафик, но AvoidAttack не имеет под собой необходимости работать с флагами:

#13

References

   Attack-Defense для новичков - материал знаменитой команды C4T_BuT_S4D. Настоятельно рекомендуем ознакомиться!

#14

Socials