Matheus Alves, chercheur en sécurité spécialisé dans les logiciels malveillants, a publié une mise à jour sur le projet Singularity, qui développe un rootkit open source pour le noyau Linux, distribué sous licence MIT. L'objectif du projet est de démontrer des méthodes permettant de dissimuler sa présence après avoir obtenu un accès root et de maintenir la capacité d'exécution furtive d'opérations privilégiées. Il est supposé que Singularity pourrait être utile aux chercheurs en sécurité pour tester et développer des outils de détection et de blocage des rootkits.
Le rootkit se présente sous la forme d'un module pour les noyaux Linux 6.x et utilise le mécanisme ftrace pour intercepter discrètement les appels système sans modifier les points d'entrée des appels système ni les fonctions du noyau. Singularity prend en charge la dissimulation de sa présence dans le système, ainsi que celle des processus spécifiés par l'attaquant, des fichiers associés et de l'activité réseau. Pour la commodité des chercheurs, les fonctionnalités du rootkit sont divisées en modules.
En plus des méthodes classiques de camouflage de la présence dans le système, telles que la dissimulation des processus, fichiers, répertoires et modules du noyau nécessaires, Singularity implémente plusieurs méthodes avancées pour contourner les mécanismes de protection et compliquer la détection par des scanners de rootkits spécialisés tels que Falco, ghostscan, tracee, unhide, chkrootkit et rkhunter. Entre autres, Singularity peut dissimuler ses activités des outils utilisant eBPF, supprimer les blocages eBPF, empêcher le chargement de modules du noyau, résister à l'analyse d'E/S via la sous-système io_uring, et contourner les vérifications d'intégrité effectuées par le module LKRG (Linux Kernel Runtime Guard).
Singularity contient un reverse shell, fournissant un accès distant privilégié au système via l'envoi de paquets ICMP, ainsi que des gestionnaires permettant de dissimuler des processus ou d'augmenter les privilèges dans le système par certaines manipulations des signaux et des variables d'environnement. Par exemple, pour dissimuler un processus de /proc et des sorties d'outils comme ps, on peut exécuter « kill -59 PID_du_processus », et pour augmenter les privilèges, définir la variable d'environnement « MAGIC=mtz ».
Le rootkit cache le trafic reverse shell des analyseurs réseau et permet de contourner les gestionnaires SELinux qui se déclenchent sur ICMP. Singularity inclut également des capacités pour cacher certaines connexions réseau des tableaux /proc/net/nf_conntrack, des gestionnaires netlink SOCK_DIAG/NETFILTER et des utilitaires tels que netstat, ss, lsof, tcpdump et wireshark. Des gestionnaires sont disponibles pour nettoyer les messages d'audit et les sorties dans les journaux (klogctl, syslog, systemd-journal, /sys/kernel/debug/tracing/, dmesg). Il existe des filtres pour contrer les analyseurs de mémoire, tels que Volatility, utilisant /proc/kcore, /proc/kallsyms et /proc/vmallocinfo, ainsi que des capacités de filtrage pour l'accès direct aux périphériques de bloc afin de prévenir l'analyse de bas niveau du contenu du système de fichiers.

Source : opennet.ru
