Skip to content

Latest commit

 

History

History
44 lines (27 loc) · 6.15 KB

faq.md

File metadata and controls

44 lines (27 loc) · 6.15 KB

FAQ

  1. Что такое attack-defense CTF?

    Attack-defense CTF — это командное соревнование по информационной безопасности. Каждой команде выдаётся одинаковый образ операционной системы с запущенными в ней сервисами (такими как форум или веб-сервис с предсказаниями погоды), которые содержат уязвимости. Задача команды — найти уязвимости, после чего защитить свои сервисы и атаковать чужие, украв секретную информацию (флаги).

    Во время игры на серверах жюри работает проверяющая система. Каждые несколько минут она проверяет, что сервисы команд работают, и добавляет в них новые флаги.

  2. Зачем нужна ферма?

    Так как новые флаги добавляются постоянно, недостаточно взломать сервис противника один раз вручную. Обычно пишут скрипт (эксплоит), который крадёт флаги у заданной команды, а потом регулярно запускают его на каждой из команд-соперников.

    Ферма решает ряд проблем, связанных с этим процессом. Например, ферма:

    • Позволяет не реализовывать процесс отправки флагов в каждом эксплоите
    • Перезапускает эксплоиты на всех командах раз в заданный период времени (не перегружая компьютер слишком большим количеством процессов)
    • Останавливает зависшие процессы с эксплоитами
    • Следит, чтобы квота на отправку флагов в проверяющей системе не была израсходована
    • Защищает от спама флагами
    • Позволяет следить за результатами работы эксплоитов и статистикой отправляемых флагов
    • Переотправляет флаги в случае, если проверяющая система упала и не могла их принимать в течение некоторого периода времени
  3. Зачем ферма поделена на клиент и сервер?

    Это соответствует разделению ответственности в команде. Админ настраивает список команд и процесс отправки флагов в проверяющую систему на сервере фермы (это не нужно делать каждому члену команды), а затем запускает его на компьютере, к которому он имеет доступ.

    В свою очередь, авторы эксплоитов пишут и запускают эксплоиты на своём ноутбуке в клиенте фермы, после чего могут отлаживать их, следить за их выводом и правильной работой (не отвлекая админа на эти задачи). Если ошибка в одном из эксплоитов или некорректные параметры в клиенте фермы приведут к исчерпанию памяти на компьютере, зависнет только ноутбук автора эксплоита.

  4. Что используется в качестве БД для хранения флагов?

    Флаги на сервере фермы хранятся в БД SQLite. SQLite выбран потому, что он не требует установки и запуска дополнительного ПО, хранит всю базу в одном файле и предлагает широкую функциональность для работы с ней.

    Производительности SQLite вполне достаточно для работы с потоком флагов, возникающим даже на больших соревнованиях (даже full scan запросы по таблице с флагами выполняются без видимой задержки).

  5. Почему проблема с большим количеством процессов при большом количестве команд не решается с помощью asyncio?

    Использование asyncio накладывает ряд ограничений:

    • Эксплоиты должны быть написаны на Python 3 и взаимодействовать с сетью только асинхронно.
    • Авторы эксплоитов должны уметь использовать asyncio. Если в эксплоите произойдёт длительная блокирующая операция, всё это время клиент фермы не сможет атаковать другие команды.
    • Для сервисов, использующих редкие протоколы взаимодействия (например, разные варианты RPC), может не существовать асинхронных библиотек.

    В то время как мы не планируем добавлять поддержку асинхронных эксплоитов, вы можете попробовать ферму Андрея Гейна, использующую asyncio.