Matheus Alves, un investigador de seguridad especializado en malware, ha publicado una actualización del proyecto Singularity, que desarrolla un rootkit de kernel de código abierto. Linux, distribuido bajo la licencia MIT. El objetivo del proyecto es demostrar métodos para ocultar la presencia tras obtener acceso de administrador y mantener la capacidad de realizar operaciones privilegiadas de forma encubierta. Se espera que Singularity sea útil para los investigadores de seguridad a la hora de probar y desarrollar herramientas de detección y bloqueo de rootkits.
El rootkit está diseñado como un módulo para los kernels. Linux Singularity, compatible con la versión 6.x, utiliza el mecanismo ftrace para interceptar subrepticiamente las llamadas al sistema sin modificar los puntos de entrada ni las funciones del kernel. Permite ocultar su presencia en el sistema, así como los procesos, archivos asociados y la actividad de red especificados por el atacante. Para facilitar el trabajo de los investigadores, la funcionalidad del rootkit está dividida en módulos.
Además de los métodos típicos 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 rootkits especializados, como Falco, ghostscan, tracee, unhide, chkrootkit y rkhunter. Entre otras cosas, Singularity puede ocultar su actividad de las herramientas que utilizan eBPF, eliminar los bloqueos eBPF, impedir la carga de módulos del kernel, resistir el análisis de E/S a través del subsistema io_uring y eludir las comprobaciones de integridad realizadas por el módulo LKRG (Linux Protección de tiempo de ejecución del kernel).
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 la shell inversa a los analizadores de red y permite eludir los manejadores SE.Linux, activado por ICMP. Singularity también incluye capacidades para ocultar ciertas conexiones de red de las tablas /proc/net/nf_conntrack, los manejadores netlink SOCK_DIAG/NETFILTER y utilidades como netstat, ss, lsof, tcpdump y wireshark. Hay manejadores para limpiar mensajes de auditoría y registro disponibles (klogctl, syslog, systemd-journal, /sys/kernel/debug/tracing/, dmesg). Hay filtros para contrarrestar analizadores de memoria como Volatility, que usan /proc/kcore, /proc/kallsyms y /proc/vmallocinfo, así como la capacidad de filtrar el acceso directo a dispositivos de bloques para evitar análisis de bajo nivel del sistema de archivos.

Fuente: opennet.ru
