Matheus Alves, pesquisador de segurança especializado em malware, publicou uma atualização do projeto Singularity, que desenvolve um rootkit de código aberto para o núcleo do Linux, distribuído sob a licença MIT. O objetivo do projeto é demonstrar métodos que permitem ocultar sua presença após obter acesso root e manter a capacidade de execução oculta de operações privilegiadas. Acredita-se que o Singularity possa ser útil para pesquisadores de segurança na teste e desenvolvimento de utilitários de detecção e bloqueio de rootkits.
O rootkit é apresentado como um módulo para núcleos Linux 6.x e utiliza o mecanismo ftrace para interceptar chamadas de sistema de maneira discreta, sem alterar os pontos de entrada nas chamadas de sistema e sem modificar funções do núcleo. O Singularity suporta a ocultação de sua presença no sistema, bem como o ocultamento de processos designados pelo invasor, arquivos associados e atividades de rede. Para a conveniência dos pesquisadores, a funcionalidade do rootkit é dividida em módulos.
Além dos métodos padrão de ocultação de presença no sistema, como esconder processos, arquivos, diretórios e módulos do núcleo necessários, o Singularity implementa vários métodos avançados para contornar mecanismos de proteção e dificultar a detecção por scanners de rootkit especializados, como Falco, ghostscan, tracee, unhide, chkrootkit e rkhunter. Entre outras coisas, o Singularity pode ocultar sua atividade de ferramentas que utilizam eBPF, remover bloqueios do eBPF, prevenir o carregamento de módulos do núcleo, resistir a análises de entrada/saída por meio da subsistema io_uring, bem como contornar verificações de integridade feitas pelo módulo LKRG (Linux Kernel Runtime Guard).
O Singularity possui um reverse shell, proporcionando acesso remoto privilegiado ao sistema através do envio de pacotes ICMP, além de manipuladores que permitem a ocultação de processos ou o aumento de privilégios no sistema por meio de determinadas manipulações de sinais e variáveis de ambiente. Por exemplo, para ocultar um processo do /proc e da saída de utilitários como ps, pode-se executar "kill -59 PID_do_processo", e para aumentar os privilégios, definir a variável de ambiente "MAGIC=mtz".
O rootkit oculta o tráfego do reverse shell de analisadores de rede e permite contornar os tratadores do SELinux que acionam em ICMP. O Singularity também inclui capacidades para ocultar certas conexões de rede das tabelas /proc/net/nf_conntrack, tratadores de netlink SOCK_DIAG/NFTABLES e utilitários como netstat, ss, lsof, tcpdump e wireshark. Há tratadores disponíveis para limpar mensagens de auditoria e logs (klogctl, syslog, journal systemd, /sys/kernel/debug/tracing/, dmesg). Existem filtros para combater analisadores de memória, como Volatility, que usam /proc/kcore, /proc/kallsyms e /proc/vmallocinfo, assim como capacidades de filtração de acessos diretos a dispositivos de bloco para prevenir a análise de baixo nível do conteúdo do sistema de arquivos.

Fonte: opennet.ru
