MosaicRegressor: угроза в недрах UEFI

Содержание 

 Part II. Technical details (PDF)

UEFI (Unified Extensible Firmware Interface, унифицированный расширяемый микропрограммный интерфейс) — это передовая технология, используемая в некоторых чипах современных компьютерных систем. Она пришла на смену традиционной системе BIOS, обычно применяется для ускорения начальной загрузки компьютера и операционной системы и обладает богатыми функциональными возможностями. К сожалению, она также стала мишенью для атак злоумышленников, стремящихся прочно закрепиться в системе.

Одна из таких атак и стала предметом нашего исследования. Мы обнаружили скомпрометированный образ прошивки UEFI, содержащий вредоносный имплант для установки дополнительного вредоносного ПО на компьютеры жертв. Насколько мы знаем, это второй общеизвестный случай обнаружения активного заражения в прошивке UEFI.

В этой статье мы подробно остановимся на следующих основных моментах:

  • Мы обнаружили образы прошивок UEFI, которые были модифицированы по сравнению с оригиналами и включали несколько вредоносных модулей.
  • Эти модули использовались для установки вредоносного ПО на компьютеры жертв. Вредоносное ПО входило в состав более масштабного вредоносного фреймворка, который мы назвали MosaicRegressor.
  • Компоненты этого фреймворка использовались в ряде атак на дипломатов и членов неправительственных организаций из Африки, Азии и Европы, так или иначе связанных с Северной Кореей.
  • Артефакты, которые мы нашли в коде компонентов фреймворка, и частичное совпадение инфраструктуры командных серверов позволяют предположить, что за этими атаками стоит китайскоязычная группа, возможно, связанная с группировками, использующими бэкдор Winnti.

Атака была обнаружена с помощью сканера прошивок, встроенного в продукты «Лаборатории Касперского» с начала 2019 года. Эта технология была разработана специально для обнаружения угроз, скрывающихся в ROM BIOS, в том числе в образах прошивок UEFI.

Текущее положение дел

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

Такое взаимодействие наиболее заметно при включении компьютера, когда прошивка UEFI запускает операционную систему. Однако взаимодействие возможно и когда операционная система уже запущена и работает — например, для обновления прошивки через определенный программный интерфейс.

Учитывая вышесказанное, прошивка UEFI представляет собой идеальный механизм для закрепления вредоносных программ в системе на продолжительное время. Злоумышленник с определенными навыками может модифицировать прошивку так, чтобы она развертывала вредоносный код, который будет запускаться после загрузки операционной системы. А поскольку прошивка обычно хранится на флэш-памяти SPI, припаиваемой к материнской плате компьютера, внедренные таким образом вредоносные программы будут устойчивы к переустановке операционной системы и замене жесткого диска.

Атаки такого типа фиксировали последние несколько лет. Яркий пример — имплант для LowJax, обнаруженный нашими коллегами из ESET в 2018 году. С помощью модифицированных модулей UEFI программы защиты от кражи LoJack (также известной как Computrace) на несколькие компьютеры установили вредоносный компонент Sofacy/Fancy Bear. Угрозы при использовании собственно Computrace были описаны нашими коллегами из Global Research and Analysis Team (GReaT) еще в 2014 году.

Еще пример — исходный код буткита UEFI под названием VectorEDK, который был обнаружен в утечках Hacking Team в 2015 году. Код состоял из набора UEFI-модулей, которые можно встроить в прошивку платформы, чтобы она развертывала бэкдор при загрузке операционной системы и восстанавливала его в случае удаления. Хотя код VectorEDK был обнародован и в настоящее время доступен на Github, до последнего времени мы не располагали реальными доказательствами его использования на практике.

Результаты исследования

При расследовании атаки мы заметили несколько подозрительных образов прошивки UEFI. Более глубокая проверка показала, что они содержат четыре компонента, у которых похожи значения GUID, что очень необычно. Это были два DXE-драйвера и два UEFI-приложения. При дальнейшем анализе мы смогли установить, что они основаны на исходном коде буткита VectorEDK с небольшими доработками.

Поддельные компоненты, обнаруженные в скомпрометированной прошивке UEFI

Эти добавленные модули инициируют цепочку событий, в результате которых в папку автозагрузки на устройстве жертвы будет записан вредоносный исполняемый файл под названием IntelUpdate.exe. Таким образом, при запуске Windows будет также запускаться и этот файл. Кроме того, в случае удаления вредоносного файла с диска модули восстанавливают его. Поскольку эти действия выполняются с флэш-памяти SPI, избежать их можно только путем удаления вредоносной прошивки.

Ниже приводится краткое описание выявленных нами компонентов:

  • SmmInterfaceBase: DXE-драйвер, основанный на компоненте rkloader группы Hacking Team и предназначенный для развертывания дополнительных компонентов буткита для последующего выполнения. Для этого регистрируется обратный вызов, инициируемый при событии типа EFI_EVENT_GROUP_READY_TO_BOOT. Это событие происходит в момент, когда управление может быть передано загрузчику операционной системы, что позволяет осуществить обратный вызов до загрузки ОС. Обратный вызов, в свою очередь, загружает и вызывает компонент SmmAccessSub.
  • Ntfs: написанный Hacking Team драйвер для обнаружения и парсинга файловой системы NTFS таким образом, чтобы в дальнейшем можно было выполнять операции с файлами и каталогами на диске.
  • SmmReset: приложение UEFI, предназначенное для маркировки образа прошивки как инфицированного. Для этого переменной fTA задается значение жестко прописанного GUID. Приложение базируется на компоненте из оригинальной кодовой базы VectorEDK, который называется ReSetfTA.

 Установка переменной fTA с заранее определенным GUID для обозначения выполнения буткита

  • SmmAccessSub: основной компонент буткита, выполняющий роль закрепившегося в системе дроппера для вредоносных программ пользовательского режима. Он выполняется в результате обратного вызова, зарегистрированного компонентом SmmInterfaceBase, и записывает встроенный в него бинарный код в виде файла с именем IntelUpdate.exe в каталог автозагрузки на диске. В результате этот двоичный файл выполняется сразу после запуска Windows.
    Среди компонентов, которые мы изучили, только этот представляет собой оригинальный код, по большей части написанный с нуля и лишь слегка использующий элементы кода из приложения fsbg, которое входит в состав VectorEDK. Чтобы записать файл на диск, компонент выполняет следующие действия:

    • Выполняет инициализацию указателей для глобальных структур SystemTable, BootServices и RuntimeServices.
    • Пытается получить дескриптор к загруженному в данный момент образу, вызывая метод HandleProtocol с аргументом EFI_LOADED_IMAGE_PROTOCOL_GUID.
    • После получения дескриптора текущего образа модуль пытается найти корневой диск, на котором установлена Windows, путем перебора всех дисков и проверки наличия на них директории \Windows\System32. На этом этапе создается глобальный объект EFI_FILE_PROTOCOL, соответствующий найденному диску, после чего на него делается ссылка, чтобы остальные файлы и директории открывать именно на нем.
    • Если модулю на предыдущем этапе удалось найти корневой диск, он ищет файл маркера под названием setupinf.log в директории Windows. Если файл существует, модуль прекращает работу, а если нет — создает его.
    • Если создание setupinf.log прошло успешно, модуль проверяет, есть ли на том же диске директория Users.
    • Если она существует, то в директорию ProgramData\Microsoft\Windows\Start Menu\Programs\Startup на корневом диске модуль записывает файл IntelUpdate.exe (внедренный в двоичный файл UEFI-приложения).

Код из SmmAccessSub, используемый для записи внедренного двоичного файла IntelUpdate.exe в каталог автозагрузки Windows

К сожалению, нам не удалось определить точный вектор заражения, который позволил злоумышленникам перезаписать оригинальную прошивку UEFI. Наши журналы детектирования показывают, что сама прошивка была признана вредоносной, но никаких подозрительных событий этому не предшествовало. В связи с этим мы можем только предполагать, как могло произойти заражение.

Один из вариантов — это физический доступ к компьютеру жертвы. Эта гипотеза основана на утекших материалах Hacking Team, где говорится, что для установки прошивки, инфицированной VectorEDK, необходимо загрузить целевую машину с USB-носителя. На таком USB-носителе должна находиться специальная утилита для обновления, которую можно сгенерировать с помощью соответствующего компоновщика, предоставляемого компанией. В изученной нами прошивке мы обнаружили утилиту для обновления Q-flash, которая могла быть использована для этой цели.

Кроме того, из материалов утечек можно узнать, что возможность заражения UEFI (Hacking Team называет это «постоянной установкой») была протестирована на ноутбуках ASUS X550C. В них используются прошивки UEFI компании AMI, которые очень похожи на те, что мы исследовали. Поэтому можно предположить, что метод модификации прошивки Hacking Team будет работать и в нашем случае.

Выдержка из руководства Hacking Team для развертывания зараженной прошивки UEFI, также известной как persistent installation (постоянная установка)

Разумеется, мы не можем исключать и возможность удаленной установки модифицированной прошивки — например, через скомпрометированный механизм обновления. Подобный сценарий обычно предполагает использование уязвимостей процедуры аутентификации обновлений в BIOS. Это вполне возможно, но у нас нет никаких доказательств в пользу этой версии.

Добавим перспективы: фреймворк MosaicRegressor

Оригинальный буткит Hacking Team записывал на диск один из бэкдоров этой же компании, известный как Soldier, Scout или Elite, однако UEFI-зловред, который мы исследовали, устанавливает другую вредоносную программу, с которой мы до сих пор не сталкивались. Мы решили поискать похожие образцы, схожие по реализации или содержащие аналогичные строки. Количество найденных образцов указывает на то, что эта конкретная вредоносная программа — лишь один из вариантов, реализованный на базе более крупного фреймворка, который мы назвали MosaicRegressor.

MosaicRegressor представляет собой многоступенчатый модульный фреймворк, предназначенный для кибершпионажа и сбора данных. Он состоит из загрузчиков, а иногда — также из нескольких промежуточных загрузчиков, предназначенных для доставки и исполнения полезной нагрузки на компьютерах жертв. Модульная структура помогает злоумышленникам скрыть от анализа весь фреймворк, разворачивая компоненты на целевых машинах только по требованию. И действительно, в ходе расследования нам удалось получить лишь несколько компонентов полезной нагрузки.

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

При этом компоненты, которые мы обнаружили, использовали различные механизмы обмена данными со своими командными серверами:

  • библиотека CURL (HTTP/HTTPS)
  • служба передачи данных BITS
  • WinHTTP API
  • POP3S/SMTPS/IMAPS, «полезная нагрузка» передается по электронной почте

Последний вариант в списке отличается от остальных тем, что для получения «полезной нагрузки» использует почтовые ящики. Отчёт, который формируется после исполнения нагрузки, впоследствии отправляется на почтовый адрес для обратной связи, и уже оттуда, вероятно, его забирают злоумышленники.

Используемые для этой цели почтовые ящики находятся в домене mail.ru, учётные данные для доступа к ним зашиты в теле модуля . Чтобы получить файл из входящих писем, MailReg каждые 20 минут пытается подключиться к серверу pop.mail.ru и перебирает вшитые учетные данные, пока не удастся авторизоваться. Адреса электронной почты (без паролей), используемые для входа в систему, и соответствующие адреса для обратной связи указаны в таблице ниже:

Почтовый адрес для входа в систему Почтовый адрес для обратной связи
thtgoolnc@mail.ru thgetmmun@mail.ru
thbububugyhb85@mail.ru thyhujubnmtt67@mail.ru

Загрузчики также можно разделить на два типа: «обычные» просто скачивают и запускают «полезную нагрузку», а «расширенные» также собирают информацию о системе.

Структура лог-файла, записанного BitsRegEx. Строки, выделенные красным цветом — это оригинальные поля, которые появляются в этом файле

Нам удалось обнаружить только один вариант следующей ступени — «полезной нагрузки». Этот модуль устанавливает в реестре значения для автозапуска и работает как еще один загрузчик для компонентов, которые предположительно доставляются первичным загрузчиком. Эти компоненты также являются лишь промежуточными загрузчиками для доставки DLL следующего этапа. Постоянные компоненты на диске не содержат конкретной бизнес-логики, так как ее им отправляет командный сервер в DLL-файлах, в основном временных.

Мы получили одну из таких библиотек — load.rem. Она представляет собой простую программу для кражи документов: собирает файлы из папки «Недавние документы» в зашифрованный архив с паролем . Скорее всего, таким образом она готовит их к отправке на командный сервер, но отправляет их уже другой компонент.

Ниже приведена схема взаимодействия между известными нам компонентами. Цветом выделены те компоненты, которые нам удалось получить и проанализировать, а все остальные представлены на сером фоне.

Процесс атаки: от BitsRegEx и запуска промежуточных загрузчиков до доставки полезной нагрузки

Цели атаки

По данным нашей телеметрии, в период с 2017 по 2019 годы компоненты из фреймворка MosaicRegressor были доставлены на компьютеры нескольких десятков потенциальных жертв. Целями атаки были дипломатические представительства и неправительственные организации в Африке, Азии и Европе. Только две из них были также заражены буткитом UEFI в 2019 году, еще до заражения компонентом BitsReg.

Учитывая особенности целей, мы смогли определить, что они в той или иной мере имеют отношение к КНДР — некоторые осуществляют некоммерческую деятельность, связанную с этой страной, другие фактически присутствуют в ней. Эта мысль подтверждается и одним из векторов заражения, задействованным для доставки вредоносной программы части жертв: злоумышленники использовали SFX-архивы с документами различной тематики, связанной с Северной Кореей. Эти архивы содержали и сам документ, и один из вариантов MosaicRegressor, который запускался при распаковке архива. Примеры документов-приманок можно посмотреть ниже.

Примеры документов-приманок из SFX-архивов, отправленных жертвам MosaicRegressor, содержание которых связано с КНДР

Организаторы атаки

Анализируя различные варианты MosaicRegressor, мы обратили внимание на несколько интересных фактов, позволяющих предположить, кто может стоять за этим фреймворком. Насколько мы можем судить, атаки были проведены китайскоязычными злоумышленниками, которые, возможно, ранее использовали бэкдор Winnti. Мы обнаружили следующие доказательства в пользу этой версии:

  • В отчете о системе, который создаёт вариант BitsRegEx, есть много строк, оканчивающихся на последовательность символов «0xA3, 0xBA». Эта последовательность недопустима для строки в кодировке UTF8, а кодировка LATIN1 транслирует эти символы в знак фунта, за которым следует «индикатор порядкового числительного мужского рода» (£º). Попытка перебора всех доступных кодировок iconv для преобразования в UTF-8 позволила выявить несколько наиболее осмысленных вариантов. Учитывая контекст, в котором эти символы используются, и следующие за ним символы перевода строки, наиболее подходящим вариантом кажется символ двоеточия в полную ширину (full-width colon) в Юникоде, транслированный либо с китайской, либо с корейской кодовой страницы (CP936 и CP949).

В журнале информации о системе BitsRegEx используется последовательность символов «0xA3, 0xBA», которая, по всей вероятности, представляет собой двоеточие полной ширины (согласно кодовым страницам CP936 и CP949)

  • Мы обнаружили и другой след: ресурсы в модулях CurlReg скомпилированы с идентификатором языка 2052 (zh-CN).

Артефакт китайского языка в разделе ресурсов образца CurlReg

  • Мы обнаружили объект OLE2, извлеченный из документа, эксплуатирующего уязвимость CVE-2018-0802, который был создан генератором документов Royal Road / 8.t и использовался для установки варианта CurlReg. Насколько нам известно, этот генератор широко используется китайскоязычными злоумышленниками.

Выдержка из объекта OLE2, найденного в документе, созданном в Royal Road и содержащем вариант CurlReg

  • Адрес командного сервера (103.82.52[.]18), обнаруженный в одном из вариантов MosaicRegressor (MD5:3B58E122D9E17121416B146DAAB4DB9D), ранее использовали «Winnti Umbrella и связанные с ней группировки», как сказано в общедоступном отчете. Поскольку больше ничто не указывает на связь между нашими находками и группировками, использующими бэкдор Winnti, мы с низким уровнем достоверности предполагаем, что одна из них действительно ответственна за эти атаки.

Выводы

Атаки, описанные в этой статье, показывают, насколько далеко может зайти злоумышленник, чтобы как можно прочнее закрепиться на компьютере жертвы. Скомпрометированные прошивки UEFI «в дикой природе» встретить очень сложно. Как правило, это обусловлено незаметностью подобных атак, а также сложностью заражения флэш-чипа SPI жертвы и высоким риском скомпрометировать дорогостоящий инструментарий.

Тем не менее мы видим, что UEFI продолжает представлять интерес для APT-групп, в то время как разработчики систем безопасности не уделяют этой технологии должного внимания. Сочетание наших защитных технологий и понимания механизмов проведения как текущих, так и прошлых кампаний с использованием зараженных прошивок помогает нам отслеживать ситуацию и позволит сообщать о подобных атаках в будущем.

Полная информация об этом исследовании и развитии событий в связи с этим типом угроз доступны клиентам сервиса информирования об APT-угрозах на нашем портале Threat Intelligence Portal.

Индикаторы компрометации (IoC)

Модули UEFI

F5B320F7E87CC6F9D02E28350BB87DE6 (SmmInterfaceBase)
0C136186858FD36080A7066657DE81F5 (SmmAccessSub)
91A473D3711C28C3C563284DFAFE926B (SmmReset)
DD8D3718197A10097CD72A94ED223238 (Ntfs)

Дропперы RAR SFX
0EFB785C75C3030C438698C77F6E960E
12B5FED367DB92475B071B6D622E44CD
3B3BC0A2772641D2FC2E7CBC6DDA33EC
3B58E122D9E17121416B146DAAB4DB9D
70DEF87D180616406E010051ED773749
7908B9935479081A6E0F681CCEF2FDD9
AE66ED2276336668E793B167B6950040
B23E1FE87AE049F46180091D643C0201
CFB072D1B50425FF162F02846ED263F9

Документыприманки
0D386EBBA1CCF1758A19FB0B25451AFE
233B300A58D5236C355AFD373DABC48B
449BE89F939F5F909734C0E74A0B9751
67CF741E627986E97293A8F38DE492A7
6E949601EBDD5D50707C0AF7D3F3C7A5
92F6C00DA977110200B5A3359F5E1462
A69205984849744C39CFB421D8E97B1F
D197648A3FB0D8FF6318DB922552E49E

BitsReg
B53880397D331C6FE3493A9EF81CD76E
AFC09DEB7B205EADAE4268F954444984 (64-bit)

BitsRegEx

DC14EE862DDA3BCC0D2445FDCB3EE5AE
88750B4A3C5E80FD82CF0DD534903FC0
C63D3C25ABD49EE131004E6401AF856C
D273CD2B96E78DEF437D9C1E37155E00
72C514C0B96E3A31F6F1A85D8F28403C

CurlReg

9E182D30B070BB14A8922CFF4837B94D
61B4E0B1F14D93D7B176981964388291
3D2835C35BA789BD86620F98CBFBF08B

CurlRegEx

328AD6468F6EDB80B3ABF97AC39A0721
7B213A6CE7AB30A62E84D81D455B4DEA

MailReg
E2F4914E38BB632E975CFF14C39D8DCD

Загрузчики на основе WinHTTP
08ECD8068617C86D7E3A3E810B106DCE
1732357D3A0081A87D56EE1AE8B4D205
74DB88B890054259D2F16FF22C79144D
7C3C4C4E7273C10DBBAB628F6B2336D8

Полезная нагрузка BitsReg (FileA.z)

89527F932188BD73572E2974F4344D46

Загрузчики второго этапа

36B51D2C0D8F48A7DC834F4B9E477238 (mapisp.dll)
1C5377A54CBAA1B86279F63EE226B1DF (cryptui.sep)
9F13636D5861066835ED5A79819AAC28 (cryptui.sep)

Полезная нагрузка третьего этапа

FA0A874926453E452E3B6CED045D2206 (load.rem)

Пути к файлам

%APPDATA%\Microsoft\Credentials\MSI36C2.dat
%APPDATA%\Microsoft\Internet Explorer\%Computername%.dat
%APPDATA%\Microsoft\Internet Explorer\FileA.dll
%APPDATA%\Microsoft\Internet Explorer\FileB.dll
%APPDATA%\Microsoft\Internet Explorer\FileC.dll
%APPDATA%\Microsoft\Internet Explorer\FileD.dll
%APPDATA%\Microsoft\Internet Explorer\FileOutA.dat
%APPDATA%\Microsoft\Network\DFileA.dll
%APPDATA%\Microsoft\Network\DFileC.dll
%APPDATA%\Microsoft\Network\DFileD.dll
%APPDATA%\Microsoft\Network\subst.sep
%APPDATA%\Microsoft\WebA.dll
%APPDATA%\Microsoft\WebB.dll
%APPDATA%\Microsoft\WebC.dll
%APPDATA%\Microsoft\Windows\LnkClass.dat
%APPDATA%\Microsoft\Windows\SendTo\cryptui.sep
%APPDATA%\Microsoft\Windows\SendTo\load.dll %APPDATA%\Microsoft\Windows\load.rem
%APPDATA%\Microsoft\Windows\mapisp.dll
%APPDATA%\Microsoft\exitUI.rs
%APPDATA%\Microsoft\sppsvc.tbl
%APPDATA%\Microsoft\subst.tbl
%APPDATA%\newplgs.dll
%APPDATA%\rfvtgb.dll
%APPDATA%\sdfcvb.dll
%APPDATA%\msreg.dll
%APPDATA\Microsoft\dfsadu.dll
%COMMON_APPDATA%\Microsoft\Windows\user.rem
%TEMP%\BeFileA.dll
%TEMP%\BeFileC.dll
%TEMP%\RepairA.dll
%TEMP%\RepairB.dll
%TEMP%\RepairC.dll
%TEMP%\RepairD.dll
%TEMP%\wrtreg_32.dll
%TEMP%\wrtreg_64.dll
%appdata%\dwhost.exe
%appdata%\msreg.exe
%appdata%\return.exe
%appdata%\winword.exe

Домены и IP-адреса

103.195.150.106
103.229.1.26
103.243.24.171
103.243.26.211
103.30.40.116
103.30.40.39
103.39.109.239
103.39.109.252
103.39.110.193
103.56.115.69
103.82.52.18
117.18.4.6
144.48.241.167
144.48.241.32
150.129.81.21
43.252.228.179
43.252.228.252
43.252.228.75
43.252.228.84
43.252.230.180
menjitghyukl.myfirewall.org

Дополнительные возможные командные сервера
43.252.230.173
185.216.117.91
103.215.82.161
103.96.72.148
122.10.82.30

Мьютексы

FindFirstFile Message Bi
set instance state
foregrounduu state
single UI
Office Module
process attach Module

Публикации на схожие темы

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *