Gestion des Identités (Entra ID)

Secrets OAuth Entra ID : Détecter la Persistance T1098.003

5 min de lecture Akuity SOC · Delphisoft Deutschland

Détectez l'ajout illégitime de credentials OAuth dans Microsoft Entra ID (T1098.003) via Advanced Hunting KQL et remédiez instantanément avec Akuity SOC.

Dans le paysage moderne des attaques cloud, la persistance silencieuse supplante les exfiltrations brutales. Lorsqu'un attaquant compromet un compte disposant de privilèges d'administration d'applications dans Microsoft Entra ID (rôle Application Administrator ou Cloud Application Administrator), il cherche immédiatement à pérenniser son accès sans éveiller les soupçons. La technique MITRE ATT&CK T1098.003 (Add OAuth App Credentials) constitue le vecteur de prédilection : elle consiste à injecter un nouveau secret client ou un certificat x509 au sein d'une application d'entreprise légitime ou d'un Service Principal existant.

Anatomie de l'attaque : La porte dérobée invisible

Contrairement à la création d'un nouveau compte administrateur immédiatement repérable dans les revues d'accès, la modification des informations d'identification d'une application tierce déjà approuvée hérite de l'ensemble des permissions Microsoft Graph de celle-ci (ex. Mail.ReadWrite, Directory.ReadWrite.All, Files.ReadWrite.All). L'attaquant n'a plus besoin d'interagir avec l'interface d'authentification interactive d'Entra ID : il utilise le flux OAuth 2.0 Client Credentials Grant directement depuis ses propres serveurs de commande et contrôle (C2), contournant intégralement les politiques de Conditional Access et le MFA utilisateur.

L'angle mort natif d'Entra ID

Par défaut, l'audit natif de Microsoft 365 enregistre les opérations d'ajout de clés dans le journal d'audit sous les événements Add service principal credentials ou Update application – Certificates and secrets management. Toutefois, ces événements sont noyés dans la masse des déploiements CI/CD automatisés et des renouvellements programmés de secrets. Sans corrélation contextuelle entre l'adresse IP d'origine, le compte exécutant (UPN interactif vs identité de charge de travail) et la durée de validité anormale de la clé (par exemple un secret configuré pour expirer dans 99 ans), cette porte dérobée reste indétectée pendant plusieurs mois.

Détection avancée par Advanced Hunting (KQL)

La requête KQL ci-dessous permet d'isoler en temps réel les ajouts de secrets applicatifs suspects en filtrant les déploiements légitimes de votre chaîne DevOps :

CloudAppEvents
| where ActionType in~ (
    "Add service principal credentials.",
    "Update application – Certificates and secrets management ")
| extend ActorUPN = tostring(RawEventData.InitiatedBy.user.userPrincipalName),
         ActorIP  = coalesce(IPAddress, tostring(RawEventData.InitiatedBy.user.ipAddress)),
         AppId    = tostring(RawEventData.TargetResources[0].id),
         AppName  = tostring(RawEventData.TargetResources[0].displayName)
| mv-expand Property = RawEventData.TargetResources[0].modifiedProperties
| where Property.displayName =~ "KeyDescription"
| extend KeyData = parse_json(tostring(Property.newValue))
| extend KeyType = tostring(KeyData[0].KeyType), EndUtc = todatetime(KeyData[0].EndDateTime)
| where not(ActorUPN endswith "svc-devops@akuity.eu" and ActorIP in ("51.144.0.0/14"))
| project Timestamp, ActorUPN, ActorIP, AppName, AppId, KeyType, EndUtc, ReportId

Remédiation automatisée avec Akuity SOC

Face à une détection positive, le temps de réponse est critique. La plateforme SOAR sans agent d'Akuity SOC neutralise la persistance en quelques secondes :

  • Résolution de la friction : L'assistant IA in-app d'Akuity SOC analyse et décode les événements Graph API au sein du Ticket Panel unifié, éliminant tout risque d'exposition de données sensibles sur des parseurs web tiers.
  • Riposte SOAR chirurgicale : Déclenchement en 1 clic de l'action revokeOAuthApp() depuis l'inventaire des éléments de preuve pour supprimer instantanément le secret injecté et révoquer les autorisations du Service Principal.
  • Gouvernance & conformité : Validation préalable sous élévation MFA AAL2 obligatoire et consignation immuable de l'action dans le journal d'audit certifié conforme aux exigences NIS 2 et SOC 2 Type II.
Akuity SOC · Essai Gratuit 14 JoursNeutralisez la persistance OAuth dans Entra ID :

Surveillez les modifications d'informations d'identification de vos Service Principals et révoquez les backdoors applicatives en 1 clic grâce à notre SOAR cloud.

Démarrer votre essai gratuit de 14 jours (sans carte bancaire) →

Mini-FAQ technique

Pourquoi le Conditional Access ne bloque-t-il pas cette attaque ?

Le flux OAuth Client Credentials utilisé avec un secret d'application n'implique aucun utilisateur interactif. Les politiques d'accès conditionnel ciblant les identités humaines ne s'appliquent pas aux Service Principals, à moins d'activer spécifiquement les licences Workload Identities Premium et de configurer des politiques dédiées aux identités de machines.

Comment différencier une injection de secret malveillante d'un renouvellement Terraform ?

L'analyse repose sur le compte initiateur (compte nominatif vs Service Principal CI/CD), la plage IP source et les métadonnées de l'opération (validité atypique, absence d'association avec un ticket Jira/ServiceNow valide dans le pipeline SOAR).

Page Solution Associée

Plateforme SOC & SOAR Microsoft

Automatisez votre détection et votre réponse aux incidents avec Akuity SOC.

Découvrir la solution complète