T1548.003: Команда sudo и кэширование sudo
Злоумышленники могут эксплуатировать кэширование sudo и (или) использовать файл sudoers для повышения уровня привилегий — например, с целью выполнения команд от имени других пользователей или порождения процессов с повышенными привилегиями.
В системах Linux и MacOS команда sudo (сокращение от superuser do — "выполнить от имени суперпользователя") позволяет выполнять в терминалах команды с повышенным уровнем привилегий и управлять списками пользователей, которые могут выполнять эти команды. Команда sudo
позволяет системному администратору делегировать полномочия, предоставляя отдельным пользователям (или группам пользователей) возможность выполнять некоторые (или все) команды от имени root-пользователя или другого пользователя, и при этом ведет журнал команд и их аргументов. Поскольку sudo предназначена для системного администратора, она позволяет использовать расширенные параметры конфигурации, например timestamp_timeout
, который определяет время между запусками sudo
в минутах перед повторным запросом пароля. Это связано с тем, что sudo
может хранить кэш учетных данных в течение определенного времени. Для установки времени хранения кэша sudo создает файл в /var/db/sudo
с меткой времени последнего запуска sudo (или изменяет временные метки существующего файла). Кроме того, при установленном флаге tty_tickets
каждый новый сеанс терминала (tty) рассматривается отдельно от других, то есть, в частности, срок действия повышенных привилегий, установленный для одного сеанса, не распространяется на другие сеансы (нужно будет снова вводить пароль).
Файл sudoers ( /etc/sudoers
) содержит данные о том, какие пользователи могут выполнять те или иные команды и из каких терминалов, а также какие команды пользователи могут выполнять от имени других пользователей или групп. Это позволяет осуществлять администрирование по принципу предоставления минимальных привилегий, то есть пользователи работают с минимально допустимым уровнем привилегий большую часть времени и повышают его (получают дополнительные разрешения или право на выполнение операций от имени других пользователей) только по необходимости, что обычно сопровождается запросом пароля. Файл sudoers также может содержать указания о том, когда не следует запрашивать у пользователей пароли; для этого используются строки, подобные следующей: user1 ALL=(ALL) NOPASSWD: ALL
. Для редактирования этого файла требуется повышенный уровень привилегий.
Злоумышленники могут также использовать ошибки в конфигурации этих механизмов для повышения уровня привилегий без ввода пароля. Например, они могут регулярно проверять, попадает ли временная метка файла /var/db/sudo
в диапазон, заданный timestamp_timeout
. Если это так, вредоносное ПО сможет выполнять команды sudo без ввода пароля пользователя. Кроме того, если флаг tty_tickets
не установлен, злоумышленники могут выполнять команды из любого сеанса tty данного пользователя.
В реальной среде наблюдались случаи, когда вредоносное ПО отключало флаг tty_tickets
с помощью команды echo 'Defaults !tty_tickets' >> /etc/sudoers
, чтобы упростить использование сценариев. Чтобы применить изменения, использовалась команда killall Terminal
. Начиная с macOS Sierra, флаг tty_tickets
в файле sudoers установлен по умолчанию.
Какие продукты Positive Technologies покрывают технику
Экспертиза MaxPatrol SIEM
unix_mitre_attck_privilege_escalation: PT-CR-1663: Unix_Privilege_Escalation_Via_GTFOBINS: Запуск терминала с повышенными привилегиями с помощью утилиты группы GTFOBins. GTFOBins - двоичные файлы Unix, которые можно использовать для обхода локальных ограничений безопасности в неправильно настроенных системах
Способы обнаружения
ID | DS0009 | Источник и компонент данных | Процесс: Метаданные процесса | Описание | Отслеживайте контекстные данные запущенных процессов, такие как переменные окружения, имя образа, пользователь и владелец, которые могут использоваться для кэширования sudo и (или) повышения уровня привилегий с помощью файла sudoers. |
---|
ID | DS0022 | Источник и компонент данных | Файл: Изменение файла | Описание | В Linux модуль auditd может присылать уведомления каждый раз, если реальный (actual ID) и эффективный (effective ID) идентификаторы пользователей не совпадают (что всегда происходит при использовании sudo). Данная техника злоупотребляет особенностями обычной работы систем macOS и Linux, но если установить соответствующие директивы |
---|
ID | DS0017 | Источник и компонент данных | Команда: Выполнение команд | Описание | Отслеживайте выполнение команд с аргументами, которые могут использоваться для кэширования sudo и (или) повышения уровня привилегий через файл sudoers, в частности выполнение команды |
---|
ID | DS0009 | Источник и компонент данных | Процесс: Создание процесса | Описание | Отслеживайте запуск новых процессов, которые могут выполнять кэширование sudo и (или) использовать файл sudoers для повышения уровня привилегий. |
---|
Меры противодействия
ID | M1022 | Название | Ограничение разрешений для файлов и каталогов | Описание | Файл sudoers должен быть строго отредактирован таким образом, чтобы всегда требовались пароли и чтобы пользователи не могли запускать рискованные процессы под видом пользователей с более высокими привилегиями. |
---|
ID | M1028 | Название | Изменение конфигурации ОС | Описание | Проследите, чтобы параметр |
---|
ID | M1026 | Название | Управление привилегированными учетными записями | Описание | Требуйте ввода пароля — таким образом, даже если злоумышленник получит доступ к терминалу, он должен будет знать пароль, чтобы запустить что-либо из файла sudoers. Если установить для параметра |
---|