Мы провели CTF-турнир на IT-конференции. Рассказываем про организацию и показываем задачи
Попробуйте решить задачи по информационной безопасности, которые мы предложили участникам турнира.
10 октября мы провели свой первый CTF-турнир в рамках конференции Selectel Tech Day 2024. Участникам предстояло разгадать семь задач по информационной безопасности — например, найти в море сокровище, приготовить блюдо при 256 градусов, набрать 6x6x6 в костях и другое.
Поскольку ИБ — не основной профиль мероприятия, мы решили ограничить количество заданий и сделать их несложными. В тексте рассказываем, как организовали онлайн- и офлайн-стенд для решения тасков и показываем сами задания.
Подготовка к турниру
В этом году мы сосредоточились на четырех направлениях: серверы и оборудование, облачные технологии, информационная безопасность и машинное обучение. Чтобы организовать интересную активность по нашему профилю, при этом не «загрузить» сложными заданиями посетителей, нам нужно было выполнить несколько требований.
- Задания должны варьироваться от очень простых до средних. В первом случае пользователи могут найти решение за один ход, во втором — за два и более.
- Задания должны быть интересны и под силу тем, кто не разбирается в информационной безопасности.
- Задания можно решить без специального инструментария.
Как мы упомянули ранее, ИБ — не основной профиль мероприятия, поэтому делать что-то кроме привычных веб-приложений казалось бессмысленным. В качестве инфраструктуры решили использовать продукты Selectel. А чтобы и посетители, и зрители трансляции могли принять участие, организовали два формата турнира: офлайн и онлайн. Расскажем о каждом подробнее.
Онлайн-стенд
Архитектура онлайн-стенда выглядит следующим образом:
В публичном облаке Selectel развернули три виртуальные машины (далее — ВМ) произвольной конфигурации:
На каждой разместили по одному сетевому интерфейсу, установили Nginx и Docker. Задание в турнире — это отдельный Docker-контейнер, поэтому на ВМ подняли по семь контейнеров:
Все Docker-образы имели следующую структуру:
В Dockerfile описан порядок сборки контейнеров, а в requirements.txt — пакеты, которые необходимо установить. Приложение в контейнере требует наличие Flask, поэтому в файле указываем только этот фреймворк.
В каталоге src находится файл app.py. Он содержит логику приложения и каталоги со статичным контентом: картинками, JavaScript, CSS-файлами и HTML-страницами.
Все изображения для заданий сгенерировали с помощью искусственного интеллекта.
Готовые образы контейнеров расположили в Container Registry.
При необходимости их можно быстро доставить на ВМ:
Nginx мы использовали как reverse-proxy, чтобы публиковать задачи:
Все ВМ мы подключили к балансировщику нагрузки и настроили балансировку по L4. Белый IP-адрес балансировщика спрятали за фильтр DDoS-Guard.
В итоге мы получили надежную облачную инфраструктуру, которую можно масштабировать как за счет увеличения нод с контейнерами, так и самих заданий в новых контейнерах. Конечно, можно было использовать Managed Kubernetes. В следующих задачах, вероятно, перейдем именно на него.
Офлайн-стенд
Не все участники приносят на конференции свои ноутбуки. Есть и смартфоны, но решать задачи с изменением HTTP-запросов на них неудобно. Поскольку у нас уже был стенд по информационной безопасности, мы решили разместить турнир прямо там. Добавили две плазменные панели, соединили их с Raspberry Pi и дополнили периферией.
К Raspberry Pi подключили систему охлаждения и проводной Интернет. Дополнительно установили Kali Linux, чтобы участники могли использовать любые знакомые и удобные инструменты. Хотя для решения задач достаточно использовать только браузер.
В результате получили готовый стенд для CTF-турнира:
Задания с турнира
Ниже подготовили семь заданий с мероприятия. Решения предварительно спрятали под спойлером в Академии Selectel, чтобы вы могли выполнить их самостоятельно. Полученные флаги можно сдать Telegram-боту @SelectelTechDayBot.
Задание №1: Deep
Погрузитесь глубже и найдите сокровище! Формат флага: slcctf{}
Задание №2: 256 Degrees
Только шеф может брать этот рецепт! Лучше всего блюдо получается при готовке на 256 градусах! Получить рецепт
Формат флага: slcctf{}
Задание №3: Secret Path
Найдите секретный путь и выйдите к flag.txt. Формат флага: slcctf{}
Задание №4: Air
Мы ожидаем пилота для вылета! Если вы пилот, срочно пройдите по пути регистрации! Затем поднимайтесь в кабину и готовьтесь к вылету!
Формат флага: slcctf{}
Задание №5: Future
T-Rex! Тебе необходимо отправиться в будущее для поиска ценного сообщения! Я буду давать тебе инструкции по настройке телепорта. Будь внимателен! Для начала укажи точку назначения — локацию ‘Cloudtown’!
Формат флага: slcctf{}
Задание №6: Dice
Наберите 6x6x6 в костях! Сыграть в игру
Формат флага: slcctf{}
Задание №7: Geo
日本語を話してください. Формат флага: slcctf{}
Заключение
На этом все! Надеемся, статья будет полезна тем, кто планирует организовывать подобные мероприятия. А если у вас уже есть опыт организации CTF-турниров в компаниях, поделитесь им в комментариях.
Также благодарим всех участников, которые посетили конференцию и участвовали в наших активностях. Увидимся через год на Selectel Tech Day 2025!
Пишите в комментариях, какие задачи получилось решить! Ответы ищите в Академии Selectel.
Понравилась статья? Пройдите опрос, чтобы мы могли показывать вам только лучшие материалы: slc.tl/mv3r0. Среди всех участников разыграем игрушечного Тирекса.
Круто! Чувствую себя хакером 😁
Спасибо ❤️🦖
Какие задачи получилось решить?
Кажется, последнее задание — самое сложное
Попробуйте! Уверены, у вас получится)
Я конечно не ИБшник, но в мероприятии бы поучаствовал))
Ждем вас на Selectel Tech Day 2025!