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
azureOutlookC2 — Azure Outlook Command & Control (C2) - Contrôler à distance un périphérique Windows compromis depuis votre boîte aux lettres Outlook. Outil d'émulation de menaces pour les APT nord-coréens InkySquid / ScarCruft / APT37. TTP : Utiliser l'API Microsoft Graph pour les opérations C2. | Kitploit
Outils/GitHubGitHub/boku7/azureoutlookc2
Sécurité CloudCommandement et ContrôleRed TeamingDéveloppement de Charges UtilesSécurité des API
GitHubboku7/azureoutlookc2

azureOutlookC2

Azure Outlook Command & Control (C2) - Contrôler à distance un périphérique Windows compromis depuis votre boîte aux lettres Outlook. Outil d'émulation de menaces pour les APT nord-coréens InkySquid / ScarCruft / APT37. TTP : Utiliser l'API Microsoft Graph pour les opérations C2.

Voir le dépôt
504100il y a 3 ansVérifié par Kitploit

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

Azure Outlook C2

Azure Outlook Command & Control qui utilise Microsoft Graph API pour les communications C2 et l'exfiltration de données.

Contrôlez à distance un appareil Windows compromis depuis votre boîte aux lettres Outlook.

Créateurs : Bobby Cooke (@0xBoku) & Paul Ungur (@C5pider)

Mise à jour sur la menace CTI (02/13/22)

Elastic Security Labs a découvert des intrusions actives dans la nature utilisant SIESTAGRAPH. SIESTAGRAPH interagit avec Microsoft GraphAPI pour le commandement et le contrôle via Outlook et OneDrive. Consultez leurs excellents blogs d'analyse de malware sur les communications Azure Outlook C2 ci-dessous.

  • https://www.elastic.co/security-labs/siestagraph-new-implant-uncovered-in-asean-member-foreign-ministry
  • https://www.elastic.co/security-labs/update-to-the-REF2924-intrusion-set-and-related-campaigns

Mise à jour (27/09/21)

  • Azure Outlook C2 dispose désormais d'une interface utilisateur graphique (GUI) multiplateforme !
    • Un grand merci à Paul Ungur (@C5pider) pour m'avoir appris à créer une interface graphique C2 avec QT !

Contrôler un ordinateur via la boîte aux lettres Outlook avec l'interface graphique C2

Contrôler un ordinateur via la boîte aux lettres Outlook

  • La mise à jour prend en charge le contrôle original via la boîte aux lettres Outlook.

Si vous avez des informations sur des projets similaires, des informations CTI sur cette TTP utilisée dans la nature par des groupes APT/ransomware, des conseils de défense, des recommandations pour les Red Teamers intéressés par l'émulation de menace C2 Azure, ou toute autre information qui serait un bon ajout à ce blog/readme, veuillez me contacter ou soumettre une Pull Request. Merci !

À propos d'Azure Outlook C2

Ce projet consiste en un implant qui envoie des signaux vers une boîte aux lettres Azure Outlook contrôlée par l'attaquant, qui sert de serveur de commande et contrôle (C2) ; contrôlant ainsi à distance l'appareil compromis. Un jeton d'actualisation Azure (Refresh Token) pour la boîte C2 de l'attaquant est codé en dur dans l'implant lors de la compilation. Lorsqu'il est exécuté sur un appareil Windows, l'implant accède à la boîte aux lettres Brouillons de l'attaquant via l'API Microsoft Graph. L'implant lit les instructions de commande dans la boîte aux lettres Brouillons de l'attaquant, exécute les instructions localement sur l'appareil Windows compromis et renvoie la sortie de la commande à l'attaquant via la création de nouveaux messages brouillons. L'implant répète ce comportement de contrôle à distance depuis la boîte aux lettres de l'attaquant jusqu'à ce que le processus hôte de l'implant soit quitté.

Pourquoi j'ai construit cela

J'ai récemment commencé le Red Teaming il y a environ six mois au sein de l'équipe SpiderLabs Red Team chez Trustwave. Lors d'un engagement, j'ai eu l'honneur de travailler avec le légendaire Stephan Borosh (rvrsh3ll|@424f424f). Steve et Matt Kingstone m'ont tout appris sur l'Azure Domain Fronting, et j'ai été époustouflé de voir que le trafic Command & Control pouvait être exfiltré via HTTPS en utilisant des domaines légitimes comme ajax.microsoft.com. Il utilise même les certificats TLS de Microsoft ! Malheureusement pour moi, j'ai commencé le Red Teaming au moment où le Domain Fronting est mort sur Azure. Même si le Domain Fronting sur Azure était mort, il y avait encore beaucoup de techniques Red Team géniales à faire avec Azure.

Steve m'a présenté l'Azure Device Code Phishing. Pendant cette période, je me suis plongé dans Azure et l'API Microsoft Graph pour le Red Teaming. Nous avons créé l'outil TokenTactics, dérivé du superbe travail de Dr. Nestori Syynimaa (@DrAzureAD), et nous avons rédigé le blog The Art of the Device Code Phish si vous êtes intéressé par notre méthodologie.

Lors de la création de TokenTactics et de l'expérimentation avec l'API MS Graph, j'ai découvert qu'il était possible d'utiliser l'API Microsoft Graph comme canal C2. Il existe de nombreuses façons différentes d'utiliser l'API Microsoft Graph comme canal C2, et je ne suis pas la seule personne (ni la première) à l'avoir découvert. VX-Underground, créé par @smelly__vx - le créateur/éditeur de la technique HellsGate, a publié le mois dernier que le groupe nord-coréen Advanced Persistent Threat (APT) "InkySquid" (alias ScarCruft et APT37) utilise l'API Microsoft Graph pour les opérations C2. Après avoir publié un teaser de ce projet sur Twitter et LinkedIn, plusieurs professionnels DFIR ont commenté que cette technique d'utilisation de l'API Microsoft Graph pour les opérations C2 est activement utilisée par des groupes de ransomwares dans la nature, depuis des mois.

Pendant l'engagement Red Team, j'ai essayé de faire fonctionner Cobalt Strike avec l'API Microsoft Graph comme canal C2. Malheureusement, j'ai échoué, mais c'est toujours un objectif futur. Le problème que je rencontre pour que cela fonctionne avec Cobalt Strike, est que l'API Microsoft Graph utilise deux jetons pour les communications. Le premier jeton est le Refresh Token qui peut durer jusqu'à 90 jours. Le second jeton, l'Access Token, est un jeton temporaire qui dure environ une heure. Les communications directes avec l'API Microsoft Graph se font en s'authentifiant avec l'Access Token. Une fois qu'un Access Token expire, le Refresh Token peut être utilisé pour obtenir de nouveaux Access Tokens. Comme je suis encore novice en Red Teaming et en développement Cobalt Strike, je n'ai pas pu comprendre comment utiliser le profil Malleable C2 de Cobalt Strike pour prendre en charge l'obtention constante de nouveaux Access Tokens et l'envoi de ces Access Tokens changeants dans l'en-tête Authorization des requêtes HTTPS du beacon. Depuis la publication du teaser sur Twitter, Joe Vest, Alfie Champion et d'autres rockstars de la communauté m'ont donné une direction épique sur la façon de faire fonctionner cela avec Cobalt Strike ! Espérons qu'il y aura un suivi Cobalt Strike à ce projet à l'avenir ;)

Flux d'exécution de l'implant

  1. Obtenir un Access Token pour l'API MS Graph en utilisant le Refresh Token codé en dur de l'attaquant.
    • Cela se fait via des communications TCP HTTPS vers l'hôte graph.microsoft.com.
    • Ce trafic est chiffré à l'aide du certificat TLS renvoyé par le serveur web légitime de Microsoft.
    • L'implant utilise la bibliothèque de liens dynamiques WinInet pour les communications HTTPS.
    • Le Refresh Token codé en dur de l'attaquant devrait être valide pendant 90 jours.
      • Si l'implant est compromis, l'attaquant peut révoquer le Refresh Token codé en dur pour restreindre l'accès des reverse engineers de malwares.
  2. Après que l'implant a reçu un Access Token pour l'API MS Graph de l'attaquant, il entre dans une boucle infinie.
    • S'il n'y a pas de connexion internet ou si la connexion est interrompue pendant la boucle, l'implant dort pendant 3 minutes et réessaye.
    • L'implant garde la trace du temps, et si 15 minutes se sont écoulées, il obtient un nouvel Access Token pour continuer les communications.
  3. La première tâche de la boucle est d'utiliser l'Access Token de l'API MS Graph pour accéder à la boîte aux lettres Brouillons de l'attaquant et lire le message le plus récent pour les commandes à exécuter sur l'appareil Windows compromis.
    • La boîte aux lettres Brouillons a été choisie car ainsi aucun e-mail n'est envoyé via SMTP.
  4. Une fois la commande reçue, elle est analysée pour déterminer quelle méta-commande exécuter. Actuellement, il y a 3 méta-commandes : cmd, sleep, exit
    • cmd: Prend la chaîne suivante après la méta-commande et l'exécute en créant un processus enfant.
    • sleep: Prend le mot suivant après la méta-commande et modifie le temps de sommeil de l'implant à la valeur fournie (en millisecondes).

Instructions

  1. Mettez en place une infrastructure Azure Red Team qui sera utilisée comme commande et contrôle en suivant mon article de blog The Art of the Device Code Phish pour configurer :
    • Abonnement au compte Azure
      • Lors de la création d'un compte Azure, aidez l'équipe DFIR de Microsoft en attribuant votre compte à votre organisation Red Team. Cela permet de gagner du temps pour leur équipe lorsqu'ils enquêtent pour déterminer si vous êtes une menace réelle, si vous effectuez des services d'émulation de menace ou des recherches en sécurité offensive.
      • Voir Nick Carr - Lead, Cyber Crime Intelligence / Investigations @Microsoft pour plus d'informations.
    • Locataire Azure Active Directory
    • Office 365 pour Azure Active Directory
    • Créer un utilisateur pour la boîte aux lettres de commande et contrôle Outlook
    • Installer le module PowerShell TokenTactics
  2. Utilisez TokenTactics pour obtenir l'ID du locataire de l'Azure AD que vous venez de créer :
root@kitploit:~
PS C:\Users\boku\Desktop\TokenTactics-main> Import-Module .\TokenTactics.psd1
PS C:\Users\boku\Desktop\TokenTactics-main> Get-TenantID -domain theharvester.world
1d5551a0-f4f2-4101-9c3b-394247ec7e08
  1. Ajoutez votre TenantID à la variable char tenantId[] dans le fichier azureOutlookC2.c.
  2. Obtenez un Refresh Token Azure en utilisant TokenTactics pour vous faire un device code phish avec l'utilisateur de la boîte C2 :
root@kitploit:~
# Import the TokenTactics module into the PowerShell session
PS C:\Users\boku> cd .\TokenTactics
PS C:\Users\boku\TokenTactics> Import-Module .\TokenTactics.psd1
# Start a Device Code phish request to get a 'user_code'
PS C:\Users\boku> Get-AzureToken -Client Graph
user_code        : ERDVDCNHH
  1. Allez sur microsoft.com/devicelogin, entrez le user_code de TokenTactics, et connectez-vous avec l'utilisateur de la boîte C2.
  2. Dans la session PowerShell exécutant TokenTactics, copiez le refresh token du device code phish réussi sur vous-même.
    • Si vous avez besoin de plus d'informations sur le fonctionnement de TokenTactics, veuillez consulter The Art of the Device Code Phish
  3. Ajoutez votre refresh token à la variable char refreshToken[] dans le fichier azureOutlookC2.c.
root@kitploit:~
void main() {
    // Variables
    char refreshToken[] = "0.AXwAoFFVHfL0AUGcOzlCR-x-CNYOWdOzUgJBrv-q0ikqsBx8ACA.AgABAAAAAA...
//                           ^Put your refresh token here and compile
  1. Compilez azureOutlookC2.c.
root@kitploit:~
# Compile with x64 MinGW:
bobby.cooke$ cat compile.sh
x86_64-w64-mingw32-gcc -m64 -mwindows -Os azureOutlookC2.c -o azureOutlookC2.exe -lwininet
bobby.cooke$ bash compile.sh
  1. Exécutez le fichier PE azureOutlookC2.exe sur un appareil Windows.
  2. En tant qu'attaquant depuis l'ordinateur de l'attaquant, ouvrez un navigateur, connectez-vous à outlook.office.com, et contrôlez l'appareil Windows exécutant l'implant depuis votre boîte aux lettres.

Objectifs initiaux du projet

  • Créer une preuve de concept fonctionnelle qui utilise l'API Microsoft Graph comme canal C2 et contrôler un ordinateur depuis mon e-mail.

Ce que ce projet est

  • Ce projet est une preuve de concept, qui démontre comment un attaquant peut utiliser l'API Microsoft Graph pour les opérations C2.
  • Ce projet est destiné aux autres chercheurs en sécurité offensive pour apprendre.
  • Je n'ai personnellement trouvé aucun bon moyen de défendre ou de détecter ce canal C2. Mon espoir est qu'en le fournissant à des esprits défensifs plus grands que moi, cela aboutira à des techniques défensives géniales.

Ce que ce projet n'est pas

  • Ce projet lui-même n'est pas un C2 pleinement fonctionnel, prêt pour des engagements OPSEC sûrs.

Idées de détection et de prévention des défenseurs (Pour ajouter, veuillez soumettre une Pull Request)

Mehmet Ergene (@Cyb3rMonk) Conseils de détection

  1. "Établir une référence des applications se connectant à l'API Graph et vérifier les anomalies pourrait être une idée. Cependant, cela pourrait être facilement contourné."
  2. "Comme toujours, détecter le trafic beaconing. (Je ferai une amélioration pour couvrir l'API Graph et des trucs similaires)"

F-Secure - Partagé par Alfie Champion

  • "Microsoft est un exemple d'une telle organisation qui a pris des mesures proactives pour défendre les organisations contre l'abus de ses services. Elle a récemment développé la capacité de détecter et de bloquer l'utilisation malveillante des applications Azure. Plus précisément, F-Secure a observé que toute application utilisée dans le framework C3 (comme OneDrive365 et Outlook365 (O365)) est désormais détectée comme malveillante, puis désactivée par Microsoft (dans un délai d'environ trois heures)."

Crédits / Références

  • Sektor7 Malware Development Courses
  • @passthehashbrwn - Dynamic payload generation with mingw
  • Raphael Mudge - Red Team Ops with Cobalt Strike (2 of 9): Infrastructure
  • Raphael Mudge - Red Team Ops with Cobalt Strike (3 of 9): C2
  • Microsoft Graph REST API v1.0
  • Microsoft WinInet
  • StackOverFlow - Create Process and Capture stdout
  • Microsoft - Creating a Child Process with Redirected Input and Output

Projets/Recherches/Blogs sympas similaires

F-Secure C3 - Custom Command & Control

  • "C3 a été construit en réponse à ce besoin. C'est un outil qui permet aux Red Teams de développer et d'utiliser rapidement des canaux de commande et contrôle (C2) ésotériques."
  • RIP OFFICE365 COMMAND AND CONTROL – WE HARDLY KNEW YOU
  • F-Secure C3 - Custom Command & Control GitHub Repo

Callidus par Chirag Savla

  • "Callidus est développé en utilisant le framework .net core en langage C#. Il permet aux opérateurs d'exploiter les services O365 pour établir un canal de communication de commande et contrôle. Il utilise les API Microsoft Graph pour communiquer avec les services O365."
  • 3xpl01tc0d3r/Callidus GitHub Repo
  • Introduction to Callidus - Blog Post

Azure Application Proxy C2 - Adam Chester (@_xpn_)

  • Azure Application Proxy C2 - Research Blog
Télécharger l’outil
  • exit: Quitte/tue le processus hôte.
  • Si la méta-commande est cmd, l'implant crée un processus enfant pour exécuter la commande, le processus enfant écrit sa sortie standard dans un tube, le processus enfant se termine après l'exécution de la commande, et le processus hôte de l'implant lit la sortie du processus enfant via le tube.
  • Après que l'implant a obtenu la sortie de la commande exécutée, il utilise l'API MS Graph pour créer un nouvel e-mail brouillon contenant la sortie de la commande.
  • L'implant crée ensuite un second e-mail brouillon avec un corps vide.
    • Cela permet de journaliser la sortie de la commande dans la boîte aux lettres Brouillons de l'attaquant.
    • Cela met à disposition de l'attaquant un nouveau message brouillon pour entrer la prochaine commande que l'implant exécutera.
  • Après que la commande a été exécutée et que la sortie a été renvoyée à l'attaquant, l'implant dort pendant un temps contrôlé par l'attaquant, puis répète cette boucle.