Зарница 2016: Кибер-атака

044e52ef5081385e98bd91c2a0da3cf3.jpg

В публикации описывается мой опыт организации и проведения одного из этапов всероссийской военно-спортивной игры «Зарница», созданного для состязания участников в области информационных технологий.

1. Как всё начиналось

Предыстория мероприятия

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

Я сидел на совещании в здании правительства Забайкальского края среди организаторов каждого из этапов Зарницы и слушал что ожидали организаторы игры от этапа Кибератака. В предыдущий год уже был этап «Кибер атака», и сбавлять темп организаторы не собирались — идея взлома участниками информационных систем, перехвата сообщений и подобных деяний вызывала уважение, и по итогу совещания возник лишь один вопрос — какого уровня будут участники.

Планирование

За два месяца до первого рабочего дня Кибератаки оставалось два месяца и я принялся решать несколько задач: придумывать задания для участников, формировать свою команду для проведения этапа и распределять время на все предстоящие операции. Стоит отметить что работа по организации такого мероприятия отвлекает от семейных жизни на продолжительное время, этот вопрос важный и я заранее обговорил это с супругой. С самого начала был огонёк внутри и чёткое понимание что совмещать основную работу и Зарницу не получится, на что было решено первый месяц работать вечерами/выходными, а на второй месяц взять отпуск на основной работе (а у меня он тогда был 41 день). Среди многих технарей (в т.ч. и в себе) я часто видел что задачи мы видим зачастую только со стороны реализации технической состовляющей, а в реальности организационные вопросы могут убить любую хорошую реализацию, поэтому задаче планирования и распределения работ в таком контексте был поставлен высший приоритет.

Словно из кусочков мозаики в моей голове сложилась картина всего, однако вплоть до последних дней перед началом мероприятия не было одного элемента — списка участников и уровня подготовки, что негативно скажется в последствии (как со стороны организаторов так и стороны участников). Из материальной базы рассчитывать приходилось на: один физический сервер визуализации, 20 ноутбуков, коммутатор и отдельную комнату в своей квартире в качестве кабинета для работы. Сама игра на момент начала могла оказаться где угодно, и по опыту предыдущего лета — этап проходил на территории воинской части в пригороде, поэтому вопрос размещения сервера с заданиями где-нибудь «на-удалёнке» не рассматривался.

Военные будни предыдущей Зарницы

Занимательный случай на Зарнице 2015 был когда в воинской части солдаты утром, посреди 5 дневной игры, вынесли всю технику из помещения и принялись красить стены. После чего участники работали на ноутбуках в соседнем, совсем неподготовленном помещении, дыша парами краски.

После недели общения с участниками Зарницы'2015, знакомыми «в теме», размышлениями о том какой уровень опыта будет у приезжающих студентов, решения вопросов с ИП (самозянятых тогда не было) был очерчен план действий и необходимый набор компетенций нашей команды.

Команда

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

  • Создание заданий — 3 человека (включая меня)

  • Создание веб-сайта для ведения всех этапов Кибер атаки (выдача заданий, сбор результата, выставление баллов) — 1 человек

  • Помощь в организационных вопросах — 1 человек

Выбранная схема позволила достаточно хорошо распределить работу для параллельного выполнения. На роль создателей заданий я собеседовал людей из круга знакомых и знакомых-знакомых, обладающих достаточными знаниями и свободным временем. Рисковать мероприятием всероссийского уровня не допустимо, поэтому важным пунктом была репутация человека и подбор людей с небольшим запасом по количеству. В последствии «набор» с избытком себя оправдал — 2 человека отказались от работы примерно за месяц до начала игры, и избыточность тут нас выручила.

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

Роль писателя тех.заданий на задания участникам игры этапа выполнял так-же я сам. Из особенностей был факт что я не программирую, в следствие чего я мог только указать разработчикам какие типы уязвимостей следует имитировать и какие инструменты будут использовать участники. На 2016 год у меня был богатый опыт администрирования различного оборудования и ПО, а так-же я работал специалистом по информационной безопасности, так что сказать «куда копать» программистам особого труда не составило.

По организационным вопросам мне очень помог мой друг: где что забрать, с кем связаться и пожалуй самое дорогое — помощь с выделением помещения под проведение мероприятия, за что ему отдельная благодарность.

Подготовка

К началу игры была подготовлена лекционная аудитория, незамысловато укомплектованная следующим оборудованием: 30-ю ноутбуками, временно организованной локальной сетью, проектором и 3-мя рабочими местами организаторов этапа. Были сделаны презентация, конспект вступительной лекции, формализованы регламенты процесса ведения игры, созданы бланки для учёта участников.

2. Как всё проходило

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

Задания вошедшие в игру.

Название

Краткое описание сути задания

1

Флешка

Поиск скрытой информации на носителе. Скрытые файлы+потоки NTFS

2

Архив

Взлом архива посредством эксплуатации уязвимости plaintext zip

3

Бекап

Анализ и извлечение пароля из браузера

4

Рабочий компьютер

Извлечение пароля пользователя ОС Windows

5

Простой подход

Копирование файла из маршрутизатора Cisco эксплуатируя уязвимость в конфигурации SNMP

6

Конференция

Анализ EXIF и поиск места по координатам из файла

7

Маски-шоу

Настоить сетевое оборудование имея карту сети и доступ к одному маршрутизатору.

8

Забота о клиенте

Подмена обновлений программы обновляющейся по сети

9

Козу Быка и Кабана

Поиск скрытой информации в картинке сформированной из изображения и rar-архива.

10

Самозащита

Извлечение пароля из программе при помощи отладчика.

11

А внутри

Захват RTP-траффика IP-АТС и анализ телефонных переговоров.

12

Замок

Взлом генератора ключей путём анализа куска кода, с созданием собственного keygen’а

13

Нетбук

Анализ истории команд linux, копирование ssh-ключей root’а через сброс пароля root

14

Связь

Извлечение файла из FTP-трафика в формате pcap

15

Общий доступ

Повышение привилегий в Windows XP по сети при помощи эксплойта

16

Алиса из книжки

Фишинг с использованием некорректного адреса сайта электронной почты

17

SQL

Взлом СУБД веб сайта используя уязвимости SQL

18

Осторожно! Файлы!

Внимательный просмотр файлов с фотографиями. *Задание для знакомства с информационной системой Кибер-атаки

19

Активация

Анализ алгоритма генерацикодов и его воспроизведение.

20

Обфускация JavaScript

Извлечение кода из обфусцированоного JavaScript

21

Криптоанализ

Криптонализ шифрованых и нешифрованых файлов с восстановлением простого алгоритма шифрования

22

Перезагрузка

Восстановление параметров загрузки ноутбука

Правила, о которых договорились с участниками.

Задания становились доступными на определённое время, в ходе которого участник должен зайти на сайт, взять задание, найти в ходе решения спрятанный уникальный для участника код. В ходе решения задания если у участников возникали трудности и все единогласно голосовали за подсказку или дополнительное время, организаторы давали одну-две подсказки и продлевали время при наличии возможности (участников после обеда забирал автобус). В любом случае по закрытию задания проводилось небольшое обсуждение и представлялось решения задания, с возможностью решить его. Так-как игра должна нести просветительскую миссию мы старались доступно разъяснить суть решения и приводили реальные примеры по наиболее интересным заданиям. Почти все ребята имели мало опыта работы с программными инструментами для решения задач, но отмечу что искренний интерес решить задачу даже по окончании игрового мы старались удовлетворить — демонстрировали ход решения и разъясняли важные моменты.

Дни игры были построены следующим образом:

1 день — Знакомство с участниками, беседа о ИБ, ИТ и законодательстве РФ в этой области.

2 день — Первые здания, вопросы, корректировка текстов заданий и подготовка подсказок

3 день — Решение задач, разбор заданий

4 день — Решение задач, разбор заданий

5 день — Импровизация (задание №22 Перезагрузка), решение задач, работа с претензиями участников

После завершения игры, отдельным днём проводилось награждение участников (общее для всей Зарницы). Был момент когда ведущим передали листок с перепутанными 1-м и 2-м местами этапа Кибер-атаки, ошибку заметили и исправили прям на сцене, однако на будущее хотелось бы чтобы ведущие зачитывали официальный протокол (а не текст с вписанными местами)

Решение проблем с некорректными заданиями

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

Ошибки, которые не стоит повторять.

Спросите ли вы что можно было-бы сделать лучше? Я думаю «Да». Итак, уместно делать это списком по степени влияния на весь процесс:

  1. Заблаговременно выяснить квалификацию и опыт участников. Самая неприятное упущение которое произошло тогда. Считаю что нужно было организовать группу/чат с руководителями команд для общения напрямую. В Зарнице 2016 от этой ключевой информации можно было перестроить тексты заданий более доступным языком, добавить больше подсказок и маркеров действий.

  2. Опубликовать список заданий и перечень используемых технологий для решения заданий. Учитывая спортивную специфику мероприятия и непрофильную специализацию студентов (в плане ИТ и ИБ) нужно было заранее им сообщить к чему готовиться.

  3. Сократить объём теоретического материала который Я читал в первый день участникам, в ущерб решения заданий. Тут сказалось моё эмоциональное перенапряжение, а говорить долго я умею :-) Намного лучше было-бы дать возможность участникам поработать с тестовыми тремя-пятью заданиями, также это помогло-бы организатором лучше познакомиться с новичками.

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

  5. Протестировать все задания всех участников. Звучит банально, и на Хабре очень много админов и DevOps’ов которые сейчас скажут «Это-же очевидно, Кэп!». Но в моей команде никто не имел опыта какой-либо автоматизации, да и сами задания были разнобокими и написание автотестов под весь этот зоопарк не имело экономического смысла. Я считаю что дополнительное 5–10 дней в процессе подготовки заданий позволили бы внимательнее делать задания и исключить те 2–3 ошибки которые были выявлены.

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

Отказ диска за день до игры

За 1 день до запуска игры я забрал из дома SSD со всеми заданиями и веб-сайтом «Кибер-атаки», и я был неприятно удивлён удивление когда накопитель корпоративного класса с минимальной наработкой не определялся в сервере (восстановить SSD так и не удалось, а Kingston без чека не стал менять накопитель). Спасло что дома был второй такой же SSD на котором была резервная копия.

Сам SSD был обязательно нужен в качестве кэша для VMware, т.к. без него 30–60 виртуальных машин для заданий работали неприемлемо медленно.

Ссылки

  1. Страница Зарницы 2016 http://www.visitchita.ru/ru/o-chite/o-gorode/chita-gorod-molodeji/zarnica-2016.html

  2. Ссылка на задания и ответы к ним https://drive.google.com/drive/folders/0B1Z_EkMzNrVDQzUyY2dQb2dIbE0? resourcekey=0-UkY24s_1GD1RtFJK9RsbwA (ссылка обновлена 2022.08.13)

Благодарности

  • Организаторам III Всероссийской Зарницы, за то что сделали такое мероприятие возможным

  • Родителям и супруге, за поддержку и помощь в любых ситуациях.

  • Руководству ЗабГУ

© Habrahabr.ru