Всё о CTF в России

RuCTF 2023: пост-релиз

2023-05-15 00:00:00

Введите описание изображения

22 апреля состоялись XV международные соревнования по информационной безопасности RuCTF Finals 2023.

Крупнейший российский CTF в этом году проходил в смешанном формате: предполагался как очный зачет, так и участие в онлайн-формате для тех команд, которые не смогли приехать в Екатеринбург.

Введите описание изображения

Об изменениях

В последний раз очный этап RuCTF проходил в 2019 году, и за это время произошло несколько существенных изменений:

Смена названия. В прошлом попасть на финал RuCTF можно было через квалификационное онлайн-соревнование RuCTFE. Начиная с 2022 года квалификационный тур просто называется RuCTF, а сам финал получил логичное название RuCTF Finals.

Изменение формулы подсчета очков. Многие команды уже знакомы с новой формулой благодаря участию в соревновании HITB PRO и квалификации на RuCTF Finals: теперь количество флагпоинтов, полученных за атаку на сервис, растет со временем, которое сервис находился без решения, и начинает падать вскоре после first blood.

Смена локации. Первые очные RuCTF проходили на базе Уральского федерального университета. А с 2016 года — в Ельцин Центре. По изначальным планам организаторов, финал этого года вновь должен был состояться в Ельцин Центре, но за 2 недели до соревнования была найдена более подходящая площадка — Teatro Veneziano Concert Hall, которая соответствует легенде чемпионата.

Введите описание изображения

Об участниках

Из-за паузы в проведении очных RuCTF Finals, организаторы приняли решение пригласить к участию не только команды, прошедшие квалификацию в 2022 году, но и тех участников, которые попали в топ-30 на RuCTF 2021.

Таким образом, в финальном этапе смогли принять участие 15 команд из различных городов России, включая Москву, Санкт-Петербург, Омск, Новосибирск, Томск, Краснодар и Воронеж. Остальные 18 команд, среди которых были участники из Италии, Австрии, Монголии и Казахстана, продолжили борьбу в онлайн формате.

О конференции и дополнительных активностях

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

Введите описание изображения

Программа включала в себя 5 выступлений:

  1. Максим Смирнов рассказал, как устроен SOC изнутри и о том, каково это — быть аналитиком центра реагирования.

  2. Артем Избаенков (EdgeЦентр, АРСИБ) представил доклад “DDoS атаки от А до Я”, в котором обозначил основные цели, типы и сложности различных атак, а также поделился реальными кейсами подходов к защите.

  3. Даниил Лобанов (Российская Академия Наук) провел двухчасовое практическое занятие “Как по языку тела оптимизировать рабочий коллектив и выбрать для себя лучшие задачи” и рассказал, как при помощи инструментов профайлинга, не задавая никаких вопросов, прогнозировать успехи и провалы каждого человека в любой из областей.

  4. Александр Берсенев (Хакердом) выступил с докладом “Как оценить сложность паролей с помощью алгоритмов машинного обучения”. Александр рассказал о неэффективности подходов современных веб-сайтов к защите от атак по словарю, и о своем опенсорс проекте, который решает эту проблему.

  5. Роман Хапов (Хакердом) на примере ОС Linux и архитектуры x86_64 объяснил, что такое shellcode, где они применяются, а также базовые принципы их написания и эксплуатации.

Кроме того, все посетители конференции и участники соревнования могли решить специальные задания, опубликованные в канале Хакердома, и выиграть мерч мероприятия.

Введите описание изображения

Об игре и результатах

Соревновательная часть проходила на протяжении классического для Attack-Defense времени — 8 часов, 7 из которых была открыта сеть. За это время участникам предстояло решить целых 9 сервисов.

Описание сервисов

bookster — сервис для сохранения книг во льдах Арктики, аналог GitHub Arctic Code Vault. Так как в будущем все любят смотреть короткие видео, их необходимо прикреплять к книгам. Превью генерировалось при помощи устаревшей версии FFmpeg — FFmpeg 2.1.8, которая подвержена уязвимости на чтение произвольных файлов при отправке поддельного плейлиста вместо видео.

dcs — сервис, который умеет исполнять программы на языке Demidovich Computer Systems. Язык компилируемый, его инструкции транслируются в x86_64 и исполняются сервисом в рантайме. Компилятор содержал баг, из-за которого можно было обойти инструкцию завершения программы и передать управление на секцию с данными, в которую нужно записать шеллкод.

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

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

museumorphosis — сервис-конструктор музеев, который позволяет создать свой уникальный музей и экспозицию. В сервисе было реализовано расширение языка SQL, при помощи которого можно было делать запросы к различным базам данных. Это расширение при разборе запросов использовало регулярные выражения, что привело к возможности сделать SQL-инъекцию в одном из запросов.

scp — сервис работает с документацией фонда SCP и предоставляет язык запросов для взаимодействия с документами. Сервис был написан на Java и собран с помощью технологии GraalVM, которая поддерживает JIT и AOT компиляцию — как следствие, реверс приложения за разумное время был невозможен. Участникам нужно было использовать альтернативные способы изучения бинарного файла, чтобы найти возможность получать доступ к скрытым полям документов при помощи определённых запросов.

sneakers — арт-галерея, в которой можно создать действительно уникальные и персонализированные бархатные тяги и ознакомиться с огромной коллекцией кроссовок. В сервисе была реализована система поиска, использующая различные фильтры на основе перечислений (Enum). К сожалению, ASP.NET недостаточно хорошо валидирует Enum’ы, из-за чего злоумышленник мог манипулировать применяемыми фильтрами и прочитать флаги, спрятанные в изображениях кроссовок.

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

stalker — сервис для хранения заметок, которыми можно поделиться с другими пользователями. В качестве хранилища использовалась база MariaDB на движке MyISAM, в котором есть интересная особенность: при определённых условиях значение уникального id, помеченного как AUTO INCREMENT, может быть переиспользовано. При этом часть состояния базы хранилась в памяти сервиса, что приводило уязвимости: если злоумышленник специально замедлит отправку HTTP запроса, он сможет поделиться чужой заметкой, которая будет создана в будущем.

Введите описание изображения

First bloods

museumorphosis: kks

lost_museum: C4T BuT S4D

solaris: C4T BuT S4D

Hermicache: C4T BuT S4D

sneakers: SPRAVEDLIVAЯ RUSH A

Stalker: C4T BuT S4D

Bookster: SPRAVEDLIVAЯ RUSH A

DCS: pwnthem0le

SCP: no auto-sploited firstblood

Также следует отметить, что команда Bushwhackers после часового перерыва на обед смогла украсть по одному флагу у команды smiley-from-telega в четырех сервисах: Bookster, DCS, SCP и Stalker. Однако из-за отсутствия полноценных сплоитов эти результаты не были засчитаны.

Результаты

Общий зачет:

  1. C4T BuT S4D — 554422,750 баллов

  2. pwnthem0le — 468188,730 баллов

  3. Bushwhackers — 302387,960 баллов

Очный зачет:

  1. C4T BuT S4D —554422,750 баллов

  2. Bushwhackers —302387,960 баллов

  3. SPRAVEDLIVAЯ RUSH A — 261970,690 баллов

После завершения соревнования, партнер мероприятия — компания VK — взяла интервью у победителей RuCTF 2023, команды C4T BuT S4D: https://habr.com/ru/companies/vk/articles/732774/

Введите описание изображения

Об организаторах

Спонсоры и партнеры

Без поддержки ведущих российских айти-компаний проведение RuCTF было бы невозможно. Организаторы выражают благодарность всем партнерам за огромный вклад в успех мероприятия:

  • Русская медная компания;

  • VK;

  • Координационный центр доменов ru/ рф;

  • ALT;

  • Лаборатория Касперского;

  • EdgeЦентр;

  • АРСИБ;

  • УрФУ.

Введите описание изображения

Оргкомитет

Успешное проведение RuCTF на протяжении многих лет стало возможным благодаря слаженной работе членов оргкомитета под руководством ректора УрФУ, к.и.н., доцента Виктора Анатольевича Кокшарова. Оргкомитет тесно сотрудничает со всеми партнерами и спонсорами, чтобы обеспечить высокий уровень организации мероприятия.

Состав оргкомитета:

  • Виктор Владимирович Минин, заместитель председателя оргкомитета, Председатель Правления АРСИБ;

  • Виталий Анатольевич Баранский, профессор Кафедры алгебры и фундаментальной информатики ДММиКН ИЕНиМ УрФУ, директор РУНЦ “Интеллектуальные системы и информационная безопасность”;

  • Полтавец Андрей Васильевич, проректор по информационным технологиям УрФУ;

  • Пьянзина Елена Сергеевна, директор Департамента математики механики и компьютерных наук УрФУ;

  • Алексеев Александр Андреевич, директор RuCTF.

Введите описание изображения

Команда проекта

За разработку, организацию всех процессов и проведение соревнования отвечали:

Александр Алексеев, директор RuCTF Finals;

Александр Котов, директор команды HackerDom;

Роман Быков, DevTeam Observer;

Дмитрий Лукшто, руководитель команды разработки;

Александр Берсенев, администратор сетевой и облачной инфраструктуры;

Михаил Гнедашев, администратор проверяющей системы;

Василий Пахомов, DevOps;

Владимир Черепанов, разработчик сервиса;

Александр Мошков, разработчик сервиса;

Даниил Мошков, разработчик сервиса;

Роман Хапов, разработчик сервиса;

Даниил Шарко, разработчик сервиса;

Данил Казаков, разработчик сервиса;

Александр Каргин, разработчик сервиса;

Валерий Ведерников, разработчик сервиса;

Егор Постовалов, разработчик сервиса;

Антон Нечуговских, разработчик сервиса.

Ссылки

Сайт соревнования: https://2023.finals.ructf.org/

Репозиторий: https://github.com/HackerDom/ructf-finals-2023

Группа ВК: https://vk.com/ructf

Канал: https://t.me/RuCTF

Фотографии: https://disk.yandex.ru/a/LwybeCMcf1OR0w

Форма обратной связи: https://forms.gle/Nw5A6DYwM9U2QUv6A

Страничка на CTFtime: https://ctftime.org/event/1956

Введите описание изображения