Перейти к основному содержимому
  1. Блог/

Атака через xattr: как вредоносы прячутся в Linux-средах

·2 минут·

Атаки с использованием NTFS-потоков в Windows давно стали классикой. В Linux-средах про расширенные атрибуты (xattr) вспоминают реже, хотя идея схожая: благодаря этой фиче злоумышленник может скрыть вредоносный код в абсолютно легитимном и доверенном файле, что помогает обходить детекты со стороны защитных решений. Техника не новая, но она работает до сих пор, потому что EDR на Linux почти не смотрят в эту область.

Суть атаки:

Расширенные атрибуты позволяют привязать к любому файлу пару “ключ-значение”. Размер значения может достигать 64 КБ. Важно, что поддержка есть во всех основных файловых системах. В качестве файла-носителя подойдёт любой, например, .bash_history. Алгоритм таков:

— создаётся обычный reverse shell (например, через msfvenom),

— полученный шелл-код сохраняется в атрибуте user.ATTRIBUTE файла .bash_history, это можно сделать такой командой:

setfattr --name=user.ATTRIBUTE --value="$buf" .bash_history

— также понадобится загрузчик на C, который считает этот атрибут функцией getxattr и передаст управление на полученный массив байт,

— остаётся доставить файлы на хост-жертву и запустить загрузчик.

По большому счету, сама нагрузка может быть чем угодно: бекконнект, модификация crontab, закрепление через systemd-таймеры - всё, что помещается в строку.

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

  • tar с аргументом --xattrs
  • rsync с аргументом -X или --xattrs

Как ловить атаку:

Для детектирования попыток сокрытия полезной нагрузки в расширенных атрибутах файлов стоит ввести мониторинг системных вызовов для getxattr/setxattr и анализировать их содержимое. Простейшие правила для auditd могут выглядеть следующим образом:

-a always,exit -F arch=b64 -S getxattr -k xattr_read 

-a always,exit -F arch=b64 -S setxattr -k xattr_write 

Кроме того, с учетом вышеупомянутых ограничений этой техники, для детектирования можно отслеживать запуски утилит tar и rsync с соответствующими аргументами командной строки, которые отвечают за сохранение расширенных атрибутов.

Related