Ферма для attack-defense CTF-соревнований
Ознакомьтесь с FAQ, если вы хотите узнать о том, что такое attack-defense CTF, какие возможности предоставляет эта ферма и почему она имеет архитектуру, описанную ниже.
-
Эксплоит — это скрипт, который позволяет красть флаги в определённом сервисе у команд-противников. Пишется участником во время соревнования. Должен принимать хост (IP или домен) команды-соперника в качестве первого аргумента командной строки (
sys.argv[1]
), атаковать команду и выводить флаги в stdout. -
Клиент фермы — это утилита, которая регулярно запускает эксплоит, чтобы атаковать чужие команды, и следит за его работой. Запускается участником на своём ноутбуке после написания эксплоита.
Клиент представляет собой однофайловый скрипт start_sploit.py из данного репозитория.
-
Сервер фермы — это утилита, которая собирает флаги от клиентов фермы, следит за использованием квот, централизованно отправляет флаги в проверяющую систему и показывает статистику по принятым и некорректным флагам. Настраивается и запускается админом команды в начале соревнования. Во время соревнования члены команды могут воспользоваться веб-интерфейсом сервера (см. скриншот выше), чтобы следить за результатами работы эксплоитов и статистикой отправляемых флагов.
Сервер представляет собой веб-сервис (на Flask) из папки server в данном репозитории.
Стрелки на диаграмме указывают направление движения флагов
См. список по ссылке.
-
Ферма Бэя — более простая ферма, архитектура и некоторые детали реализации которой были заимствованы в этом репозитории. В ферме Бэя используется такой же формат эксплоита и тоже есть деление на клиент (start_sploit.py) и сервер (start_posting.py). Однако, у Бэя они должны быть запущены на одном компьютере (в FAQ объясняется, почему это неудобно), а сервер не предоставляет веб-интерфейс для просмотра статистики (и ряд других функций).
-
Ферма Андрея Гейна — ферма, решающая проблему с большим количеством процессов при большом количестве команд с помощью асинхронного сетевого взаимодействия (asyncio).
Copyright © 2017, 2018 Александр Борзунов (команда «Destructive Voice»)
Архитектура и некоторые детали реализации заимствованы из фермы Бэя (Александра Берсенева).