Подразделение киберразведки LAB52 испанской компании S2GRUPO опубликовало результаты многомесячного исследования одного из самых сложных шпионских вредоносных программ, когда-либо обнаруженных специалистами. Получивший название EasterBunny образец с высокой вероятностью принадлежит российской группе APT29, известной также как Cloaked-ursa или Nobelium. Анализ показал, что перед нами не просто очередной инструмент для кибершпионажа, а настоящий инженерный шедевр, созданный с беспрецедентным уровнем скрытности.
Описание
Архитектура EasterBunny напоминает русскую матрёшку. Внутри исполняемого файла спрятаны несколько слоёв кода, каждый из которых раскрывает лишь часть истинной логики работы программы. Разработчики применили множество конструкторов или сборщиков, чтобы запутать аналитиков и антивирусные системы. Особого внимания заслуживает реализация рефлексивного загрузчика для позиционно-независимого кода. Эта техника, как отмечают эксперты, ранее нигде в публичном доступе не документировалась.
Самая необычная особенность EasterBunny заключается в том, что программа запускается только на том компьютере, на который изначально была установлена. Такое поведение не имеет задокументированных аналогов в публичной сфере. Единственные отдалённые похожие примеры можно найти разве что в материалах Vault 7, опубликованных WikiLeaks и раскрывающих инструменты ЦРУ.
Цели у вредоносной программы чётко разделены на два направления. Первое - это закрепление в организации для сбора разведывательных данных. Вредоносная программа выступает в роли "импланта", который загружает модули, способные добывать свежие учётные данные пользователей и обходить стандартные механизмы смены и продления паролей. Второе направление - оперативный бэкдор. Этот инструмент позволяет операторам группы по своему желанию внедрять в заражённую систему другие средства, будь то модули постэксплуатации, такие как Cobalt Strike или Sliver, либо сборщики файлов, документов или электронных писем.
Эксперты S2GRUPO получили доступ к нескольким образцам в 2019 году в рамках работы по управлению инцидентами. Тогда было решено не раскрывать информацию публично, чтобы не потерять разведывательные возможности. Образцы оказались сильно похожи на семейство TrailBlazer, которое компания Crowdstrike описала в 2022 году. Речь идёт об артефактах третьего этапа атаки. Их главная задача - обеспечить постоянное присутствие в сети жертвы через систематическое получение учётных данных.
Для обхода смены паролей злоумышленники используют такие техники, как Golden Ticket, Golden SAML или Golden Certificate. Все эти методы позволяют скомпрометировать инфраструктуру аутентификации настолько глубоко, что даже полный сброс паролей не помогает очистить доступ. В отчёте LAB52 подчёркивается, что такие подходы уже не раз фиксировались у данной группы.
Техническая сложность EasterBunny впечатляет. Программа использует многослойное шифрование и запутывание как команд, так и данных. Разработчики систематически скрывают настоящую внутреннюю логику. Модульная архитектура позволяет загружать дополнительные компоненты прямо во время работы. В ходе анализа специалисты выявили несколько десятков команд, которыми операторы могут управлять вредоносной программой удалённо.
Среди возможностей EasterBunny - создание мьютекса для предотвращения повторного запуска, сохранение данных в реестре Windows, распознавание жертвы и связь с сервером управления. Операторы могут отправлять как обычные, так и постоянные команды, получать заголовки запросов, идентификаторы процессов, управлять прокси-учётными данными и интернет-настройками. Особый интерес представляют команды LOAD MODULE, позволяющие загружать дополнительные модули прямо во время работы вредоносной программы.
Исследователи также обнаружили признаки существования сложной платформы управления, которую APT29 использует для сборки, настройки и эксплуатации семейства EasterBunny. Это означает, что вредоносная программа не является одноразовым инструментом, а входит в целую экосистему шпионского ПО.
Важно понимать, что EasterBunny - это не программа-вымогатель, не троян для кражи банковских данных и не вирус для вандализма. Это высокоточный инструмент шпионажа, созданный государственной хакерской группой. Его задача - незаметно проникнуть в инфраструктуру целевой организации и оставаться там как можно дольше, собирая учётные данные и открывая доступ для других инструментов атаки.
Для специалистов по кибербезопасности выводы LAB52 означают, что даже самые современные системы обнаружения могут не справиться с такими угрозами. Рефлексивный загрузчик и многослойная обфускация делают EasterBunny практически невидимым для традиционных антивирусов и систем обнаружения вторжений. Единственный способ противостоять таким атакам - это превентивные меры, многофакторная аутентификация, строгий контроль доступа и постоянный мониторинг аномалий в поведении систем.
Публикация полного анализа, включающего индикаторы компрометации, YARA-правила и правила для систем обнаружения сетевых вторжений, позволит сообществу специалистов по кибербезопасности подготовиться к возможным атакам с использованием EasterBunny. Как отмечают сами исследователи, они решили открыто поделиться своими находками, чтобы укрепить коллективную устойчивость перед лицом передовых государственных угроз.
Это не первое и не последнее открытие, связанное с APT29. Группа действует как минимум с середины 2010-х годов и известна своими сложными многоэтапными атаками, направленными на правительственные учреждения, дипломатические ведомства, оборонные предприятия и исследовательские организации по всему миру. EasterBunny - лишь свежее подтверждение того, что технический уровень этой группы остаётся одним из самых высоких среди всех известных кибершпионских структур.
Индикаторы компрометации
SHA1
- 0e8f10cbfddb5a2197a9c5246b66165138df81ee
- 16ae9e9abc0c4f84c5ab8d451f2a184fed0b6d46
- a133ecf19b8531377f7c4377086f46f6bc90bea2
- a2a241608339688b8aec3432fd93eacf33f1a83a
- b1b302c512185146ef793812052db92d7f3dbd6d
YARA
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | rule easterbunny_wrapper { meta: version = "1.0" author = "Eric.C" team = "LAB52" company = "S2Grupo" status = "stable" description = "APT29 Easterbunny Wrap" date = "2024-05-10" filetype = "exe" strings: $time_loop1 = { 55 41 57 41 56 41 54 56 57 53 48 83 EC 20 48 8D 6C 24 20 45 89 C6 49 89 D4 89 CE FF 15 ?? ?? ?? 00 89 } $time_loop2 = { C3 89 D9 E8 ?? ?? 00 00 4C 89 E1 44 89 F2 E8 8B 00 00 00 85 C0 74 6C FF 15 ?? ?? ?? 00 41 } $time_loop3 = { 89 C7 41 29 DF 69 C6 E8 03 00 00 69 CE 10 27 00 00 48 69 F1 1F 85 EB 51 48 C1 EE 25 89 C3 29 F3 01 C6 } $time_loop4 = { E8 ?? ?? 00 00 29 DE 31 FF 31 D2 F7 F6 89 D1 01 D9 31 D2 89 C8 41 F7 F7 89 C6 BB 01 00 00 } $set_error = { B9 07 80 00 00 48 FF 25 ?? ?? ?? 00 } $xor = { 0F B7 0F 4C 89 E2 E8 A5 01 00 00 88 03 48 83 C7 02 48 FF C3 48 FF CE 75 E7 4A 8B 4C 2D B0 4C 89 } $xor2 = { 49 C7 C0 FF FF FF FF 31 C0 0F 1F 80 00 00 00 00 66 42 39 4C 42 02 74 3D 66 42 39 4C 42 04 74 24 66 42 39 4C 42 06 74 21 66 42 39 4C 42 08 74 1E 48 83 C0 04 49 83 C0 04 49 81 F8 FF 00 00 00 72 CF 31 C0 C3 48 83 C8 01 C3 48 83 C8 02 C3 49 83 C0 04 4C 89 C0 C3 } $get_block1 = { 55 41 57 41 56 41 55 41 54 56 57 53 48 83 EC 28 48 8D 6C 24 20 4D 89 CE 4D 89 C7 41 89 D5 49 89 CC 44 89 E9 E8 ?? ?? 00 00 } $get_block2 = { 49 89 07 45 8B 44 24 01 45 85 ED 0F 84 9C 00 00 00 41 8A 54 24 06 88 10 BF 01 00 00 00 41 83 FD 03 72 4F BF 01 00 00 00 } $get_block3 = { BA 02 00 00 00 66 2E 0F 1F 84 00 00 00 00 00 49 8B 0F 89 F8 83 E0 03 83 F8 01 83 D2 00 85 FF 0F 95 C0 40 F6 C7 0F 0F 94 C3 20 C3 0F B6 C3 8D 1C 02 48 63 DB 41 } $get_block4 = { 0F B6 5C 1C 05 89 FE FF C7 88 1C 31 8D 54 02 01 44 39 EA 72 C5 45 85 C0 74 36 85 FF 74 32 31 F6 31 DB 0F 1F 84 00 00 00 00 00 89 F2 F7 D2 83 E2 01 8D 04 1A 49 8B 0F 48 98 0F B6 04 01 88 04 31 48 FF C6 4C 39 C6 73 08 8D 5C 1A 01 39 FB 72 DA 45 89 06 B8 01 00 00 00 48 83 C4 28 5B 5F 5E 41 5C 41 5D 41 5E 41 5F 5D C3 CC } $sort_block = { 4C 8B D9 48 2B D1 0F 82 9E 01 00 00 49 83 F8 08 72 61 F6 C1 07 74 36 F6 C1 01 74 0B 8A 04 0A 49 FF C8 88 01 48 FF C1 F6 C1 02 74 0F 66 8B 04 0A 49 83 E8 02 66 89 01 48 83 C1 02 F6 C1 04 74 0D 8B 04 0A 49 83 E8 04 89 01 48 83 C1 04 4D 8B C8 49 C1 E9 05 75 51 4D 8B C8 49 C1 E9 03 74 14 48 8B 04 0A 48 89 01 48 83 C1 08 49 FF C9 75 F0 49 83 E0 07 4D 85 C0 75 08 49 8B C3 C3 0F 1F 40 00 } condition: ($set_error and all of ($time_loop*)) or all of ($xor*) or (all of ($get_block*) and $sort_block) } |