
WIP Marco de post-explotación adaptado para hipervisores.
Reave es un framework de post-explotación diseñado para puntos finales de hipervisores, escrito en Python. Actualmente se encuentra en desarrollo.
Reave sigue un modelo tradicional de listener/agente, donde el usuario puede configurar múltiples listeners que aceptan cualquier número de agentes. El framework actualmente proporciona un agente Python y soporta los siguientes objetivos:
El objetivo de Reave es proporcionar un framework que se pueda aprovechar para automatizar y acelerar campañas de pruebas de penetración en entornos que están fuertemente virtualizados, o donde la infraestructura objetivo/crítica está alojada en plataformas de hipervisor como ESXi y Proxmox.
En el servidor, simplemente ejecuta app.py:
python3 reave/app.py
En el punto final de destino, sube el agente Python, ubicado en agents/client.py, y ejecútalo. Las siguientes opciones de configuración están disponibles:
_LISTENER_HOST Nombre de host/IP del servidor_LISTENER_PORTS Lista de puertos a los que el agente intentará conectarse en modo round-robin_LISTENER_SECRET Clave de asociación del listener al que se vinculará el agente_AGENT_LOGLEVEL Nivel de depuración de registroBEACON_INTERVAL Intervalo en el que el agente enviará señalesBEACON_JITTER Factor de fluctuación aleatoria añadido al intervalo de señalesSTART_TIME Hora del día en que el agente comenzará a enviar señalesEND_TIME Hora del día en que el agente dejará de enviar señalesSOCKET_TIMEOUT Tiempo de espera para el socket del agentePID_FILE Archivo PID que el agente utiliza para asegurarse de que ya no se está ejecutando en el punto finalTRANSFER_BLOCK_SIZE Tamaño de bloque que el agente usará al transferir archivos al servidorCuando un agente se haya asociado exitosamente a un listener, puedes verlo ingresando al contexto agent y ejecutando el comando list (o ls). Para ver toda la información que Reave ha enumerado automáticamente desde el punto final, ejecuta el comando info <uuid del agente>. Por ejemplo, si tu agente tiene un uuid de 18ab, usarías info 18ab.
Para obtener un archivo arbitrario del agente, puedes ejecutar get 18ab /mi/archivo/prueba.
Para abrir un shell interactivo en el punto final, puedes ejecutar interact 18ab.
La línea de comandos tiene tres contextos distintos desde los cuales puedes controlar operaciones separadas:
Para ingresar al contexto de listener, usa el comando listener. Desde allí, varias opciones están disponibles:
list Listar todos los listeners activos
add <host> <port> <secret> Agregar un listener
remove <uuid> Eliminar un listener
Sal de este contexto usando el comando back
Para ingresar al contexto de agente, usa el comando agent. Desde allí, varias opciones están disponibles:
list Listar todos los agentes (alias: ls)
info <uuid> Mostrar información del agente, incluyendo cualquier dato auto-enumerado
interact <uuid> Sesión de terminal interactiva con el agente.
'quit' para salir.
get <uuid> <file> Transferir archivo desde el punto final del agente al directorio de descargas
Sal de este contexto usando el comando back
Para ingresar al contexto payload, usa el comando payload. Desde allí, varias opciones están disponibles:
list Listar todas las cargas cargadas
info <name> Obtener información sobre una carga
use <name> Seleccionar carga para usar
set <option> <value> Establecer opción de carga a un valor
run agent <uuid> Ejecutar la carga en un agente individual
Sal de este contexto usando el comando back
Reave también soporta definir en qué formato deseas ver los datos de enumeración. Para cambiar a un formato particular:
format json Mostrar información en formato tabla.
format table Mostrar información en formato JSON.