Skip to content

ksixty/bachelor-thesis

Folders and files

NameName
Last commit message
Last commit date

Latest commit

57cb4a0 · Jul 9, 2022

History

15 Commits
Jul 9, 2022
Jun 15, 2022
Jul 9, 2022
Jul 9, 2022
Jul 9, 2022
Jun 3, 2022
Jul 9, 2022
May 23, 2022
Jul 9, 2022
Jun 3, 2022
Jul 9, 2022
Jun 15, 2022
Jul 9, 2022
Jul 9, 2022
Jul 9, 2022

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