|
Матеус Алвес (Matheus Alves), исследователь безопасности, специализирующийся на вредоносном ПО, опубликовал обновление проекта Singularity, развивающего открытый руткит для ядра Linux, распространяемый под лицензией MIT. Целью проекта является демонстрация методов, позволяющих скрыть своё присутствие после получения root-доступа и сохранить возможность скрытого выполнения привилегированных операций. Предполагается, что Singularity может быть полезен исследователям безопасности для тестирования и разработки утилит обнаружения и блокирования руткитов.
Руткит оформлен в виде модуля для ядер Linux 6.x и использует механизм ftrace для незаметного перехвата системных вызовов без изменения точек входа в системные вызовы и без модификации функций ядра. Singularity поддерживает скрытие своего присутствия в системе, а также скрытие заданных атакующим процессов и связанных с ними файлов и сетевой активности. Для удобства исследователей функциональность руткита разделена на модули.
Помимо типовых методов маскировки присутствия в системе, таких как скрытие необходимых процессов, файлов, каталогов и модулей ядра, в Singularity реализовано несколько продвинутых методов обхода механизмов защиты и затруднения обнаружения специализированными сканерами руткитов, такими как Falco, ghostscan, tracee, unhide, chkrootkit и rkhunter.
Среди прочего, Singularity может скрывать свою активность от инструментов, использующих eBPF, удалять блокировки eBPF, препятствовать загрузке модулей ядра, противостоять анализу ввода/вывода через подсистему io_uring, а также обходить проверки целостности, осуществляемые модулем LKRG (Linux Kernel Runtime Guard).
В Singularity присутствует reverse shell, предоставляющий привилегированный удалённый доступ к системе через отправку ICMP-пакетов, а также обработчики, дающие возможность добиться скрытия процессов или повышения привилегий в системе через определённые манипуляции с сигналами и переменными окружения. Например, для скрытия процесса из /proc и вывода утилит, таких как ps, можно выполнить "kill -59 PID_процесса, а для повышения привилегий выставить переменную окружения "MAGIC=mtz".
Руткит скрывает трафик reverse shell от сетевых анализаторов и позволяет обходить обработчики SELinux, срабатывающие на ICMP.
Singularity также включает возможности для скрытия определённых сетевых соединений из таблиц /proc/net/nf_conntrack, netlink-обработчиков SOCK_DIAG/NETFILTER и утилит, подобных netstat, ss, lsof, tcpdump и wireshark. Доступны обработчики для чистки сообщений аудита и вывода в логи (klogctl, syslog, systemd-journal, /sys/kernel/debug/tracing/, dmesg). Имеются фильтры для противостояния анализаторам памяти, таким как Volatility, использующим /proc/kcore, /proc/kallsyms и /proc/vmallocinfo, а также возможности фильтрации прямого обращения к блочным устройствам для предотвращения низкоуровневого анализа содержимого ФС.
|