💣Splunk - Ataques
Como se explicó en la sección anterior, podemos obtener ejecución remota de código en Splunk mediante la creación de una aplicación personalizada para ejecutar scripts de Python, Batch, Bash o PowerShell. A partir del análisis de detección de Nmap, notamos que nuestro objetivo es un servidor Windows. Dado que Splunk viene con Python instalado, podemos crear una aplicación Splunk personalizada que nos brinde ejecución remota de código mediante Python o un script de PowerShell.
Abuso de la funcionalidad incorporada
Podemos usar este paquete Splunk para ayudarnos. El directorio bin
de este repositorio tiene ejemplos para Python y PowerShell . Veamos esto paso a paso.
Para lograr esto, primero debemos crear una aplicación Splunk personalizada utilizando la siguiente estructura de directorio.
El directorio bin
contendrá todos los scripts que deseamos ejecutar (en este caso, un shell inverso de PowerShell) y el directorio predeterminado tendrá nuestro archivo inputs.conf
. Nuestro reverse shell será un PowerShell de una sola línea:
El archivo inputs.conf le indica a Splunk qué script debe ejecutar y cualquier otra condición. Aquí configuramos la aplicación como habilitada y le indicamos a Splunk que ejecute el script cada 10 segundos. El intervalo siempre se expresa en segundos y la entrada (script) solo se ejecutará si esta configuración está presente.
Necesitamos el archivo .bat, que se ejecutará cuando se implemente la aplicación y ejecutará la línea única de PowerShell.
Una vez creados los archivos, podemos crear un tarball o un archivo .spl
:
El siguiente paso es elegir Install app from file
y cargar la aplicación:
Antes de cargar la aplicación personalizada maliciosa, iniciamos un listener usando Netcat o socat .
En la página Upload app
, haz clic en explorar, elija el archivo .tar que creamos anteriormente y haz clic en Upload
.
Tan pronto como cargamos la aplicación, se recibe un reverse shell ya que el estado de la aplicación cambiará automáticamente a Enabled
.
En este caso, obtuvimos un shell como NT AUTHORTY\SYSTEM
. Si se tratara de una evaluación del mundo real, podríamos proceder a enumerar el destino en busca de credenciales en el registro, la memoria o almacenadas en otro lugar del sistema de archivos para usarlas en el movimiento lateral dentro de la red. Si este fuera nuestro punto de apoyo inicial en el entorno del dominio, podríamos usar este acceso para comenzar a enumerar el dominio de Active Directory.
Si estuviéramos tratando con un host Linux, tendríamos que editar el script de Python rev.py
antes de crear el archivo tar y cargar la aplicación maliciosa personalizada. El resto del proceso sería el mismo y obtendríamos una conexión de shell inversa en nuestro receptor Netcat y estaríamos listos para la acción.
Si el host Splunk comprometido es un servidor de implementación, probablemente será posible lograr RCE en cualquier host que tenga instalados Universal Forwarders. Para enviar un reverse shell a otros hosts, la aplicación debe ubicarse en el directorio $SPLUNK_HOME/etc/deployment-apps
del host comprometido. En un entorno con uso intensivo de Windows, necesitaremos crear una aplicación utilizando un shell inverso de PowerShell, ya que los Universal Forwarders no se instalan con Python como el servidor Splunk.
Caso práctico
Ataca el objetivo de Splunk y obtén la ejecución remota del código. Envía el contenido del archivo flag.txt en el directorio c:\loot.
Última actualización