Skip to content

ksixty/bachelor-thesis

Repository files navigation

Проектирование и разработка среды для проведения дистанционных испытаний в области защиты информации

Введение

Обучение кибербезопасности — актуальный вопрос, важный для автора данной работы. С 2017 года он так или иначе связан с этой деятельностью, помогая разрабатывать и проводить соревнования по защите информации в формате CTF (англ. capture the flag — «захват флага»), а также разрабатывая методики преподавания сопутствующего материала и способствуя популяризации этой темы среди школьников России. При текущих трендах цифровизации и развития техники будущим поколениям придётся столкнуться с куда более серьёзными вызовами и сложностями, о которых сегодня можно лишь догадываться: например, в последнее время более активно, чем прежде, проводятся исследования в области квантовых вычислений, успех в которых гарантированно приведёт к утрате стойкости всех распространённых криптографических методов.

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

Формат CTF, в котором, как правило, проводятся подобные мероприятия, накладывает большое количество требований к рабочим станциям, на которых участники должны выполнять задания (возможность устанавливать дополнительное ПО, изменять конфигурацию системы и использовать произвольную ОС). Кроме того, для решения CTF-задач участникам необходим доступ в интернет — это не противоречит правилам РСОШ, если участники не используют сеть для общения, но зафиксировать нарушешие правил олимпиады становится на порядок сложнее.

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

Цель данной выпускной квалификационной работы — спроектировать и разработать среды для проведения дистанционных испытаний в области защиты информации, для чего необходимо решить следующие задачи:

  • определить требования к такой системе, основываясь на специфике CTF-соревнований, требованиях РСОШ и технических возможностях оргкомитета олимпиады;
  • выбрать лучшее из доступных готовых решений, если оно удовлетворяет всем требованиям, обосновать выбор;
  • изучить технологии, позволяющие достичь требований без готовых решений либо с их доработкой в противном случае;
  • разработать проект архитектуры среды для проведения испытаний;
  • разработать саму систему;
  • опробовать её в ходе очного этапа соревнований по защите информации Ugra CTF School, который состоится 2 апреля 2022 года;

Аналитическая часть: введение в понятие соревнований по защите информации [100%]

История CTF

  • Был ICPC — это примерно то же самое, но для хакеров и про хакеров.
  • В 1996 появился DEF CON CTF.
  • В 2008 появился RuCTF и команда «Хакердом».
  • В настоящее время проводится более сотни соревнований по всему миру — FBCTF, Google CTF, …; RuCTF — мирового уровня в т.ч.
  • CTF признаны в стране:
    • Киберполигоны
    • МРОО «АРСИБ», которая проводит региональные соревнования и т.н. «Кубок CTF России» (посредственного качества).
    • На крупнейших российских конференциях по ИБ — PHDays и ZeroNights — проходят зрелищные CTF-соревнования с крупными призами.

Правила, принципы и виды

Цель участников — в команде либо очно достать как можно больше флагов из недостаточно защищённых систем, в которых предусмотрены уязвимости.

[что такое флаги]

За 26 лет устаканилось два основных формата соревнований: Attack-Defense и Jeopardy.

Attack-Defense CTF

Этот вид соревнований возник первым. К нему относятся, например, все DEF CON CTF, проведённые с 1996 года по настоящее время.

Каждой команде дают по серверу с идентичным набором ПО — сервисами, в которых есть дыры. Необходимо на протяжении всей игры поддерживать работоспособность сервисов и находить дыры, чтобы:

  • красть флаги у других команд
  • обороняться (исправлять уязвимости в своих сервисах)

Соревнования вида attack-defense требовательны к участникам.

Jeopardy CTF

Этот вид CTF-соревнований отличается, в первую очередь, более простым набором правил, а также подходом: не атакуют друг друга — вместо этого им выдаётся набор задач, за решение которых начисляются очки. Побеждает команда, раньше всех набравшая больше всего очков.

Своё название данный вид соревнований получил благодаря схожести с форматом телепередачи «Своя игра», в которой игроки выбирают вопросы, сгруппированные по темам и стоимости, с той лишь разницей, что в CTF команды решают задачи асинхронно и не должны видеть решения других команд. Таким образом, соревнования вида jeopardy больше похожи на соревнования по спортивному программированию, где участники получают баллы за верно решённые формально описанные задачи и дисквалифицируются за нечестную игру: списывание или получение иной внешней помощи.

В отличие от attack-defense, порог входа в соревнования, построенные по принципам jeopardy, существенно ниже. Обычно участникам, чтобы получить доступ к игре, достаточно лишь зарегистрироваться в игровой системе. Из этого не следует, что задачи в jeopardy проще, чем эксплуатация уязвимостей сервисов в attack-defense. Для решения могут пригодиться самые разные умения и навыки. Именно поэтому задачи разделяют на категории, а команды зачастую состоят из специлаистов в непересекающихся областях.

Соревнования по защите информации Ugra CTF

История (актуальность + значимость):

  • Jeopardy CTF
  • Проводятся с 2016 года
  • Всероссийская олимпиада по правилам РСОШ - даёт баллы ЕГЭ при поступлении в некоторые вузы
  • Более 500 участников каждый год
  • Распределённо-очный финал: 10 городов России

На площадках нет представителей команды разработки: только сотрудники этих площадок. Нужна система, которая бы защитила от списывания, минимизировала бы нагрузку на представителей площадок и предоставляла бы участникам комфортную среду для решения задач.

Необходимо решить три задачи:

  • выдача условий, проверка решений, подсчёт итогов;
  • прокторинг (автоматизированный контроль за ходом соревнований);
  • предоставление среды для решения задач.

Теоретическая часть

Борда

Что такое

Если первые Attack-Defense соревнования проводились вручную (участники передавали флаги членам жюри через мессенджер IRC и ждали ответа), то соревнования вида jeopardy с самого начала были автоматизированы. Это связано с относительно более тривиальным игровым процессом, чем в соревнованиях вида attack-defense. Обычно участники получают доступ к веб-приложению, которое содержит условия задач, турнирную таблицу и форму для сдачи флага. Его принято называть бордой.

Борда должна отвечать ряду требований:

  • устойчивость к высоким нагрузкам
  • многопоточность (корректная: без race conditions)
  • устойчивость к атакам (участники — хакеры, хоть и юные)
  • защита от списывания и мультиаккаунтинга
  • гибкость (произвольные правила)

Есть готовые решения

Существует множество программных продуктов, позволяющих проводить jeopardy – CTF-соревнования, что называется, «под ключ»: организаторам необходимо лишь собрать участников, разработать задания и загрузить их на готовую платформу, при необходимости изменив некоторые её параметры. К сожалению, автору не удалось обнаружить такой системы, которая удовлетворяла бы всем требованиям, указаным выше.

[таблица]

Ни одно не подходит

Нужно делать свою. Следовательно, можно расширить перечень требований.

Обычно размещают задачи и следят за их работоспособностью вручную — можно автоматизировать этот процесс. Задачи часто однотипны с инфраструктурной точки зрения: это или веб-приложения, или сервисы на сокетах, или сгенерированные автоматически файлы. Можно разработать систему, позволяющую декларативно описать, как устроена задача, и делегировать полномочия по её развёртыванию борде.

[статистика «столько-то ловили на списывании в такой-то год»]

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

Регистрация участников должна быть открытой на отборочном этапе и закрытой в финале (по списку участников). В финале также необходимо соблюдать требования РСОШ и скрывать турнирную таблицу.

Модель системы?

[какое-нибудь описание с декомпозицией функций]

Среда для решения задач

Каждому участнику на площадке предоставляется компьютер. Программная среда компьютера должна быть пригодной для решения CTF-задач: нужен Linux с правами администратора (чтобы устанавливать своё ПО). Поскольку компьютеры не наши, жёсткий диск лучше не трогать. В идеале можно предоставить участникам возможность заранее предоставлять свои образы ОС.

Следовательно, среду лучше записывать на внешний загрузочный носитель — причём, участнику давать доступ к виртуальной машине, а в родительской ОС разместить инструменты прокторинга и провизии.

Прокторинг:

  • запись экрана;
  • контроль целостности ОС.

Провизия:

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

Общая модель системы

Модель компьютерной системы

Виртуальная частная сеть, в которой:

  • сервер жюри с бордой (веб-интерфейс, HTTPS);
  • сервер провизии и прокторинга (HTTP-API, управление через SSH);
  • хранилище образов ВМ участников;
  • рабочие места участников.

Рабочие места изолированы друг от друга, но доступ в интернет есть.

Модель угроз

Участник:

  • может общаться в интернете (нельзя)
  • может обмениваться флагами с другими участниками
  • может обмениваться условиями задач с внешним миром
  • может атаковать инфраструктуру (в разных местах)

Организатор:

  • может помогать участникам

Проектная часть

Kyzylborda

Разработанная для Ugra CTF борда.

  • Стек технологий:
    • Почему «Питон»;
    • Postgres.
  • Веб-интерфейс:
    • Flask;
    • gunicorn + nginx — конфигурация, рассчитанная на параллелизм и высокие нагрузки;
    • фильтрация через iptables — выдача банов и рейтлимитов.
  • Супервизор и run_daemon:
    • поддерживает себя и все задачи в рабочем состоянии;
    • перезапускает упавшие задачи;
    • логгирует посылки участников;
    • (пре-) генерация вариантов задач для каждой команды (+ описание криптографии за этим);
    • типы задач:
      • статическая задача
      • генератор:
        • в контейнере:
        • контейнер один на задачу + обмен токенами с генератором
        • контейнер на каждую команду
      • без контейнера:
        • процесс + nix-пакет.
  • Ядро:
    • конфигурация соревнований;
    • произвольные правила (например, можно динамически оценивать задачи: стоимость обратно пропорциональна числу решивших её команд);
    • проверка флагов;
    • регистрация и авторизация участников.

SchoolOS

Средя для участников.

  • Стек технологий:
    • NixOS и пакетный менеджер Nix:
      • декларативный подход к конфигурации системы и ПО;
      • гарантия целостности среды через иммутабельность.
    • Прокторинг и провизия:
      • клиент-серверный протокол;
      • wallpaper.py;
      • компоненты, отвечающие за провизию (загрузка пользовательского образа ВМ, усатновка шифра и ФИО);
      • remote-customize.sh, ssh-to-client.sh, handle-proctor.sh;
      • проверка статуса всех рабочих мест (schoolos-health);
    • Сборка образа (build-image).

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published