[ << ALL_FEED ]

🛡 Puma: как руткит обеспечивает тайный SSH-доступ через незаметную подмену ключей

Ещё в группе «Общее»

🛡 Puma: как руткит обеспечивает тайный SSH-доступ через незаметную подмену ключей

Продолжая наш рассказ о деятельности группировки ExCobalt и ее новом инструменте — рутките Puma, представленном на киберфестивале PHDays, подробнее разберем одну из его наиболее изощренных и опасных техник — скрытую модификацию файла authorized_keys.

⚙️ Как это работает

LKM-руткит перехватывает системные вызовы open и openat, выполняемые процессом ssh, отслеживая обращения к файлу authorized_keys, расположенному в директории ~/.ssh/. Этот файл — основной механизм беспарольной аутентификации в OpenSSH. Если клиент предъявляет закрытый ключ, соответствующий одному из публичных ключей в этом файле, сервер считает пользователя подлинным, не запрашивает пароль и разрешает вход в систему.

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

Таким образом, в типичном сценарии атаки:

1. Злоумышленник инициирует SSH-соединение и пытаются авторизоваться с использованием собственного закрытого ключа.

2. Процесс sshd на машине считывает ключи из файла authorized_keys.

3. Руткит незаметно дописывает свой ключ к возвращаемому содержимому файла.

4. Процесс sshd воспринимает внедренный ключ как легитимный и разрешает доступ атакующему без запроса пароля.

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

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

🔎 Как быстро обнаружить эту атаку

Для выявления скрытой модификации файла authorized_keys можно использовать следующий метод: сравнить содержимое файла, полученное при чтении через оригинальную утилиту /bin/cat, с содержимым, полученным при чтении той же утилитой, но переименованной в ssh. Дело в том, что Puma ориентируется на имя процесса перед модификацией содержимого файла authorized_keys, и при разнице в выводах можно уверенно утверждать, что в системе присутствует руткит.

Для автоматизации такого детекта предлагаем использовать скрипт, который мы оставили в комментариях.

Если при выполнении скрипта обнаруживаются расхождения в результатах чтения файла, это является однозначным признаком компрометации системы и требует немедленных мер реагирования:
• ограничения SSH-доступа;
• снятия дампа памяти;
• обращения к специалистам по реагированию на инциденты ИБ.

#TI #Detect #APT #Malware
@ptescalator

Ещё от ti_author

Ещё от ti_author

Ещё в группе «Общее»