Суть атаки:
Расширенные атрибуты позволяют привязать к любому файлу пару "ключ-значение". Размер значения может достигать 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 с соответствующими аргументами командной строки, которые отвечают за сохранение расширенных атрибутов.
