/DestructiveFarm

Exploit farm for attack-defense CTF competitions

Primary LanguageCSSOtherNOASSERTION

Destructive Farm

Ферма для attack-defense CTF-соревнований

Ознакомьтесь с FAQ, если вы хотите узнать о том, что такое attack-defense CTF, какие возможности предоставляет эта ферма и почему она имеет архитектуру, описанную ниже.

Компоненты фермы

  1. Эксплоит — это скрипт, который позволяет красть флаги в определённом сервисе у команд-противников. Пишется участником во время соревнования. Должен принимать хост (IP или домен) команды-соперника в качестве первого аргумента командной строки (sys.argv[1]), атаковать команду и выводить флаги в stdout.

    Пример эксплоита | Подробнее о формате эксплоита

  2. Клиент фермы — это утилита, которая регулярно запускает эксплоит, чтобы атаковать чужие команды, и следит за его работой. Запускается участником на своём ноутбуке после написания эксплоита.

    Клиент представляет собой однофайловый скрипт start_sploit.py из данного репозитория.

    Подробнее о клиенте

  3. Сервер фермы — это утилита, которая собирает флаги от клиентов фермы, следит за использованием квот, централизованно отправляет флаги в проверяющую систему и показывает статистику по принятым и некорректным флагам. Настраивается и запускается админом команды в начале соревнования. Во время соревнования члены команды могут воспользоваться веб-интерфейсом сервера (см. скриншот выше), чтобы следить за результатами работы эксплоитов и статистикой отправляемых флагов.

    Сервер представляет собой веб-сервис (на Flask) из папки server в данном репозитории.

    Подробнее о сервере



Стрелки на диаграмме указывают направление движения флагов

Планы на будущее

См. список по ссылке.

Другие фермы

  • Ферма Бэя — более простая ферма, архитектура и некоторые детали реализации которой были заимствованы в этом репозитории. В ферме Бэя используется такой же формат эксплоита и тоже есть деление на клиент (start_sploit.py) и сервер (start_posting.py). Однако, у Бэя они должны быть запущены на одном компьютере (в FAQ объясняется, почему это неудобно), а сервер не предоставляет веб-интерфейс для просмотра статистики (и ряд других функций).

  • Ферма Андрея Гейна — ферма, решающая проблему с большим количеством процессов при большом количестве команд с помощью асинхронного сетевого взаимодействия (asyncio).

Авторы

Copyright © 2017, 2018 Александр Борзунов (команда «Destructive Voice»)

Архитектура и некоторые детали реализации заимствованы из фермы Бэя (Александра Берсенева).