miércoles, enero 03, 2024

Cómo detectar amenazas y proteger tu Windows con los registros del sistema

Se dice que toda información puede ser un arma de doble filo, y los registros de Windows no son la excepción. Con la evolución de la informática, los sistemas y la programación a lo largo de las décadas, el registro de eventos se ha convertido en un recurso esencial. Esto es tanto para mantener la seguridad y estabilidad de un sistema, como cuenta Sergio de lo Santos en su libro "Máxima Seguridad en Windows: Secretos Técnicos" como para descubrir las tácticas de aquellos que buscan infiltrarse en él, como hace el Malware Moderno.


Hace casi dos años, en el mundo del software, vimos cómo una vulnerabilidad como Log4Shell, proveniente de una dependencia de logs de Java (Log4J), puso en riesgo la seguridad de muchos sistemas. Hace casi ya dos años Chema Garabito habló y demostró cómo explotar Log4Shell en servidores de Minecraft.


Hoy en este artículo, exploraremos en profundidad la naturaleza de los logs de Windows, cómo interpretarlos, y cómo extraer información valiosa haciendo uso de Python, entre otras herramientas. Además, descubriremos cómo los “malos” emplean estos registros para ocultar su malware, mientras que los “buenos” los utilizan para detectar y prevenir amenazas.

¿Qué son los logs de Windows?

El visor de eventos es un componente de los sistemas operativos Windows que permite a administradores y usuarios ver lo que pasa en un sistema. Todas las acciones realizadas en Windows quedan registradas de forma que mediante el visor de eventos se puedan leer.

Figura 3: Libros de Python para Pentesters y Hacking con Python
de Daniel Echeverri publicados en 0xWord.

Por ejemplo, cuando iniciamos sesión, el código que se ejecuta en las entrañas de nuestro sistema, a su vez, deja un rastro por donde ha pasado; y, por ende, por donde hemos pasado nosotros como usuarios. Gracias a los registros de Windows, podemos saber en qué momento y donde se ejecutó un binario especifico y que procesos desencadenó el mismo.

Figura 4: Registros EVTX en la carpeta C:\Windows\System32\winevt\Logs

Si visitamos esta ruta (C:\Windows\System32\winevt\Logs) en nuestro sistema, podremos multitud de ficheros, cada uno de ellos se trata de un fichero de logs relativo a un módulo de nuestro sistema. Por ejemplo, vemos Powershell, HyperV, NTFS, etcétera. Sin embargo, existen tres ficheros de logs, esenciales, comunes al resto que son:
  • Seguridad: Eventos relacionados con la seguridad del sistema, como inicios de sesión de usuarios, intentos de acceso no autorizado, cambios en políticas de seguridad y otras actividades de seguridad.
  • Aplicaciones: Eventos generados por aplicaciones y servicios instalados en el sistema. Estos registros pueden incluir errores de aplicaciones, advertencias y eventos informativos relacionados con aplicaciones específicas.
  • Sistema: Eventos relacionados con el funcionamiento del sistema operativo en sí, como fallos de hardware, problemas de inicio del sistema, cambios en la configuración del sistema, entre otros.
Al examinar detenidamente estos archivos, notamos que su extensión es "EVTX". Esta extensión se refiere al formato Windows XML EventLog, que Windows utiliza para almacenar información desde que se introdujo por primera vez en Windows Vista y Windows Server 2008. Desde entonces, se incluye en todas las versiones. Cada evento en una entrada de logs contiene la siguiente información:
  • Nivel: Gravedad del evento (information, critical, warning, error, verbose).
  • Fecha: Fecha en que ocurrió un evento.
  • Hora: Hora en que ocurrió un evento.
  • Origen: Programa o componente que causó el evento.
  • ID del evento: Un número de identificación de Windows que especifica el tipo de evento. Microsoft recoge en este apéndice gran parte de estos identificadores.
  • Categoría de tarea: Tipo de registro de evento registrado.
  • Usuario: Nombre de usuario del usuario conectado a la máquina cuando ocurrió el evento.
  • Computadora: Nombre de la computadora.
Que estos archivos tengan este formato permite al visor de eventos tres principales ventajas frente a otros formatos: Rollover (se divide en fragmentos y los nuevos fragmentos pueden sobrescribir los antiguos limitando el tamaño máximo), compresión (como veremos más adelante, si convertimos con Python, el fichero de EVTX a JSON, el tamaño pasa de 18,5 MB a más de 60 MB, lo que significa un aumento del 324% de su tamaño) y uso de tipos sólidos (permite filtrar y seleccionar con rapidez los eventos, evitando tener que recorrer todo el archivo).

Figura 5: Comparación del contenido de un fichero EVTX
en crudo y convertido a formato JSON

De forma nativas, se pueden visualizar los archivos EVTX, haciendo uso del visor de eventos de Windows (eventvwr), el cual incluye funcionalidades como filtrado, búsqueda avanzada, vistas personalizadas, suscripción a eventos, entre otros.

El doble filo de los registros de eventos de Windows: Anatomía de amenazas y herramientas de defensa

Las estafas que se valen de los eventos de Windows como anzuelo para engañar a los usuarios han sido notorias. En el pasado, hubo casos de llamadas de supuestos técnicos de "Microsoft" que dirigían a las personas a ver registros de eventos con errores triviales para dar credibilidad a la estafa.


En una técnica más sofisticada, se descubrió que los registros de eventos de Windows, específicamente en los registros de Key Management Services (KMS), se usaron como escondite para ocultar código malicioso. 


Esto se lograba inyectando "shellcode" en estos registros, aprovechando la carga de código malicioso mediante la manipulación de archivos legítimos del sistema. Si quieres ampliar la información sobre esta técnica, puedes visitar el artículo de SecureList by Kaspersky que habla de ello.


Pero no todo es negativo: estos eventos de Windows también han sido vitales para combatir el malware y ransomware. Los investigadores de seguridad hacen uso a menudo de estos registros —entre otros— para rastrear, entender y desarrollar herramientas que descifren y reviertan los daños causados por estos ataques, proporcionando soluciones para desbloquear archivos afectados.

Figura 9: Trazas de algunos eventos ejecutados por un malware o actor malicioso

En un ataque ransomware, podríamos observar algunos logs como los siguientes, donde el actor hace uso de ScreenContent.ClientService.exe para transferir archivos y ejecutar comandos maliciosos, esto podría indicarnos la etapa inicial del ataque.

Manipular y automatizar la seguridad a partir de los eventos de Windows

Previamente, mencionamos que los archivos EVTX pueden ser visualizados y manipulados desde el visor de eventos de Windows. Aunque este cuenta con muchas características útiles, es importante considerar las limitaciones del visor de eventos, como la falta de replicación de registros entre computadoras en una red y la dificultad para agregar registros de múltiples sistemas.

Por esta razón, vamos a explorar cómo exprimir la monitorización de eventos en tu sistema o red corporativa al máximo, ya que es posible manipular los eventos mediante el uso de Python y/u otras herramientas disponibles. Vamos al turrón:

Stack ELK

El conjunto de herramientas del stack ELK, compuesto por Elasticsearch, Logstash y Kibana, proporciona una solución robusta y flexible para la recopilación, análisis y visualización de datos, incluidos los eventos de Windows. Esta combinación potente permite la manipulación eficiente de eventos y la automatización de los registros de eventos de Windows.


Sin embargo, eso no sería posible sin Winlogbeat, se trata de un agente ligero y eficiente diseñado para enviar registros de eventos desde sistemas Windows a Elasticsearch o Logstash para su análisis posterior. Su capacidad para leer eventos de varios registros, filtrarlos según criterios definidos por el usuario y enviar los datos a los destinos configurados lo convierte en una herramienta fundamental en la monitorización de eventos en entornos Windows. La instalación de Winlogbeat es sencilla:
  • A continuación, en una ventana de Powershell como administrador se ejecuta el script de instalación: “.\install-service-winlogbeat.ps1”
  • Es importante configurar adecuadamente las conexiones a Elasticsearch o Logstash en el archivo de configuración winlogbeat.yml. Para ello, puedes encontrar más información en la documentación de Winlogbeat
  • Por último, para iniciar Winlogbeat, ejecuta el siguiente comando: “net start winlogbeat”
Una vez que los eventos de Windows se han indexado en Elasticsearch, podemos usar Kibana para visualizarlos y Python para interactuar con ellos. Las bibliotecas como elasticsearch-py nos permiten realizar consultas avanzadas a Elasticsearch desde Python, lo que facilita el análisis y la manipulación de los datos. Esto nos permite llevar el análisis de los eventos de Windows hasta el límite de lo que podamos imaginar.

python-evtx

Otra alternativa a Winlogbeat y ELK es crear nuestro propio agente mediante el uso de la librería python-evtx, que nos permite analizar y manipular eventos de Windows. Se trata de una biblioteca de Python que permite acceder a la estructura interna de los archivos EVTX, los cuales contienen los registros de eventos de Windows y volcar los datos correspondientes en un fichero JSON (como el que veíamos al comienzo de este artículo). Con unas pocas líneas podremos hacer uso de python-evtx, previa instalación con “pip install python-evtx xmltodict”. Puedes comenzar a analizar eventos de Windows utilizando el ejemplo de la imagen siguiente.

Figura 12: Ejemplo de código para convertir de forma
simple un fichero EVTX a formato JSON

Estas son solo algunas de las posibilidades que ofrece python-evtx para analizar y manipular eventos de Windows. Para realizar análisis más complejos, crear herramientas personalizadas para la monitorización de eventos o automatizar tareas, visita su repositorio para conocer más.

Conclusión

En resumen, los registros de eventos de Windows son una fuente invaluable de información, revelando tanto la salud del sistema como posibles amenazas. Aunque han sido utilizados para esconder y ejecutar malware, también son la clave para la detección y defensa contra ataques. Herramientas como ELK y python-evtx ofrecen formas poderosas de interpretar y manipular estos registros, permitiendo análisis detallados y protección proactiva.

1 comentario:

  1. Echo de menos algo más de detalle de cómo instalar todo, pero bueno. La idea es buena.

    ResponderEliminar