Splunk Universal Forwarder (RCE)
Splunk es una plataforma de análisis de logs muy común en entornos corporativos. Su superficie de ataque más jugosa no es una vulnerabilidad de código, sino una funcionalidad de diseño: Splunk permite desplegar aplicaciones personalizadas que ejecutan scripts (Python, PowerShell, Batch o Bash) de forma periódica. Si conseguimos subir una app propia (con credenciales de administrador, a menudo las de fábrica admin:changeme), obtenemos ejecución de comandos en el servidor y, a través del Universal Forwarder, en cada endpoint que tenga el agente instalado. Eso convierte un Splunk comprometido en un vector de despliegue masivo.
Mecanismo
Una aplicación de Splunk es simplemente una estructura de carpetas bin/ (los scripts) y default/ (el fichero inputs.conf, que le dice a Splunk qué ejecutar y cada cuánto). Se prepara la reverse shell en bin/ y se declara como scripted input:
[script://./bin/rev.py]
disabled = 0
interval = 10
sourcetype = shellSe empaqueta todo en un tarball con extensión .spl y se sube desde Manage Apps -> Install app from file:
tar -cvzf updater.tar.gz splunk_shell/En cuanto Splunk instala la app, el scripted input corre el script cada interval segundos y devuelve la shell al listener. Como el objetivo suele ser Windows, la carga habitual es un .bat que lanza un one-liner de PowerShell en -w hidden.
Requisitos
Se necesita acceso autenticado a la interfaz de gestión (por defecto en el puerto 8000) con permisos para instalar aplicaciones, algo que casi siempre implica el rol de administrador. Las credenciales por defecto sin cambiar son el camino más frecuente. El Universal Forwarder escucha en el 8089 y, si el servidor de despliegue está comprometido, permite empujar la app maliciosa a todos los agentes de golpe.
Cómo detectarlo
El indicador principal es la aparición de una aplicación nueva en $SPLUNK_HOME/etc/apps que contenga scripted inputs, sobre todo si el script es una reverse shell o invoca powershell/cmd. A nivel de proceso, delata el ataque ver a splunkd engendrando intérpretes de comandos, y a nivel de red, conexiones salientes desde el host de Splunk hacia una IP externa en intervalos regulares (el interval del input).
Defensa. Cambiar las credenciales por defecto, restringir quién puede instalar aplicaciones, ejecutar Splunk y sus forwarders con cuentas de mínimos privilegios, segmentar en red el servidor de despliegue y revisar periódicamente las apps instaladas y sus inputs.conf. Relacionado con inyección de comandos, RCE en Jenkins y reutilización de credenciales.