cxnturi0n/convoC2: infraestructura C2 que permite a los Red Teamers ejecutar comandos del sistema en hosts comprometidos a través de Microsoft Teams.

Infraestructura de comando y control que permite a los Red Teamers ejecutar comandos del sistema en hosts comprometidos a través de Microsoft Teams.
Infiltra datos en etiquetas de extensión ocultas en mensajes de Microsoft Teams y extrae datos incrustando salidas de comandos en URL de imágenes de tarjetas adaptables, lo que activa solicitudes fuera de límites a un servidor C2.
La falta de comunicación directa entre la víctima y el atacante, combinada con el hecho de que la víctima solo envía solicitudes http a los servidores de Microsoft y los antivirus no examinan los archivos de registro de MS Teams, dificulta la detección.

El siguiente video muestra el uso del servidor para controlar dos hosts comprometidos: uno que ejecuta los nuevos Teams en Windows 11 y el otro que ejecuta los antiguos Teams en Windows 10. En el primer caso, el atacante no está en la misma organización que la víctima. .

ConvoC2_Demo.mp4

Nota: En el primer caso, la víctima ya aceptó el chat con el atacante externo, pero en un escenario real donde el atacante inicia el chat con la víctima por primera vez, la víctima necesitaría confirmar el chat con el atacante. Esto no es un problema: debido a que los mensajes se almacenan en caché de todos modos en el archivo de registro, el Los comandos se reciben y ejecutan incluso si la víctima aún no ha visualizado o aceptado el chat..

Servidor

wget tar -xzvf convoC2_server_amd64.tar.gz –one-top-level root@convoC2-server-VPS:~# ./convoC2_server_amd64 -h Uso del servidor convoC2: -t, –msgTimeout Cuánto esperar para la salida del comando ( predeterminado 30 s) -b, –bindIp Vincular dirección IP (predeterminado 0.0.0.0)

Agente

wget tar -xzvf convoC2_agent.tar.gz –one-top-level C:Windows>convoC2_agent.exe -h Uso del agente convoC2: -v, –verbose Registro detallado (falso predeterminado) -s, –server C2 URL del servidor (es decir, -t, –timeout Tiempo de espera de sondeo del archivo de registro de Teams [s] (predeterminado 1) -w, –webhook Teams Webhook POST URL -r, –regex Regex para que coincida con el comando (predeterminado “]*aria-label=”([^”]*)”[^>]*>”)

Para que funcione, necesitarás configurar algunas cosas:

  • Crear canal de Teams con webhook entrante de flujo de trabajo: este es el lugar donde se recibirán las tarjetas adaptativas que contienen la salida. Es importante mantener abierta una ventana del navegador con este canal mientras se utiliza el servidor.de lo contrario el servidor no recibirá mensajes de los agentes.

Canal webhook

  • Obtener identificadores y token de autenticación: Teams inicializa un chat con una POST con los identificadores únicos de la víctima y el atacante en el cuerpo. En la respuesta, se devolverá el threadId en la ruta de la URL del encabezado de Ubicación. El token de portador de la misma solicitud se utiliza para autenticar cuál es el punto final para enviar mensajes. Así que sólo necesitamos tomar estas tres cosas y el servidor se encargará del resto.
  • Asegúrese de tener un host público que permita el tráfico HTTP entrante en el puerto 80.
  • Teams debe ejecutarse en el host de la víctima; en segundo plano también está bien.

Crear canal de Teams con webhook entrante de flujo de trabajo

En primer lugar, deberá crear un canal de Teams.

CrearEquipos

Haga clic derecho en los tres puntos, luego haga clic en “Flujos de trabajo”.

CrearEquipos_1

En la barra de búsqueda, escriba “Webhook” y haga clic en “Publicar en un canal cuando se reciba una solicitud de webhook”.

CrearEquipos_5

Continúe con la configuración predeterminada y finalmente copie la URL.

Crear_equipos_6

Empiece por buscar a la víctima.

ObtenerOrgIds

Después de seleccionar la cuenta de la víctima, con el proxy web interceptando las solicitudes, puede enviar un mensaje ficticio.

ObtenerOrgIds_1

Guarde los dos identificadores presentes en la solicitud api/chatsvc/emea/v1/threads y luego DEJE la solicitud. El token de autenticación será el token portador de la misma solicitud.

ObtenerOrgIds_2

Esta infraestructura se inspiró en la Equipos de investigación GIFShell hecho por Bobbyrsec.
Inicialmente mi propósito era replicar el problema, pero la solución parecía estar parcialmente solucionada. La investigación implicó inyectar comandos en GIF codificados en Base64, pero estos ya no se mostraban correctamente: en su lugar aparecía un ícono de imagen corrupta en el chat, lo que hacía que la víctima potencialmente comenzara a sospechar.
Después de probar varios métodos, noté que era posible incrustar comandos directamente en mensajes en lugar de GIF o imágenes: Es más probable que enviar varias imágenes genere sospechas en comparación con enviar mensajes simples, ¿verdad? Inicialmente consideré incrustar comandos en etiquetas como , o etiquetas personalizadas, pero todas fueron filtradas. Finalmente, incrustar comandos en el atributo aria-label de etiquetas con display:none tuvo éxito: la víctima solo vería el mensaje, pero el comando oculto en realidad envenenaría el archivo de registro de Teams.

EquiposLogEnvenenamiento

El servidor TUI se ha desarrollado utilizando el fantástico marco Go BubbleTea.

Si encuentra errores o desea mejorar el proyecto, no dude en abrir una solicitud de extracción y estaré encantado de revisar y eventualmente fusionar sus cambios. Todos a corto plazo son:

  • Cifrado AES de mensajes
  • Keepalive para detectar cuando el agente está muerto
  • Versión Powershell del Agente

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.