Matheus Alves, investigador de seguridad especializado en malware, ha publicado una actualización del proyecto Singularity, que desarrolla un rootkit de código abierto para el kernel de Linux, distribuido bajo la licencia MIT. El proyecto busca demostrar métodos para ocultar la presencia de usuarios tras obtener acceso root, manteniendo la capacidad de realizar operaciones privilegiadas de forma encubierta. Se espera que Singularity sea útil para los investigadores de seguridad en la prueba y el desarrollo de herramientas de detección y bloqueo de rootkits.
El rootkit se implementa como un módulo para los kernels de Linux 6.x y utiliza el mecanismo ftrace para interceptar silenciosamente las llamadas al sistema sin cambiar los puntos de entrada ni modificar las funciones del kernel. Singularity permite ocultar su presencia en el sistema, así como los procesos especificados por el atacante, los archivos asociados y la actividad de red. Para comodidad de los investigadores, la funcionalidad del rootkit se divide en módulos.
Además de los métodos estándar para ocultar su presencia en el sistema, como ocultar procesos, archivos, directorios y módulos del kernel necesarios, Singularity implementa varios métodos avanzados para eludir los mecanismos de protección y dificultar la detección por parte de escáneres de rootkit especializados, como Falco, ghostscan, tracee, unhide, chkrootkit y rkhunter. Entre otras funciones, Singularity puede ocultar su actividad a herramientas que utilizan eBPF, eliminar bloqueos eBPF, impedir la carga de módulos del kernel, resistir el análisis de E/S mediante el subsistema io_uring y eludir las comprobaciones de integridad realizadas por el módulo LKRG (Linux Kernel Runtime Guard).
Singularity incluye un shell inverso que proporciona acceso remoto privilegiado al sistema mediante el envío de paquetes ICMP, así como controladores que permiten ocultar procesos o escalar privilegios mediante la manipulación específica de señales y variables de entorno. Por ejemplo, para ocultar un proceso de /proc y la salida de utilidades como ps, se puede ejecutar "kill -59 PID_process" y, para escalar privilegios, configurar la variable de entorno "MAGIC=mtz".
El rootkit oculta el tráfico de shell inverso a los analizadores de red y permite eludir los controladores ICMP de SELinux. Singularity también permite ocultar ciertas conexiones de red de las tablas /proc/net/nf_conntrack, los controladores de enlace de red SOCK_DIAG/NETFILTER y utilidades como netstat, ss, lsof, tcpdump y Wireshark. Hay controladores disponibles para borrar mensajes de auditoría y registrar la salida (klogctl, syslog, systemd-journal, /sys/kernel/debug/tracing/, dmesg). Hay filtros disponibles para contrarrestar analizadores de memoria como Volatility, que utilizan /proc/kcore, /proc/kallsyms y /proc/vmallocinfo, así como la capacidad de filtrar el acceso directo a dispositivos de bloque para evitar el análisis de bajo nivel del sistema de archivos.

Fuente: opennet.ru

