Matheus Alves, ricercatore di sicurezza specializzato in malware, ha pubblicato un aggiornamento del progetto Singularity, che sviluppa un rootkit open source per il kernel Linux, distribuito sotto licenza MIT. L'obiettivo del progetto è dimostrare metodologie per nascondere la propria presenza dopo aver ottenuto l'accesso root e mantenere la possibilità di eseguire operazioni privilegiate in modo furtivo. Si prevede che Singularity possa essere utile per i ricercatori di sicurezza per testare e sviluppare strumenti di rilevamento e blocco dei rootkit.
Il rootkit è progettato come un modulo per i kernel Linux 6.x e utilizza il meccanismo ftrace per intercettare invisibilmente le chiamate di sistema senza modificare i punti di ingresso delle chiamate di sistema e senza alterare le funzioni del kernel. Singularity supporta il nascondere la propria presenza nel sistema, così come nascondere i processi specificati dall'attaccante e i file e le attività di rete ad essi correlati. Per comodità dei ricercatori, la funzionalità del rootkit è suddivisa in moduli.
Oltre ai metodi tipici di mascheramento della presenza nel sistema, come il nascondere processi, file, directory e moduli del kernel, Singularity implementa diverse tecniche avanzate per eludere i meccanismi di protezione e rendere difficile il rilevamento da parte di scanner specializzati per rootkit, come Falco, ghostscan, tracee, unhide, chkrootkit e rkhunter. Tra le altre cose, Singularity può nascondere la propria attività da strumenti che utilizzano eBPF, rimuovere i blocchi eBPF, impedire il caricamento di moduli del kernel, contrastare l'analisi dell'I/O tramite il sottosistema io_uring, nonché eludere i controlli di integrità effettuati dal modulo LKRG (Linux Kernel Runtime Guard).
In Singularity è presente una reverse shell, che fornisce accesso remoto privilegiato al sistema tramite l'invio di pacchetti ICMP, oltre a gestori che consentono di nascondere processi o ottenere privilegi elevati nel sistema attraverso determinate manipolazioni di segnali e variabili d'ambiente. Ad esempio, per nascondere un processo da /proc e dall'output di strumenti come ps, si può eseguire «kill -59 PID_processo», mentre per ottenere privilegi aggiuntivi si può impostare la variabile d'ambiente «MAGIC=mtz».
Il rootkit nasconde il traffico della reverse shell dagli analizzatori di rete e consente di eludere i gestori SELinux che si attivano su ICMP. Singularity include anche funzionalità per nascondere determinate connessioni di rete dalle tabelle /proc/net/nf_conntrack, dai gestori netlink SOCK_DIAG/NETFILTER e da strumenti come netstat, ss, lsof, tcpdump e wireshark. Sono disponibili gestori per pulire i messaggi di audit e l'output nei log (klogctl, syslog, systemd-journal, /sys/kernel/debug/tracing/, dmesg). Ci sono filtri per contrastare gli analizzatori di memoria, come Volatility, che utilizzano /proc/kcore, /proc/kallsyms e /proc/vmallocinfo, e anche funzionalità di filtraggio per l'accesso diretto ai dispositivi a blocchi per prevenire l'analisi a basso livello del contenuto del FS.

Fonte: opennet.ru
