
WIP Framework post-sfruttamento adattato per hypervisori.
Reave è un framework post-sfruttamento su misura per endpoint di hypervisor, scritto in Python. Attualmente è in fase di sviluppo.
Reave segue un modello tradizionale listener/agente, dove l'utente può configurare più listener che accettano un numero qualsiasi di agenti. Il framework fornisce attualmente un agente Python e supporta i seguenti obiettivi:
L'obiettivo di Reave è fornire un framework che si possa sfruttare per automatizzare e velocizzare campagne di penetration testing in ambienti fortemente virtualizzati o dove l'infrastruttura target/critica è ospitata su piattaforme hypervisor come ESXi e Proxmox.
Sul server, basta eseguire app.py:
python3 reave/app.py
Sull'endpoint target, carica l'agente Python situato in agents/client.py ed eseguilo. Sono disponibili le seguenti opzioni di configurazione:
_LISTENER_HOST Hostname/IP del server_LISTENER_PORTS Elenco di porte a cui l'agente tenterà di connettersi in round-robin_LISTENER_SECRET Chiave di associazione del listener a cui l'agente si legherà_AGENT_LOGLEVEL Livello di debug del logBEACON_INTERVAL Intervallo su cui l'agente invierà il beaconBEACON_JITTER Fattore di jitter casuale aggiunto all'intervallo del beaconSTART_TIME Ora del giorno in cui l'agente inizierà a inviare beaconEND_TIME Ora del giorno in cui l'agente smetterà di inviare beaconSOCKET_TIMEOUT Timeout per il socket dell'agentePID_FILE File PID che l'agente utilizza per assicurarsi di non essere già in esecuzione sull'endpointTRANSFER_BLOCK_SIZE Dimensione del blocco che l'agente utilizzerà per trasferire file al serverQuando un agente si è associato con successo a un listener, puoi visualizzarlo entrando nel contesto agent e digitando il comando list (o ls). Per visualizzare tutte le informazioni che Reave ha enumerato automaticamente dall'endpoint, digita il comando info <uuid agente>. Ad esempio, se il tuo agente ha un uuid di 18ab, userai info 18ab.
Per prelevare un file arbitrario dall'agente, puoi digitare get 18ab /mio/file/di/test.
Per avviare una shell interattiva sull'endpoint, puoi digitare interact 18ab.
La riga di comando ha tre contesti distinti da cui puoi controllare operazioni separate:
Per entrare nel contesto listener, usa il comando listener. Da lì sono disponibili diverse opzioni:
list Elenca tutti i listener attivi
add <host> <port> <secret> Aggiungi un listener
remove <uuid> Rimuovi un listener
Esci da questo contesto usando il comando back
Per entrare nel contesto agente, usa il comando agent. Da lì sono disponibili diverse opzioni:
list Elenca tutti gli agenti (alias: ls)
info <uuid> Mostra le informazioni dell'agente, inclusi eventuali dati enumerati automaticamente
interact <uuid> Sessione terminale interattiva con l'agente.
'quit' per uscire.
get <uuid> <file> Trasferisci un file dall'endpoint agente alla directory downloads
Esci da questo contesto usando il comando back
Per entrare nel contesto payload, usa il comando payload. Da lì sono disponibili diverse opzioni:
list Elenca tutti i payload caricati
info <name> Ottieni informazioni su un payload
use <name> Seleziona il payload da utilizzare
set <option> <value> Imposta l'opzione del payload a un valore
run agent <uuid> Esegui il payload su un singolo agente
Esci da questo contesto usando il comando back
Reave supporta anche la definizione del formato con cui visualizzare i dati di enumerazione. Per passare a un formato particolare:
format json Visualizza le informazioni in formato tabella.
format table Visualizza le informazioni in formato JSON.