Matheus Alves, investigador de seguridad especializado en malware, publicó una actualización del proyecto Singularity, que desarrolla un rootkit abierto para el núcleo de Linux, distribuido bajo la licencia MIT. El objetivo del proyecto es demostrar métodos para ocultar su presencia después de obtener acceso root y mantener la capacidad de realizar operaciones privilegiadas de forma oculta. Se espera que Singularity sea útil para investigadores de seguridad en la prueba y desarrollo de herramientas para detectar y bloquear rootkits.
El rootkit está diseñado como un módulo para núcleos de Linux 6.x y utiliza el mecanismo ftrace para interceptar llamadas al sistema de manera discreta, sin modificar los puntos de entrada de las llamadas al sistema y sin alterar las funciones del núcleo. Singularity admite ocultar su presencia en el sistema, así como ocultar los procesos que los atacantes designan y los archivos y actividades de red asociados. Para la comodidad de los investigadores, la funcionalidad del rootkit se divide en módulos.
Además de los métodos típicos para ocultar la presencia en el sistema, como ocultar procesos, archivos, directorios y módulos del núcleo necesarios, Singularity implementa varios métodos avanzados para eludir mecanismos de protección y dificultar la detección por escáneres de rootkits especializados, como Falco, ghostscan, tracee, unhide, chkrootkit y rkhunter. Entre otras cosas, Singularity puede ocultar su actividad de herramientas que utilizan eBPF, eliminar bloqueos de eBPF, prevenir la carga de módulos del núcleo, resistir el análisis de entrada/salida a través del subsistema io_uring, así como eludir verificaciones de integridad realizadas por el módulo LKRG (Linux Kernel Runtime Guard).
En Singularity hay una reverse shell que proporciona acceso remoto privilegiado al sistema mediante el envío de paquetes ICMP, así como manejadores que permiten ocultar procesos o elevar privilegios en el sistema a través de manipulaciones específicas con 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_del_proceso", y para elevar privilegios se puede establecer la variable de entorno "MAGIC=mtz".
El rootkit oculta el tráfico reverse shell de los analizadores de red y permite evadir los manejadores de SELinux que se activan con ICMP. Singularity también incluye capacidades para ocultar ciertas conexiones de red de las tablas /proc/net/nf_conntrack, manejadores netlink SOCK_DIAG/NETFILTER y herramientas como netstat, ss, lsof, tcpdump y wireshark. Hay manejadores disponibles para limpiar mensajes de auditoría y registros (klogctl, syslog, systemd-journal, /sys/kernel/debug/tracing/, dmesg). Existen filtros para contrarrestar analizadores de memoria como Volatility, que utilizan /proc/kcore, /proc/kallsyms y /proc/vmallocinfo, así como capacidades de filtrado para evitar el acceso directo a dispositivos de bloques y prevenir el análisis a bajo nivel del contenido del sistema de archivos.

Fuente: opennet.ru
