Cómo acceder y manipular el bloque EPROCESS de un proceso en Windows

Última actualización: 11/07/2025
Autor: Isaac
  • El bloque EPROCESS contiene la información esencial que el kernel de Windows utiliza para gestionar procesos activos.
  • Las extensiones !process y .process del depurador permiten listar, examinar y cambiar el contexto de procesos a nivel kernel.
  • Técnicas avanzadas como DKOM aprovechan el acceso a EPROCESS para ocultar procesos y evadir herramientas de seguridad tradicionales.

kernel

El acceso al bloque EPROCESS dentro de un sistema Windows es un tema de enorme interés tanto para profesionales de la ciberseguridad, desarrolladores de drivers como para quienes estudian las entrañas del sistema operativo. Muchas veces, se habla de EPROCESS en el contexto de la depuración avanzada, el desarrollo de herramientas de análisis forense y, por supuesto, cuando se estudian técnicas ofensivas como la manipulación directa de objetos en el kernel, conocida como DKOM (Direct Kernel Object Manipulation).

Si alguna vez te has preguntado cómo los sistemas protegen sus procesos, o cómo algunos rootkits logran ocultar procesos del propio sistema operativo, la clave está precisamente en el conocimiento y manipulación de estructuras como EPROCESS. Con esta guía, vas a comprender desde los comandos del depurador de Windows, cómo interpretar la información de un proceso a nivel interno y cómo se pueden utilizar y modificar estos bloques tanto con fines legítimos como maliciosos. Todo con un lenguaje claro y orientado a usuarios avanzados y técnicos, pero explicando de manera accesible cada paso.

¿Qué es el bloque EPROCESS y por qué es importante?

eprocess

Dentro de la arquitectura de Windows, cada proceso en ejecución tiene asociado un bloque de datos en memoria llamado EPROCESS. Este bloque contiene toda la información relevante para la gestión del proceso: identificadores, prioridad, espacio de direcciones, listas de subprocesos, tokens de seguridad e infinidad de detalles internos sobre cómo se está ejecutando y gestionando ese proceso.

El bloque EPROCESS reside en memoria de kernel y es esencial para el funcionamiento del sistema. Tener acceso a él significa, en la práctica, poder conocer y modificar el comportamiento de cualquier proceso en el sistema.

Depuración en modo kernel: El punto de partida

Para acceder y examinar el bloque EPROCESS, normalmente necesitas realizar una depuración en modo kernel. Este método permite analizar en profundidad los procesos y la memoria de bajo nivel de un sistema Windows, ya que muchas de las herramientas convencionales de usuario simplemente no tienen los privilegios necesarios para interactuar directamente con la memoria de kernel.

El depurador de Windows viene equipado con extensiones muy potentes, entre ellas !process y .process, que te permiten inspeccionar, filtrar, y manipular los bloques de proceso existentes en el sistema.

  Aprende a eliminar una serie de contactos de un teléfono Android

Uso del comando !process

La extensión !process es una de las más utilizadas en situaciones de análisis y desarrollo en modo kernel. Su función principal es mostrar información detallada acerca de uno o todos los procesos activos, incluyendo la dirección de su bloque EPROCESS.

¡Importante! Este comando solo puede ser ejecutado durante sesiones de depuración en modo kernel de Windows. Si intentas usarlo fuera de este contexto, simplemente no funcionará o no mostrará la información esperada.

Sintaxis básica del comando !process

La llamada habitual suele tener el siguiente formato:

!process   ]

O bien, especificando opciones adicionales:

!process   0 Flags ImageName

Explicación de los parámetros clave

  • /s Sesión: Te permite filtrar procesos por una sesión concreta.
  • /m Módulo: Muestra solo aquellos procesos asociados a un módulo concreto.
  • Process: Puede ser la dirección hexadecimal de un bloque EPROCESS o el PID (identificador de proceso). Si se omite, el comando mostrará información general o sobre el contexto actual.
  • Flags: Un valor que determina el nivel de detalle de la salida (por ejemplo, 0 para información básica, 0x7 para nivel detallado).
  • ImageName: Permite buscar procesos cuyo ejecutable coincida con el nombre indicado. Es habitual especificar el nombre del binario (por ejemplo, notepad.exe) para filtrar.

Si pones Process igual a cero y omites ImageName, el depurador mostrará datos de todos los procesos activos. Si usas -1, se toma el proceso actual en depuración.

Interpretando la salida de !process

Ejemplo de una salida típica:

kd> !process 0 0
 NT ACTIVE PROCESS DUMP 
PROCESS 80a02a60 Cid: 0002 Peb: 00000000 ParentCid: 0000 DirBase: 00006e05 ObjectTable: 80a03788 TableSize: 150. Image: System
...

Cada entrada corresponde a un proceso, y cada uno tiene un campo “PROCESS” junto a una dirección hexadecimal. Esa es la dirección en memoria del bloque EPROCESS para ese proceso.

  • Dirección del proceso: Primer valor hexadecimal tras “PROCESS” (ejemplo, 0x80a02a60).
  • Cid: Identificador del proceso (PID).
  • Peb: Dirección del bloque PEB (Process Environment Block), relevante para espacio de usuario.
  • ParentCid: PID del proceso padre.
  • DirBase: Base del directorio de páginas (gestión de memoria).
  • ObjectTable: Dirección de la tabla de objetos asociados al proceso.
  • Image: Nombre del ejecutable asociado al proceso.

Detalle: Para obtener información completa, puedes ejecutar:

!process  7

El segundo parámetro (7) indica que se muestre la máxima cantidad de información útil sobre el proceso, incluyendo subprocesos, recursos y detalles de uso de memoria.

  Cambiar el número de aplicaciones en Android : ¿cómo renombrar y cambiar el número de aplicaciones?

Más allá del listado: Accediendo y cambiando el contexto del proceso

Si buscas no solo examinar, sino también manipular la memoria del proceso, puedes utilizar el comando .process:

.process  ]  

Este comando permite cambiar el contexto de depuración al proceso cuyo bloque EPROCESS indiques. Desde ese momento, el depurador podrá acceder a la memoria virtual del proceso, inspeccionar sus módulos cargados y parámetros de línea de comandos, entre otras acciones.

  • /i: Solo en depuración en vivo, fuerza la depuración invasiva del proceso.
  • /p: Traduce las entradas de la tabla de páginas del proceso para análisis en profundidad.
  • /r: Recarga símbolos de usuario tras cambiar de proceso.
  • /P: Traduce las tablas de páginas de todos los procesos.

El argumento Process es la dirección del bloque EPROCESS obtenido previamente con !process.

Ejemplo práctico para cambiar el contexto:

kd> .process fe3c0d60
Implicit process is now fe3c0d60

Tras realizar esto, puedes utilizar comandos como !peb para analizar la estructura del proceso, sus módulos cargados y variables de entorno.

Entendiendo las Flags y opciones avanzadas de análisis

El parámetro Flags del comando !process permite ajustar el nivel de detalle en la salida. Algunos niveles comunes son:

  • Bit 0 (0x1): Estadísticas básicas de prioridad y tiempo.
  • Bit 1 (0x2): Lista de subprocesos y eventos.
  • Bit 2 (0x4): Vista resumida o con trazas de pila.
  • Bit 3 (0x8): Direcciones de retorno y punteros de pila.
  • Bit 4 (0x10): Mayor precisión en cambios de contexto.

Combina estos valores sumando sus bits en hexadecimal (Flags = 0x7 para un análisis completo).

Aplicaciones prácticas: Forense, seguridad, desarrollo y rootkits

El acceso al bloque EPROCESS tiene múltiples aplicaciones tanto en desarrollo legítimo como en técnicas ofensivas de ciberseguridad. Una de las técnicas más conocidas en malware es el DKOM.

¿Qué es DKOM?

DKOM (Direct Kernel Object Manipulation) es una técnica avanzada que permite manipular objetos de kernel como EPROCESS para alterar el comportamiento del sistema. Esto posibilita:

  • Ocultar procesos, controladores o elementos del sistema.
  • Aumentar privilegios de procesos o threads.
  • Dificultar el análisis forense y la detección de malware.

Mediante la manipulación de los campos Flink y Blink de la estructura LIST_ENTRY en EPROCESS, un proceso puede ser eliminado de las listas globales, haciéndolo invisible para herramientas convencionales.

Ejemplo real: Técnica de ocultación de procesos vía driver

Supongamos que desarrollas un driver en modo kernel. Utilizando PsLookupProcessByProcessId obtienes un puntero a EPROCESS a partir del PID. Después, localizas el offset del campo Flink y modificas la estructura:

  1. El Flink del proceso oculto apunta al siguiente proceso en la lista.
  2. El Blink del siguiente proceso apunta al anterior, saltando el oculto.
  3. El proceso oculto actualiza sus propios campos Flink y Blink para mantenerse en silencio.
  Cómo formatear un pendrive en Windows 11 paso a paso

De este modo, el proceso desaparece de los listados tradicionales, aunque continúa en ejecución.

Herramientas, entornos y requisitos para análisis kernel

Para realizar depuración y manipulación en este nivel, se necesita:

  • Entorno de depuración (Windbg, kd) en modo kernel.
  • Driver kit adecuado (WDK/DDK).
  • Cabeceras y símbolos adecuados (ntifs.h).
  • Sistemas compatibles (Windows 2000 en adelante, con offsets específicos por versión).

Muchos ejemplos y PoCs desarrollan drivers de ocultación y aplicaciones en modo usuario para cargar y comunicarse con ellos mediante IOCTLs.

Consejos de seguridad para administradores y analistas

Comprender el acceso y manipulación de EPROCESS es clave para detectar actividades maliciosas y proteger sistemas. Ejemplos incluyen:

  • Detectar rootkits: Herramientas como gmer, ProcL, y otras versiones de psinfo pueden encontrar procesos ocultos, ya que realizan análisis exhaustivos de memoria.
  • Fortalecer el sistema: Actualizar controladores y sistema evita vulnerabilidades en controladores y técnicas DKOM.
  • Limitación de controladores vulnerables: Restringir carga de controladores inseguros para prevenir manipulación del kernel.

Relación con ransomware y bypass de soluciones EDR

Algunas muestras avanzadas de ransomware, como BlackByte, emplean técnicas similares para evadir soluciones de seguridad. Utilizan controladores legítimos vulnerables para modificar en tiempo real rutinas del kernel, eliminar callbacks, manipular cargas útiles y desactivar mecanismos de monitoreo de EDR, a menudo mediante offsets específicos de versiones del kernel que se actualizan dinámicamente, lo que hace difícil su detección.

Las recomendaciones de defensa incluyen monitorizar controladores no autorizados, validar la integridad de listas de procesos con herramientas independientes y restringir los controladores en sistemas críticos.

El dominio de estas técnicas, tanto para uso legítimo como malicioso, es fundamental para profesionales de seguridad que quieran entender o proteger sistemas Windows a bajo nivel. La comprensión del bloque EPROCESS, la forma de acceder a él y las formas de manipularlo representan una base esencial en la seguridad avanzada y en la ingeniería inversa de malware.

cómo identificar procesos que son malware en windows 11-8
Artículo relacionado:
Cómo detectar procesos ocultos y rootkits en Windows

Deja un comentario