T1055.008: Системные вызовы ptrace

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

Внедрение через системный вызов ptrace включает присоединение к запущенному процессу и его изменение. Системный вызов ptrace активирует процесс отладки, позволяющий наблюдать за другим процессом и управлять им (и каждым его отдельным потоком), включая изменение данных в памяти и значений регистров. Чтобы осуществить внедрение через системный вызов ptrace, обычно в запущенный процесс (например, malloc) записывают произвольный код и далее обращаются к этой памяти, используя параметр PTRACE_SETREGS для установки регистра, содержащего следующую инструкцию для выполнения. Внедрение через системный вызов ptrace также можно осуществить с помощью параметров PTRACE_POKETEXT/PTRACE_POKEDATA, используемых для копирования данных по указанному адресу (например, текущему адресу следующей инструкции) в памяти целевого процесса .

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

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

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

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

Мониторинг событий с id = PT_UNIX_like_auditd_syslog_structured_syscall_ptrace (syscall=101 или syscall=26) и значением параметра object.value (a0) «PTRACE_SETREGS», «PTRACE_POKETEXT» или «PTRACE_POKEDATA»

Требуется эксперт. Техника обнаруживается только в связке «Продукт PT + эксперт»

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

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

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

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

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

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

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

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

IDM1040НазваниеПредотвращение некорректного поведенияОписание

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

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

Используйте Yama (например: /proc/sys/kernel/yama/ptrace_scope) для защиты от внедрения кода в процессы на основе ptrace, ограничивая использование ptrace только привилегированными пользователями. Другие средства защиты включают установку модулей ядра безопасности, обеспечивающих расширенный контроль доступа и ограничения процессов, таких как SELinux, grsecurity и AppArmor.