Держаться на кофе и обезболах, глобально пересматривать тактику в процессе и отстаивать свою позицию до конца. Ребята из Jet CSIRT рассказывают, как их команде SuperJet удалось занять первое место на международном онлайн-тренинге для повышения глобальной киберустойчивости Cyber Polygon 2024.
Опыт ребят пригодится участникам главного онлайн-кэмпа по практической кибербезопасности CyberCamp 2024, который пройдет с 3 по 5 октября. Представители команды SuperJet принимали участие в разработке сценариев заданий CyberCamp 2024, так что ловите лайфхаки из первых рук.
Все команды Cyber Polygon 2024 выступали в роли blue team — расследовали инцидент с использованием техник классической компьютерной криминалистики и подхода threat hunting. Команда SuperJet во главе с Павлом Ивановым — ведущим аналитиком группы киберисследований Jet CSIRT, «Инфосистемы Джет» — расследовала таргетированную атаку на AI-организацию. По сценарию компания MercuryLark выпустила инновационное приложение с использованием технологий машинного обучения, однако спустя несколько месяцев после релиза результаты работы модели начали ухудшаться. Нужно было найти причину ухудшения качества продукта, изучить инфраструктуру компании и обнаружить следы ее компрометации для возобновления корректной работы в течение 24 часов.
В итоге команда SuperJet завоевала 3450 баллов из 4020 возможных — это лучший результат среди 309 команд из более чем 65 стран мира, включая Великобританию, Францию, США, Швейцарию, Бельгию и пр. Среди команд были представители различных отраслей, включая финансовый сектор, e‑commerce, образование, аудит и консалтинг, медицину и госсектор.
В этой статье ребята из Jet CSIRT делятся советами, которые пригодятся участникам CyberCamp 2024 (успейте зарегистрироваться!).
«Это наши ежедневные задачи». Как собраться на онлайн-тренинг по кибербезопасности
Павел Иванов: «Я участвовал в Cyber Polygon 2021 — тогда на помощь приходили используемые в инфраструктуре СЗИ. В этом году полагаться приходилось на сырые логи, опенсорс и собственные знания. Мы заранее решили, кто за что будет отвечать и какие инструменты будем использовать. Само расследование инцидентов — это наши ежедневные задачи, поэтому полагались на накопленный рабочий опыт».
Александр Перевалов: «Мы собрали в кучу много полезного инструментария, установили трекер для расследования и организовали работу на одной виртуальной машине».
«Идти по порядку и искать “флаги”». Jet CSIRT — о тактике прохождения заданий
Павел Иванов: «Мы собирались следовать классическому методу анализа артефактов, но быстро утонули в процессе».
Александр Перевалов: «Доскональный разбор предоставленных артефактов с занесением всей информации в трекер расследования оказался неоптимальным решением».
Артем Семагин: «Когда мы копались в журналах и отмечали все подозрительные действия, не обращая внимания на поставленные вопросы, то увидели, что даем фору соперникам: другие команды уходили вперед по баллам, а мы топтались на месте.
Александр Перевалов: «Через несколько часов мы бросили попытки восстановить картину целиком».
Валерия Шотт: «Мы поняли, что теряем время. Поэтому пересмотрели тактику и стали просто опираться на вопросы: шли по порядку, искали “флаги”».
Артем Семагин: «Решив отвечать последовательно, мы стали догонять соперников и в итоге смогли обойти».
Павел Иванов: «Это действительно помогло, потому что сами вопросы как бы вели нас по расследованию и помогали понять контекст инцидента».
Как проходить задания — рассказывает Павел Иванов, капитан Jet CSIRT. Осторожно, спойлеры!
Мы начинали расследование с ELK и анализа событий пользовательского сегмента. Обнаружив на одном из хостов следы отключения антивирусного ПО, удаления Sysmon и агента сбора телеметрии, углубились в анализ образа диска хоста. Для этого использовали подготовленный Toolset, в том числе FTK Imager и Arsenal Image Mounter. Чтобы ускорить анализ, собрали с помощью KAPE триаж с примонтированного диска и принялись изучать полученные артефакты. Для парсинга криминалистических артефактов выбрали инструменты Эрика Циммермана (EZ Tools).
В первую очередь, при анализе триажа мы изучили артефакты Evidence of Execution. В артефактах AmCache, AppCompatCache, файлах Prefetch нам удалось найти следы развития атаки. Конечно, не обошлось и без анализа реестра, таблицы MFT, UsnJournal и других артефактов. А для удобного и быстрого анализа событий мы использовали утилиту hayabusa, которая также подсветила несколько следов атаки с помощью встроенного набора Sigma-правил.
В результате удалось установить, что первоначальный доступ был получен через интересную RCE — уязвимость в Telegram Desktop, с которой ранее в своих расследованиях мы не встречались.
Уязвимость вызвана опечаткой в списке расширений исполняемых файлов: так, вместо pyzw (файл типа Python Zip Application) в коде с запрещенными расширениями было указано pywz. Когда пользователи получали файл .pyzw и нажимали на него, злоумышленник мог обмануть пользователя, отправив файл .pyzw с подмененным mimetype.
При дальнейшем анализе было установлено, что злоумышленники использовали C2 фреймворк Mythic и осуществили дамп учетных данных. Закрепившись на хосте через LOLAPPS и прокинув socks-прокси, злоумышленники начинали атаку на домен. Компрометация произошла через AD CS — в результате атаки была скомпрометирована учетная запись от сервиса gitlab.
При анализе событий gitlab в ELK мы нашли изменения пайплайна CI/CD, через который злоумышленники развили атаку. Для понимания действий злоумышленников на анализ был предоставлен сам репозиторий, в истории коммитов которого крылось дальнейшее развитие атаки — злоумышленники переключались на хранилище секретов и реестр образов.
Далее мы проанализировали образ скомпрометированного контейнера — анализ образа контейнера можно проводить с помощью утилиты container-diff или даже вручную, с помощью блокнота просматривая изменения в каждом слое.
После мы исследовали события тетрагона, просматривая в ELK логи от источника k8s. Нам помогли и события создания подов, и события самих контейнеров. На этом этапе развития атаки злоумышленники выбрали интересные техники: разведку с помощью kubectl и создание привилегированного контейнера с дальнейшим эскейпом на саму ноду. А в качестве инструментов использовали kdigger, kube-hunter, kubescape, peirates.
Финальной аккорд заключался в компрометации системы оркестрации данных airflow и бакета S3. Здесь анализ снова выполнялся с помощью ELK и соответствующих событий от одноименных источников.
Спор с саппортом о точках-запятых. Что больше всего запомнилось
Павел Иванов: «Куда же без споров с технической поддержкой об “украденных” баллах»! На Cyber Polygon 2024 был очень строгий валидатор ответов, который не прощал ни малейшего отклонения. Так, пара неточных ответов, данных глубокой ночью, с двоеточием вместо точки с запятой (ночью они реально неотличимы), сначала очень сильно нас расстроила, а затем, наоборот, приободрила и мотивировала».
Артем Семагин: «Да, всем запомнился момент, когда мы только поднимались по турнирной таблице и допустили обидную ошибку — указали IP:port вместо IP;port. Но ведь опечатки при сдаче “флагов” неизбежны, когда занимаешься анализом логов и артефактов среди ночи! Пытались обжаловать — безрезультатно».
Александр Перевалов: «Под конец мы даже уже перестали писать диспуты, поскольку саппорт полностью нас игнорировал. Но я расскажу о другом. Весьма неожиданно было столкнуться с задачами на k8s, с которым мы нечасто сталкиваемся на практике, поэтому приходилось супербыстро читать какие-то статьи и активно гуглить, чтобы понять, о чем вообще идет речь. Еще запомнилось задание, где надо было вытащить кусок бинарного кода из powershell-скрипта, когда от любой попытки открыть скрипт на чтение все плотно зависало, ничего не работало. Но мы справились!».
Живой колл на сутки и ресурсы для BM. Лайфхаки участников команды-победительницы
Александр Перевалов: «Важно идти по пути, заложенному разработчиками. Скорее всего, он будет короче, чем тот, который вы сами себе придумали. Если говорить о расследованиях в целом, то записывайте максимально подробную хронологию событий, а также место и способ, где и как вы нашли тот или иной артефакт — наверняка к нему придется вернуться».
Павел Иванов: «Главный совет — проверять двоеточие вы ставите или точку с запятой. А если серьезно, то в таких больших заданиях с разным набором артефактов важно не терять общей картины инцидента, генерировать и искать гипотезы, уметь быстро искать информацию».
Артем Семагин: «Я советую сразу наладить коммуникацию. Живой колл на 24 часа — это вызов. Конечно, каждый мог периодически отключаться и подключаться, но всегда кто-то должен был оставаться активным в расследовании. Также важно запастись местом на жестком диске и ресурсами для ВМ. Для решения задач организаторы подготовили образ ВМ с ELK, но работать в той ВМ при дефолтных настройках/настройках по умолчанию было практически невозможно».
«Кофе не осталось, таблеток от головной боли тоже». Как прошел Cyber Polygon 2024 на самом деле
Артем Семагин: «Было круто и интересно, но тяжело физически и морально».
Павел Иванов: «Кофе не осталось, таблеток от головной боли тоже, а это значит, что мероприятие было максимально насыщенным! Надеюсь, в следующем году организаторы побалуют нас таким же мощным сценарием и интересными вопросами».
Роман Драньков: «Понравился таск с большой инфрой и различными логами на анализ — хотелось бы скрупулезнее поковыряться в нем, но не хватило времени. А еще обидно, что техподдержка подкачала — нужно быть отзывчивее!»
Александр Перевалов: «Саппорт действительно расстроил — непонятно, зачем они сидели целые сутки в сети, если заведомо не готовы были на диспуты. Нивелировал негатив сценарий заданий — он и правда был крутой. Спасибо организаторам — через год вернемся!».
Полный состав команды SuperJet: Павел Иванов, Артем Семагин, Валерия Шотт, Александр Перевалов, Максим Кишмерешкин, Роман Драньков, Павел Давыдов, Даниил Кирьяков.