Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
Medusa — Plattformübergreifender C2-Agent für Mythic mit dynamischem Funktionsladen, SOCKS5-Proxy, Dateioperationen, Shellcode-Injektion sowie Post-Exploitation-Modulen für macOS/Windows. | Kitploit
Tools/GitHubGitHub/mythicagents/medusa
Penetrationstest-FrameworksPrivilege EscalationExploit-FrameworksLaterale BewegungShellcodePost-ExploitationCommand and ControlRed TeamingRemote-Access-ToolShellcode-GenerierungPayload-Entwicklung
20852vor 21 TagenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
GitHub
mythicagents/medusa

Medusa

Plattformübergreifender C2-Agent für Mythic mit dynamischem Funktionsladen, SOCKS5-Proxy, Dateioperationen, Shellcode-Injektion sowie Post-Exploitation-Modulen für macOS/Windows.

Repository anzeigen

Medusa Logo

Medusa

Medusa ist ein plattformübergreifender Agent, der sowohl mit Python 3.8 als auch mit Python 2.7 kompatibel ist.

Installation

Zur Installation von Medusa benötigst du Mythic v3, das auf einem entfernten Computer installiert ist. Installationsanweisungen für Mythic findest du auf der Mythic-Projektseite.

Führe vom Mythic-Installationsverzeichnis aus den folgenden Befehl aus:

./mythic-cli install github https://github.com/MythicAgents/Medusa.git

Starte Mythic nach der Installation neu, um einen neuen Agenten zu erstellen.

RabbitMQ-Konfigurationshinweise

Die Datei Payload_Type/medusa/rabbitmq_config.json ist eine Vorlage und muss deiner Mythic-Umgebung entsprechen.

  • Setze rabbitmq_password auf deinen Mythic-RABBITMQ_PASSWORD-Wert (in der Regel aus der Mythic-.env).
  • Setze rabbitmq_host auf deinen RabbitMQ-Host/Containernamen (häufig mythic_rabbitmq bei docker-compose-Setups oder 127.0.0.1 für lokale Bindungen).
  • Setze mythic_server_host auf deinen Mythic-Server-Host/Containernamen (häufig mythic_server bei docker-compose-Setups oder 127.0.0.1 für lokale Bindungen).

Bemerkenswerte Funktionen

  • Dynamisches Laden/Entladen von Agentenfunktionen, um die Offenlegung der Agentenfähigkeiten auf der Festplatte zu begrenzen.
  • Laden von Python-Modulen in den Speicher zur Verwendung in benutzerdefinierten Skripten.
  • Plattformübergreifender SOCKS5-Proxy
  • macOS-Zwischenablage-Leser, Screenshot-Ersteller und TCC-Datenbank-Parsing
  • Dateibrowser-Kompatibilität mit Hoch-/Herunterladen
  • Eval() von dynamischem Python-Code
  • Kompatibilität mit Basic-Authentication-Proxys

Kurzreferenz für das Befehle-Handbuch

Der Basisagent und die enthaltenen Befehle verwenden ausschließlich in Python integrierte Bibliotheken, sodass keine zusätzlichen Pakete benötigt werden. Die Agenten führen die Befehle in Threads aus, sodass länger laufende Uploads oder Downloads den Hauptagenten nicht blockieren.

Allgemeine Befehle

macOS-Befehle

Windows-Befehle

Python-Versionen

Beide Versionen des Medusa-Agenten verwenden eine AES256-HMAC-Implementierung, die mit integrierten Bibliotheken geschrieben wurde (angepasst von hier). Dadurch entfällt die Notwendigkeit zusätzlicher Abhängigkeiten über eine Standard-Python-Installation hinaus. Der Agent sollte daher auf Windows-, Linux- und macOS-Hosts funktionieren. Erwähnenswert ist, dass diese Crypto-Implementierung bei der Verarbeitung großer Dateien (Screenshots, Downloads usw.) einen gewissen Overhead verursacht, aber das ist praktikabel.

Py2- vs. Py3-Befehle

Im Verzeichnis Payload_Type/Medusa/agent_code findest du base_agent-Dateien mit den Suffixen py2 und py3. Ebenso sind ähnliche Dateierweiterungen auch für einzelne Funktionsdateien zu sehen.

Diese werden vom Skript builder.py gelesen, um zunächst die richtige Basis-Python-Version des Medusa-Agenten auszuwählen. builder.py bindet anschließend Befehle ein, die für die gewählte Python-Version spezifisch sind. Falls ein Befehl nur eine .py-Endung hat, wird diese standardmäßig verwendet, wobei angenommen wird, dass für die Py2- und Py3-Versionen kein alternativer Code erforderlich ist.

Threaded Jobs

Medusa verwendet einfaches Threading für die Auftragsausführung. Bei potenziell lang laufenden Aufträgen kann eine „Stop-Check“-Logik implementiert werden, um auf ein Signal der jobkill-Aufgabe zu reagieren. Dies kann mit einem Codeausschnitt ähnlich dem folgenden umgesetzt werden:

root@kitploit:~
if [task for task in self.taskings if task["task_id"] == task_id][0]["stopped"]:
  # Some job-specific tidy up
  return "Job stopped."

Dieser Handler ist in den Befehlen download, upload, watch_dir und screenshot implementiert.

Zusätzlich kann für einen lang laufenden Auftrag, der kontinuierliche Ausgabe liefern soll, die Funktion sendTaskOutputUpdate – im Basisagenten enthalten – verwendet werden, um Mythic vor Abschluss der Aufgabe zu aktualisieren. Eine Dummy-Funktion, die kontinuierliche Ausgabe liefert und per jobkill beendet werden kann, ist unten zu sehen.

root@kitploit:~
def dummyFunction(self, task_id):
  while(True):
      # Check if we've got a stop signal.
      if [task for task in self.taskings if task["task_id"] == task_id][0]["stopped"]: return "Job stopped."

      # Send output back to Mythic
      self.sendTaskOutputUpdate(task_id, "We're still running")

      time.sleep(10)

Unterstützte C2-Profile

Medusa unterstützt derzeit zwei C2-Profile: http (sowohl mit als auch ohne AES256-HMAC-Verschlüsselung) und azure_blob.

HTTP-Profil

Das HTTP-Profil meldet sich über das grundlegende, nicht-dynamische Profil beim Mythic-Server zurück. GET-Anfragen für Taskings, POST-Anfragen mit Antworten.

Danksagungen

  • Browser-Skripte und Agentencode angepasst von @its_a_feature_ und @djhohnstein.
  • MacC2 und dieser Blogbeitrag von Cedric Owens.
  • EmPyre und dieser Blogbeitrag von Chris Ross.
  • Die Crypto-Meisterleistung hier.
  • Agentensymbol von flaticon.com.
Tool herunterladen
BefehlSyntaxBeschreibung
catcat path/to/fileDateiinhalt lesen und ausgeben.
cdcd [.. dir]Arbeitsverzeichnis wechseln (.., um ein Verzeichnis nach oben zu gehen).
cpcp src_file_or_dir dst_file_or_dirDatei oder Ordner zum Ziel kopieren.
cwdcwdArbeitsverzeichnis ausgeben.
downloaddownload [path]Eine Datei vom Zielsystem herunterladen.
download_bulkdownload_bulk [path1] [path2] ...Mehrere Dateien in einem Auftrag vom Zielsystem herunterladen.
exitexitEinen Callback beenden.
envenvUmgebungsvariablen ausgeben.
eval_codeeval_code [commands]Python-Code ausführen und Ausgabe zurückgeben.
jobkilljobkill [task id]Stoppsignal an einen lang laufenden Auftrag senden.
jobsjobsLang laufende Aufträge auflisten, z. B. Downloads.
list_moduleslist_modules [module_name]Listet im Speicher befindliche Module oder die vollständige Dateiliste für ein bestimmtes Modul auf.
loadload commandEine neue Fähigkeit in einen Agenten laden.
load_moduleload_moduleEin gezipptes Python-Modul in den Speicher laden (angepasst von hier und hier).
load_scriptload_scriptEin Python-Skript über den Agenten laden und ausführen.
lsls [. path]Dateien und Ordner in [path] auflisten oder . für das aktuelle Arbeitsverzeichnis verwenden.
mvmv src_file_or_dir dst_file_or_dirDatei oder Ordner zum Ziel verschieben.
pip_freezepip_freezeInstallierte Pakete auf dem System programmatisch auflisten.
ptypty [/bin/bash] / pty self / pty forkEine interaktive PTY-Sitzung öffnen. Modi: spawn führt ein Programm mit einer PTY aus, self öffnet eine prozessinterne Python-REPL mit Live-Agentenstatus, fork gabelt den Agenten in eine Python-REPL mit gespeichertem Status (nur Linux/macOS).
rmrm file_or_dirDatei oder Ordner löschen.
shellshell [command]Einen Shell-Befehl ausführen, der mittels subprocess.Popen() gestartet wird. Beachte, dass dieser Befehl auf seine Fertigstellung wartet; blockiere deinen Agenten also nicht.
sockssocks start/stop [port]SOCKS5-Proxy über den Medusa-Agenten starten/stoppen.
sleepsleep [seconds] [jitter percentage]Das Callback-Intervall des Agenten in Sekunden festlegen.
unloadunload commandEine vorhandene Fähigkeit aus einem Agenten entfernen.
unload_moduleunload_module module_nameEin zuvor in den Speicher geladenes Python-Modul entladen.
uploaduploadEine Datei an einen entfernten Pfad auf dem Rechner hochladen.
watch_dirwatch_dir path secondsEin Zielverzeichnis in einem festgelegten Intervall auf Änderungen überwachen.
BefehlSyntaxBeschreibung
clipboardclipboardInhalt der Zwischenablage ausgeben (verwendet die Objective-C-API, wie von Cedric Owens hier beschrieben. Nur macOS, nur Python 2.7).
list_appslist_appsmacOS-Anwendungen auflisten (nur Python 2.7, nur macOS).
list_tcclist_tcc [path]Einträge in der macOS-TCC-Datenbank auflisten (erfordert derzeit Vollzugriff auf die Festplatte und Big Sur).
screenshotscreenshotEinen Screenshot erstellen (verwendet die Objective-C-API, nur macOS, nur Python 2.7).
spawn_jxaspawn_jxaEinen osascript-Prozess starten und JavaScript-Inhalt übergeben.
vscode_list_recentvscode_list_recent [state_db]Listet kürzlich mit VSCode geöffnete Dateien und Ordner auf.
vscode_open_editsvscode_open_edits [backup_dir_path]Listet nicht gespeicherte Änderungen an Dateien in VSCode auf.
vscode_watch_editsvscode_watch_edits [path to remote dir] [poll_interval]Das VSCode-Backup-Verzeichnis in einem festgelegten Intervall auf nicht gespeicherte Änderungen abfragen.
BefehlSyntaxBeschreibung
shinjectshinjectShellcode mithilfe von CreateRemoteThread in eine Ziel-PID injizieren (nur Windows – angepasst von hier).
load_dllload_dll dll_path dll_exportEine auf der Festplatte befindliche DLL laden und eine exportierte Funktion ausführen (HINWEIS: Diese DLL muss nach Abschluss einen int-Wert zurückgeben; eine mit msfvenom erstellte DLL würde beispielsweise deinen Agenten nach Abschluss beenden).
list_dllslist_dlls [pid]Prozessspeicher (PEB) des lokalen oder Zielprozesses lesen, um eine Liste der geladenen DLLs abzurufen (nur Python 3).
pspsEingeschränkte Prozessinformationen abrufen, z. B. PID, Prozessnamen, Architektur und Binärpfade (nur Python 3).
ps_fullps_fullVollständige Prozessinformationen abrufen, einschließlich PPID, Integritätsstufe und Befehlszeile (nur Python 3).
killkillEinen Prozess anhand der Prozess-ID beenden (nur Python 3).