
WIP Post-Exploitation-Framework, maßgeschneidert für Hypervisoren.
Reave ist ein Post-Exploitation-Framework, das speziell für Hypervisor-Endpunkte entwickelt wurde und in Python geschrieben ist. Es befindet sich derzeit in der Entwicklung.
Reave folgt einem traditionellen Listener/Agent-Modell, bei dem der Benutzer mehrere Listener einrichten kann, die beliebig viele Agenten akzeptieren. Das Framework bietet derzeit einen Python-Agenten und unterstützt die folgenden Ziele:
Das Ziel von Reave ist es, ein Framework bereitzustellen, das man nutzen kann, um Penetrationstest-Kampagnen in Umgebungen zu automatisieren und zu beschleunigen, die entweder stark virtualisiert sind oder in denen Ziel-/kritische Infrastruktur auf Hypervisor-Plattformen wie ESXi und Proxmox gehostet wird.
Auf dem Server einfach app.py ausführen:
python3 reave/app.py
Auf dem Zielendpunkt den Python-Agenten hochladen, der sich unter agents/client.py befindet, und ausführen. Die folgenden Konfigurationsoptionen stehen zur Verfügung:
_LISTENER_HOST Hostname/IP des Servers_LISTENER_PORTS Liste von Ports, zu denen der Agent im Round-Robin-Verfahren eine Verbindung versucht_LISTENER_SECRET Zuordnungsschlüssel des Listeners, an den sich der Agent bindet_AGENT_LOGLEVEL Debug-Logging-StufeBEACON_INTERVAL Intervall, in dem der Agent sich meldetBEACON_JITTER Zufälliger Jitter-Faktor, der zum Beacon-Intervall hinzugefügt wirdSTART_TIME Tageszeit, zu der der Agent mit dem Beaconing beginntEND_TIME Tageszeit, zu der der Agent mit dem Beaconing aufhörtSOCKET_TIMEOUT Timeout für den Socket des AgentenPID_FILE PID-Datei, die der Agent verwendet, um sicherzustellen, dass er nicht bereits auf dem Endpunkt läuftTRANSFER_BLOCK_SIZE Blockgröße, die der Agent beim Übertragen von Dateien an den Server verwendetWenn ein Agent erfolgreich einem Listener zugeordnet wurde, können Sie ihn anzeigen, indem Sie in den agent-Kontext wechseln und den Befehl list (oder ls) ausführen. Um alle Informationen anzuzeigen, die Reave automatisch vom Endpunkt gesammelt hat, geben Sie den Befehl info <agent-uuid> ein. Wenn Ihr Agent beispielsweise eine UUID von 18ab hat, würden Sie info 18ab verwenden.
Um eine beliebige Datei vom Agenten abzurufen, können Sie get 18ab /my/test/file eingeben.
Um eine interaktive Shell auf dem Endpunkt zu öffnen, könnten Sie interact 18ab eingeben.
Die Befehlszeile hat drei unterschiedliche Kontexte, von denen aus Sie separate Vorgänge steuern können:
Um den Listener-Kontext aufzurufen, verwenden Sie den Befehl listener. Dort stehen mehrere Optionen zur Verfügung:
list Alle aktiven Listener auflisten
add <host> <port> <secret> Einen Listener hinzufügen
remove <uuid> Einen Listener entfernen
Verlassen Sie diesen Kontext mit dem Befehl back
Um den Agent-Kontext aufzurufen, verwenden Sie den Befehl agent. Dort stehen mehrere Optionen zur Verfügung:
list Alle Agenten auflisten (Alias: ls)
info <uuid> Agenten-Informationen anzeigen, einschließlich aller automatisch gesammelten Daten
interact <uuid> Interaktive Terminalsitzung mit dem Agenten.
'quit' zum Beenden.
get <uuid> <file> Datei vom Agenten-Endpunkt in das Download-Verzeichnis übertragen
Verlassen Sie diesen Kontext mit dem Befehl back
Um den payload-Kontext aufzurufen, verwenden Sie den Befehl payload. Dort stehen mehrere Optionen zur Verfügung:
list Alle geladenen Payloads auflisten
info <name> Informationen über einen Payload abrufen
use <name> Payload zur Verwendung auswählen
set <option> <value> Payload-Option auf Wert setzen
run agent <uuid> Payload auf einem einzelnen Agenten ausführen
Verlassen Sie diesen Kontext mit dem Befehl back
Reave unterstützt auch die Definition des Formats, in dem Sie Aufzählungsdaten anzeigen möchten. Um zu einem bestimmten Format zu wechseln:
format json Informationen im Tabellenformat ausgeben.
format table Informationen im JSON-Format ausgeben.