Описание инцидента
В конце 2021 г. мы обнаружили компрометацию на уровне прошивки UEFI, изучая журналы Firmware Scanner — инструмента, который интегрирован в решения «Лаборатории Касперского» с 2019 г. Анализ показал, что один из компонентов в исследуемом образе прошивки был изменен хакерами. Это позволило изменить цепочку выполнения в UEFI и внедрить вредонос, запускаемый при старте компьютера.
Проанализировав компоненты модифицированной прошивки и прочие артефакты вредоносной активности в сети жертвы, мы установили:
- В исследуемую прошивку был внедрен вредоносный код, который мы назвали MoonBounce.
- Благодаря внедрению во флэш-память SPI, расположенную на материнской плате, имплант может запускаться как после переустановки операционной системы, так и после форматирования или замены жесткого диска.
- Имплант предназначен для развертывания вредоносной программы, работающей в пользовательском режиме, которая инициирует выполнение следующей полезной нагрузки, загружаемой из интернета.
- Цепочка заражения не оставляет следов на жестком диске, т.к. ее компоненты действуют только в оперативной памяти, т.е. мы столкнулись с бесфайловой атакой.
- Существуют и другие, не связанные с UEFI импланты в целевой сети, которые обменивались данными с той же инфраструктурой, у которой указанный выше зловред запрашивал полезную нагрузку.
- Сопоставление этих фактов, признаков сетевой инфраструктуры и других характеристик атаки позволяет атрибутировать ее группе APT41, которая широко известна как китайскоязычная.
В данном отчете мы подробно опишем принцип действия импланта MoonBounce, его связь с APT41 и другие признаки активности китайскоязычных групп, обнаруженные в скомпрометированной сети, которые могут указывать на связь с APT41 и соответствующей кампанией.
Современное состояние APT-угроз для UEFI
В прошлом году было опубликовано несколько открытых отчетов о вредоносном ПО для UEFI, остающемся актуальной угрозой. В качестве примеров следует отметить буткит для UEFI, входящий в состав описанного нами шпионского инструментария FinSpy, буткит ESPectre, о котором писали наши коллеги из ESET, и малоизвестную активность в сетях правительственных организаций на Ближнем Востоке, где использовался еще один буткит для UEFI (мы кратко упоминали ее в нашем отчете о тенденциях APT-угроз за третий квартал 2021 года и более подробно рассматривали в приватном отчете об APT-угрозах для наших клиентов, использующих Threat Intelligence Portal).
Эти три случая объединяет то, что атакуемые компоненты UEFI находятся в разделе ESP (системный раздел EFI) — это пространство служит для хранения некоторых компонентов UEFI и, как правило, находится на жестком диске или твердотельном накопителе компьютера. Наиболее известные элементы ESP — диспетчер загрузки и загрузчик ОС. Оба они вызываются во время загрузки компьютера и модифицируются упомянутыми выше буткитами.
Хотя все перечисленные зловреды реально использовались APT-группами, наибольшие опасения вызывает новый класс буткитов — импланты, находящиеся в прошивке UEFI во флеш-памяти SPI, энергонезависимом хранилище, не связанном с жестким диском. Такие буткиты не только сложнее обнаружить (отчасти из-за того, что защитные решения не могут полностью просканировать этот аппаратный компонент), но и сложнее устранить — замена скомпрометированного образа прошивки на чистый может потребовать больше усилий, чем форматирование жесткого диска и переустановка ОС, которых обычно достаточно для устранения вредоносного ПО из раздела ESP.
MoonBounce примечателен тем, что это третий имплант из описанного выше нового класса руткитов для прошивки, о котором стало публично известно. Первые два — это LowJax и MosaicRegressor (о нем мы писали в октябре 2020 года). В некотором смысле MoonBounce является новой ступенью эволюции угроз этого класса. Он отличается от предшественников более сложной цепочкой атаки, а его разработчики демонстрируют высокий уровень технических знаний и глубокое понимание тонкостей работы UEFI.
Наша находка — сложный имплант, внедряемый в прошивку UEFI
Имплант для UEFI, обнаруженный еще весной 2021 года, был внедрен в компонент прошивки CORE_DXE (также известный как DXE Foundation), вызов которого происходит в начале фазы DXE (Driver Execution Environment) при загрузке UEFI. Помимо прочего, этот компонент отвечает за инициализацию необходимых структур данных и интерфейсов функций, в частности таблицы служб загрузки EFI. Эта таблица содержит набор указателей на процедуры, входящие в образ CORE_DXE и вызываемые другими драйверами DXE в цепочке загрузки.
Работа вредоносной программы начинается с использования набора хуков, перехватывающих несколько функций в таблице служб загрузки EFI: AllocatePool, CreateEventEx и ExitBootServices. Хуки перенаправляют выполнение этих функций во вредоносный шелл-код, добавленный в конец образа CORE_DXE. Шелл-код, в свою очередь, создает дополнительные хуки в последующих компонентах цепочки загрузки, а именно в загрузчике Windows.
Эта цепочка хуков позволяет распространить вредоносный код из образа CORE_DXE в другие компоненты загрузки при запуске системы и внедрить вредоносный драйвер в адресное пространство ядра Windows. Драйвер, работающий на начальных фазах выполнения ядра, развертывает вредоносную программу в пользовательском режиме, внедряя ее в процесс svchost.exe после запуска системы. Наконец, зловред, работающий в пользовательском режиме, обращается к жестко заданному URL-адресу командного сервера (hxxp://mb.glbaitech[.]com/mboard.dll) и запрашивает для запуска в памяти полезную нагрузку следующего этапа. Нам не удалось ее получить.
На рисунке ниже приведена схема этапов заражения с момента вызова перехваченных функций в контексте выполнения DXE Foundation и до момента развертывания и выполнения зловреда для пользовательского режима при запуске операционной системы. Полное описание каждого шага в схеме, а также анализ драйвера MoonBounce и зловреда для пользовательского режима можно найти в техническом документе, прилагаемом к этой публикации.
Поток выполнения MoonBounce с момента загрузки системы до развертывания зловреда в пользовательском пространстве
Хотя на момент написания отчета у нас было недостаточно данных, чтобы отследить первичное заражение прошивки UEFI, мы предполагаем, что используется один из следующих сценариев:
- Компрометация компьютера перед поставкой в компанию-жертву. Таким образом заражение прошивки служит первичным вектором атаки для доступа к сети. Такой сценарий вполне согласуется с образом действий подозреваемой нами APT-группы, которая в прошлом совершала атаки на цепочки поставки, однако мы ожидаем новых случаев использования подобных вредоносных образов прошивки.
- Компрометация компьютера после закрепления в сети. Это значит, что развертывание вредоносной прошивки было следующим этапом после первичного заражения. Хотя мы и нашли в сети жертвы вредоносные импланты, приписываемые китайскоязычным группам, нам не удалось с уверенностью определить, были ли они внедрены перед заражением прошивки или после.
В любом случае мы предполагаем, что само заражение происходит в удаленном режиме. Предыдущие заражения прошивки UEFI (например, зловредами LowJax и MosaicRegressor) выглядели как добавление драйверов DXE к образу прошивки на флеш-накопителе SPI. Однако новый случай демонстрирует более тонкий и скрытный подход — заражение существующего компонента прошивки, что меняет ее поведение. Интересно, что для модификаций отдельных функций использовался внутренний хук, то есть пролог функции был заменен на инструкцию, перенаправляющую выполнение на выбранную злоумышленниками функцию. Обычно для выполнения таких операций нужно заполучить исходный образ, проанализировать его и внедрить вредоносную логику. Это возможно, если злоумышленники имеют постоянный удаленный доступ к целевому компьютеру.
Прочие обнаруженные зловреды
Помимо MoonBounce, мы обнаружили в различных узлах той же сети заражение известным зловредом для пользовательского режима ScrambleCross, также известным как SideWalk. Этот имплант, выполняемый в памяти, представляет собой позиционно-независимый код, способный отправлять командному серверу информацию о работе дополнительных плагинов в памяти, однако сами плагины еще не были обнаружены. ScrambleCross/SideWalk подробно проанализировали наши коллеги из Trend Micro и ESET, поэтому мы рекомендуем ознакомиться с их исчерпывающими отчетами, чтобы лучше понять, как он устроен.
Позиционно-независимый код ScrambleCross может загружаться двумя способами. Первый — с помощью DLL-файла на C++, который ранее назывался StealthVector. Он загружает шелл-код ScrambleCross, применяя модифицированный алгоритм ChaCha20 к зашифрованному блоку данных, который может храниться на диске в виде дополнительного файла или быть встроенным в сам загрузчик. Мы нашли оба типа этого загрузчика в исследуемой сети.
StealthVector загружается через модифицированный легитимный DLL-файл, в таблицу адресов импорта которого добавлен вредоносный DLL-файл как зависимость. Мы нашли такой модифицированный файл wbemcomn.dll (MD5: C3B153347AED27435A18E789D8B67E0A), который изначально поддерживал функции WMI в Windows и находился в каталоге %SYSTEM%\wbem. Впоследствии, при запуске службы WMI, модифицированная версия этого DLL-файла начинала загрузку образа StealthVector под названием wmiwk.dll.
В таблице ниже перечислены все экземпляры StealthVector, найденные в атакованной сети, а также временные метки, которые могут указывать на дату их создания.
В ходе расследования мы нашли другие загрузчики, а также вредоносные импланты, действующие после компрометации. Некоторые из них использовались известными китайскоязычными группами или приписываются им:
- Microcin— бэкдор, обычно применяемый группой SixLittleMonkeys, который мы отслеживаем с 2016 года. Заметим, что с самого момента его создания эта группа использовала Microcin в атаках на различные цели, в том числе на высокостатусные организации в России и Центральной Азии.
Импланты, которые мы наблюдали в этой кампании, распространяются как DLL-файлы, выполняемые в контексте процесса exe. Их основная задача — получение адреса командного сервера из зашифрованного конфигурационного файла %WINDIR%\debug\netlogon.cfg и отправка запроса на сервер для получения следующей полезной нагрузки. Интересно, что троянец содержит алгоритм календарного планирования, который приостанавливает работу зловреда в субботу и каждый час проверяет местное время, чтобы определить, не настало ли воскресенье. - Mimikat_ssp— общедоступный инструмент, используемый после компрометации для кражи учетных данных и секретов из exe. Его также используют различные китайскоязычные группы (например, GhostEmperor, о которой мы писали ранее).
- Имплант на языке Go— этот ранее неизвестный бэкдор для связи с командным сервером через API RESTful использует для обмена информацией жестко заданный IP-адрес и путь к гипермедийному каталогу на сервере, расположенном по этому адресу. И IP-адрес, и путь к каталогу сервера зашифрованы по алгоритму AES-128 с ключом в кодировке Base64, который хранится в образе бэкдора. Пара из IP-адреса и пути к каталогу используется в следующих целях:инициализация обмена данных с сервером;
отправка информации с зараженного хоста;
запрос конкретного пути на сервере, содержащего команду для выполнения, и загрузка этой команды;
отправка результата выполнения команды на командный сервер.
Команды, полученные от сервера, тоже зашифрованы по алгоритму AES-128, при этом ключ хранится в самом файле команды. Результаты выполнения команд затем шифруются с тем же ключом. Мы нашли следующие поддерживаемые команды:получить список дисков;
получить список содержимого конкретного каталога;
скачать файл с командного сервера;
записать текст в указанный BAT-файл и выполнить его как скрипт;
выполнить команду оболочки.
Следует отметить, что мы не смогли однозначно связать с набором средств компрометации MoonBounce большую часть этих дополнительных зловредов, за исключением Microcin — хронология некоторых связанных с ним событий совпадает с хронологией событий, связанных со ScrambleCross, как показано на схеме ниже. Это позволяет с низкой степенью уверенности предположить, что между Microcin и MoonBounce существует связь и группы SixLittleMonkeys и APT41 используют общие ресурсы или операторы SixLittleMonkeys причастны к кампании MoonBounce.
Хронология событий, связанных с артефактами, которые мы нашли в сети с зараженным MoonBounce компьютером
Жертвы атаки
На данный момент мы определяем эту атаку как узконаправленную, поскольку нам известен только один случай обнаружения руткита для прошивки – в сети компании из сферы высоких технологий. Другие связанные с ней образцы вредоносного ПО (такие как ScrambleCross и его загрузчики) были найдены на компьютерах внутри той же сети. Кроме того, мы нашли еще несколько жертв, которые подверглись атакам тех же версий ScrambleCross, обменивающихся данными с той же C&C-инфраструктурой. Одна из целей соответствует организации, управляющей несколькими предприятиями из сферы транспортных технологий.
Цели кампании
Мы отследили некоторые команды, выполняемые вредоносным ПО после закрепления в сети, которые указывали на дальнейшее распространение и эксфильтрацию информации с отдельных компьютеров. Такое поведение соответствует некоторым прошлым операциям группы APT41, которая, как правило, проводила атаки с целью вмешаться в цепочки поставок целевых компаний или выкрасть конфиденциальную информацию, интеллектуальную собственность и персональные данные. Использование импланта для UEFI, в частности, указывает на то, что злоумышленники стремились надолго закрепиться в сети, как того требует продолжительная шпионская кампания.
Сетевая инфраструктура
Основной кластер серверов для атак с использованием ScrambleCross и импланта для UEFI описан в таблице ниже. Следует отметить, что злоумышленники используют эту инфраструктуру по меньшей мере с марта 2020 года, при этом некоторые серверы были по-прежнему активны в конце 2021 года. На протяжении этого времени группа меняла хостинг-провайдеров, что привело к созданию инфраструктуры, рассредоточенной по нескольким автономным системам.
ДоменIP-адресASNmb.glbaitech[.]com188.166.61[.]146AS14061 — DIGITALOCEAN-ASNns.glbaitech[.]com188.166.61[.]146AS14061 — DIGITALOCEAN-ASN172.107.231[.]236AS40676dev.kinopoisksu[.]com172.107.231[.]236AS40676193.29.57[.]161AS48314 — IP-PROJECTSst.kinopoisksu[.]com136.244.100[.]127AS20473 — AS-CHOOPA—217.69.10[.]104AS20473 — AS-CHOOPA—92.38.178[.]246AS202422 — GHOST
Тщательное исследование инфраструктуры выявило многочисленные связи между серверами. Выяснилось, что загрузчик MoonBounce для пользовательского режима и несколько экземпляров ScrambleCross обращались к доменам с совпадающим доменным именем второго уровня, которые в какой-то момент разрешались в один и тот же IP-адрес. Кроме того, совпадали и некоторые другие IP-адреса, в которые разрешались домены. Это показано на рисунке ниже, включая один IP, который в разное время использовался для парковки двух доменов.
Связи между элементами инфраструктуры имплантов MoonBounce и ScrambleCross, обнаруженных в одной сети
Еще одно важное совпадение — уникальный самоподписанный SSL-сертификат. Он был обнаружен на некоторых серверах в этой кампании (и всего на нескольких десятках серверов, не относящихся к ней). Это заметная улика, указывающая на действия атакующей группы в сети.
Мы с достаточно высокой степенью уверенности приписываем активность, описанную в этом отчете, группе, широко известной как APT41, или другой связанной с ней группе. Наши результаты частично соответствуют данным публикаций прошлого года об APT41 и других киберпреступных группах, а именно Earth Baku и SparklingGoblin. Предположительно, в этих отчетах речь идет либо об APT41 под альтернативными названиями, либо о группах, использующих в значительной степени общие с APT41 ресурсы, методы и тактики.
Наша атрибуция, в частности, основывается на следующих фактах:
- Схемы загрузки ScrambleCross, в том числе с использованием StealthVector и StealthMutant в цепочке заражения, идентичны схемам, которые использовали Earth Baku и SparklingGoblin. Помимо самих загрузчиков, идентичными выглядят и модули запуска. Во всех случаях, которые мы наблюдали, злоумышленники использовали уникальный метод запуска загрузчика через приложение exe. В частности, пакетный скрипт Install.bat, используемый Earth Baku и описанный в открытом отчете компании Trend Micro (см. выше), очень похож на последовательность команд для запуска InstallUtil в нашем расследовании.
- Сам зловред ScrambleCross, в использовании которого были замечены и Earth Baku, и SparklingGoblin, считается вариантом вредоносного ПО CROSSWALK — его впервые описали специалисты Mandiant как инструмент APT41, и, насколько нам известно, его по-прежнему использует только эта группа.
- Сертификат, найденный на нескольких командных серверах ScrambleCross в описываемой нами кампании, был получен как ответ с нескольких десятков других серверов. Некоторые из них, согласно опубликованному ранее бюллетеню ФБР, входят в инфраструктуру APT41.
Следует отметить еще несколько наблюдений:
- Инструмент Mimikat_ssp, обнаруженный на нескольких компьютерах в целевой сети, в прошлом использовался различными китайскоязычными киберпреступными группами. Например, недавно он применялся в кампаниях группы GhostEmperor, которые мы описывали ранее.
Заключение
В сентябре 2020 года Министерство юстиции США объявило, что участникам группы APT41 были предъявлены обвинения в многочисленных проникновениях в компьютерные системы различных организаций, как в частном, так и в государственном секторе, в том числе в проведении атак на цепочки поставок крупных компаний. Набор средств компрометации, описанный в данном отчете и других публикациях, на которые мы ссылались, свидетельствует о том, что группа не прекращает свою активность, несмотря на судебное преследование.
Более того, она демонстрирует высокий уровень технической квалификации и изощренности при разработке инструментов для новых векторов атак, например через прошивку UEFI. Можно сказать, что участники группы создали инновационное для этого ландшафта решение, — они модифицировали легитимный ключевой компонент прошивки (а не добавили в нее новый драйвер) и таким образом превратили саму прошивку UEFI в замаскированное постоянное хранилище вредоносного ПО в системе.
Мы видим, что наши более ранние прогнозы продолжают сбываться и угрозы для UEFI становятся обыденной реальностью. Поэтому поставщики систем принимают более серьезные меры по предотвращению атак, подобных MoonBounce, например по умолчанию включают загрузку по протоколу Secure Boot или используют такие дополнительные технологии, как TPM и Boot Guard. Мы полагаем, что, несмотря на эти меры, атаки на UEFI будут происходить все чаще, при этом стоящие за ними группы будут развивать свой вредоносный инструментарий, находя новые способы эксплуатировать уязвимости и обходить средства защиты.
Индикаторы компрометации (IoC)
Руткит для EFI – вредоносный CORE_DXE
D94962550B90DDB3F80F62BD96BD9858
Модифицированный DLL-модуль запуска WMI
C3B153347AED27435A18E789D8B67E0A
StealthVector
4D5EB9F6F501B4F6EDF981A3C6C4D6FA
E7155C355C90DC113476DDCF765B187D
899608DE6B59C63B4AE219C3C13502F5
4EF90CEEF2CC9FF3121B34A9891BB28D
CFF2772C44F6F86661AB0A4FFBF86833
InstallUtil (средство запуска)
5F9020983A61446A77AF1976247C443D
StealthMutant
0603C8AAECBDC523CBD3495E93AFB20C
8C7598061D1E8741B8389A80BFD8B8F5
F9F9D6FB3CB94B1CDF9E437141B59E16
Microcin
5FE6CE9C48D0AE98EC2CA1EC9759AAD9
50FF717A8E3106DDBF00FB42212879C5
D98614600775781673B6DF397CC4F476
Имплант на языке Go
C9B250099E2DD27BB4170836AC480FE0
97EF7B8FCDCB0C0D9FBB93D0F7E6E3B6
Mimikat_SSP
4E4388D7967E0433D400C60475974D50
5F1C7602688E67F299F5BD533FA07880
Руткит xTalker
45E862964EF4EFDEA181F3927D20E96D
4BC82105403974AA24BF02CFB66B8F7C
Домены и IP-адреса
mb.glbaitech[.]com — MoonBounce
ns.glbaitech[.]com — ScrambleCross
dev.kinopoisksu[.]com — ScrambleCross
st.kinopoisksu[.]com — ScrambleCross
188.166.61[.]146 — ScrambleCross
172.107.231[.]236 — ScrambleCross
193.29.57[.]161 — ScrambleCross
136.244.100[.]127 — ScrambleCross
217.69.10[.]104 — ScrambleCross
92.38.178[.]246 — ScrambleCross
m.necemarket[.]com — Microcin
172.105.94[.]67 — Microcin
holdmem.dbhubspi[.]com — Microcin
5.188.93[.]132 — зловред Go
5.189.222[.]33 — зловред Go
5.183.103[.]122 — зловред Go
5.188.108[.]228 — зловред Go
45.128.132[.]6 — зловред Go
92.223.105[.]246 — зловред Go
5.183.101[.]21 — зловред Go
5.183.101[.]114 — зловред Go
45.128.135[.]15 — зловред Go
5.188.108[.]22 — зловред Go
70.34.201[.]16 — зловред Go
Имена файлов
wbwkem.dll — StealthVector
wkbem.dll — StealthVector
wmiwk.dll — StealthVector
C_20344.nls — StealthVector
C_20334.nls — StealthVector
compwm.bin — шелл-код ScrambleCross
pcomnl.bin — шелл-код ScrambleCross
wmipl.dll — зашифрованный шелл-код ScrambleCross
Microsoft.Service.Watch.targets — StealthMutant
MstUtil.exe.config — зашифрованный шелл-код ScrambleCross
System.Mail.Service.dll — InstallUtil, средство запуска для StealthMutant
schtask.bat — пакетный файл запуска для StealthMutant
CmluaApi.dll — Microcin
Мьютексы ScrambleCross
Global\GouZUAkmtdpUmves
Global\PtUojBxCOZGVmQQn
Global\EGuUCpyYIJRTQJAV
Global\YCtiqMgRrpLGbfDo