Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
msteams — Perfil de Mythic C2 que tunela el tráfico del agente a través de canales de Microsoft Teams usando la API de Microsoft Graph, con cifrado AES256, jitter, fechas de finalización y soporte de proxy. | Kitploit
Herramientas/GitHubGitHub/whispergate/msteams
Herramientas DefensivasFrameworks de Pruebas de PenetraciónHerramientas de Cifrado/DescifradoPost-ExplotaciónComando y ControlUtilidades y FrameworksRed TeamingDesarrollo de Payloads
GitHubwhispergate/msteams

msteams

Perfil de Mythic C2 que tunela el tráfico del agente a través de canales de Microsoft Teams usando la API de Microsoft Graph, con cifrado AES256, jitter, fechas de finalización y soporte de proxy.

2817hace 2 díasAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Ver Repositorio
Compartir

msteams

Un perfil C2 de Mythic que utiliza la API de Microsoft Graph para comunicarse a través de un canal de Microsoft Teams.

Cómo funciona

root@kitploit:~
Agent <---> Microsoft Teams Channel <---> C2 Server <---> Mythic
  1. El agente se autentica en Microsoft Entra ID mediante credenciales de cliente OAuth2
  2. Publica su mensaje de Mythic (codificado en base64, cifrado con AES) en un canal de Teams
  3. El servidor C2 consulta el canal a través de la API de Graph y reenvía los mensajes nuevos a Mythic
  4. La respuesta de Mythic se publica de vuelta en el canal
  5. El agente consulta el canal y recoge la respuesta

La comunicación aparece como actividad normal del canal de Teams.

Este perfil admite:

  • Fechas de finalización (Kill Dates)
  • Intervalos de sueño con jitter
  • Cifrado AES256
  • Configuración de proxy
  • Limpieza opcional de mensajes (eliminar mensajes tras procesarlos)
  • Fallback mediante webhook para el envío

Instalación

Desde tu servidor Mythic:

root@kitploit:~
sudo ./mythic-cli install github https://github.com/Whispergate/msteams

O desde una carpeta local:

root@kitploit:~
sudo ./mythic-cli install folder /path/to/msteams

Configuración de Entra ID

  1. Registro de aplicación - Crear en Azure Portal > Microsoft Entra ID > Registros de aplicaciones
  2. Secreto de cliente - Generar en Certificados y secretos
  3. Permisos de API - Conceder permisos de aplicación y consentimiento de administrador:
    • ChannelMessage.Read.All - Leer mensajes del canal
    • ChannelMessage.Send - Enviar mensajes al canal
  4. IDs de equipo y canal - Obtenerlos a través de Graph Explorer o del enlace del canal en el cliente de Teams

Si ChannelMessage.Send no está disponible, usa Group.ReadWrite.All o configura una URL de webhook.

Las instrucciones completas de configuración están en la página de documentación de Mythic tras la instalación en https://<your-mythic-server>:7443/docs/c2-profiles/msteams.

Configuración

Editar a través de la interfaz de Mythic: C2 Profiles > msteams > View/Edit Config.

ParámetroDescripciónPredeterminado
tenant_idID de inquilino (directorio) de Entra ID
client_idID de cliente del registro de aplicación
client_secretSecreto de cliente del registro de aplicación
team_idID del equipo de Teams
channel_idID del canal de Teams
webhook_urlURL de webhook opcional para el envío
graph_baseURL base de la API de Graphhttps://graph.microsoft.com/v1.0
login_baseURL base del endpoint de inicio de sesiónhttps://login.microsoftonline.com
poll_intervalSegundos entre consultas10
clear_messagesEliminar mensajes tras procesarlosfalse
debugHabilitar registro detalladofalse

Agentes compatibles

  • Starburst - Compatibilidad total mediante el transporte de MS Teams basado en WinHTTP

Cualquier agente de Mythic que implemente los parámetros del perfil C2 msteams puede usar este perfil. El agente necesita:

  1. Autenticarse en la API de Graph usando las credenciales configuradas
  2. Publicar mensajes de Mythic codificados en base64 en el canal de Teams configurado
  3. Consultar el canal en busca de respuestas del servidor C2

Pruebas sin Azure

Se incluye una infraestructura de pruebas simulada en test/ para realizar pruebas locales sin ninguna cuenta de Azure o M365. Esto te permite probar todo el pipeline C2 —incluidos implantes compilados— contra una API de Graph falsa local.

Configuración del servidor simulado

  1. Copia test/mock_server.py a tu host de Mythic e inícialo:

    root@kitploit:~
    python3 mock_server.py
    

    Esto inicia una API de Graph falsa en el puerto 8443.

  2. Configura el perfil C2 msteams en Mythic con valores simulados:

    root@kitploit:~
    {
      "tenant_id": "fake-tenant-id",
      "client_id": "fake-client-id",
      "client_secret": "fake-client-secret",
      "team_id": "fake-team-id",
      "channel_id": "fake-channel-id",
      "graph_base": "http://<mythic-host-ip>:8443/v1.0",
      "login_base": "http://<mythic-host-ip>:8443",
      "poll_interval": 3,
      "clear_messages": true,
      "debug": true
    }
    
  3. Inicia el perfil msteams en la interfaz de Mythic.

Pruebas con un implante compilado (Starburst)

Para probar un agente compilado real contra el servidor simulado, el binario del agente debe compilarse con la IP y el puerto del servidor simulado codificados de forma fija en lugar de los endpoints reales de la API de Graph. En el código del agente Starburst (agent_code/src/transport/msteams.cc):

root@kitploit:~
// Change these for mock testing:
#define GRAPH_API_HOST  "<mythic-host-ip>"
#define LOGIN_HOST      "<mythic-host-ip>"
#define API_PORT        8443

// And change WINHTTP_FLAG_SECURE to 0 in WinHttpOpenRequest
// since the mock server uses plain HTTP:
        WINHTTP_DEFAULT_ACCEPT_TYPES,
        0

Después, reinstala Starburst, compila un payload con el perfil msteams (usando los mismos IDs falsos de tenant/client/team/channel) y ejecútalo en una VM de Windows que pueda alcanzar el host de Mythic.

Recuerda revertir estos cambios antes de compilar payloads de producción:

root@kitploit:~
#define GRAPH_API_HOST  "graph.microsoft.com"
#define LOGIN_HOST      "login.microsoftonline.com"
#define API_PORT        443

        WINHTTP_DEFAULT_ACCEPT_TYPES,
        WINHTTP_FLAG_SECURE

Pruebas con el agente falso (sin compilación)

Para una prueba rápida del pipeline sin compilar un agente:

root@kitploit:~
GRAPH_URL=http://<mythic-host-ip>:8443 python test/fake_agent.py

Consulta test/README.md para más detalles.

Consideraciones de OPSEC

  • Usa un canal privado dedicado con el mínimo número de miembros
  • Habilita clear_messages para limpiar después del procesamiento
  • Mantén un poll_interval razonable (10-30s) para evitar la limitación de velocidad
  • Todos los mensajes están cifrados con AES256 a nivel del payload de Mythic
  • Los mensajes de Teams NO están cifrados de extremo a extremo (visibles para los administradores del inquilino y Microsoft)
  • El límite de velocidad de la API de Graph es de aproximadamente 30 solicitudes por segundo por aplicación por inquilino

Estructura de archivos

root@kitploit:~
msteams/
  config.json                          # Mythic container config
  C2_Profiles/msteams/
    Dockerfile                         # Container image
    main.py                            # Mythic service entrypoint
    requirements.txt                   # Python dependencies
    rabbitmq_config.json               # RabbitMQ settings
    msteams/
      c2_functions/msteams.py          # C2Profile class + parameters
      c2_code/
        server.py                      # Main polling loop
        graph_client.py                # MS Graph API client
        mythic_client.py               # Mythic API forwarder
        config.py                      # Config singleton
        config.json                    # Default config values
  documentation-c2/msteams/_index.md   # Mythic docs page
  test/
    mock_server.py                     # Mock Graph API server
    fake_agent.py                      # Simulated agent for testing
    test_c2_server.py                  # Standalone C2 server test harness
    test_config.json                   # Test config with fake values
Descargar herramienta