
Специалист по ИБ Матеус Алвес (Matheus Alves) представил проект Singularity. Это руткит с открытым исходным кодом на C для ядра Linux, распространяемый под лицензией MIT.
Целью этого проекта является демонстрация методов, позволяющих скрыть своё присутствие в Linux после получения root‑доступа, а также сохранить возможность скрытого выполнения привилегированных операций в системе.

По заверению автора, решение Singularity может быть полезно исследователям безопасности для тестирования и разработки утилит обнаружения и блокирования руткитов в Linux.
Руткит Singularity собран в виде модуля для ядер Linux 6.x и использует механизм ftrace для незаметного перехвата системных вызовов без изменения точек входа в системные вызовы и без модификации функций ядра Linux.

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