Привет, Username, в данной статье я хочу рассказать тебе о конференции KazHackStan, которая прошла 13-15 сентября 2023 года. Также, поделиться информацией о некоторых векторах атак на полигоне и подготовке, которая позволила нам - команде "Kcell" - завоевать почетное первое место в кибербитве за владение виртуальным городом.
О конференции KazHackStan
KazHackStan - это ведущая конференция по кибербезопасности в Центральной Азии, которая проходит на ежегодной основе. Согласно статистике с официального сайта, за 3 дня конференцию посещают свыше 3000 человек и более 30 международных спикеров, которые делятся своими исследованиями и методологиями. Каждый из трех дней конференции придерживается определенной тематики:
День первый - Government & Business day
День второй - Secure development day
День третий - Hack day
Вишенкой данного мероприятия является кибербитва за владение виртуальным городом CyberKumbez, который содержит необходимые системы жизнеобеспечения современного города и в этот раз был разделен на 3 инфраструктуры: Citi, Prom и Lyzat (Почему Лязат? Остается тайной. Скорее всего какая-то локальная штука.). Каждая инфраструктура строится по примеру небольшой корпоративной сети, где есть DMZ зона, доменная сеть, много различных сервисов и самой дорогой целью являются системы SCADA. В этом году за главный денежный приз - в размере одного миллиона тенге - три дня в офлайн режиме боролись 24 команды.
Главной целью всех команд является взломать каждый периметр виртуального города и добраться до SCADA систем, по пути собирая различного рода уязвимости и получая за это баллы. Все баллы можно разделить на несколько групп:
Баллы за BugBounty (~50 задач):
RCE = 500 баллов
SSTI = 400 баллов
SQL injection = 300 баллов
LFI = 200 баллов
XXE = 250 баллов
SSRF = 150 баллов
Баллы за бизнес риски и взлома SCADA систем:
SCADA ~ 1500 - 7000 баллов
Бизнес риски ~ 1000 - 4500 баллов
Ну, и как ты уже понял, Username, кто больше набрал баллов к концу последнего игрового дня, тот и победил.
О команде
Наша команда состоит из специалистов информационной безопасности различных направлений:
Wilson (капитан команды, AppSec)
Void (SOC инженер)
Kombat (Penetration tester)
Dw0rf (Penetration tester)
Mocbka (Penetration tester)
Все мы трудимся в рамках одной компании для повышения ее уровня безопасности, если быть точнее - это крупный Казахстанский телеком оператор. Примерно полгода назад, зимой 2023 года, сидя с коллегами в офисе мы задумались об участии в кибербитве и спустя некоторое время принялись за подготовку. Как команда, мы собрались совсем недавно, KazHackStan - это первое серьезное соревнование, где нам удалось участвовать, ранее участвовали только в одном локальном CTF.
Подготовка
Казалось бы, занимаешься каждый день информационной безопасностью, ломаешь сайты (легитимно конечно же) и доменные сети, изучаешь технологии, но, как показывает практика участия в других соревнованиях, этого может оказаться недостаточно. На мой взгляд, главными причинами в данном случае являются ограничения по времени и слабая подготовка команды. Мало уметь ломать, необходимо делать это быстро, так как зачастую на второй и последующие дни пробиться через DMZ зону или попасть в определенный внутренний периметр становится по разным причинам сложнее, например, это может быть намеренная или случайная поломка одного из векторов, заложенных разработчиками полигона. Также, необходимо учитывать, что стоимость бизнес рисков падает с каждым разом, как только одна из команд его решает. Поэтому, вариант тестирования с горячим чаем и шоколадным батончиком отваливается. Далее, я хотел бы рассказать о подготовке к соревнованиям, проделанной нашей командой. Всю подготовку можно разделить на главы, где почти каждая последующая глава является вытекающей из предыдущей.
ГЛАВА 1. Сбор данных и перенятие опыта, "гоу в Discord?"
Чтобы как можно лучше подготовиться, мы стали изучать опыт участия других команд в различных соревнованиях, также у нас уже имеется собственный опыт участия в кибербитве "The Standoff", но в этот раз было решено пересмотреть тактику и расширить наши горизонты. Информацию мы собирали из статей на различных форумах, интервью с командами, личные переписки и т.д. Как оказалось, такого контента уже достаточно, чтобы можно было построить план действий. В качестве основного командного средства взаимодействия был выбран Discord, по сути он позволяет делать все необходимое: вести заметки по полигону и командный cheat sheet, имеется голосовой чат на случай если ваша команда не централизована, бесплатный, можно создавать множество групп/подгрупп ну и т.д. Звучит вроде бы как не плохо, коммуникацию обеспечили, идем дальше.
ГЛАВА 2. Играем в HTB
Тут возникает вопрос - на какой площадке лучше готовиться, по сути, если у вас много времени в запасе, то ответ прост – везде. Некоторые из популярных площадок: HackTheBox, Burp Academy, Root Me, TryHackMe и т. д. Любая задача на полигоне может быть реализована на основе другой задачи, в результате неожиданного вдохновения автора при ее решении на одной из популярных площадок, соответственно, если вы уже решали подобную задачу, вам будет проще. Мы же решили сильно не распыляться и остановились на HackTheBox, купили VIP подписку и стали просто подряд «ломать» все тачки, которые нам были доступны. Но, как было сказано ранее, полигон - это не одна отдельная машина – это связь множества, в том числе имеется доменная сеть, получается нам нужно прокачивать навык взлома AD и тут, спустя множество user.txt и root.txt, мы двинулись в сторону Endgames.
ГЛАВА 3. Играем в HTB Endgames
Если немного лучше изучить площадку HackTheBox, то можно нарваться на раздел Endgames – это продвинутые лаборатории, моделирующие реальную инфраструктуру и сценарии эксплойтов с несколькими хостами и различными путями атаки, в том числе имеются вектора атак, связанные с AD. Всего сейчас доступно 7 Endgames лабораторий, в каждой из которых содержится примерно по 2-8 машин связанных друг с другом. Однако, это не бесплатное развлечение и понадобится VIP подписка. Также, решить все 7 вам удастся, только если у вас на площадке уже есть звание серьезного уровня, иначе с VIP подпиской доступно только 4 лаборатории. Endgames лаборатории мы старались решать командой совместно, что позволило отточить взаимодействие и командное ведение заметок. На мой взгляд, некоторые шаги оказались немного надуманные и после решения всех четырех лабораторий осталась некоторая неудовлетворенность, в том числе, не было ощущения, что навык взлома AD сильно поднялся, поэтому мы переходим к следующей главе.
ГЛАВА 4. Нужно больше AD, GOAD нам поможет
В какой-то момент, в результате бесконечного серфинга интернета в поисках универсального метода взлома AD, мы наткнулись на лабораторию GOAD (Game Of Active Directory). GOAD — это лаборатория, которая предоставляет уязвимую среду Active Directory, готовую к использованию для отработки обычных методов атак. Тут нужно подметить, для того чтобы развернуть всю лабораторию понадобится не мало ресурсов, в нашем случае ресурсы были в избытке и мы не побоялись ими воспользоваться. Не знаю, какой минимальный конфиг нужен для лаборатории, но у нас было так: 80 ядер, 250гб ОЗУ, 1,5тб места на жестком диске.
На прохождение лаборатории нам понадобилось примерно 15-20 дней по 3-5 часов, с учетом, что сама лаборатория состоит примерно из тринадцати частей, каждая из которых является отдельной темой. Прохождение по каждой части можно найти по следующей ссылке https://mayfly277.github.io/posts/GOADv2/, также, в описании имеются все необходимые команды и пошаговая инструкция для их выполнения со скринами и пояснениями. Далее описаны темы, с которыми вы столкнетесь при прохождении GOAD:
Разведка и сканирование
Поиск пользователей
Перечисление пользователей
Relay атаки
Продвижение, когда есть доменный пользователь
ADCS
MSSQL
Повышение привилегий
CVE-2022-35914
Боковое перемещение
Дамп кредов
Делегирование
ACL
Трастовые отношения
ГЛАВА 5. Участвуем в CTF
Во время подготовки мы наткнулись на один локальный CTF "KAZCTF" и решили принять участие, с целью повысить уровень командного взаимодействия и проверить удобство Discord в боевых условиях. В результате данного CTF нам удалось занять второе место. В следствие стал понятен один факт - Discord нам не подходит и слишком сложен для удобного ведения заметок. Однозначно, его можно использовать, если выработать серьезную систему тегов и ключей, по которым можно производить быстрый поиск необходимой информации, однако, чтобы выработать такой подход и заставить каждого интуитивно придерживаться его нужно достаточно много времени, по этой причине Discord перешел на второй план и остался просто как средство связи, если один из наших игроков не сможет находиться на полигоне offline.
ГЛАВА 6. Соберемся и подведем итоги на текущий момент, "гоу в Notion?"
На протяжении всей подготовки, мы зачастую устраивали небольшие часовые митинги, где обсуждали текущее состояние подготовки и накидывали новые идеи. На мой взгляд, это действительно необходимо делать с целью выявления проблем и оперативного их решения, как капитан ты должен понимать текущую мотивацию команды и отдельных участников, замечать слабые стороны и видеть сильные стороны отдельных игроков, в дальнейшем это поможет распределить команду по полигону наиболее продуктивным образом. Как раз на одном из митингов после CTF было решено уходить из Discord, взамен был выбран Notion и при первом же его использовании было понятно - это то, что нам нужно. Notion прост в использовании, позволяет формировать страницу так, как вам будет удобно, подсвечивать важные моменты, можно создавать разделы, подразделы и содержания, а главное - нет бесконечного скролинга чата с огромным количеством зачастую не связанных сообщений. Но, как и всегда, есть некоторый минус, для командного взаимодействия Notion предоставляет облачное командное пространство, где каждый добавленный участник пространства видит все изменения и может вносить собственные, такой подход имеет ограничения, чтобы их снять необходимо заплатить по 10$ за каждого участника команды, небольшая потеря на наш взгляд.
Все командное пространство мы поделили на две части Cheat-Sheet и KazHackStan (вся информация по полигону). В Cheat-Sheet мы записывали наши заметки: вектора атак, чек листы, некоторые хитрости, различные команды, пояснения к командам и т.д.
Раздел KazHackStan был поделен на множество подразделов и представляет собой дерево, где каждая ветка связана с предыдущей и расширяет ее. Основные корневые ветки были названы в честь трех инфраструктур полигона: City, Prom и Lyzat. Предлагаю рассмотреть ветку City. При клике на саму ветку, мы получаем информацию по самой инфраструктуре: ее название, описание, подсеть, имеющиеся бизнес риски, все доступные учетные записи, скан DMZ зоны и другие особенности выбранной инфраструктуры. Раскрыв ветку City, мы попадаем на две другие: "DMZ" и "Внутренняя сеть", думаю название говорит само за себя, раскрыв ветку DMZ мы получаем все хосты "DMZ" зоны, раскрыв ветку "Внутренние хосты" мы получаем список всех внутренних хостов. Кликнув на необходимый хост в одной из двух веток, мы получали следующую информацию: краткое описание путей захвата user и root пользователей, ifconfig/ipconfig, результаты сканирования nmap текущего хоста, список новых доступных хостов, пароли и учетные записи, полученные с этого хоста, дампы SAM, LAPS, LSASS и любая другая полезная информация. Если захваченный хост вел в новую сеть, то в Notion данный хост превращался в новую внутреннюю ветку, раскрыв которую можно было получать аналогичную информацию по любому из доступных хостов. Также, мы договорились о несложной системе тегов и правил ведения Notion: формат заголовков и подзаголовков, если захватили хост и получили низкие привилегии, то помечаем его молнией; если поднялись до рута или администратора, то помечаем его огоньком.
В совокупности, такой подход помог структурировано держать информацию и на второй, и даже третий день мы знали, где мы находимся и какая у нас ситуация, а главное - любой участник мог перейти с одной инфраструктуры в другую и усвоить текущую обстановку за 5 минут. Кто-то может сказать, что мы тратили на это много времени, в целом - да, но мы тратим столько же времени, когда скролим беспорядочный чат с различными данными в поисках нужной нам информации.
ГЛАВА 7. Оборудование, ПО, CVE, технологии
Подготовка различного рода оборудования и программного обеспечения - это достаточно важная часть, так как зачастую в рамках соревнования могут появляться новые задачи различного рода: взлом ноутбука, перехват дрона, взлом шлагбаума и т.д.
В этот раз мы подготовили следующее:
5G роутер для создания резервного интернет канала;
флэшка Rubber Ducky, флэшка Bash Bunny, Bad USB с WiFi для удаленного выполнения команд;
Flipper Zero, так получилось, что их было аж 3 штуки;
Raspberry pi v3 и v4;
загрузочные флэшки с ОС Linux и Windows;
HackRF One Software Defined Radio;
несколько VPS/VDS, на которых развернули свой transfer.sh и веб-директорию с различными готовыми для эксплуатации шеллами и полезным софтом;
сканер Acunetix;
для брута мы использовали RTX 3060 Ti, две RTX 3070 Ti и RTX 2060. Видеокарты были связаны между друг другом посредством отдельного ПО Fitcrack, которое делило задачи между всеми устройствами;
рация Kenwood - использовалась в таске, где нужно было перехватить рации организаторов;
WiFi адаптер Alfa;
WiFi Pineapple;
8 портовый switch и патч-корды, сетевой фильтр (маловажные детали, но никто не застрахован от форс-мажоров);
и множество различного узко заточенного ПО.
Помимо всего ранее перечисленного, много внимания мы уделили сбору информации по определенным технологиям и методикам; список формировался на основе нашего опыта и включает: известные CVE, уязвимости Gitlab, техники и уязвимости, используемые для побега из Docker, эскалация привилегий в ОС Linux и Windows, атаки на Telegram, Pivoting и проксирование трафика, обход Defender, Antivirus и AMSI.
ГЛАВА 8. Финальный штрих
Финальным штрихом в нашей подготовке стал процесс закрепления всего изученного ранее - мы старались максимально набить руку, чтобы эффективно использовать собранную информацию. Как уже было сказано ранее, скорость решения задач может стать ключевым фактором при участии в подобных соревнованиях, по этой причине, еще до старта полигона мы старались применять уже собранную информацию на HTB и в собственной корпоративной среде, что дало некоторые плоды и позволило улучшить безопасность компании.
Вектор до SCADA
В данном разделе будет рассказано об одном векторе до SCADA - система в инфраструктуре City - который позволил нашей команде в третий день набрать сразу 5000 очков. Как оказалось, в подсеть со SCADA системами можно было попасть несколькими путями:
Пробиваем кучу веба, повышаем привилегии на хостах, собираем нужные credentials и в какой-то момент приходим в нужную сеть.
Второй вектор подразумевал пробитие DMZ зоны, захват одной из машин, где можно было найти доменные учетные записи и уже с этими учетными записями начать двигаться по AD, пока не придем к нужной подсети.
Каждый из способов в конце позволял получить доступ к определенному контроллеру. Для атакующих SCADA система представляла из себя веб-интерфейс, через который она и управлялась, однако, во всех случаях требовалась авторизация. Существовало всего две учетный записи к каждому контроллеру: инженер – это пользователь с высокими привилегиями и оператор – это обычный пользователь, который мог производить лишь определенные манипуляции в веб-интерфейсе контроллера.
Шаг № 1. DMZ 192.168.10.103
Первым делом необходимо пробить DMZ зону и найти хост, который имеет несколько интерфейсов, таким хостом оказался 192.168.10.103. В результате сканирования хоста был обнаружен 80 порт, где работал веб-сервера Apache, а на веб-сервере было запущено веб-приложение на PHP. В процессе изучения веб-приложения и его функционала, был обнаружен файл test.php, при переходе на который выдавалась ошибка, связанная с отсутствием некоторого параметра в запросе, что намекало на перебор GET параметров по словарю. После перебора параметров был обнаружен GET параметр file. Судя по названию параметра, напрашивается LFI или читалка файлов. В результате удалось реализовать читалку файлов, далее читаем /etc/passwd, находим пользователя qiu и читаем приватный SSH ключ (id_rsa) в домашней директории пользователя.
http://192.168.10.103/test.php?file=../../../../../home/qiu/.ssh/id_rsa
----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABFwAAAAdzc2gtcn
NhAAAAAwEAAQAAAQEAvNjhOFOSeDHy9K5vnHSs3qTjWNehAPzT0sD3beBPVvYKQJt0AkD0
FDcWTSSF13NhbjCQm5fnzR8td4sjJMYiAl+vAKboHne0njGkBwdy5PgmcXyeZTECIGkggX
…..
Далее используем SSH-туннелирование, так как хост 192.168.10.103 видит порядка 10 хостов в 192.168.11.0 сети.
Шаг № 2. Внутренний хост 192.168.11.136
В результате сканирования хоста 192.168.11.136 были обнаружены два веб-приложения: Gitlab на порту 7788 и MyBB на порту 80. Большинство эксплоитов для MyBB требовали авторизации, по этой причине мы двинулись в сторону Gitlab. При обращении по пути /explore в Gitlab был обнаружен публичный проект, анализируя который удалось найти логин и пароль администратора (admin:kazh4kst4ntop), которые, как оказалось, подходят для админ панели MyBB. Дальнейшие поиски показали, что в Metasploit есть эксплоит, который требует административную учетную запись и дает RCE (exploit/multi/http/mybb_rce_cve_2022_24734). Используя данный, эксплоит нам удалось получить reverse shell и повысить свои привилегии до root, найдя пароль от двух локальных пользователей vboxuser и root в истории выполненных команд. Захваченный хост имел маршрутизацию в 192.168.12.0 сеть и мог видеть порядка 12 хостов.
Шаг № 3. Внутренний хост 192.168.12.108
В результате сканирования хоста 192.168.12.108 было обнаружено веб-приложение на 80 порту. Путем перебора php скриптов удалось обнаружить скрипт secretdev.php, исходный код которого можно было просмотреть при обращении к файлу. Анализ исходного кода показал, что php скрипт принимает GET параметр deser, который попадает в функцию десериализации, однако, чтобы достучаться до функции, необходимо было пройти некоторую аутентификацию, манипулируя GET параметрами: id, g и h. Во время проверки аутентификации происходит не типизированное сравнение, что намекает на Type Juggling и Magic hashes в php. Также, для GET параметра g в коде есть не большая подсказка, которое говорит, что данное значение должно быть больше чем 148000.
В результате долгих манипуляций, нам удалось создать рабочую полезную нагрузку, которая позволила обойти проверку аутентификации и выполнять системные команды на хосте.
id=1&g=149713&h=0&deser=a:1:{i:0;O:11:"Logger__MGR":1:{s:6:"logger";O:8:"Sys__MGR":1:{s:9:"close_cmd";s:15:"cat%20/etc/passwd";}}}
Изначально после получения reverse shell было ощущение, что мы попали в тупик, так как данный хост не имел интерфейсов в новые для нас подсети. Однако, данное ощущение оказалось обманчивым, так как спустя некоторое время нами была обнаружена 13 подсеть, которая оказалась подсетью, где были расположены SCADA системы.
Захваченный хост имел доступ к веб-интерфейсу только одного контроллера с IP адресом 192.168.13.55.
Шаг № 4. SCADA 192.168.13.55
Изначально, возможности авторизоваться у нас не было. Однако, я забыл упомянуть, что в Notion у нас был отдельный раздел, который назывался “All credentials”, куда мы специально собирали все логины и пароли, чтобы в дальнейшем сделать из этих данных словари для атаки грубой силой. К третьему дню у нас собралось достаточно логинов и паролей, чтобы мы могли зайти в веб-интерфейс с низкими привилегиями, как оператор SCADA. Но, как оказалось, оператор мог управлять тремя объектами на полигоне: колесо обозрения, карусель с людьми и карусель с лошадками. В результате, нам удалось остановить все три объекта и заработать 5000 очков за реализацию данного риска.
Перехват управления дроном
Как было сказано ранее, в любой момент могут появиться новые задачи, одной из таких задач была связана с дроном, про решение данное задачи рассказал коллега по команде и работе - Void.
Прежде всего, надо было получить задание на взлом и понять, какой результат от нас ожидают, а также собрать исходные данные. Данные задачи находились в категории "Бизнес риски” и приносили хорошие баллы. Для дрона было поставлено две задачи: перехватить видео передаваемое с дрона и перехватить управление не оборвав связь с пульта (смартфона).
Все началось с разведки. Поскольку дрон работал на частоте 2.4G и использовал стандарт WiFi, было решено использовать внешний WiFi адаптер с режимом монитора и возможностью инжектить пакеты. В нашем случае, это был адаптер Alfa AWUS036ACH, подключенная к виртуальной машине Kali Linux. Рекон происходил с помощью набора утилит Aircrack-ng, сначала перевели адаптер в режим монитора на все каналы чтобы найти нужный SSID. Сделать это можно через Airodump-ng или через Wireshark.
Нужная нам WiFi сеть имеет SSID "WiFiUFO-75AEF4" и занимала первый канал. Чтобы улавливать больше пакетов по нужному каналу и убрать лишние, переведем наш адаптер в режим монитора с конкретным каналом с помощью команды "airmon-ng start wlan0 1", которая запустит режим монитора на первом канале.
После чего, можно приступать к анализу трафика в Wireshark. Почти сразу при анализе пакетов можно заметить большое количество UDP трафика, причем в обе стороны. Первый поток идет от дрона к пульту, второй от пульта к дрону - это видео/телеметрия и управление соответственно.
Для перехвата видео, по сути, ничего дополнительно делать уже не нужно; тот поток, что мы получаем с Wireshark, уже содержит в себе кадры видео, но для удобства написали скрипт для отделения видеопотока и телеметрии. Рассмотрим самый простой вариант - берем пакеты по фильтру и отрезаем от него первые 54 байта, в которых находятся данные телеметрии. После чего отправляем данный поток на локальный порт, на котором будет слушать VLC PLayer.
В результате, получаем местами оборванное видео, поскольку данные видеопотока смещены, но картинка читаемая.
Для перехвата управления процедура анализа пакетов не отличается. Находим закономерность между пакетами и замечаем, что пакеты с длиной в 7 байт, являются сигналом для арма\дизарма моторов, а пакеты с длиной в 15 байт передают значения каналов для управления (крен, тангаж, рыскание и газ). Самым простым способ повлиять на дрон является дублирование пакетов в широковещательный эфир с теми же заголовками, что и у пульта. Для этого сформируем пакет, в котором будет содержаться команда на старт моторов и отправим в эфир, указав адрес отправителя как у легитимного пульта. Поскольку отсутствуют механизмы шифрования, аутентификации и проверки пакетов, дрон будет принимать любой пакет с командами. После чего, с помощью библиотеки ScaPy, мы можем отправить эти пакеты в эфир.
В результате этих действий произойдет внезапное отключение моторов в полете или внезапный старт на земле, что может привести к падению дрона или поломке на земле, что является недопустимым событием. В дальнейшем, при желании, можно дописать свою программу для отправки пакетов управления и полностью управлять дроном или произвести атаку DOS, забив дрон рядом команд в обход пульта.
Выводы
Подведем итоги кибербитвы и подготовки нашей команды. Заготовлено было действительно много, понадобилось ли все это? Нет, однако никогда не знаешь полностью, что тебя ждет, как говорится «лишним не будет». Однозначно, нам не хватило времени, чтобы лучше набить руку для более быстрого решения задач, некоторые задачи на полигоне были нам знакомы, но мы так и не вспомнили, где мы с ними встречались ранее. Тут вывод следующий - не стоит заострять внимание только на одной площадке для подготовки, используйте все, которые сможете найти. При решении задач придерживайтесь подхода “Try Harder”, многие задачи во время подготовки были решены посредством анализа writeup, что в последствии на соревнованиях вызвало желание иметь на руках некоторые hint, если говорить иначе, то мозг просто обленился. Если есть возможность, изучайте как решать одну и ту же задачу разными путями, в какой-то момент начали возникать проблемы с pivoting и проксированием трафика, интернет на хостах за DMZ зоной работал не стабильно и даже зачастую полностью пропадал, по этой причине все reverse коннекты и проброс трафика пришлось делать через внутреннюю kali, выданную организаторами, что было не совсем удобно изначально, так как она не была настроена как нам необходимо, в последствии все данные с VPS/VDS были перенесены на kali. Для нас кибербитва прошла определенно успешно и полезно. Участие в подобных соревнованиях хорошо повышает навык и развивает нас как специалистов. Конференция KazHackStan придерживается положительной динамики и с каждым годом готова становиться все более масштабной и привлекательной. Хочется сказать отдельное спасибо руководителям службы информационной безопасности компании "Kcell" Павлу Шубину и Данияру Ибраеву за выделение необходимых ресурсов для подготовки команды к соревнованиям и команде ЦАРКА за организацию такого крутого мероприятия.