Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
Medusa — Agente C2 multipiattaforma per Mythic con caricamento dinamico delle funzioni, proxy SOCKS5, operazioni sui file, iniezione di shellcode e moduli di post-esplorazione per macOS/Windows. | Kitploit
Strumenti/GitHubGitHub/mythicagents/medusa
Frameworks per Penetration TestingEscalation di PrivilegiFramework di ExploitMovimento LateraleShellcodePost-ExploitCommand and ControlRed TeamingStrumento di Accesso RemotoGenerazione di ShellcodeSviluppo Payload
2085222 giorni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
GitHub
mythicagents/medusa

Medusa

Agente C2 multipiattaforma per Mythic con caricamento dinamico delle funzioni, proxy SOCKS5, operazioni sui file, iniezione di shellcode e moduli di post-esplorazione per macOS/Windows.

Vedi Repository

Medusa Logo

Medusa

Medusa è un agente cross-platform compatibile sia con Python 3.8 che con Python 2.7.

Installazione

Per installare Medusa, avrai bisogno di Mythic v3 installato su un computer remoto. Puoi trovare le istruzioni di installazione per Mythic nella pagina del progetto Mythic.

Dalla directory principale di installazione di Mythic, esegui il comando:

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

Una volta installato, riavvia Mythic per creare un nuovo agente.

Note di Configurazione RabbitMQ

Il file Payload_Type/medusa/rabbitmq_config.json è un template e deve corrispondere al tuo ambiente Mythic.

  • Imposta rabbitmq_password sul valore del tuo Mythic RABBITMQ_PASSWORD (solitamente dal file .env di Mythic).
  • Imposta rabbitmq_host sul nome dell'host/container RabbitMQ (spesso mythic_rabbitmq nelle configurazioni docker-compose, oppure 127.0.0.1 per binding locali).
  • Imposta mythic_server_host sul nome dell'host/container del server Mythic (spesso mythic_server nelle configurazioni docker-compose, oppure 127.0.0.1 per binding locali).

Caratteristiche Principali

  • Caricamento/scaricamento dinamico delle funzioni dell'agente per limitare l'esposizione delle capacità dell'agente su disco.
  • Caricamento di moduli Python in memoria per l'uso in script personalizzati.
  • Proxy SOCKS5 cross-platform
  • Lettore degli appunti macOS, cattura screenshot e parsing del database TCC
  • Compatibilità con il file browser per upload/download
  • Eval() di codice Python dinamico
  • Compatibilità con proxy ad autenticazione di base (Basic Authentication)

Riferimento Rapido del Manuale dei Comandi

L'agente base e i comandi inclusi utilizzano tutti librerie Python integrate, quindi non richiedono pacchetti aggiuntivi per funzionare. Gli agenti eseguono i comandi in thread, quindi upload o download di lunga durata non bloccheranno l'agente principale.

Comandi Generali

Comandi macOS

Comandi Windows

Versioni di Python

Entrambe le versioni dell'agente Medusa utilizzano un'implementazione AES256 HMAC scritta con librerie integrate (adattata da qui), eliminando la necessità di dipendenze aggiuntive oltre a un'installazione Python standard. L'agente dovrebbe quindi funzionare su host Windows, Linux e macOS. Vale la pena menzionare che questa implementazione crittografica introduce un certo overhead nella gestione di file di grandi dimensioni (screenshot, download, ecc.) ma è comunque utilizzabile.

Comandi Py2 vs Py3

All'interno della directory Payload_Type/Medusa/agent_code, vedrai file base_agent con suffissi py2 e py3. Allo stesso modo, estensioni simili si possono notare anche per i singoli file di funzione.

Questi vengono letti dallo script builder.py per selezionare prima la giusta versione Python di base dell'agente Medusa. builder.py includerà poi i comandi specifici per la versione Python scelta. Nel caso in cui un comando abbia solo estensione .py, questo verrà usato come default, presupponendo che non sia necessario alcun codice alternativo tra le versioni Py2 e Py3.

Job Threaded

Medusa usa il threading di base per l'esecuzione dei job. Dove i job potenzialmente durano a lungo, possono essere implementati con uno 'stop check' per rispondere a un segnale dal task jobkill. Questo può essere implementato con uno snippet di codice simile a quello mostrato di seguito:

root@kitploit:~
if [task for task in self.taskings if task["task_id"] == task_id][0]["stopped"]:
  # Alcune operazioni di pulizia specifiche del job
  return "Job stopped."

Questo handler può essere visto implementato nei comandi download, upload, watch_dir e screenshot.

Inoltre, se ci si aspetta che il job di lunga durata fornisca output continuo, la funzione sendTaskOutputUpdate - inclusa nell'agente base - può essere usata per aggiornare Mythic prima del completamento del task. Una funzione fittizia che fornisce output continuo e che può essere terminata con jobkill è visibile di seguito.

root@kitploit:~
def dummyFunction(self, task_id):
  while(True):
      # Controlla se abbiamo ricevuto un segnale di stop.
      if [task for task in self.taskings if task["task_id"] == task_id][0]["stopped"]: return "Job stopped."

      # Invia l'output di nuovo a Mythic
      self.sendTaskOutputUpdate(task_id, "We're still running")

      time.sleep(10)

Profili C2 Supportati

Medusa supporta attualmente due profili C2: http (sia con che senza crittografia AES256 HMAC) e azure_blob.

Profilo HTTP

Il profilo HTTP effettua il callback al server Mythic tramite il profilo base non dinamico. Richieste GET per i task, richieste POST con le risposte.

Ringraziamenti

  • Script del browser e codice dell'agente adattati da @its_a_feature_ e @djhohnstein.
  • MacC2 e questo post del blog di Cedric Owens
  • EmPyre e questo post del blog di Chris Ross.
  • La magia crittografica trovata qui.
  • Icona dell'agente da flaticon.com
Scarica lo strumento
ComandoSintassiDescrizione
catcat path/to/fileLegge e restituisce il contenuto di un file.
cdcd [.. dir]Cambia la directory di lavoro (.. per salire di una directory).
cpcp src_file_or_dir dst_file_or_dirCopia un file o una cartella nella destinazione.
cwdcwdStampa la directory di lavoro.
downloaddownload [path]Scarica un file dal sistema di destinazione.
download_bulkdownload_bulk [path1] [path2] ...Scarica più file dal sistema di destinazione in un unico task.
exitexitTermina una callback.
envenvStampa le variabili d'ambiente.
eval_codeeval_code [commands]Esegue codice Python e restituisce l'output.
jobkilljobkill [task id]Invia un segnale di stop a un task di lunga durata.
jobsjobsElenca i task di lunga durata, come i download.
list_moduleslist_modules [module_name]Elenca i moduli in memoria o l'elenco completo dei file per un modulo specifico.
loadload commandCarica una nuova capacità in un agente.
load_moduleload_moduleCarica un modulo Python compresso in memoria (adattato da qui e qui).
load_scriptload_scriptCarica ed esegue uno script Python tramite l'agente.
lsls [. path]Elenca file e cartelle in [path] oppure usa . per la directory di lavoro corrente.
mvmv src_file_or_dir dst_file_or_dirSposta un file o una cartella nella destinazione.
pip_freezepip_freezeElenca programmaticamente i pacchetti installati sul sistema.
ptypty [/bin/bash] / pty self / pty forkApre una sessione PTY interattiva. Modalità: spawn esegue un programma con una PTY, self apre una REPL Python in-process con lo stato live dell'agente, fork crea un fork dell'agente in una REPL Python con stato snapshot (solo Linux/macOS).
rmrm file_or_dirElimina un file o una cartella.
shellshell [command]Esegue un comando shell che verrà avviato usando subprocess.Popen(). Nota: attenderà il completamento del comando, quindi fai attenzione a non bloccare l'agente.
sockssocks start/stop [port]Avvia/ferma il proxy SOCKS5 tramite l'agente Medusa.
sleepsleep [seconds] [jitter percentage]Imposta l'intervallo di callback dell'agente in secondi.
unloadunload commandRimuove una capacità esistente da un agente.
unload_moduleunload_module module_nameRimuove un modulo Python precedentemente caricato in memoria.
uploaduploadCarica un file in un percorso remoto sulla macchina.
watch_dirwatch_dir path secondsMonitora le modifiche nella directory di destinazione, effettuando polling delle modifiche a un intervallo specificato.
ComandoSintassiDescrizione
clipboardclipboardRestituisce il contenuto degli appunti (usa l'API Objective-C, come descritto da Cedric Owens qui. Solo macOS, solo Python 2.7).
list_appslist_appsElenca le applicazioni macOS (solo Python 2.7, solo macOS).
list_tcclist_tcc [path]Elenca le voci nel database TCC di macOS (richiede accesso completo al disco e per ora solo Big Sur).
screenshotscreenshotAcquisisce uno screenshot (usa l'API Objective-C, solo macOS, solo Python 2.7).
spawn_jxaspawn_jxaAvvia un processo osascript e invia contenuto Javascript tramite pipe.
vscode_list_recentvscode_list_recent [state_db]Elenca i file e le cartelle aperti di recente con VSCode.
vscode_open_editsvscode_open_edits [backup_dir_path]Elenca le modifiche non salvate apportate ai file in VSCode.
vscode_watch_editsvscode_watch_edits [path to remote dir] [poll_interval]Sottopone a polling la directory dei backup di VSCode a un intervallo specificato per individuare modifiche non salvate.
ComandoSintassiDescrizione
shinjectshinjectInietta shellcode nel PID di destinazione usando CreateRemoteThread (solo Windows - adattato da qui).
load_dllload_dll dll_path dll_exportCarica una DLL su disco ed esegue una funzione esportata (NOTA: questa DLL deve restituire un valore int al completamento; ad esempio, una DLL creata con msfvenom ucciderà il tuo agente al termine).
list_dllslist_dlls [pid]Legge la memoria del processo (PEB) del processo locale o di destinazione per ottenere l'elenco delle DLL caricate (solo Python 3)
pspsOttiene informazioni limitate sui processi, ad es. PID, nomi dei processi, architettura e percorsi dei binari (solo Python 3)
ps_fullps_fullOttiene informazioni complete sui processi, inclusi PPID, livello di integrità e riga di comando (solo Python 3)
killkillTermina un processo tramite ID processo (solo Python 3)