fundo
O sistema operacional possui um componente conhecido como kernel. Uma das (muitas) responsabilidades do kernel é gerenciar a memória do sistema (física e virtual).
Como parte disso, o kernel divide a memória disponível em duas regiões distintas, conhecidas como modo usuário e modo kernel. O kernel e os drivers compartilham a memória no modo kernel, e os programas do usuário e os componentes menos críticos do sistema residem na região da memória no modo do usuário.
Os processos no modo usuário geralmente não podem se comunicar com aqueles no modo kernel, exceto através de canais especialmente designados e controlados.
Para completar, deve-se mencionar que os processos em execução no modo de usuário também são isolados um do outro, mas podem se comunicar mais livremente entre si, usando recursos fornecidos pelo sistema operacional, desde que os programas sejam projetados para isso.
Processos
O kernel fornece a capacidade de iniciar processos no modo de usuário. Quando um processo é criado, ele é adicionado a uma lista interna de processos que existem atualmente. Quando um programa como o Gerenciador de Tarefas solicita uma lista de processos, ele recebe um subconjunto das informações nessa lista, filtradas pelas permissões por usuário.
Um meio para malware como um rootkit ocultar sua existência é remover-se diretamente dessa tabela. Feito isso, ele ainda pode ser executado, mas não aparecerá mais em uma lista de processos obtida por meios normais.
Como esses processos ainda existem e são executados, eles podem ser encontrados pela inspeção de outras estruturas de dados do kernel, como tabelas de manipulação, que contêm informações sobre os recursos que um processo abriu (por exemplo, arquivos) ou examinando as alocações de memória das quais é mais importante. difícil esconder sem prejudicar a capacidade de funcionamento do software.
Drivers do modo kernel
Drivers do modo kernel usados para muitas coisas, incluindo a interação com dispositivos de hardware físico. Eles são executados sob o controle do kernel, conforme necessário, mas como não são um processo no modo de usuário, eles não aparecem na tabela de processos. e, portanto, não aparecerá no Gerenciador de tarefas ou em outras ferramentas relacionadas exclusivamente aos processos.
Ser capaz de executar código no modo kernel é uma etapa importante para poder ocultar efetivamente a existência de código em execução. Em circunstâncias normais, o Windows exige que o código no modo do kernel seja assinado para ser executado; portanto, o malware pode precisar usar explorações no sistema operacional, outro software ou até mesmo engenharia social para chegar aqui, mas depois que o código estiver sendo executado no modo do kernel, oculte-o fica mais fácil.
Sumário
Em resumo, é possível ocultar evidências de existência de processos, provavelmente sempre haverá alguma indicação de que o processo existe, porque geralmente sempre é necessário usar alguma forma de recurso para fazer o que foi projetado, quão difícil essa detecção depende do malware específico.