Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
msteams — Profil Mythic C2 qui tunnelise le trafic de l'agent via les canaux Microsoft Teams en utilisant l'API Microsoft Graph, avec chiffrement AES256, jitter, kill dates et prise en charge de proxy. | Kitploit
Outils/GitHubGitHub/whispergate/msteams
Outils DéfensifsFrameworks de Tests d'IntrusionOutils de Chiffrement/DéchiffrementPost-ExploitationCommandement et ContrôleUtilitaires et FrameworksRed TeamingDéveloppement de Charges Utiles
GitHubwhispergate/msteams

msteams

Profil Mythic C2 qui tunnelise le trafic de l'agent via les canaux Microsoft Teams en utilisant l'API Microsoft Graph, avec chiffrement AES256, jitter, kill dates et prise en charge de proxy.

2817il y a 2 joursPas encore vérifié
Voir le dépôt

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

msteams

Un profil C2 Mythic qui utilise l'API Microsoft Graph pour communiquer via un canal Microsoft Teams.

Fonctionnement

root@kitploit:~
Agent <---> Canal Microsoft Teams <---> Serveur C2 <---> Mythic
  1. L'agent s'authentifie auprès de Microsoft Entra ID via les identifiants client OAuth2
  2. Publie son message Mythic (encodé en base64, chiffré en AES) dans un canal Teams
  3. Le serveur C2 interroge le canal via l'API Graph, transmet les nouveaux messages à Mythic
  4. La réponse de Mythic est publiée dans le canal
  5. L'agent interroge le canal et récupère la réponse

La communication apparaît comme une activité normale de canal Teams.

Ce profil prend en charge :

  • Les Kill Dates
  • Les intervalles de sommeil avec jitter
  • Le chiffrement AES256
  • La configuration de proxy
  • Le nettoyage optionnel des messages (suppression des messages après traitement)
  • Le repli par webhook pour l'envoi

Installation

Depuis votre serveur Mythic :

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

Ou depuis un dossier local :

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

Configuration d'Entra ID

  1. Enregistrement d'application - Créez dans le portail Azure > Microsoft Entra ID > Inscriptions d'applications
  2. Secret client - Générez sous Certificats et secrets
  3. Autorisations API - Accordez les autorisations d'application et le consentement administrateur :
    • ChannelMessage.Read.All - Lire les messages du canal
    • ChannelMessage.Send - Envoyer des messages dans le canal
  4. ID d'équipe et de canal - Obtenez-les via Graph Explorer ou le lien du canal dans le client Teams

Si ChannelMessage.Send n'est pas disponible, utilisez Group.ReadWrite.All ou configurez une URL de webhook.

Les instructions complètes de configuration se trouvent dans la page de documentation Mythic après l'installation à l'adresse https://<your-mythic-server>:7443/docs/c2-profiles/msteams.

Configuration

Modifiez via l'interface Mythic : C2 Profiles > msteams > View/Edit Config.

ParamètreDescriptionValeur par défaut
tenant_idID du tenant (annuaire) Entra ID
client_idID client de l'enregistrement d'application
client_secretSecret client de l'enregistrement d'application
team_idID de l'équipe Teams
channel_idID du canal Teams
webhook_urlURL de webhook optionnelle pour l'envoi
graph_baseURL de base de l'API Graphhttps://graph.microsoft.com/v1.0
login_baseURL de base du point de terminaison de connexionhttps://login.microsoftonline.com
poll_intervalSecondes entre les interrogations10
clear_messagesSupprimer les messages après traitementfalse
debugActiver la journalisation détailléefalse

Agents compatibles

  • Starburst - Prise en charge complète via le transport MS Teams basé sur WinHTTP

Tout agent Mythic qui implémente les paramètres du profil C2 msteams peut utiliser ce profil. L'agent doit :

  1. S'authentifier auprès de l'API Graph en utilisant les identifiants configurés
  2. Publier les messages Mythic encodés en base64 dans le canal Teams configuré
  3. Interroger le canal pour les réponses du serveur C2

Test sans Azure

Une infrastructure de test simulée est incluse dans test/ pour les tests locaux sans aucun compte Azure ou M365. Cela vous permet de tester le pipeline C2 complet — y compris les implants compilés — contre une fausse API Graph locale.

Configuration du serveur simulé

  1. Copiez test/mock_server.py sur votre hôte Mythic et démarrez-le :

    root@kitploit:~
    python3 mock_server.py
    

    Cela démarre une fausse API Graph sur le port 8443.

  2. Configurez le profil C2 msteams dans Mythic avec des valeurs simulées :

    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. Démarrez le profil msteams dans l'interface Mythic.

Test avec un implant compilé (Starburst)

Pour tester un véritable agent compilé contre le serveur simulé, le binaire de l'agent doit être compilé avec l'IP et le port du serveur simulé codés en dur au lieu des véritables points de terminaison de l'API Graph. Dans le code de l'agent 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

Réinstallez ensuite Starburst, compilez une charge utile avec le profil msteams (en utilisant les mêmes ID fictifs de tenant/client/équipe/canal), et exécutez-la sur une VM Windows pouvant atteindre l'hôte Mythic.

N'oubliez pas de rétablir ces modifications avant de compiler des charges utiles de production :

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

Test avec l'agent simulé (sans compilation)

Pour un test rapide du pipeline sans compiler d'agent :

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

Voir test/README.md pour plus de détails.

Considérations OPSEC

  • Utilisez un canal privé dédié avec un nombre minimal de membres
  • Activez clear_messages pour nettoyer après traitement
  • Gardez un poll_interval raisonnable (10-30s) pour éviter la limitation de débit
  • Tous les messages sont chiffrés en AES256 au niveau de la charge utile Mythic
  • Les messages Teams ne sont PAS chiffrés de bout en bout (visibles par les administrateurs du tenant et Microsoft)
  • La limite de débit de l'API Graph est d'environ 30 requêtes par seconde par application par tenant

Structure des fichiers

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
Télécharger l’outil