Fondo
El sistema operativo tiene un componente conocido como kernel. Una de las responsabilidades del núcleo (muchas) es administrar la memoria del sistema (tanto física como virtual).
Como parte de esto, el núcleo divide la memoria disponible en dos regiones distintas conocidas como modo de usuario y modo de núcleo. El kernel y los controladores comparten la memoria en modo kernel, y los programas de usuario y los componentes menos críticos del sistema residen en la región de memoria en modo de usuario.
Los procesos en modo usuario generalmente no pueden comunicarse con aquellos en modo kernel, excepto a través de canales especialmente designados y controlados.
Para completar, debe mencionarse que los procesos que se ejecutan en modo de usuario también están aislados entre sí, pero pueden comunicarse más libremente entre sí utilizando las instalaciones proporcionadas por el sistema operativo siempre que los programas estén diseñados para hacerlo.
Procesos
El núcleo proporciona la capacidad de iniciar procesos en modo de usuario. Cuando se crea un proceso, se agrega a una lista interna de procesos que existen actualmente. Cuando un programa como el Administrador de tareas solicita una lista de procesos, recibe un subconjunto de la información en esta lista, filtrada por permisos por usuario.
Un medio para que el malware, como un rootkit, oculte su existencia es eliminarse directamente de esta tabla. Una vez hecho esto, aún puede ejecutarse, pero ya no aparecerá en una lista de procesos obtenida por medios normales.
Dado que estos procesos aún existen y se ejecutan, se pueden encontrar mediante la inspección de otras estructuras de datos del núcleo, como las tablas de manejo, que contienen información sobre los recursos que un proceso tiene abiertos (por ejemplo, archivos), o al examinar las asignaciones de memoria de las cuales es más difícil de ocultar sin dificultar la capacidad de funcionamiento del software.
Controladores de modo kernel
Los controladores del modo Kernel se utilizan para muchas cosas, incluida la interacción con dispositivos físicos de hardware. Se ejecutan bajo el control del kernel según sea necesario, pero como no son un proceso en modo de usuario, no aparecen en la tabla de procesos. y, por lo tanto, no aparecerá en el Administrador de tareas u otras herramientas relacionadas exclusivamente con los procesos.
Poder ejecutar código en modo kernel es un paso importante para poder ocultar efectivamente la existencia de código de ejecución. En circunstancias normales, Windows requiere que el código en modo kernel se firme para ejecutarse, por lo que es posible que el malware necesite utilizar exploits en el sistema operativo, otro software o incluso ingeniería social para llegar aquí, pero una vez que el código se ejecuta en modo kernel, se oculta se hace más fácil
Resumen
En resumen, es posible ocultar evidencia de la existencia de un proceso, es probable que siempre haya alguna indicación de que el proceso existe, porque generalmente siempre necesitará usar algún tipo de recurso para hacer lo que fue diseñado, qué difícil esa detección depende del malware específico.