Как Защитить Процессы И Расширения Ядра В Macos

Привет, Хабр! Сегодня я хотел бы поговорить о том, как можно защитить процессы от атак злоумышленников в macOS. Например, это полезно для антивируса или системы резервного копирования, тем более что под macOS есть несколько способов «убить» процесс.

Об этом и способах защиты читайте под катом.



Как защитить процессы и расширения ядра в macOS



Классический способ «убить» процесс

Хорошо известный способ «убить» процесс — послать ему сигнал SIGKILL. Через bash вы можете вызвать стандартный «kill -SIGKILL PID» или «pkill -9 NAME» для уничтожения.

Команда «kill» известна еще со времен UNIX и доступна не только в macOS, но и в других UNIX-подобных системах.

Как и в UNIX-подобных системах, macOS позволяет перехватывать любые сигналы процесса, кроме двух — SIGKILL и SIGSTOP. В этой статье основное внимание будет уделено сигналу SIGKILL как сигналу, вызывающему завершение процесса.



особенности macOS

В macOS системный вызов kill в ядре XNU вызывает функцию psignal(SIGKILL,.

).

Давайте попробуем посмотреть, какие еще действия пользователя в пользовательском пространстве можно вызвать с помощью функции psignal. Отфильтруем вызовы функции psignal во внутренних механизмах ядра (хотя они могут быть нетривиальными, но оставим их для другой статьи :) - проверка подписи, ошибки памяти, выход/завершение обработки, нарушения защиты файлов , и т. д. Начнем обзор с функции и соответствующего системного вызова завершить_с_полезной нагрузкой .

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

Это прямые вызовы функции ядра psignal. Также обратите внимание, что перед убийством процесса выполняется проверка «cansignal» — может ли процесс послать сигнал другому процессу; например, система не позволяет никакому приложению завершать системные процессы.

   

static int terminate_with_payload_internal(struct proc *cur_proc, int target_pid, uint32_t reason_namespace,

Теги: #macOS #Разработка для MacOS #Антивирусная защита #ядро #Системное программирование #ядро #программирование macOS #Безопасность MacOS #Защита MacOS
Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.