Что такое 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

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

#7

Checkers

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

  Если Checker - скрипт, который проверяет функциональность, имитируя действия пользователя, то со Sploit ситуация ровно противоположная.

#8

Sploits

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

#9

Status Codes

  Разберемся более детально, что подразумевают под собой статусы от чекеров. Самое главное, что необходимо понимать - платформа будет реализовывать атаки на сервис только в том случае, если статус сервиса - OK

UNKNOWN

Ситуация, когда состояние сервиса неизвестно - обычно перед стартом игры

OK

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

CORRUPT

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

MUMBLE

Ситуация, когда часть функционала сервиса работает некорректно, например, не работает регистрация пользователя

DOWN

Ситуация, когда проверяющие скрипты не могу получить доступ к сервису по сети

CHECKER ERROR

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

#10

SLA

  Service Level Agreement (SLA) - представляет собой показатель жизнеспособности сервиса. В наиболее общем виде подсчитывается по количеству прошедших игровых раундов, которые сервис провёл со статусом OK, относительно общего количества прошедших раундов. SLA в рамках платформы AvoidAttack определяется по следующей формуле для каждого отдельного сервиса:

SLA new = ( SLA current · ( R - 1 ) + R result R ) × 100 %

   SLA new - новое значение SLA (в процентах)

   SLA current - текущее значение SLA (в процентах)

   R - номер текущего раунда

   R result - результат текущего раунда (OK или другое)

#11

Score

  Подсчет очков на платформе AvoidAttack рассчитывается по следующей формуле:

S new = S last + ( SLA new · V fixed ) - ( L · V total )

   S new - новый балл

   S last - предыдущий рассчитанный балл

   SLA new - новое значение SLA (в процентах)

   V fixed - количество устранённых уязвимостей

   L - штраф за наличие уязвимостей;

   V total - общее количество уязвимостей в сервисе

#12

Game Visualisation

PHASE: CHECKS Tick: 000
CHECKSYSTEM VPN HUB players ↔ game infra VULNBOX A IP: 10.10.1.10 VULNBOX B IP: 10.10.2.10 PLAYER A ssh user@10.10.1.10 PLAYER B ssh user@10.10.2.10 SSH SSH service-1 Vulns: 4 Fixed: 0 service-2 Vulns: 3 Fixed: 0 service-1 Vulns: 4 Fixed: 0 service-2 Vulns: 3 Fixed: 0 Tick: 000 • phase: CHECKS
OK MUMBLE CORRUPT DOWN UNKNOWN CHECKER ERROR Checks pulses Attacks pulses VPN / SSH

#13

Monitoring

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

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

#14

References

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

#15

Hall of Fame

   В нашем Hall of Fame, можно ознакомиться со списком проведенных нами соревнований с использованием платформы AvoidAttack!

#16

Developers

   Разработчики: danchous и o1d_bu7_go1d

#17

Socials