T1547.006: Модули и расширения ядра

Злоумышленники могут изменить ядро так, чтобы оно автоматически выполняло программы при загрузке системы. Загружаемые модули ядра (LKM) — это фрагменты кода, которые могут загружаться в ядро и выгружаться из него по требованию. Они расширяют функциональность ядра без необходимости перезагрузки системы. Например, к таким модулям относятся драйверы устройств, позволяющие ядру получить доступ к оборудованию, подключенному к системе. 

При злонамеренном использовании LKM могут представлять собой разновидность руткита, работающую в режиме ядра с наивысшими привилегиями операционной системы (Ring 0). Руткиты на базе LKM могут в числе прочего скрывать собственное присутствие в системе, выборочно скрывать файлы, процессы и сетевую активность, манипулировать журналами, обеспечивать работу аутентифицированных бэкдоров и предоставлять root-доступ непривилегированным пользователям

Расширения ядра, также называемые кекстами (kext), используются в macOS для включения дополнительной функциональности в систему, подобно LKM в Linux. Поскольку за обеспечение безопасности отвечает ядро, а расширения ядра работают как часть ядра, на кексты не распространяются политики безопасности macOS. Кексты загружаются и выгружаются с помощью команд kextload и kextunload. Кексты должны быть подписаны идентификатором разработчика, которому Apple предоставила привилегии на подписывание расширений ядра. Разработчики без этих привилегий все равно могут подписывать кексты, но они не будут загружаться, если не отключить SIP. Если функция SIP включена, перед добавлением кекста в AuxKC будет проверяться его подпись.

Начиная с macOS Catalina 10.15, расширения ядра были упразднены в пользу расширений системы. Однако кексты все еще разрешены к использованию, поскольку расширений системы для интерфейсов программирования ядра нет.

Злоумышленники могут использовать LKM и кексты для закрепления в системе и (или) повышения привилегий. Помимо атак, где применялась эта техника, существуют проекты с открытым исходным кодом, реализующие данную функциональность.

Какие продукты Positive Technologies покрывают технику

Экспертиза MaxPatrol SIEM

unix_mitre_attck_persistence: PT-CR-439: Unix_Boot_Modify: Изменение файлов загрузки и файлов ядра ОС для автозапуска при загрузке ОС или входе в нее

Способы обнаружения

IDDS0017Источник и компонент данныхКоманда: Выполнение командОписание

Для обнаружения загрузки и выгрузки модулей в системах Linux, а также манипулирования ими можно отслеживать следующие команды: modprobe, insmod, lsmod, rmmod и modinfo. Злоумышленники могут выполнять команды в целевой системе до загрузки вредоносного модуля, чтобы проверить, правильно ли он скомпилирован . Также с помощью команд злоумышленники могут определить версию ядра Linux и (или) загрузить несколько версий одних и тех же файлов .ko (объекты ядра), а затем выбрать ту версию, которая подходит для запущенной системы. В Linux для правильной компиляции многих загружаемых модулей ядра (LKM) требуются заголовки соответствующего ядра. Эти заголовки обычно загружаются через диспетчер пакетов операционной системы и устанавливаются как обычные пакеты.

В macOS отслеживайте выполнение команд kextload и установленные пользователем расширения ядра на предмет аномальных и (или) потенциально вредоносных действий, таких как создание сетевых подключений. Отслеживайте добавление новых строк в таблицу kext_policy. KextPolicy хранит список утвержденных пользователем расширений ядра (не Apple) и часть истории загружаемых модулей ядра в базе данных SQLite, /var/db/SystemPolicyConfiguration/KextPolicy.

IDDS0022Источник и компонент данныхФайл: Изменение файлаОписание

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

IDDS0008Источник и компонент данныхЯдро: Загрузка модуля ядраОписание

LKM-модули обычно загружаются в /lib/modules и имеют расширение .ko ("kernel object" — объект ядра), начиная с версии 2.6 ядра Linux .

IDDS0009Источник и компонент данныхПроцесс: Создание процессаОписание

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

IDDS0022Источник и компонент данныхФайл: Создание файлаОписание

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

Меры противодействия

IDM1026НазваниеУправление привилегированными учетными записямиОписание

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

IDM1018НазваниеУправление учетными записямиОписание

Используйте MDM, чтобы заблокировать возможность для пользователей устанавливать или разрешать установку расширений ядра, и проследите, чтобы все разрешенные расширения ядра соответствовали политикам, указанным в следующем документе: com.apple.syspolicy.kernel-extension-policy.

IDM1049НазваниеАнтивирус или ПО для защиты от вредоносных программОписание

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

IDM1038НазваниеЗащита от выполненияОписание

Средства контроля приложений и ограничения программного обеспечения, такие как SELinux, KSPP и grsecurity MODHARDEN, и настройка ядра Linux могут помочь в ограничении загрузки модулей ядра.