Cómo detectar amenazas y proteger tu Windows con los registros del sistema
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. |
Si visitamos esta ruta (C:WindowsSystem32winevtLogs) 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.
- 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).
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.
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.
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.
Figura 10: Máxima Seguridad en Windows Gold Edition de Sergio de los Santos en 0xWord. |
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.
- El primer paso es descargar el archivo zip de Winlogbeat desde la página de descargas de Elastic.
- 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.
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.
Autor: Javier Álvarez Páramo (Intership en IdeasLocas)
Powered by WPeMatico