Búsqueda de sitios web

Seguimiento de eventos maliciosos de Windows Server con PowerShell


Los servidores Windows pueden generar potencialmente miles (o incluso cientos de miles) de eventos diariamente. La mayoría se crean a partir de eventos perfectamente seguros que los administradores del sistema utilizan para tener una idea de lo que está sucediendo. Es posible que se genere un evento para indicar que un disco se está quedando sin espacio libre, se produjo un error con Active Directory o quizás un administrador del sistema instaló un software. No hay nada de qué preocuparse aquí. Sin embargo, escondido detrás de estos miles de eventos normales puede haber un indicador de que podría haber habido un ataque de piratas informáticos. ¿Cómo puede un administrador encontrar esta aguja en un pajar?

Definir qué buscar

Antes de que un administrador pueda comenzar a instalar software o abrir un editor de scripts, debe realizar una investigación de antecedentes. La primera tarea es definir qué buscar. Windows genera miles de eventos diferentes. El administrador debe determinar cuál de estos eventos puede indicar potencialmente una amenaza a la seguridad.

Para hacer eso, primero necesitará hacer referencia a algunos indicadores populares de problemas de seguridad: la escalada de privilegios de seguridad, la colocación de una cuenta de usuario en un grupo importante o la eliminación del registro de seguridad son algunas de las actividades nefastas populares de los malos. Existen muchos recursos que le brindan esta información.

Descubra cómo se representan los datos

Después de que el administrador haya decidido qué acciones está buscando, su siguiente paso es descubrir cómo se manifiestan estas acciones en un servidor Windows. Hay muchas formas en que puede manifestarse una amenaza a la seguridad, pero el método del que hablamos hoy es a través de los registros de eventos de Windows. Se convierte en una prioridad descubrir qué ID de eventos se correlacionan con estas posibles amenazas a la seguridad. Una excelente que he usado es la guía definitiva de seguridad de Windows. Contiene la mayoría de los eventos relacionados con la seguridad que se generan en un servidor Windows junto con sus ID de eventos.

Buscar los datos

Ahora tenemos algo con qué trabajar. Tenemos las acciones que debemos buscar, cómo se manifiestan estas acciones y los ID de eventos que representan estas acciones. Es hora de realizar consultas en el servidor para buscar estos eventos. Aquí es donde el lenguaje de Windows PowerShell resulta útil. PowerShell proporciona algunas formas convenientes pero sólidas de consultar registros de eventos en un servidor Windows. Al utilizar PowerShell para consultar registros de eventos, también resulta muy sencillo distribuir sus consultas entre varios servidores. Veamos un ejemplo de cómo hacer que esto suceda.

Windows tiene muchos registros de eventos diferentes para registrar muchos tipos diferentes de actividad. En lo que nos centraremos aquí es en el registro de seguridad. El registro de seguridad es el lugar donde se registran todos los eventos de seguridad (lo creas o no). Pero el método que vamos a utilizar funcionará igualmente bien en otros registros de eventos.

Digamos que un administrador ha descubierto tres actividades diferentes:

  1. El registro de seguridad está lleno - ID de evento 1104
  2. Se borró el registro de auditoría: ID de evento 1102
  3. Se agregó un miembro a un grupo global con seguridad habilitada: ID de evento 4728

¿Donde empezar? El primer paso es utilizar un cmdlet de PowerShell llamado Get-WinEvent. Get-WinEvent es la versión más avanzada de Get-EventLog, si ha oído hablar de ella. Get-WinEvent, aunque es más complicado de usar, es más potente y funciona mucho más rápido que Get-EventLog. Repasemos un ejemplo del uso de Get-WinEvent para encontrar un único ID de evento en un único servidor.

En este ejemplo, puede ver que estoy consultando el nombre del servidor labdc.lab.local. Estoy usando un parámetro FilterHashtable para limitar los eventos solo al registro de eventos de seguridad y al ID específico que estoy buscando, que es 1102 en este caso.

Bastante simple, ¿verdad? ¿Qué sucede si quiero encontrar varios ID de eventos, como mencioné anteriormente? ¡Ningún problema!

Puede ver en el ejemplo que todavía estoy consultando el mismo servidor, pero esta vez estoy buscando tres ID de eventos diferentes y pude encontrar una instancia de los ID de evento 4728 y 1102.

Este era solo un servidor único. Probablemente tengas más de un servidor. Así que ampliemos su alcance y consultemos una lista de servidores.

Fue tan simple como agregar un bucle foreach. Como puede ver en el ejemplo, pude encontrar los ID de evento 4728 y 1102 en uno de los servidores del catálogo global de Active Directory. No se encontraron eventos en los otros tres servidores.

Este es sólo un ejemplo del tipo de auditoría de registro de eventos que puede realizar con PowerShell. PowerShell es excelente para soluciones rápidas y auditorías ad hoc. Si necesita una solución de auditoría más sólida, le recomendaría una herramienta como Netwrix Auditor. Netwrix Auditor se creó desde cero teniendo en cuenta la auditoría y simplemente funciona. Si no conoce bien PowerShell, no se preocupe. Netwrix ya ha integrado la inteligencia en su producto Auditor. No es necesario agobiarse con las secuencias de comandos.

Artículos relacionados