El objetivo de esta habitación es la de aprender cuál es el comportamiento normal de Windows a fin de reconocer procesos maliciosos que estén corriendo en un equipo.

Llegó un momento en el que los antivirus no fueron suficientes para proteger a los equipos, es por eso que se han creado herramientas como EDR (Endpoint Detection and Response), ya que los antivirus no pueden atrapar a todo proceso malicioso o ejecutable que corra en el sistema.

Aún así, tampoco son suficiente y ahí es donde entra la labor del Security Analyst, SOC Analyst, Detection Engineer, Threat Hunter o como se le quiera llamar.

Conociendo lo que es normal, podemos inferir lo que no lo es.

En esta habitación usamos RDP para conectar con las credenciales que nos proporcionan.

El administrador de tareas

En Windows, es lo que muestra al usuario qué tareas y procesos están corriendo, cuánta CPU están usando y permite detener esos procesos en caso de necesidad.

Administrador de tareas de Windows

Si no tenemos aplicaciones que hayamos abierto explícitamente, pulsamos en «More details».

Administrador de tareas de Windows

Hay 5 pestañas en el Administrador de Tareas. La que se muestra por defecto es «Procesos». Es posible que aparezcan también más pestañas.

En la imagen superior vemos que los procesos están categorizados en:

  • Aplicaciones (Apps).
  • Procesos en segundo plano (Backgroun Processes).

Otra categoría no visible en la imagen es Windows Processes, Procesos de Windows.

Partimos de las columnas mínimas: Nombre, Status, CPU y Memoria, pero haciendo clic con el botón derecho en los encabezados de las columnas, podemos mostrar más.

Administrador de tareas de Windows

Administrador de tareas de Windows

Veamos cada columna con más detalle, teniendo en cuenta que la de Nombre está clara:

  • Tipo (Type). Cada proceso se encuadra en una de estas 3 categorías: Apps, Background process, or Windows process.
  • Publisher. El autor del programa.
  • PID. El número de identificación del proceso. Windows asigna un PID único cada vez que se inicia un programa. Si un programa tiene múltiples procesos, cada uno tendrá su PID.
  • Nombre del proceso (Process name). El nombre de archivo del proceso, en la imagen de arriba, el nombre para el Administrador de Tareas es Taskmrg.exe.
  • Línea de comando (Command line). El comando completo usado para lanzar el proceso.
  • CPU. La cantidad de potencia de procesamiento usada por el proceso.
  • Memoria (Memory). La cantidad de memoria física usada por el proceso.

Vamos a movernos a la pestaña de Detalles y ordenador los procesos por número PID.

Administrador de tareas de Windows

Añadiremos algunas columnas adicionales para ver más información sobre procesos. Son recomendables Image Path Name y Command Line.

Estas dos columnas pueden alertar rápidamente a un analista de cualquier cosa que se salga de lo normal en un proceso dado. Por ejemplo, en la imagen de abajo, PID 384 está emparejado con un proceso llamado svchost.exe, un proceso de Windows. Pero el nombre de la ruta de la imagen (Image Path Name) o la línea de comando (Command Line), no son los esperados, con lo que deberíamos realizar un análisis más a fondo de este proceso.

Administrador de tareas de Windows

El Administrador de Tareas carece de cierta información importante cuando analizamos procesos, como información sobre el proceso padre. Esta es fundamental para identificar anormalidades.

De vuelta a nuestro svchost.exe, si el proceso padre para el PID 384 no es services.exe, deberíamos analizar más a fondo.

Para probar este punto, ¿dónde está services.exe?

Administrador de tareas de Windows

Según la imagen de arriba, tiene un PID 632. Pero, uno de los procesos svchost.exe tiene un PID 384. ¿Cómo se ha iniciado svchost.exe antes de services.exe?

Aquí es donde otras utilidades como Process Hacker o Process Explorer vienen al rescate.

Process hacker

Administrador de tareas de Windows

Process explorer

Administrador de tareas de Windows

De aquí en adelante se usarán ambos para obtener información de procesos.

Además del Administrador de Tareas, lo ideal es familiarizarse con los equivalentes de línea de comandos para obtener información sobre los procesos que corren:

  • tasklist
  • Get-Process
  • ps (Powershell) y wmic

System

El primer proceso de la lista es System. Aunque Windows asigna aleatoriamente los PID, en este caso, no. System siempre tiene el PID 4.

¿Qué es normal en System?

Usemos Process Explorer y veamos las Propiedades para System.

Administrador de tareas de Windows

Ruta de imagen: N/A

Proceso padre: Ninguno.

Número de instancias: una

Cuenta de usuario: Local System

Tiempo de inicio: Cuando se inicia la máquina.

La información es un poco diferente cuando usamos Process Hacker.

Administrador de tareas de Windows

Image Path: C:\Windows\system32\ntoskrnl.exe (NT OS Kernel)

Parent Process: System Idle Process (0)

Técnicamente, esto es correcto. Observemos cómo Process Hacker nos confirma (Legit) que es un proceso verificado de Windows.

¿Qué es inusual?

  • Que tuviera un proceso padre (aparte del System Idle Process (0))
  • Múltiples instancias de System, ya que solo debería haber 1.
  • Un PID diferente, ya que siempre debe ser 4.
  • Que no corra en la sesión 0

Nos pregunta qué PID debe tener System.

4

System > Smss.exe

El siguiente proceso es smss.exe (Session Manager Subsystem). También se le conoce como Gestor de Sesiones de Windows (Windows Session Manager).

Es el responsable de crear nuevas sesiones y es el primer proceso en modo usuario que inicia el kernel.

Este proceso comienza el modo kernel y el modo usuario del subsistema Windows (más información sobre arquitectura NT aquí).

Este subsistema inicia:

  • win32k.sys (kernel mode)
  • winsrv.dll (user mode)
  • csrss.exe (user mode)

Smss.exe inicia csrss.exe (Windows subsystem) y wininit.exe en la Sesión 0, una sesión de Windows aislada para el sistema operativo.

También inicia csrss.exe y winlogon.exe para la Sesión 1, que es la sesión de usuario.

He aquí la Sesión 0 (csrss.exe y wininit.exe):

Administrador de tareas de Windows

Administrador de tareas de Windows

Y aquí la sesión 1 (csrss.exe y winlogon.exe):

Administrador de tareas de Windows

Administrador de tareas de Windows

Cualquier otro subsistema listado en en valor Required de KLM\System\CurrentControlSet\Control\Session Manager\Subsystems también se inicia:

Administrador de tareas de Windows

SMSS también es responsable de crear variables de entorno, archivos de paginación de memoria virtual e iniciar winlogon.exe (el gestor de autenticación de Windows).

¿Qué es normal en smss.exe?

Administrador de tareas de Windows

Ruta de imagen: %SystemRoot%\System32\smss.exe

Proceso Padre: System

Número de instancias: Una instancia maestra y una instancia hija por sesión. La instancia hija termina después de crear la sesión.

Cuenta de usuario: Local System

Tiempo de inicio: La instancia maestra se inicia pocos segundos después del inicio del Windows.

¿Qué es inusual?

  • Un proceso padre diferente a System (PID 4).
  • Una Ruta de imagen diferente de C:\Windows\System32
  • Más de 1 proceso corriendo (los procesos hijo se terminan y salen después de cada nueva sesión.
  • El usuario no es SYSTEM.
  • Entradas de registro inesperadas para Subsystem.

¿Qué otros procesos inicia smss.exe en la sesión 1?

csrrs.exe, winlogon.exe

csrss.exe

Client Server Runtime Process, csrss.exe es la parte del modo usuario del subsistema Windows.

Este proceso es crítico para el sistema y siempre está corriendo. En caso de que termine, se producirá un fallo del sistema.

Este proceso es responsable de la ventana de consola Win32 y de la creación y borrado de hilos de proceso.

Por cada instancia de csrss.exe se cargan (entre otras) cssrv.dll, basesrv.dll y winsrv.dll.

Este proceso también es responsable de hacer que la API de Windows esté disponible para otros procesos, mapeando letras de discos y gestionando el proceso de apagado de Windows. Se puede leer más sobre el proceso aquí.

Recordemos que csrss.exe y winlogon.exe son llamados desde smss.exe al inicio por la sesión 1.

¿Qué es normal?

Sesión 0 (PID 392)

Administrador de tareas de Windows

Sesión 1 (PID 512)

Administrador de tareas de Windows

Fijémonos en lo que se nos muestra como proceso padre para estos 2 procesos. Recuerda que estos procesos son invocados por smss.exe, que se autotermina.

Ruta de imagen: %SystemRoot%\System32\csrss.exe

Proceso padre: Creado por una instancia de smss.exe

Número de instancias: Dos o más.

Cuenta de usuario: Local System

Tiempo de inicio: Segundos en tiempo de inicio para las 2 primeras instancias (Sesión 0 y 1). Sucederán tiempos de inicio adicionales conforme sean creadas nuevas sesiones, aunque a menudo solo se crean la 0 y la 1.

¿Qué es inusual?

  • Un proceso padre (smss.exe llama a este proceso y termina)
  • Una ruta de imagen que no sea C:\Windows\System32

  • Nombres sultimente incorrectos para esconder procesos maliciosos que se enmascaran como csrss.exe a plena luz del día.

  • El usuario no es SYSTEM

¿Cuál era el proceso que tenía PID 384 y PID 488? (en la imagen aparece como non-existent process, ¿por qué? Porque alguien se inició y terminó…)

smss.exe

wininit.exe

El proceso de inicialización wininit.exe es responsable de lanzar services.exe (Gestor de Control de Servicios o Service Control Manager), lsass.exe (Local Security Authority) y lsaiso.exe dentro de la sesión 0.

Este es otro proceso crítico de Windows que corre en segundo plano, junto con sus procesos hijo.

Administrador de tareas de Windows

lsaiso.exe es un proceso asociado con Credential Guard y Key Guard. Solo lo veremos cuando Credential Guard esté habilitado.

¿Qué es normal?

Administrador de tareas de Windows

Ruta de imagen: %SystemRoot%\System32\wininit.exe

Proceso padre: Creado por una instancia de smss.exe

Número de instancias: Una.

Cuenta de usuario: Local System

Tiempo de inicio: Segundos en tiempo de inicio.

¿Qué es inusual?

  • Un proceso padre (smss.exe llama a este proceso y se autotermina).

  • Una ruta de imagen que no sea C:\Windows\System32

  • Sutiles nombres similares, mal escritos, para camuflar a la vista de todos procesos maliciosos.

  • Múltiples instancias corriendo.

  • No correr como SYSTEM.

¿Qué proceso puedes no ver corriendo si Credential Guard no está habilitado?

lsaiso.exe

wininit.exe > services.exe

El siguiente proceso es SCM (Service Control Manager o Gestor de Control de Servicio), que es services.exe.

Su responsabilidad principal es gestionar servicios de sistema: cargar servicios, interactuar con ellos, iniciarlos/terminarlos, etc.

Mantiene una base de datos que puede ser consultada usando la utilidad de Windows sc.exe

Administrador de tareas de Windows

La información referente a servicios está guardada en el registro HKLM\System\CurrentControlSet\Services.

Administrador de tareas de Windows

Este proceso también carga controladores de dispositivos que estén marcados como de autoinicio (auto start) en memoria.

Cuando un usuario se identifica con éxito en una máquina, este proceso es responsable de poner el valor del Último Control Bueno Conocido (Last Known Good Control set - Last Known Good Configuration), HKLM\System\Select\LastKnownGood para el de CurrentControlSet.

Administrador de tareas de Windows

Este proceso es el padre de otros procesos clave:

svchost.exe, spoolsv.exe, msmpeng.exe, dllhost.exe, etc. Se puede leer más sobre el proceso aquí.

¿Qué es normal?

Administrador de tareas de Windows

Administrador de tareas de Windows

Ruta de imagen: %SystemRoot%\System32\services.exe

Proceso padre: wininit.exe

Número de instancias: Una.

Cuenta de usuario: Local System

Tiempo de inicio: Segundos en tiempo de inicio.

¿Qué es inusual?

  • Un proceso padre que no sea wininit.exe

  • Una ruta de imagen que no sea C:\Windows\System32

  • Sutiles nombres similares, mal escritos, para camuflar a la vista de todos procesos maliciosos.

  • Múltiples instancias corriendo.

  • No correr como SYSTEM.

¿Cuántas instancias de services.exe deberían correr en un sistema Windows?

1

wininit.exe > services.exe > svchost.exe

El Service Host (Proceso Anfitrión para los servicios Windows) o svchost.exe es responsable de gestionar y alojar servicios de Windows.

Administrador de tareas de Windows

Los servicios corriendo en este proceso son implementados como bibliotecas DLL. Están guardadas en el registro bajo la subclave Parameters en ServiceDLL. La ruta completa es HKLM\SYSTEM\CurrentControlSet\Services\SERVICE NAME\Parameters.

El ejemplo de abajo es el valor ServiceDLL para el servicio Dcomlaunch.

Administrador de tareas de Windows

A fin de ver esta información dentro de Process Hacker, haz clic derecho en el proceso svchost.exe. En este caso, será PID 748.

Administrador de tareas de Windows

Clic derecho en el servicio y seleccionar Propiedades. Mira en DLL de Servicio.

Administrador de tareas de Windows

La ruta al binario aparece destacada en la imagen de arriba.

Además de eso, date cuenta de cómo está estucturada. Hay un identificador clave en la ruta del binario. Ese identificador es -k. Así es cómo se llama a un proceso svchost.exe legítimo.

El parámetro -k es para agrupar a servicios similares que comparten el mismo proceso. Este concepto estaba basado en el diseño del Sistema Operativo e implementado para reducir el consumo de recursos.

Comenzando por Windows 10 Versión 1703, cambió la agrupación de servicios en procesos anfitriones. En máquinas corriendo más de 3,5GB de memoria, cada servicio corre su propio proceso. Puede leer más sobre este proceso aquí.

En el pantallazo de arriba el valor -k es Dcomlaunch. En la máquina virtual usada para crear esta habitación, hay otros servicios corriendo con la misma ruta de binario.

Administrador de tareas de Windows

Cada uno tendrá un valor diferente para ServiceDLL. Vamos a tomar LSM como ejemplo y examinar el valor para ServiceDLL.

Administrador de tareas de Windows

Administrador de tareas de Windows

Como svchost.exe siempre tendrá múltiples procesos corriendo en cualquier sistema Windows, estos procesos han sido objetivo de uso malicioso.

Los adversarios crean malware para enmascarar como este proceso y tratar de ocultarlo entre los svchost.exe legítimos. Pueden nombrar al malware svchost.exe o nombrarlo muy parecido, como scvhost.exe. La intención es pasar por debajo del radar. Otra táctica es instalar o llamar a un servicio malicioso (DLL).

Más sobre estas tácticas aquí

¿Qué es normal?

Administrador de tareas de Windows

Ruta de imagen: %SystemRoot%\System32\svchost.exe

Proceso padre: services.exe

Número de instancias: Muchas.

Cuenta de usuario: Varía (SYSTEM, Network Service, Local Service) dependiendo de la instancia svchost.exe. En Windows 10 algunas instancias puede correr como el usuario autenticado.

Tiempo de inicio: Normalmente, segundos en tiempo de inicio. Otras instancias pueden ser iniciadas después del inicio.

¿Qué es inusual?

  • Un proceso padre que no sea services.exe

  • Una ruta de imagen que no sea C:\Windows\System32

  • Sutiles nombres similares, mal escritos, para camuflar a la vista de todos procesos maliciosos.

  • La ausencia del parámetro -k.

¿Qué parámetro de una letra debería ser siempre vivisble en la línea de comando o ruta de binario?

k

lsass.exe

Local Security Authority Subsystem Service (LSASS) es un proceso de Windows responsable de hace cumplir la política de seguridad en el sistema. Verifica a los usuarios que identifican en una máquina o servidor Windows, gestiona cambios de contraseña y crea tokens de acceso.

También escribe en el Registro de Seguridad de Windows (Windows Security Log).

Crea tokens de seguridad para SAM (Security Account Manager), AD (Active Directory) y NETLOGON. Usa paquetes de autenticación especificados en HKLM\System\CurrentControlSet\Control\Lsa.

Administrador de tareas de Windows

Este es otro de los procesos que los adversarios suelen tomar como objetivo.

Herramientas habituales como mimikatz se usan para volcar credenciales o imitan a este proceso para esconderse a simple vista. De nuevo, hacen esto ya sea nombrando su malware igual que lsass o bien deletreando de manera un poco diferente.

Como lectura adicional, podemos conocer las características que Microsoft ha dispuesto para prevenir estos ataques.

¿Qué es normal?

Ruta de imagen: %SystemRoot%\System32\lsass.exe

Proceso padre: wininit.exe

Número de instancias: Una.

Cuenta de usuario: Local System.

Tiempo de inicio: Segundos en tiempo de inicio.

¿Qué es inusual?

  • Un proceso padre que no sea wininit.exe
  • Una ruta de imagen que no sea C:\Windows\System32
  • Sutiles nombres similares, mal escritos, para camuflar a la vista de todos procesos maliciosos.
  • Múltiples instancias corriendo.
  • No correr como SYSTEM.

¿Cuál es el proceso padre de LSASS?

wininit.exe

winlogon.exe

Windows Logon, o winlogon.exe es responsable de gestionar la Secuencia Segura de Atención (SAS Secure Attention Sequence). Esta es la combinación de teclas Ctrl+Alt+Supr que los usuarios pulsan para introducir su usuario y contraseña.

Este proceso también es responsable de cargar el perfil de usuario. Esto se hace cargando el NTUSER.DAT del usuario en HKCU vía userinit.exe para carga la shell del usuario.

Se puede leer más sobre este proceso aquí.

Administrador de tareas de Windows

Recordemos de secciones anteriores que smss.exe lanza este proceso junto con una copia de csrss.exe dentro de la sesión 1.

Administrador de tareas de Windows

¿Qué es normal?

Administrador de tareas de Windows

Administrador de tareas de Windows

Ruta de imagen: %SystemRoot%\System32\winlogon.exe

Proceso padre: Creado por una instancia de smss.exe que sale tras hacerlo, de modo que las herramientas de análisis no proporcionan, habitualmente, el nombre del proceso padre.

Número de instancias: Una o más.

Cuenta de usuario: Local System.

Tiempo de inicio: Segundos en tiempo de inicio para la primera instancia (para Sesión 1). Instancias adicionales ocurren conforme se crean nuevas secciones, normalmente a través del Escritorio Remoto o identificaciones (logons) de Fast User Switching.

¿Qué es inusual?

  • Un proceso padre (smss.exe llama a este proceso y se autofinaliza).
  • Una ruta de imagen que no sea C:\Windows\System32
  • Sutiles nombres similares, mal escritos, para camuflar a la vista de todos procesos maliciosos.
  • No correr como SYSTEM.
  • Un valor de shell en el registro diferente de explorer.exe.

¿Cuál es el proceso padre no existente para winlogon.exe?

smss.exe

explorer.exe

El último proceso que veremos es el Explorador de Windows explorer.exe. Este es el proceso que le da acceso al usuario a sus carpetas y archivos. También provee funcionalidad a otras características como el Menú Inicio, la barra de tareas, etc.

Como se ha mencionado anteriormente, el proceso Winlogon corre userinit.exe, que lanza el valor en HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell. Userinit.exe sale después de invocar explorer.exe. A causa de esto, el proceso padre es inexistente.

A su vez, habrá muchos procesos hijo para explorer.exe.

Administrador de tareas de Windows

¿Qué es normal?

Administrador de tareas de Windows

Ruta de imagen: %SystemRoot%\System32\explorer.exe

Proceso padre: Creado por userinit.exe, que autofinaliza tras hacerlo.

Número de instancias: Una o más por usuario interactivo autenticado.

Cuenta de usuario: La del usuario autenticado.

Tiempo de inicio: La primera instancia se da cuando el primer usuario interactivo inicia su sesión.

¿Qué es inusual?

  • Un proceso padre (userinit.exe llama a este proceso y se autofinaliza).
  • Una ruta de imagen que no sea C:\Windows
  • Correr como un usuario desconocido.
  • Sutiles nombres similares, mal escritos, para camuflar a la vista de todos procesos maliciosos.
  • Conexiones salientes TCP/IP.

Administrador de tareas de Windows

Nota: la imagen superior es una captura de pantalla de la vista de propiedades desde Process Explorer.

¿Cuál es el proceso no existente para explorer.exe?

userinit.exe

Conclusión

Es fundamental, como defensor, entender cómo funciona el sistema Windows. Los procesos que hemos visto con fundamentales, entender cómo operan normalmente puede ayudar a un defensor a identificar actividad inusual en un endpoint de la red.

Con la introducción de Windows 10 se han añadido procesos adicionales a la lista de procesos core que conocer y de los que entender conducta normal.

Antes hemos nombrado que si Credential Guard está habilitado en el endpoint, un proceso adicional estará corriendo y será hijo de wininit.exe. Ese proceso es lsaiso.exe. Este proceso corre en conjunción con lsass.exe para mejorar la protección de la contraseña en el endpoint.

Otros procesos en Windows 10 son RuntimeBroker.exe y taskhostw.exe (antes taskhost.exe y taskhostex.exe). Hemos de conocer más sobre ellos y saber cómo funcionan normalmente.