Руткит оформлен в виде модуля для ядер 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, а также возможности фильтрации прямого обращения к блочным устройствам для предотвращения низкоуровневого анализа содержимого ФС.
Источник: https://www.opennet.ru/opennews/art.shtml?num=64663
(opennet.ru, основная лента)