MITRE ATT&CK T1055.008 Внедрение процесса: Системные вызовы Ptrace

MITRE ATT&CK

Системные вызовы Ptrace (Ptrace System Calls) - это техника внедрения процесса, используемая злоумышленниками для выполнения вредоносного кода внутри легитимного процесса в системах на базе Linux и Unix. Эта техника использует системный вызов ptrace, который обычно применяется для отладки. Подключившись к запущенному процессу, атакующие могут манипулировать его памятью, изменять значения регистров и внедрять произвольный код, эффективно перехватывая исполнение для запуска вредоносной полезной нагрузки в доверенном приложении.

Что такое ptrace?

Функция ptrace() - это системный вызов в Unix и Unix-подобных операционных системах, который позволяет одному процессу, контроллеру, манипулировать и наблюдать за внутренним состоянием другого процесса, трассировщика. Внедрение системного вызова Ptrace - это техника, которая заключается в использовании системного вызова ptrace() для подключения к уже запущенному процессу и модификации его памяти и регистров. Эта техника может быть использована для различных целей, включая внедрение кода в процесс для изменения его поведения.

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

Ptrace реализован как набор системных вызовов в Unix-подобных операционных системах, таких как Linux. Он используется путем указания функции ptrace и набора аргументов, определяющих операцию, которую нужно выполнить, и процесс, который нужно отследить.

Некоторые общие операции, которые можно выполнить с помощью ptrace, включают:

  • Чтение и запись памяти и регистров трассировщика
  • Установка точек останова в коде трассировщика
  • Одиночный переход по инструкциям трассировщика
  • Присоединение к запущенному процессу и отсоединение от него

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

Использование злоумышленниками системных вызовов Ptrace

Вот как атакующий может использовать системный вызов ptrace для инъекции кода:

  1. Присоединение к целевому процессу: Атакующий процесс использует ptrace с опцией PTRACE_ATTACH, чтобы присоединиться к целевому процессу. Это приводит к тому, что целевой процесс приостанавливает выполнение и становится отслеживаемым процессом атакующего.
  2. Ожидание остановки целевого процесса: атакующий процесс ожидает сигнала от целевого процесса, указывающего на то, что он остановлен и готов к трассировке. Обычно это делается путем прослушивания сигнала SIGSTOP.
  3. Подготовка к инъекции: Атакующий находит или выделяет участок памяти в адресном пространстве целевого процесса, куда будет внедрен вредоносный код (часто называемый шелл-кодом). Это может включать поиск существующих исполняемых областей памяти или выделение новой памяти с помощью ptrace для вызова системного вызова mmap в целевом процессе.
  4. Копирование шеллкода: Используя ptrace с операцией PTRACE_POKEDATA или PTRACE_POKETEXT, атакующий записывает шеллкод побайтно в выделенное пространство памяти целевого процесса.
  5. Установка указателя инструкции: Установив шелл-код, атакующий с помощью ptrace устанавливает регистр указателя инструкций (IP) (например, EIP на x86, RIP на x86_64) целевого процесса на адрес внедренного кода.
  6. Возобновление выполнения целевого процесса: После установки шеллкода и указателя инструкций атакующий возобновляет выполнение целевого процесса с помощью ptrace с опцией PTRACE_CONT, заставляя целевой процесс перейти к внедренному шеллкоду и выполнить его.
  7. Отсоединение от целевого процесса (если применимо): После выполнения кода и если дальнейшее взаимодействие с целевым процессом не требуется, атакующий процесс может использовать ptrace с опцией PTRACE_DETACH, чтобы отсоединиться от целевого процесса и позволить ему продолжить выполнение в обычном режиме.

Инъекция системных вызовов Ptrace - это мощный метод выполнения произвольного кода в контексте другого процесса, который может использоваться атакующими для манипулирования целевыми приложениями или шпионажа за ними, а также для запуска вредоносной полезной нагрузки, не требующей наличия двоичного файла на диске. Однако в современных дистрибутивах Linux существуют механизмы безопасности, такие как Yama и SELinux, которые позволяют ограничить использование ptrace для предотвращения отладки неавторизованными пользователями и, таким образом, смягчить этот вид атак.

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