Antecedentes
O sistema operacional possui um componente conhecido como kernel. Uma das 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 de usuário e modo kernel. O kernel e os drivers compartilham a memória do modo kernel, e os programas do usuário e componentes menos críticos do sistema residem na região de memória do modo de usuário.
Os processos no modo de 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 ser mencionado que os processos em execução no modo de usuário também são isolados uns dos outros, mas podem se comunicar mais livremente entre si usando os 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 por permissões de usuário.
Um meio para o 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 manuseio, que armazenam informações sobre recursos abertos (por exemplo, arquivos) ou examinando as alocações de memória é mais difícil esconder sem prejudicar a capacidade do software de funcionar.
Drivers de modo do kernel
Os drivers do modo kernel são usados para muitas coisas, incluindo a interação com dispositivos físicos de hardware. 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 com processos.
Ser capaz de executar código no modo kernel é um passo importante para poder efetivamente ocultar a existência de código em execução. Em circunstâncias normais, o Windows exige que o código no modo kernel seja assinado para ser executado, portanto, o malware pode precisar usar exploits no sistema operacional, outro software ou até mesmo engenharia social para chegar até aqui, mas quando o código estiver executando no modo kernel, torna-se mais fácil.
Resumo
Em resumo, é possível esconder evidências de uma existência de processos, provavelmente sempre haverá alguma indicação de que o processo existe, porque geralmente ele sempre precisará usar algum tipo de recurso para fazer o que foi projetado para , quão difícil é a detecção depende do malware específico.