
Framework pós-exploração WIP adaptado para hipervisores.
Reave é um framework de pós-exploração adaptado para endpoints de hipervisores, escrito em Python. Atualmente está em desenvolvimento.
Reave segue um modelo tradicional de listener/agente, onde o utilizador pode configurar múltiplos listeners que aceitam qualquer número de agentes. O framework atualmente fornece um agente Python e suporta os seguintes objetivos:
O objetivo do Reave é fornecer um framework que se possa aproveitar para automatizar e acelerar campanhas de teste de penetração em ambientes que são fortemente virtualizados, ou onde a infraestrutura alvo/crítica está hospedada em plataformas de hipervisores como ESXi e Proxmox.
No servidor, basta executar app.py:
python3 reave/app.py
No endpoint alvo, carregue o agente Python, localizado em agents/client.py, e execute-o. As seguintes opções de configuração estão disponíveis:
_LISTENER_HOST Hostname/IP do servidor_LISTENER_PORTS Lista de portas às quais o agente tentará conectar-se de forma round-robin_LISTENER_SECRET Chave de associação do listener ao qual o agente se ligará_AGENT_LOGLEVEL Nível de registo de depuraçãoBEACON_INTERVAL Intervalo no qual o agente fará beaconBEACON_JITTER Fator de jitter aleatório adicionado ao intervalo de beaconSTART_TIME A que hora do dia o agente começará a fazer beaconEND_TIME A que hora do dia o agente parará de fazer beaconSOCKET_TIMEOUT Timeout para o socket do agentePID_FILE Ficheiro PID que o agente usa para garantir que não está já em execução no endpointTRANSFER_BLOCK_SIZE Tamanho do bloco que o agente usará ao transferir ficheiros para o servidorQuando um agente se associar com sucesso a um listener, pode vê-lo entrando no contexto agent e emitindo o comando list (ou ls). Para visualizar todas as informações que o Reave enumerou automaticamente do endpoint, emita o comando info <uuid do agente>. Por exemplo, se o seu agente tiver um uuid de 18ab, usaria info 18ab.
Para obter um ficheiro arbitrário do agente, pode emitir get 18ab /my/test/file.
Para gerar uma shell interativa no endpoint, pode emitir interact 18ab.
A linha de comandos tem três contextos distintos a partir dos quais pode controlar operações separadas:
Para entrar no contexto listener, use o comando listener. A partir daí, várias opções estão disponíveis:
list Listar todos os listeners ativos
add <host> <port> <secret> Adicionar um listener
remove <uuid> Remover um listener
Saia deste contexto usando o comando back
Para entrar no contexto agente, use o comando agent. A partir daí, várias opções estão disponíveis:
list Listar todos os agentes (alias: ls)
info <uuid> Listar informações do agente, incluindo quaisquer dados auto-enumerados
interact <uuid> Sessão de terminal interativa com o agente.
'quit' para sair.
get <uuid> <file> Transferir ficheiro do endpoint do agente para o diretório de downloads
Saia deste contexto usando o comando back
Para entrar no contexto payload, use o comando payload. A partir daí, várias opções estão disponíveis:
list Listar todos os payloads carregados
info <name> Obter informações sobre um payload
use <name> Selecionar payload para uso
set <option> <value> Definir opção do payload para o valor
run agent <uuid> Executar o payload num agente individual
Saia deste contexto usando o comando back
O Reave também suporta a definição do formato no qual deseja visualizar os dados de enumeração. Para alternar para um formato específico:
format json Saída de informações no formato de tabela.
format table Saída de informações no formato JSON.