SPLUNK: Un SIEM para controlarlos a todos

1. Introducción y objetivos


En este artículo nos vamos a poner en la piel de un analista de seguridad, cuya labor consiste en llevar a cabo la detección de intrusiones analizando los distintos archivos de eventos «logs» que crean las máquinas y dispositivos en busca de comportamientos anómalos. Esto se lleva a cabo para dar respuesta ante posibles incidentes, establecer normas y políticas apropiadas, y hacer que estas se cumplan. Del mismo modo es el encargado de la implantación e implementación de Sistemas de Monitorización de Eventos de Seguridad (SIEM).

Para llevar a cabo este ejercicio vamos a hacer uso de la herramienta «Splunk  Enterprise». En lo siguientes puntos definiremos esta herramienta y su funcionamiento; y además veremos brevemente algunos casos de uso que pueden sernos de gran utilidad en nuestro día a día.



2. ¿Qué es Splunk?


Básicamente podríamos definir «Splunk» como una herramienta encargada de recopilar, parsear, almacenar y correlacionar datos en tiempo real.

El origen de estos datos recolectados es muy variado, ya que pueden ser datos pertenecientes a una red empresarial, a sistemas e infraestructuras, a la nube, etc. En definitiva, cualquier máquina o dispositivo que genere un log de eventos puede ser monitorizada.

Los datos normalmente se recolectan y almacenan en la herramienta mediante el empleo de un «syslog» o de uno de uno de sus agentes, llamado «reenviador» o del inglés «forwarder», del que hablaremos más adelante. Una vez recolectados estos datos, son reenviados al servidor principal, el denominado «indexador», y son almacenados en unos cubos o «buckets» llamados «indexes».


Estos datos pueden ser tratados para realizar distintas tareas, como pueden ser el generar inteligencia, detección de posibles ataques o incluso para generar «Big data».


Estos datos son recogidos y almacenados en tiempo real, lo que permite una detección temprana y el poder aplicar las correcciones necesarias para que un ataque no llegue a ser efectivo, o por lo menos para hacer que éste sea lo menos dañino posible para la empresa.  

Splunk consta de una interfaz web bastante intuitiva, con la que el usuario puede revisar estos logs, crear paneles de control o «dashboards», generar reportes o programar alertas.

Podríamos afirmar que se trata de una herramienta realmente poderosa, flexible y escalable. Permite al usuario crear aplicaciones propias o descargarlas desde su propio repositorio «splunkbase«. En este repositorio la gran mayoría de las aplicaciones son gratuitas, unas son creadas por Splunk y otras por empresas de seguridad de renombre como Fortinet, CheckPoint o Cisco.



Existe la posibilidad de añadir a Splunk otros módulos de pago, mediante los cuales hacen posible que Splunk llegue a convertirse en uno de los SIEM más completos del mercado, como es Splunk Enterprise Security, Splunk Phantom, Splunk User Behavior Analytics entre otros.
Estos módulos de seguridad hacen más potente a Splunk proporcionando herramientas predefinidas para la búsqueda de comportamientos maliciosos, mediante indicadores claves de seguridad, correlación de eventos, aportando dashboard, lookups…


3. Instancias de Splunk


El «core» de Splunk ofrece varias soluciones que pueden adaptarse perfectamente a nuestras necesidades, según los recursos de los que se dispongan y según la infraestructura a monitorizar.

  • Splunk Enterprise: Instancia «on premise», es decir para realizar instalaciones en servidores físicos. Permite tener conocimiento de todo lo que ocurre en la empresa y poder tomar decisiones rápidamente en caso necesario.
  • Splunk Cloud: Servicio en la nube que permite mayor flexibilidad para ampliar la infraestructura y abaratar costes, evitando tener que invertir en servidores físicos y todo lo que ello conlleva.
  • Splunk Data Stream Processor: Coleccionar, procesar y distribuir datos a Splunk y otras instancias en mili segundos y en tiempo real.

Existe una versión gratuita de Splunk Enterprise de 60 días, limitada al indexado de 500 Mb/día. Además, transcurridos esos días puedes hacer que la licencia sea indefinida, por lo que para probarlo y conocer Splunk está bastante bien, e incluso para tenerlo como instancia de pruebas y desarrollos. Una vez registrados desde su propia web se puede realizar la descarga: https://www.splunk.com


4. Componentes de Splunk Enterprise


Splunk está formado por varios componentes que nos ayuda a realizar el despliegue y la recolección de los datos de una forma fácil y eficaz. Los componentes principales de Splunk son tres:

  • Splunk Enterprise: Instancia completa de Splunk con todas sus características. Permite la recolección, parseo, indexado y posterior tratado de los datos mediante búsquedas, dashboards, etc.
  • Heavy Forwarder (HF): Es un forwarder o reenviador, una instancia de Splunk Enterprise que reenvía datos a otra instancia de Splunk. HF conserva la mayoría de las características de un indexador, pero no puede realizar búsquedas distribuidas, entre otras limitaciones.
  • Universal Forwarder (UF): Es el agente de Splunk más ligero y fácil de implementar, es un simple recolector-reenviardor de datos. Recoge los datos de los diferentes sistemas, aplicaciones, red, etc… y lo reenvía a otra instancia de Splunk. No tiene la capacidad de parsear, buscar, ni indexar.

Cada componente de Splunk cumple una o varias funciones, y tienen asignado uno o varios roles. Las funciones más destacadas son las siguientes:

  • Forwarder: Empleado para la recolección, reenvío y parseo de los datos.
  • Indexer: Empleado para el parseo y almacenamiento de los datos.
  • Search head: Se trata de una interfaz gráfica (Splunk Web) empleada para el tratamiento de los datos, realizar búsquedas, análisis y reportes.


5. Detectando ataques de fuerza bruta


A continuación vamos a ver el caso de un ataque de fuerza bruta sobre un sistema Windows. Aclarar que se puede monitorizar cualquier sistema que tenga un módulo de autenticación, como puede ser un panel web o la entrada a una aplicación que requiera credenciales.

Antes de realizar el análisis hemos tenido que configurar adecuadamente la recepción de logs de seguridad de Windows, instalando un «Universal Forwarder» en la máquina a monitorizar. Se podría instalar en un Directorio Activo (AD) y así poder monitorizar todas las máquinas asociadas a ese AD.

Desde el buscador que proporciona la interfaz web de Splunk, podemos realizar búsquedas en lenguaje SPL de los datos que estamos indexando.

La búsqueda a realizar sería la siguiente:




  • Index: Es el «cubo» en el que almacenamos los logs de Windows.
  • Sourcetype: Es el tipo de dato que almacenamos, en este caso eventos de windows de seguridad.
  • User= * : Se refiere a todos los usuarios.
  • User!= » «: Se refiera a que el usuario sea diferente a blanco, es decir, que tiene que haber algún dato en el campo usuario.
  • Stats count eval: Hace un conteo de todos los resultados de «action» correspondientes a «success» y «failures», y agrupa por usuario.
  • Where: Condición que obliga a que los resultados con éxito sea mayor de 0 y los resultados fallidos sea mayor de 50.

*Importante: los parámetros introducidos en «index» y «sourcetype» se deben adaptar al entorno.


6. Detectando escaneo de puertos y servicios


En estos tiempos que corren es casi inevitable recibir continuamente escaneos de puertos y servicios sobre aplicaciones expuestas en la red.

Es muy importante detectar este tipo de ataques, porque de esta manera podremos adelantarnos a otros posibles ataques más elaborados, ya que como todos sabemos una de las primeras fases de un ataque es el escaneo. De este modo podremos implementar algunas medidas, como bloqueo de direcciones IP según el número de peticiones, entre otras.

¿Cómo podríamos detectar en tiempo real un ataque de este tipo?

Una vez estemos recibiendo logs de nuestros dipositivos de red (firewall, ips, router, etc.) podremos realizar la siguiente búsqueda:




  • Index: Es el «cubo» en el que almacenamos los logs de red.
  • Sourcetype: Es el tipo de dato que almacenamos, en este caso eventos del direcciones IP.
  • Stats count dc: Hace un conteo de todos los distintos puertos destino y todas las distintas ips destino.
  • Where: Condición que obliga a que los resultados de puertos destino sea mayor de 500 y los resultados de IP destino sea mayor de 500.

7. Detectando nuevas cuentas de administrador


Otro de los casos de uso importantes es la localización de nuevas cuentas de usuario del grupo de administradores.

Cuando los ciberdelincuentes realizan una intrusión a una máquina víctima, una de las primeras TTP (Tácticas, Técnicas y Procedimientos) que suelen ejecutar es el conseguir acceso a otras cuentas de usuario para realizar movimientos laterales en la organización (pivotar, escalada de privilegios), o el llevar a cabo la creación de nuevas cuentas de usuario con la finalidad de asegurarse la persistencia en la máquina víctima. Si te interesa conocer más sobre ciberseguridad ofensiva puedes echar un vistazo al Curso Avanzado Profesional en Ciberseguridad Ofensiva.

Desde nuestro buscador analizando los logs de seguridad de Windows podremos encontrar información de cuentas de usuario.




  • Index: Es el «cubo» en el que almacenamos los logs de Windows en este caso.
  • Sourcetype: Es el tipo de dato que almacenamos, en este caso eventos de seguridad de Windows.
  • «EventCode= 4720 Administrators»: Nueva cuenta de usuario creada con privilegios de administrador local.
  • Transaction Security_ID maxspan=180: Busca todos los eventos con el mismo número de identificación, que han sucedido en un tiempo máximo de 180 minutos.
  • Search EventCode=4720 EventCode=4732: Dentro del resultado de la búsqueda anterior filtra únicamente los eventos con código 4720 y 4732.
  • Table: Crea una tabla de datos con los campos indicados.

8. Monitorizar nuestra web


Con Splunk también podemos crearnos un panel de control de nuestra web, y así poder monitorizarla a tiempo real, con la finalidad de ver si la web está en estado de servicio, si está sufriendo un ataque de descubrimiento de directorios, si están intentando acceder desde distintos puntos del planeta, etc.

Para ello necesitamos instalar nuestro agente de Splunk (UF) en el servidor que tenga alojada la web. Después iremos a Splunk Web y realizaremos las busquedas deseadas.




  • index=jms_web.
  • status!=200: Busca todos los resultados cuyo estado sea diferente de 200 (OK).
  • stats count by status: Hace un conteo de los resultados y los agrupa por estado.
  • sort status: Muestra el resultado ordenado por estado.

Ahora vamos a convertir esta búsqueda en un panel con gráficos para que visualmente sea más atractivo y más fácil de manejar.


Seleccionamos «Visualization» y «Format» para elegir el tipo de gráfico que vamos a utilizar. Posteriormente seleccionamos «Save as» > «Dasboard Panel» y el resultado será el siguiente:


La imagen tiene un atributo ALT vacío; su nombre de archivo es image-6.png
Top Error Codes

Ni qué decir tiene que tanto los colores de las gráficas como el tema oscuro que en este caso hemos elegido, pueden ser cambiados y personalizados al gusto de cada uno.


9. Control del consumo de recursos de nuestra infraestructura


Otro uso muy interesante que podemos dar a Splunk, es el llevar a cabo la monitorización del estado de nuestra infraestructura y crear alertas por si algo que no va bien.

Por ejemplo, podemos monitorizar el consumo de memoria RAM, o de los discos de almacenamiento. Y en el caso que estimemos oportuno podemos crear alertas para que nos salte un aviso, o nos llegue un correo electrónico con la información de que estamos a un 80% de capacidad del disco, o de que se está consumiendo más del 90% de la memoria RAM.

Para ello necesitamos instalar el agente de Splunk (UF) en los servidores a monitorizar, e indicar de qué contadores queremos recoger logs. Una vez hecho esto solo tenemos que ir a Splunk Web y realizar las búsquedas oportunas, o crear paneles (dashboards) con gráficos y hacer más visuales los datos en nuestro centro de vigilancia.




En las imágenes anteriores podemos ver un dashboard con las métricas recogidas del perfmon de Windows.


En la primera imagen se muestra una media de los MB disponibles de memoria, con el pico más alto y la disponibilidad actual en el momento de la medición, junto con su última actualización. En la segunda imagen podemos observar lo mismo que en la primera, pero con el añadido del uso del procesador.

Como hemos podido ver, ésta es una manera muy rápida y cómoda de tener nuestro entorno bajo control, pudiendo añadir los equipos más críticos de nuestra organización para realizar un control de ellos en tiempo real, y adelantarnos a posibles problemas de disponibilidad o de posibles ataques, ya que si observamos que se está haciendo un uso muy elevado y repentino de recursos (memoria, procesador), nos podemos encontrar ante un posible malware que esté trabajando en segundo plano realizando acciones malignas, como es el caso de los actuales y famosos ransomware.


10. Conclusiones generales


En este artículo hemos visto superficialmente de lo que es capaz de realizar Splunk, y hemos podido observar el potencial que tiene esta aplicación, la cual es un referente en Centros de Operaciones de Seguridad (SOC) a nivel mundial.

Splunk es una herramienta muy completa que nos permite estar al tanto de todo lo que ocurre en nuestra organización a tiempo real, y que nos otorga la capacidad de poder tomar medidas rápidamente en caso de incidente o comportamiento malicioso, algo vital en casos de infección de malware tipo ransomware.

Además, se caracteriza por su versatilidad y capacidad de ampliación de forma fácil y segura. Es compatible con todos los sistemas y arquitecturas, incluyendo a sistemas Android, por lo que podríamos monitorizar los teléfonos de nuestra empresa hasta el punto de su geolocalizarlos.

Para finalizar decir que otros usos que podemos darle a Splunk, más enfocados a la ciberseguridad, es la monitorización de actividad en redes TOR, detección de ransomware (como el famoso «wannacry»), entre otros muchos de gran interés.

Hasta la próxima!!! Os deseamos buen splunking 😉

No puedes copiar el contenido