
WIP Cadre de post-exploitation adapté aux hyperviseurs.
Reave est un framework de post‑exploitation conçu pour les endpoints d'hyperviseurs, écrit en Python. Il est actuellement en développement.
Reave suit un modèle classique écouteur/agent, où l'utilisateur peut configurer plusieurs écouteurs qui acceptent un nombre quelconque d'agents. Le framework fournit actuellement un agent Python et prend en charge les objectifs suivants :
L'objectif de Reave est de fournir un cadre que l'on peut exploiter pour automatiser et accélérer les campagnes de test d'intrusion dans des environnements fortement virtualisés ou où l'infrastructure cible/critique est hébergée sur des plateformes d'hyperviseurs telles qu'ESXi et Proxmox.
Sur le serveur, exécutez simplement app.py :
python3 reave/app.py
Sur l'endpoint cible, téléchargez l'agent Python situé dans agents/client.py et exécutez-le. Les options de configuration suivantes sont disponibles :
_LISTENER_HOST Nom d'hôte/IP du serveur_LISTENER_PORTS Liste des ports auxquels l'agent tentera de se connecter en tourniquet_LISTENER_SECRET Clé d'association de l'écouteur auquel l'agent se liera_AGENT_LOGLEVEL Niveau de débogageBEACON_INTERVAL Intervalle auquel l'agent émet des signauxBEACON_JITTER Facteur de gigue aléatoire ajouté à l'intervalle de signalSTART_TIME Heure de la journée à laquelle l'agent commence à émettre des signauxEND_TIME Heure de la journée à laquelle l'agent cesse d'émettre des signauxSOCKET_TIMEOUT Délai d'attente du socket de l'agentPID_FILE Fichier PID que l'agent utilise pour s'assurer qu'il n'est pas déjà en cours d'exécution sur l'endpointTRANSFER_BLOCK_SIZE Taille de bloc que l'agent utilisera lors du transfert de fichiers vers le serveurLorsqu'un agent s'est associé avec succès à un écouteur, vous pouvez le visualiser en entrant dans le contexte agent et en exécutant la commande list (ou ls). Pour afficher toutes les informations que Reave a automatiquement énumérées à partir de l'endpoint, utilisez la commande info <uuid de l'agent>. Par exemple, si votre agent a un uuid 18ab, vous utiliserez info 18ab.
Pour récupérer un fichier arbitraire depuis l'agent, vous pouvez exécuter get 18ab /my/test/file.
Pour lancer un shell interactif sur l'endpoint, vous pouvez exécuter interact 18ab.
La ligne de commande comporte trois contextes distincts à partir desquels vous pouvez contrôler des opérations séparées :
Pour entrer dans le contexte écouteur, utilisez la commande listener. Plusieurs options sont alors disponibles :
list Liste tous les écouteurs actifs
add <host> <port> <secret> Ajoute un écouteur
remove <uuid> Supprime un écouteur
Pour quitter ce contexte, utilisez la commande back.
Pour entrer dans le contexte agent, utilisez la commande agent. Plusieurs options sont alors disponibles :
list Liste tous les agents (alias : ls)
info <uuid> Affiche les informations de l'agent, y compris les données énumérées automatiquement
interact <uuid> Session terminale interactive avec l'agent.
'quit' pour quitter.
get <uuid> <file> Transfère un fichier depuis l'endpoint de l'agent vers le répertoire de téléchargements
Pour quitter ce contexte, utilisez la commande back.
Pour entrer dans le contexte payload, utilisez la commande payload. Plusieurs options sont alors disponibles :
list Liste toutes les charges utiles chargées
info <name> Affiche les informations sur une charge utile
use <name> Sélectionne une charge utile à utiliser
set <option> <value> Définit l'option de la charge utile à une valeur
run agent <uuid> Exécute la charge utile sur un agent individuel
Pour quitter ce contexte, utilisez la commande back.
Reave permet également de définir le format d'affichage des données d'énumération. Pour passer à un format particulier :
format json Affiche les informations sous forme de tableau.
format table Affiche les informations au format JSON.