#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
В наиболее упрощенном варианте игровая архитектура выглядит следующим образом:
Игроки получают от организаторов VPN-конфиг для доступа к своему vulnbox по SSH, а также к клиентской части игровой платформы, где игроки могут отслеживать свой прогресс (Scoreboard).
Общая статистика по всем командам выглядит следующим образом:
А так выглядит детальная статистика одной из команд:
Далее поговорим об условных обозначениях, которые показаны на скриншоте выше.
#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