Des chercheurs dévoilent un rootkit Linux contournant Elastic Security EDR

Des chercheurs en sécurité ont développé un rootkit Linux sophistiqué nommé Singularity qui contourne les mécanismes de détection et de réponse aux points d'extrémité d'Elastic Security. L'outil démontre des vulnérabilités dans les systèmes de détection statique et comportementale grâce à des techniques avancées d'obfuscation. Dévoilé sur GitHub par le chercheur 0xMatheuZ, il met en lumière les défis persistants dans l'identification des menaces au niveau du noyau.

Des chercheurs en sécurité, dirigés par le pseudonyme 0xMatheuZ, ont publié Singularity, un rootkit de noyau Linux sur GitHub, conçu pour échapper à la détection par la solution EDR d'Elastic Security, connue sous le nom d'Elastic Defend. Typiquement, Elastic Security déclenche plus de 26 alertes pour les implémentations standard de rootkits, incluant les quarantaines de fichiers et les terminaisons de processus, mais Singularity les contourne grâce à quatre stratégies principales d'évasion.

La première technique implique une obfuscation de chaînes au moment de la compilation, où des chaînes sensibles comme « GPL » et « kallsyms_lookup_name » sont fragmentées en constantes séparées, telles que MODULE_LICENSE(« G » « P » « L »), que le compilateur C concatène. Cela empêche les scanners de signatures YARA d'identifier des chaînes malveillantes contiguës dans le binaire tout en préservant la fonctionnalité.

Deuxièmement, la randomisation des noms de symboles remplace les motifs prévisibles, tels que « hook_getdents », « fake_tcp4_seq_show » et « hide_module », par des noms génériques similaires au noyau préfixés par « sys », « kern » ou « dev ». Une liste blanche protège les API essentielles du noyau, et des motifs regex assurent un renommage cohérent sans erreurs.

Troisièmement, la fragmentation de module divise le fichier .ko compilé en segments de 64 Ko codés en XOR à l'aide d'une clé aléatoire de 16 octets. Ces segments sont réassemblés en mémoire via un chargeur personnalisé et memfd_create, évitant les artefacts sur disque pour l'analyse statique. Le chargement se fait via des appels système directs avec assemblage inline, contournant les wrappers libc surveillés, et supporte les systèmes 64 bits et 32 bits via int $0x80.

Quatrièmement, les fonctions d'assistance ftrace comme « fh_install_hook » et « fh_remove_hook » sont renommées en identifiants aléatoires, évitant les règles qui signalent plusieurs occurrences de ce type.

Singularity inclut également des fonctionnalités pour masquer les processus du système de fichiers /proc, obscurcir les fichiers et répertoires correspondant à « singularity » ou « matheuz », masquer les connexions TCP sur le port 8081, et activer l'escalade de privilèges via des signaux personnalisés ou des variables d'environnement. Il dispose d'une porte dérobée basée sur ICMP pour des shells inversés déclenchés par des séquences de paquets spécifiques, avec des mesures anti-analyse qui entravent le traçage et assainissent les journaux.

Pour l'évasion comportementale, il déploie un script bash étagé vers /singularity, exécuté avec des lignes de commande propres pour éviter la détection de shells inversés. Le script utilise kill -59 pour masquer les PID et escalader, compilant les chargeurs dans /tmp plutôt que dans des répertoires surveillés. Dans les tests, Singularity s'est chargé sans alertes, a masqué les processus et a établi des shells root.

Cette recherche expose les faiblesses dans la détection basée sur les signatures et le comportement pour les menaces de noyau, soulignant la nécessité de mises à jour continues, de surveillance de l'intégrité du noyau, de forensic mémoire et de stratégies de défense en profondeur combinant plusieurs approches.

Ce site utilise des cookies

Nous utilisons des cookies pour l'analyse afin d'améliorer notre site. Lisez notre politique de confidentialité pour plus d'informations.
Refuser