Найти в Дзене
ACISO CTF

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

Оглавление

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

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

-2

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

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

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

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

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

-3

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

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

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

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

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

-4

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

  1. Максим Смирнов рассказал, как устроен SOC изнутри и о том, каково это — быть аналитиком центра реагирования.
  2. Артем Избаенков (EdgeЦентр, АРСИБ) представил доклад “DDoS атаки от А до Я”, в котором обозначил основные цели, типы и сложности различных атак, а также поделился реальными кейсами подходов к защите.
  3. Даниил Лобанов (Российская Академия Наук) провел двухчасовое практическое занятие “Как по языку тела оптимизировать рабочий коллектив и выбрать для себя лучшие задачи” и рассказал, как при помощи инструментов профайлинга, не задавая никаких вопросов, прогнозировать успехи и провалы каждого человека в любой из областей.
  4. Александр Берсенев (Хакердом) выступил с докладом “Как оценить сложность паролей с помощью алгоритмов машинного обучения”. Александр рассказал о неэффективности подходов современных веб-сайтов к защите от атак по словарю, и о своем опенсорс проекте, который решает эту проблему.
  5. Роман Хапов (Хакердом) на примере ОС Linux и архитектуры x86_64 объяснил, что такое shellcode, где они применяются, а также базовые принципы их написания и эксплуатации.

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

-5

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

Соревновательная часть проходила на протяжении классического для 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 запроса, он сможет поделиться чужой заметкой, которая будет создана в будущем.

-6

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/

-7

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

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

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

  • Русская медная компания;
  • VK;
  • Координационный центр доменов ru/ рф;
  • ALT;
  • Лаборатория Касперского;
  • EdgeЦентр;
  • АРСИБ;
  • УрФУ.
-8

Оргкомитет

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

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

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

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

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

Александр Алексеев, директор 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

-10