Pull to refresh

UEFI уязвимость видишь? А она есть

Level of difficulty Medium
Reading time 9 min
Views 12K

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

UEFI и/или BIOS

Для начала, разберемся с понятиями: что такое BIOS, и что такое UEFI. BIOS (Basic Input-Output system) — программа низкого уровня, хранящаяся на чипе материнской платы компьютера. Основная функция — корректно инициализировать оборудование при включении системы и передать управление загрузчику или непосредственно ядру ОС.

Basic Input-Output system
Basic Input-Output system

Таким образом, при включении компьютера, вначале загружается BIOS, иницализирует аппаратные компоненты, убеждается в правильности их работы и далее запускает программу-загрузчик, загружающую операционную систему. До загрузки ОС, BIOS выполняет самотестирование после включения — POST (Power-On Self Test), необходимое для проверки аппаратных настроек. В случае неисправности, вылетают системные ошибки.

Вход в BIOS осуществляется нажатием клавиши в начале загрузки ПК. Стандартные кнопки: Esc, F2, F8, F10, Delete. Через BIOS можно настраивать параметры системы: от простой установки времени, до выбора загрузочного устройства и изменения частоты процессора. Сохраняются настройки на самой материнской плате.

Пример ошибки BIOS в случае неправильного «разгона» комплектующих
Пример ошибки BIOS в случае неправильного «разгона» комплектующих

При успешном прохождении тестов BIOS передаёт управление Master Boot Record (MBR), главную загрузочную запись, хранящуюся на жестком диске и используемую для дальнейшей загрузки ОС.

С BIOS'ом разобрались, что такое UEFI? Справедливо назвать UEFI (Unified Extensible Firmware Interface) современной итерацией BIOS, массивным обновлением, если хотите. На всех современных ПК с завода идёт именно UEFI, но часто называется BIOS/EFI BIOS, чтобы не путать пользователя, привыкшего к традиционному BIOS. Причин перейти на UEFI достаточно: работает быстрее, поддерживает жёсткие диски большего объёма (в теории — до 9.4 зеттабайт), загрузка быстрее, выше уровень безопасности, а также есть графический интерфейс с поддержкой мыши.

Пример UEFI материнской платы ASUS
Пример UEFI материнской платы ASUS

С более технической стороны, UEFI может работать в 32-битном или 64-битном режимах, адресное пространство больше, есть безопасный запуск Secure Boot (о нём позже подробнее). Функции настройки системы остались, но стали выглядеть лучше: удобнее выбирать порядок загрузки, настраивать предустановки работы комплектующих, выбирать частоту работы процессора, оперативной памяти, добавлены метрики температуры, скорости вертушек, напряжения и прочие плюшки обновленной системы. Одно из основных отличий — BIOS прекращает работу после выполнения POST тестирования, а UEFI продолжает работу. Также UEFI поддерживает более широкий спектр устройств.

UEFI/BIOS является программным обеспечением, хоть и «посаженым» глубокого в материнскую плату. Поскольку это ПО, то как и любое ПО, оно подвержено угрозам, одна из таких угроз — rootkit.

Что такое rootkit?

Rootkit (root — «суперпользователь» из Unix, kit — комплект) — исходя из названия, набор инструментов с правами администратора. Сегодня руткиты чаще относятся к ОС Windows, нежели Unix. Руткит — программа, скрывающая от антивирусов собственные вредоносные действия, либо прячущая работу другой вредоносной программы. Они делятся на 2 вида по правам доступа: уровня пользователя и уровня ядра.

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

Руткиты уровня ядра получают полный доступ к системе на уровне ядра ОС. Обнаружить и удалить подобный руткит намного сложнее, чем руткит пользовательский. После попадания такого вредоносного приложения в систему возможности атакующего почти безграничны. Но они сложнее в создании и встречаются реже. Буткит — подвид руткита, заражает загрузочный сектор жесткого диска MBR с целью закрепления в системе.

«Blue Pill» — руткит через виртуализацию

Та самая синяя таблетка
Та самая синяя таблетка

В 2006 году Йоанна Рутковская на конференции Black Hat Briefings 3 августа продемонстрировала руткит, основанный на виртуализации х86. Основной посыл: в архитектуре х86 существуют 4 кольца защиты: ring0 — ring3, от наиболее привилегированного, до менее привилегированного уровня. И 3 типа ресурсов, в отношении которых действуют механизмы защиты процессора: память, порты ввода и вывода, а также возможность выполнения некоторых инструкций. В любой момент x86 процессор работает на определенном уровне привилегий, и от этого зависит, что может и чего не может сделать код. Большинство современных ядер для архитектуры x86 используют всего 2 уровня: ring0 и ring3.

Выполнение части инструкций (команд) процессора возможно только в ring0. Попытки выполнения инструкций за пределами нулевого кольца вызовут исключение #GP. #GP (general‑protection exception) — означает, что процессор обнаружил один из классов нарушения защиты, называемых «general protection violations». Аналогичные исключения происходят при попытке обращения к неопределённым адресам памяти и портам ввода/вывода. Таким образом, пользовательский код из ring3 никогда не прорвётся в ring2, не говоря уже о ring0. С ростом популярности виртуализации на x86 архитектуре Intel и AMD добавили для неё аппаратную поддержку. Для этого гипервизору требовалось запустить Virtual Machine Control Structure (VMCS), ключевую структуру для реализации виртуализации процессора, определяющую виртуальную машину и вызывающую VMenter/VMexit, то есть, условия, которые нужны виртуальной машине от гипервизора. Подобная работа гипервизора называется ring-1, хотя такого уровня привилегий нет. Но из‑за того, что могут хоститься несколько ядер уровня ring0, обозначение ring-1 имеет смысл. Именно работу гипервизора в ring-1 и эксплуатирует BluePill.

Кольца привилегий х86
Кольца привилегий х86

Изначально Blue Pill требовала поддержки виртуализации AMD‑V (Pacifica), поскольку виртуализация от AMD была спроектирована как целостная система и виртуализируемый гость не может определить, гость он или нет. Вредоносный код, попадая в целевую систему, незаметно виртуализирует хостовую систему, превращая её в гостевую. При этом не требуется перезагрузка ОС. Предыдущая ОС сохраняла существующие ссылки на все устройства и файлы, но почти всё, включая запросы данных и аппаратные прерывания может быть перехвачено гипервизором с последующей отправкой поддельного ответа. Для противодействия Blue Pill Рутковская создала Red Pill, таблетку, которая обнаруживает присутствие гипервизора через таблицу регистров IDTR.

LoJack или LoJax?

В 2018 году исследователи из ESET обнаружили применение троянизированной версии программы для защиты устройств от краж — LoJack. Хакеры из Sednit привлекли внимание ИБ‑специалистов из‑за использования модуля UEFI/BIOS в качестве механизма обеспечения персистентности. Добиться устойчивости к переустановке ОС и смене жесткого диска (LoJax живет в модуле на материнской плате) получилось благодаря использованию приложения для отслеживания устройства и защиты от краж — LoJack/Computrace.

Интерфейс включения/выключения Computrace
Интерфейс включения/выключения Computrace

Computrace работает следующим образом: при включении компьютера и перед запуском Windows выполняется файл autochk.exe, с которого начинается проверка логической целостности файловой системы. Создается бэкап autochk.exe, а оригинальный файл, в свою очередь, заменятся на модифицированный. При запуске модифицированного autochk.exe внедряется мини‑агент rpcnetp.exe и восстанавливается оригинальная версия autochk.exe. Задача мини‑агента rpcnetp.exe — обеспечение работы основного агента. В случаях, когда основной агент не работает, rpcnetp.exe пытается подключиться к Command and Control серверу издателя приложения Absolute Software для его скачивания и исполнения. Мини‑агент сначала дублируется, затем преобразуется в динамическую библиотеку DLL. Библиотека загружается в память, инициализирует службу работы с библиотеками svchost.exe и подгружается в него. Следующим запускается процесс работы с Internet Explorer и в него инжектируется DLL для связи через интернет. Готово, Computrace работает.

Описание процесса работы Computrace и сетевого протокола было опубликовано в 2014, и светлые, но не очень доброжелательные умы взялись за работу. Из‑за отсутствия механизма аутентификации злоумышленники получали доступ к серверу, могли заставить мини‑агента скачать произвольный код. Найденные троянизиванные образцы rpcnetp.exe устанавливали связь с Command and Control сервером злоумышленников, вместо легитимного сервера Absolute Software. При этом, легитимная и троянизированная версии почти не отличаются, у них идентичные временные метки компиляции и лишь несколько десятков байтов и переменных таймера отличаются от оригинальных. Специалисты ESET обнаружили мини‑агенты LoJax в атаках на организации на Балканах, в Центральной и Восточной Европе. Определить причастность группы Sednit помогло найденное во всех атаках ПО, используемое ими:

  • SedUploader, бэкдор.

  • XAgent, флагманский бэкдор Sednit.

  • Xtunnel, сетевой прокси для передачи трафика между C&C сервером и конечной машиной.

Специалисты ESET составили подробный WhitePaper на руткит LoJax.

Актуальные угрозы

В середине лета 2022 исследователи из Лаборатории Касперского нашли новую версию руткита, существовавшего с 2016 года. Первые версии руткита под названием CosmicStrand, созданного неизвестными китайско‑говорящими злоумышленниками, были задокументированы специалистами из Qihoo 360 в 2017 году. Доподлинно неизвестно, как вредоносное ПО попадало на устройства, но удалось установить комплектующие, подверженные атакам — это оказались материнские платы от Gigabyte и ASUS с чипсетами Intel H81. Основная версия — покупка материнской платы с уже заложенным бэкдором.

Источник угрозы — модифицированный драйвер CSMCORE DXE, отвечающий за процесс загрузки. Он был изменен таким образом, чтобы перехватывать последовательность загрузки и внедрять в неё вредоносную логику. Целью руткита является загрузка импланта на уровне ядра операционной системы.

Логическая цепочка выглядит следующим образом:

  • Зараженный EFI драйвер запускает цепочку событий.

  • Вредоносный код вносит изменения в менеджер загрузки, разрешая модифицировать загрузчик ядра Windows до его непосредственной сборки.

  • Меняясь с загрузчиком ОС, атакующие модифицируют функцию ядра Windows.

  • Далее, при запуске измененной функции, во время обычной процедуры загрузки ОС, вредоносный код получает контроль над исполняемым кодом функции ядра Windows.

  • Наконец, запускается шелл‑код из памяти и контактирует с Command and Control сервером для загрузки и исполнения необходимого вредоносного пейлоада на машине жертвы.

Наглядное изображение всего процесса с разбора руткита на сайте Securelist
Наглядное изображение всего процесса с разбора руткита на сайте Securelist

Полный разбор руткита CosmicStrand с исполняемым кодом представлен на сайте Securelist по ссылке.

Методы защиты

Первый очевидный способ защиты — включение функции Secure Boot в UEFI/BIOS. И он не сработает. UEFI SecureBoot защищает от запуска недоверенных по отношению к прошивке компонентов: загрузчиков, драйверов, EFI‑приложений. Но если вредоносный код уже на SPI Flash, то узнать о его существовании можно только прибегнув к внешним технологиям безопасности: TPM Measured Boot, Verified Boot. Одним из способов защиты является своевременное обновление прошивки UEFI.

Задача также ложится на плечи производителей, прошивка должна быть изначально построена с пониманием методик безопасности. Лучшее решение — установка антивируса, способного отследить низкоуровневое проникновение в систему. Популярные вендоры, предоставляющие защитные решения:

  • Kaspersky

  • ESET

  • InfoTeCS

Ликвидация последствий — отдельная, трудоемкая задача. В отдельных случаях, по типу LoJax, нужно перепрошить SPI флеш‑память. Также нужно обновить прошивку самого UEFI. Но если предложенные методы не помогли, единственное решение — замена материнской платы.

Создание руткитов, внедренных в UEFI/BIOS, достаточно трудоемкая задача. Злоумышленникам нужно учитывать различные чипсеты, системы защиты, встроенные производителями, и сами методы внедрения вредоносного ПО. Именно из‑за сложности создания и загрузки в систему, руткиты нечасто используются злоумышленниками. Но это не значит, что угрозы можно не бояться, нужно своевременно озадачиваться комплексной безопасностью компьютера: обновлять прошивку и банально установить антивирус. Также не стоит забывать о безопасности при покупке комплектующих с рук и, если есть возможность, проверить материнскую плату непосредственно до покупки. При соблюдении всех мер предупреждения угрозы, риск подхватить низкоуровневый руткит минимальна. Но злоумышленники не дремлют и уже ищут новые способы получить полный доступ к системе, поэтому почаще запускайте полноценное сканирование системы и следите за новостями в мире информационной безопасности.

Tags:
Hubs:
+15
Comments 31
Comments Comments 31

Articles

Information

Website
amonitoring.ru
Registered
Founded
Employees
101–200 employees
Location
Россия