Artefactos forenses: SRUM

por Adrián de la Hoz
0 comentario 14 minutos lectura

Cada rincón del sistema operativo puede contener pistas valiosas para un caso. Uno de esos rincones, a menudo pasado por alto pero increíblemente poderoso, es el artefacto conocido como SRUM (System Resource Usage Monitor).

Si alguna vez te has preguntado cómo rastrear la actividad de un usuario o aplicación en un sistema Windows, SRUM es tu nuevo mejor amigo. Este pequeño gigante almacena datos detallados sobre el uso de recursos del sistema, aplicaciones ejecutadas e incluso información de red, todo empaquetado en una base de datos que Windows actualiza constantemente. Pero, ¿qué hace que este artefacto sea tan especial?

En este artículo, os voy a mostrar los secretos del SRUM: qué es, cómo acceder a sus datos y, lo más importante, cómo puedes utilizarlo en investigaciones forenses o respuesta ante incidentes.

¿Qué es SRUM?

SRUM (System Resource Usage Monitor) es una base de datos introducida en Windows 8 y versiones posteriores, diseñada para monitorizar y registrar el uso de recursos del sistema. Se encuentra en el archivo SRUDB.dat, ubicado en:

C:\Windows\System32\sru\SRUDB.dat

Esta base de datos utiliza el motor de base de datos ESE (Extensible Storage Engine), un formato utilizado por varias funcionalidades de Windows, como el Registro de eventos y el catálogo de actualizaciones. ESE es la tecnología de almacenamiento de datos del método de acceso secuencial e indexado (ISAM) de Microsoft. Permite que las aplicaciones almacenen y recuperen datos mediante acceso secuencial e indexado. En Windows 8, Microsoft comienza a supervisar el uso de los recursos del sistema y a registrar esa información en SRUM.

SRUM se puede utilizar para determinar la cantidad de uso de CPU y memoria, la actividad de red y el consumo de energía de una aplicación, un proceso o un servicio del sistema. Esta información puede ser útil para determinar si un sistema se utilizó con fines maliciosos o para determinar las causas de los problemas de rendimiento.

Detalles técnicos

Para poder recopilar esta información, el sistema debe haber instalado lo que se conoce como extensiones SRUM. Cada una de estas extensiones disponen de una subclave de registro asociada bajo la siguiente ubicación:

HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SRUM\Extensions

Estas subclaves contienen los valores de las extensiones que informan sobre el nombre, GUID y DLL asociada. Esto es importante ya que dependiendo de que extensiones estén instaladas en el sistema, SRUM recopilará mas o menos datos de distinta tipología.

La frecuencia de actualización del archivo SRUDB.DAT normalmente será de 30 a 60 minutos aunque esto puede cambiar entre una versión de Windows y otra y entre una compilación y otra. En Windows 8 por ejemplo la actualización se realiza cada hora. Es posible actualizar el intervalo en la siguiente ruta de registro:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Diagnostics\DiagTrack\SettingsRequests\WINDOWS.DIAGNOSTICS

No obstante, hay factores que pueden influir en la actualización:

  • Acciones del usuario: Si hay un uso intensivo del sistema o aplicaciones, los registros pueden actualizarse más frecuentemente.
  • Sistema inactivo: Si el sistema está inactivo, las actualizaciones de SRUM pueden ser menos frecuentes.
  • Condiciones del sistema: Si el sistema tiene un alto uso de recursos o está bajo carga, la base de datos SRUM puede actualizarse en intervalos más cortos.

Normalmente SRUM se divide en las siguientes fuentes de información:

  • Network Connectivity Data: Registra los eventos relacionados con las conexiones de red, como los cambios de estado de las conexiones (conectado/desconectado).
  • Application Resource Usage Data: Registra cómo las aplicaciones utilizan los recursos del sistema, como CPU, memoria, disco y red.
  • Network Usage Data: Registra el uso de la red por parte de las aplicaciones y servicios.
  • Windows Push Notification Data: Captura los eventos relacionados con las notificaciones push de Windows, como la recepción de notificaciones de aplicaciones.
  • Energy Usage Data: Proporciona información sobre el consumo de energía de las aplicaciones y servicios en el sistema.
  • App Timeline Provider: Mide el tiempo de ejecución de las aplicaciones a lo largo del tiempo, creando una línea de tiempo detallada de su uso.

Herramientas

Existen variedad de herramientas para trabajar con el artefacto SRUM y acceder a la información que nos ofrece. Os dejo por aquí mis favoritas:

PoC con SrumECmd

Partiendo de un triage (Si queréis saber como hacer un triage rápido podéis seguir el artículo de KAPE del blog: https://dfirpills.com/dfir/kape-parte-1-extraccion/), o bien de haber obtenido manualmente los ficheros «SRUDB.dat» y el hive del registro «SOFTWARE» ejecutamos la herramienta con:

SrumECmd.exe -f "C:\Users\Adrian\Desktop\SRUM\C\Windows\System32\SRU\SRUDB.dat" -r "C:\Users\Adrian\Desktop\SRUM\C\Windows\System32\config\SOFTWARE" --csv "C:\Users\Adrian\Desktop\SRUM\Resultados"

Se obtiene el siguiente output:

Se visualizarían en su correspondiente carpeta los ficheros .csv con los resultados de cada uno de las extensiones de SRUM que aportan información. En rojo os marco el que considero relevante para la prueba de concepto que voy a desarrollar a continuación de cara a la investigación de una exfiltración de datos:

Usos prácticos

Este artefacto tiene lógicamente muchos usos dependiendo del contexto de la investigación forense o incidente en el que nos encontremos. Esto lo digo principalmente porque los datos se pueden utilizar para determinar los principales procesos o aplicaciones consumidores de CPU y memoria del sistema, para detectar cualquier actividad inusual en la red o para identificar cualquier proceso que consuma mucha energía y que pueda afectar la duración de la batería. Los datos también se pueden utilizar para determinar la hora exacta en la que se ejecutó un proceso, lo que puede ser útil para determinar la cronología de los eventos.

No obstante, me quiero centrar en lo que en mi opinión es el uso más probable que se le puede dar a este artefacto en un incidente de seguridad, la exfiltración de datos. Por ejemplo, estamos en un incidente en el que hay una organización afectada por ataque de ransomware y está siendo extorsionada. El atacante les están indicando que han exfiltrado cierta cantidad de datos y que si no efectúan el pago del rescate los publicaran. Esta situación es bastante habitual hoy en día.

Con SRUM podemos intentar trazas de manera mas o menos aproximada si esto realmente ha sucedido. Para mostraros cómo, vamos a exponer una situación de exfiltración real.

Situación de exfiltración

La situación consistirá en:

Un atacante ha obtenido credenciales VPN de una organización. Se conecta a esta a través de su host personal (es una Kali Linux) y con acceso interno dentro de la red realiza movimientos laterales hasta que se encuentra en un segmento de red en el cual se encuentran algunos servidores críticos de la organización. A través de algunas técnicas de recolección de credenciales se hace con una cuenta de administrador local de un servidor Windows. El servidor Windows tiene habilitado el protocolo RDP y el atacante se conecta haciendo uso de esta cuenta. Con acceso a este, encuentra un fichero que contiene información crítica de la organización y lo copia a su host personal vía SCP. Después de esto, ejecuta un ransomware que cifra el servidor y se desconecta de la red. Desde ese momento, amenaza a la organización indicándoles que publicará un leak de datos de un total de 1GB.

Lógicamente es una simulación inventada y que se puede aproximar a una situación real. No obstante, los leaks suelen ser mucho mayores que 1GB y sobre todo, el despliegue del ransomware se ejecuta sobre todos los sistemas de la organización. Normalmente desplegándose a través de alguna política del directorio activo.

Por lo tanto, vamos a emular el momento desde el cual el atacante se conecta vía RDP contra el servidor Windows y exfiltra los datos.

Conexión por RDP desde Kali:

El atacante exfiltra un documento con nombre «secretos.txt» de tamaño 1GB vía SCP a través de la conexión por RDP:

Transferencia completada:

Una vez completa la transferencia, cierra la sesión. PD: no vamos a emular la infección por ransomware, no me quiero pegar un tiro en el pie. 😁

A partir de este momento, comenzaría el forense. No os voy a detallar como extraer el artefacto SRUM. Si queréis saber como hacer un triage rápido podéis seguir el artículo de KAPE del blog: https://dfirpills.com/dfir/kape-parte-1-extraccion/

Una vez tenemos localizados el fichero SRUDB.dat y el hive SOFTWARE ya se pueden procesar tal y como se ha explicado en el apartado: PoC con SrumECmd.

Para analizar exactamente las trazas de red (que es lo que nos interesa en este momento) hay que abrir el fichero «SrumECmd_NetworkUsages_Output.csv«. Lo que se quiere es poder obtener evidencias de una posible exfiltración. Esto implica ver que procesos han enviado mayor cantidad de bytes.

Al abrir el fichero y filtrar por fecha ordenando por mayor número de bytes se puede visualizar que el proceso ssh.exe ha enviado un total de 1.000974942 TB (1084210179). Por cierto, la columna de «TB Sent» la he creado yo. Os lo recomiendo para visualizarlo con más facilidad.

También se puede ver que el proceso fue ejecutado por el usuario «Adrian«. Mucho cuidado con el timestamp que nos proporciona SRUM, no es la fecha de ejecución sino el momento en que añadió a la base de datos el registro. Es decir, el momento en que se actualiza la información de SRUM. Recordemos que esto depende de cada sistema y diversos factores. Si se quiere cotejar el momento de ejecución esto se debe hacer con el contexto de otros artefactos y la investigación.

Conclusiones finales

SRUM es un artefacto muy poderoso y, a menudo, subestimado en el análisis forense y la respuesta ante incidentes. Desde rastrear actividad de red hasta identificar el uso de recursos por aplicaciones específicas, este artefacto puede proporcionar pistas clave en investigaciones de ciberseguridad. Sin embargo, como cualquier recurso, su verdadero valor radica en entender sus limitaciones y complementarlo con otros artefactos y herramientas.

Ya sea para analizar una exfiltración de datos, entender el comportamiento de un sistema o revisar la actividad de un proceso, SRUM es un artefacto valioso para los investigadores.

Espero que os haya gustado y sido útil 😊. Hasta la próxima.

Artículos relacionados

Deja un comentario

* Al utilizar este formulario usted acepta el almacenamiento y tratamiento de sus datos por parte de este sitio web.

Este sitio web utiliza cookies para mejorar su experiencia Aceptar Leer más