Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
Medusa — Agente C2 multiplataforma para Mythic con carga dinámica de funciones, proxy SOCKS5, operaciones de archivos, inyección de shellcode y módulos de post-explotación para macOS/Windows. | Kitploit
Herramientas/GitHubGitHub/mythicagents/medusa
Frameworks de Pruebas de PenetraciónEscalada de PrivilegiosFrameworks de ExploitsMovimiento LateralShellcodePost-ExplotaciónComando y ControlRed TeamingHerramienta de Acceso RemotoGeneración de ShellcodeDesarrollo de Payloads
20852hace 21 díasRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
GitHub
mythicagents/medusa

Medusa

Agente C2 multiplataforma para Mythic con carga dinámica de funciones, proxy SOCKS5, operaciones de archivos, inyección de shellcode y módulos de post-explotación para macOS/Windows.

Ver Repositorio

Logo de Medusa

Medusa

Medusa es un agente multiplataforma compatible con Python 3.8 y Python 2.7.

Instalación

Para instalar Medusa, necesitarás tener Mythic v3 instalado en una computadora remota. Puedes encontrar las instrucciones de instalación de Mythic en la página del proyecto Mythic.

Desde la raíz de instalación de Mythic, ejecuta el comando:

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

Una vez instalado, reinicia Mythic para compilar un nuevo agente.

Notas de configuración de RabbitMQ

El archivo Payload_Type/medusa/rabbitmq_config.json es una plantilla y debe coincidir con tu entorno de Mythic.

  • Establece rabbitmq_password con el valor de RABBITMQ_PASSWORD de tu Mythic (normalmente desde el .env de Mythic).
  • Establece rabbitmq_host con el nombre de tu host/contenedor RabbitMQ (a menudo mythic_rabbitmq en configuraciones docker-compose, o 127.0.0.1 para enlaces locales).
  • Establece mythic_server_host con el nombre de tu host/contenedor del servidor Mythic (a menudo mythic_server en configuraciones docker-compose, o 127.0.0.1 para enlaces locales).

Características destacadas

  • Carga/descarga dinámica de funciones del agente para limitar la exposición de las capacidades del agente en disco.
  • Carga de módulos Python en memoria para su uso en scripts personalizados.
  • Proxy SOCKS5 multiplataforma
  • Lector de portapapeles de macOS, capturador de pantallas y análisis de la base de datos TCC
  • Compatibilidad con el navegador de archivos con subida/descarga
  • Eval() de código Python dinámico
  • Compatibilidad con proxy de autenticación básica

Referencia rápida del manual de comandos

El agente base y los comandos incluidos usan librerías Python integradas, por lo que no necesitan paquetes adicionales para funcionar. Los agentes ejecutan los comandos en subprocesos, por lo que las subidas o descargas de larga duración no bloquearán al agente principal.

Comandos generales

Comandos de macOS

Comandos de Windows

Versiones de Python

Ambas versiones del agente Medusa usan una implementación AES256 HMAC escrita con librerías integradas (adaptada de aquí), lo que elimina la necesidad de dependencias adicionales más allá de una instalación estándar de Python. Como tal, el agente debería funcionar en hosts Windows, Linux y macOS. Vale la pena mencionar que esta implementación criptográfica introduce cierta sobrecarga al manejar archivos grandes (capturas de pantalla, descargas, etc.), pero es manejable.

Comandos Py2 vs Py3

Dentro del directorio Payload_Type/Medusa/agent_code, verás archivos base_agent con sufijos py2 y py3. Del mismo modo, se pueden ver extensiones similares en los archivos de funciones individuales.

builder.py los lee para seleccionar primero la versión base correcta de Python del agente Medusa. Luego, builder.py incluirá comandos específicos de la versión de Python elegida. En el caso de que un comando solo tenga la extensión .py, se usará por defecto, asumiendo que no se necesita código alternativo entre las versiones Py2 y Py3.

Trabajos en hilos

Medusa usa subprocesos básicos para la ejecución de trabajos. Cuando los trabajos pueden ser de larga duración, se pueden implementar con una 'comprobación de detención' para responder a una señal de la tarea jobkill. Esto se puede implementar con un fragmento de código similar al que se muestra a continuación:

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."

Este manejador se puede ver implementado dentro de los comandos download, upload, watch_dir y screenshot.

Además, si se espera que el trabajo de larga duración proporcione una salida continua, la función sendTaskOutputUpdate (incluida en el agente base) se puede usar para actualizar Mythic antes de que finalice la tarea. A continuación se puede ver una función dummy que proporciona salida continua y a la que se le puede aplicar jobkill.

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)

Perfiles C2 compatibles

Medusa actualmente es compatible con dos perfiles C2: http (con y sin cifrado AES256 HMAC) y azure_blob.

Perfil HTTP

El perfil HTTP se comunica con el servidor Mythic mediante el perfil básico no dinámico. Solicitudes GET para tareas, solicitudes POST con respuestas.

Agradecimientos

  • Scripts de navegador y código de agente adaptados de @its_a_feature_ y @djhohnstein.
  • MacC2 y esta publicación de blog de Cedric Owens
  • EmPyre y esta publicación de blog de Chris Ross.
  • La magia criptográfica que se encuentra aquí.
  • Ícono del agente de flaticon.com
Descargar herramienta
ComandoSintaxisDescripción
catcat path/to/fileLee y muestra el contenido de un archivo.
cdcd [.. dir]Cambia el directorio de trabajo (.. para subir un directorio).
cpcp src_file_or_dir dst_file_or_dirCopia un archivo o carpeta a un destino.
cwdcwdMuestra el directorio de trabajo.
downloaddownload [path]Descarga un archivo del sistema objetivo.
download_bulkdownload_bulk [path1] [path2] ...Descarga varios archivos del sistema objetivo en una sola tarea.
exitexitSale de un callback.
envenvMuestra las variables de entorno.
eval_codeeval_code [commands]Ejecuta código Python y devuelve la salida.
jobkilljobkill [task id]Envía una señal de detención a una tarea de larga duración.
jobsjobsLista las tareas de larga duración, como descargas.
list_moduleslist_modules [module_name]Lista los módulos en memoria o el listado completo de archivos de un módulo específico.
loadload commandCarga una nueva capacidad en un agente.
load_moduleload_moduleCarga un módulo Python empaquetado en ZIP en memoria (adaptado de aquí y aquí).
load_scriptload_scriptCarga y ejecuta un script de Python a través del agente.
lsls [. path]Lista archivos y carpetas en [path] o usa . para el directorio de trabajo actual.
mvmv src_file_or_dir dst_file_or_dirMueve un archivo o carpeta a un destino.
pip_freezepip_freezeLista mediante programación los paquetes instalados en el sistema.
ptypty [/bin/bash] / pty self / pty forkAbre una sesión PTY interactiva. Modos: spawn ejecuta un programa con una PTY, self abre un REPL de Python en el proceso con el estado del agente en vivo, fork bifurca el agente en un REPL de Python con el estado capturado (solo Linux/macOS).
rmrm file_or_dirElimina un archivo o carpeta.
shellshell [command]Ejecuta un comando de shell que se lanzará mediante subprocess.Popen(). Ten en cuenta que esperará a que el comando termine, así que ten cuidado de no bloquear tu agente.
sockssocks start/stop [port]Inicia/detiene el proxy SOCKS5 a través del agente Medusa.
sleepsleep [seconds] [jitter percentage]Establece el intervalo de callback del agente en segundos.
unloadunload commandDescarga una capacidad existente de un agente.
unload_moduleunload_module module_nameDescarga un módulo Python previamente cargado en memoria.
uploaduploadSube un archivo a una ruta remota en la máquina.
watch_dirwatch_dir path secondsVigila los cambios en el directorio objetivo, consultando cambios a una velocidad especificada.
ComandoSintaxisDescripción
clipboardclipboardMuestra el contenido del portapapeles (usa la API de Objective-C, según lo descrito por Cedric Owens aquí. Solo macOS, solo Python 2.7).
list_appslist_appsLista las aplicaciones de macOS (solo Python 2.7, solo macOS).
list_tcclist_tcc [path]Lista las entradas de la base de datos TCC de macOS (requiere acceso total al disco y solo Big Sur por ahora).
screenshotscreenshotToma una captura de pantalla (usa la API de Objective-C, solo macOS, solo Python 2.7).
spawn_jxaspawn_jxaLanza un proceso osascript y envía contenido JavaScript a través de una tubería.
vscode_list_recentvscode_list_recent [state_db]Lista los archivos y carpetas abiertos recientemente con VSCode.
vscode_open_editsvscode_open_edits [backup_dir_path]Lista los cambios no guardados realizados en archivos de VSCode.
vscode_watch_editsvscode_watch_edits [path to remote dir] [poll_interval]Consulta el directorio de respaldos de VSCode a un intervalo dado en busca de cambios no guardados.
ComandoSintaxisDescripción
shinjectshinjectInyecta shellcode en el PID objetivo mediante CreateRemoteThread (solo Windows - adaptado de aquí).
load_dllload_dll dll_path dll_exportCarga una DLL del disco y ejecuta una función exportada (NOTA: Esta DLL debe devolver un valor int al finalizar; por ejemplo, una DLL creada con msfvenom matará a tu agente al completarse).
list_dllslist_dlls [pid]Lee la memoria del proceso (PEB) local o objetivo para obtener la lista de DLL cargadas (solo Python 3).
pspsObtiene información limitada del proceso, p. ej., PID, nombres de proceso, arquitectura y rutas de binarios (solo Python 3).
ps_fullps_fullObtiene información completa del proceso, incluidos PPID, nivel de integridad y línea de comandos (solo Python 3).
killkillTermina un proceso por su ID de proceso (solo Python 3).