MITRE ATT&CK T1055.013 Внедрение процесса: Доппеллинг процессов

MITRE ATT&CK

Доппеллинг процессов (Process Doppelgänginging) - это техника внедрения процессов, которая позволяет злоумышленникам выполнять вредоносный код, манипулируя механизмом загрузки процессов Windows. Эта техника использует способ обработки Windows исполняемых файлов и транзакций, позволяя злоумышленникам создавать и запускать процесс, который выглядит легитимным, а на самом деле выполняет вредоносный код. В отличие от традиционных методов внедрения процессов, Process Doppelgänginging не требует записи вредоносного файла на диск, что делает его чрезвычайно эффективным средством обхода антивирусов и систем обнаружения конечных точек.

Что такое транзакционная NTFS (TxF)?

Transactional NTFS (TxF) - это функция в Windows, которая позволяет выполнять файловые операции на томе файловой системы NTFS как часть транзакции. Транзакции помогают повысить надежность приложений, гарантируя сохранение целостности и непротиворечивости данных даже в случае сбоя. Злоумышленники могут злоупотреблять TxF для выполнения техники, называемой «двойник процесса», которая заключается в замене памяти легитимного процесса вредоносным кодом с помощью транзакций TxF.

Использование злоумышленниками доппельгентинга процессов

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

Эта техника использует функцию Transactional NTFS (TxF) в Windows, которая позволяет выполнять транзакционные файловые операции. Изменения в файлах остаются незафиксированными до завершения транзакции, что позволяет сделать откат для сохранения целостности файловой системы.

Атакующие могут использовать TxF, создав приостановленный процесс, внедрив в его память вредоносный код и инициировав транзакцию. Атакующий изменяет исполняемый файл процесса в транзакции и фиксирует ее, заменяя легитимный код на вредоносный. Затем процесс возобновляется, запуская вредоносный код под видом доверенного приложения.

Несмотря на сходство с Пустым процессом, который заменяет память легитимного процесса вредоносным кодом, Process Doppelgänging уникальным образом использует транзакции TxF, что повышает его способность уклоняться от обнаружения. Ниже приведены четыре этапа атаки с использованием подтехники Process Doppelgänging.

Ниже приведены четыре шага потока атак с использованием субтехники Process Doppelgänging.

1. Транзакция: Транзакция TxF создается с помощью легитимного исполняемого файла, а затем этот файл перезаписывается вредоносным кодом. Эти изменения изолированы и видны только в контексте транзакции.

  • CreateTransaction() - вызывается для создания транзакции.
  • CreateFileTransacted() - вызывается для открытия «чистого» файла транзакции.
  • WriteFile() - вызывается для перезаписи файла вредоносным шелл-кодом.

2. Загрузка: Создается общий раздел памяти, в который загружается вредоносный исполняемый файл.

NtCreateSection() - вызывается для создания секции из транзакционного файла.

3. Откат: Изменения в исходном исполняемом файле отменяются, эффективно удаляя вредоносный код из файловой системы.

RollbackTransaction() - вызывается для отката транзакции, чтобы удалить изменения из файловой системы.

4. Оживление: Из испорченного участка памяти создается процесс и начинается его выполнение.

  • NtCreateProcessEx() и NtCreateThreadEx() - вызываются для создания объектов процесса и потока.
  • RtlCreateProcessParametersEx() - вызывается для создания параметров процесса.
  • VirtualAllocEx() и WriteProcessMemory() - вызываются для копирования параметров в адресное пространство вновь созданного процесса.
  • NtResumeThread() - вызывается для запуска выполнения двойного процесса.

GhostPulse - это вредоносная программа-загрузчик, использующая технику двойников процессов. Вредоносная программа следует типичной схеме атаки, используя транзакции NTFS для внедрения конечной полезной нагрузки в новый дочерний процесс. GhostPulse использует эту технику для развертывания других вредоносных программ, таких как NetSupport, Rhadamanthys, SectopRAT и Vidar.

В другом примере, группа LummaStealer, занимающаяся вредоносным ПО как сервер (MaaS), использовала IDAT Loader для развертывания LummaC2 с помощью доппельгадинга процессов. При первом запуске IDAT Loader использует перехват порядка загрузки DLL для загрузки вредоносных DLL и создает процесс cmd.exe. Затем этот процесс внедряет полезную нагрузку LummaC2 в explorer.exe с помощью API-вызова NtWriteVirtualMemory.

Приведение процесса

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

В январе 2024 года появилась информация о том, что вредоносная программа CherryLoader использует метод «призрака» процесса, описанный ниже .

Вредоносная программа начинает с создания файла с помощью API CreateFile с флагом DELETE, установленным в качестве параметра dwDesiredAccess.

Затем вредоносная программа устанавливает параметр FileInformation с помощью API NtSetInformationFile и указывает параметр на структуру FILE_DISPOSITION_INFORMATION. Эта структура содержит единственный булевский параметр DeleteFile, который, если он установлен, заставляет операционную систему удалить файл при его закрытии.

Используя API WriteFile, вредоносная программа записывает расшифрованные данные в только что созданный файл и создает секцию образа с помощью NtCreateSection.

После создания секции изображения вредоносная программа использует CreateFileMappingA и MapViewOfFile для отображения созданного файла в памяти.

После создания мапинга вредоносная программа закрывает дескрипторы сопоставленных файлов, что приводит к удалению ранее созданного файла.

Используя ранее созданный раздел, вредоносная программа создает новый процесс, получает и устанавливает переменные окружения с помощью функций CreateEnvironmentBlock и RtlCreateProcessParameters.

Перед созданием нового потока выполнения вредоносная программа выделяет память для вновь созданного процесса, используя функции VirtualAllocEx, WriteProcessMemory и ReadProcessMemory для установки базового адреса, параметров процесса и данных окружения во вновь выделенную память.

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

Комментарии: 0