Cartographie de la surface d'attaque des données M365
1. Topographie des données multi-workloads
Section intitulée « 1. Topographie des données multi-workloads »Un tenant Microsoft 365 moderne constitue un entrepôt de données distribué et hétérogène. Un adversaire disposant d’un ancrage (session détournée, consentement OAuth illégitime, secret de principal de service) peut naviguer entre des charges de travail applicatives distinctes, chacune disposant d’abstractions de stockage, de protocoles et d’une fidélité d’audit spécifiques.
graph TD subgraph IdentityPlane ["Microsoft Entra ID (Plan d'identité)"] Token[Jeton OAuth 2.0 / PRT] AppToken[Jeton Application de Service Principal] end
subgraph DataPlane ["Tissu de données Microsoft 365"] EXO["Exchange Online<br/>(Boîtes utilisateurs, partagées, archives)"] SPO["SharePoint Online<br/>(Sites d'équipe, communication, hubs)"] ODB["OneDrive Entreprise<br/>(Dossiers personnels, points de synchro)"] Teams["Microsoft Teams<br/>(Conversations Substrate, fichiers de canaux)"] Fabric["Power Platform & Fabric<br/>(Jeux de données Power BI, Dataverse)"] end
subgraph SearchDiscovery ["Moteurs de découverte globale"] MSearch["Microsoft Search / Graph API /search"] Delve["Office Graph & découvrabilité sémantique"] eDisc["Purview eDiscovery (Super-privilège)"] end
Token --> EXO Token --> SPO Token --> ODB Token --> Teams AppToken --> EXO AppToken --> SPO AppToken --> Fabric
Token --> MSearch MSearch -.-> SPO MSearch -.-> ODB MSearch -.-> EXO MSearch -.-> TeamsMatrice des silos de stockage et caractéristiques forensiques
Section intitulée « Matrice des silos de stockage et caractéristiques forensiques »| Workload | Architecture de stockage | Protocoles & Accès client | Flux d’audit principal | Risque d’exposition par défaut |
|---|---|---|---|---|
| Exchange online | Partition de base ESE (Azure Substrate) | MAPI-HTTP, EWS, ActiveSync, REST Graph | Purview UAL (ExchangeItem) | Règles de boîte, transferts, boîtes déléguées |
| SharePoint online | Azure SQL + Azure Blob Storage | REST, CSOM, SOAP, WebDAV, UI Web | Purview UAL (SharePointFileOperation) | Liens de partage “Tout le monde”, sites ouverts |
| OneDrive entreprise | Collection de sites personnelle (/personal/) | Client Sync (ODL), REST Graph, UI Web | Purview UAL (OneDrive) | Exfiltration par synchronisation, liens invités |
| Microsoft teams | Substrate Hybride (Exchange + SPO + ODB) | Skypetoken, MTnp, REST Graph | Purview UAL (MicrosoftTeams) | Fédération externe, invités dans les canaux |
| Power platform / fabric | Dataverse / Azure Data Lake Storage Gen2 | OData, TDS, Client Power Apps | Purview UAL (PowerPlatform) | Flux automatisés sortants, fuites de connecteurs |
2. Vecteurs d’exposition et déplacement latéral de données
Section intitulée « 2. Vecteurs d’exposition et déplacement latéral de données »Les attaquants ne se contentent pas de télécharger des fichiers ciblés : ils exploitent les fonctionnalités natives de collaboration pour découvrir, agréger et préparer l’exfiltration de données sensibles.
flowchart LR A[Accès Initial] --> B[Découverte sur le Tenant] B --> C{Mécanisme d'Exposition} C -->|Recherche Graph| D[Mots-clés : 'facture', 'motdepasse', 'fusion'] C -->|Liens de Partage| E[Création de liens anonymes 'Tout le monde'] C -->|Fédération Teams| F[Exfiltration via chat 1:1 externe] C -->|Applications OAuth| G[Persistance de droits de lecture globaux] D --> H[Exfiltration Coordonnée] E --> H F --> H G --> H1. Découverte par recherche globale (/search/query)
Section intitulée « 1. Découverte par recherche globale (/search/query) »Un attaquant détenant un compte utilisateur classique peut exécuter des requêtes de recherche globales via l’API Microsoft Graph (https://graph.microsoft.com/v1.0/search/query). Microsoft Search indexe l’ensemble des documents, courriels, discussions Teams et listes SharePoint surpartagés au sein de l’organisation (ex. partagés avec “Tout le monde sauf les utilisateurs externes”).
- Artefact forensique :
SearchQueryPerformeddans l’UAL Purview. - Indicateur de chasse : rafale de requêtes lexicales ciblant les finances (
salaire,virement,rib), les identifiants (motdepasse,credentials,vpn) ou la gouvernance.
2. Typologie des liens de partage SharePoint / OneDrive
Section intitulée « 2. Typologie des liens de partage SharePoint / OneDrive »- Anonyme (“toute personne ayant le lien” -
AnonymousLinkCreated) : génère une URL publique accessible sans aucune authentification sur Internet. Les attaquants utilisent ces liens pour exfiltrer des fichiers sans déclencher d’anomalies de connexion. - Organisation (“personnes de votre organisation” -
CompanyLinkCreated) : ouvre l’accès à tous les utilisateurs internes du tenant, augmentant massivement l’exposition latérale. - Personnes spécifiques (
SecureLinkCreated) : restreint l’accès à des utilisateurs nommés. - Permissions directes (
AddedToSecureLink) : accorde des droits explicites dans la liste de contrôle d’accès (ACL).
3. Synchronisation inter-tenants et accès externe
Section intitulée « 3. Synchronisation inter-tenants et accès externe »- B2B direct Connect (canaux partagés teams) : permet à des membres de tenants tiers d’interagir sans changer de répertoire, offrant un canal furtif de siphonage de données.
- Contournement des restrictions de tenants : utilisation du poste d’entreprise pour pousser des données vers un tenant Microsoft 365 contrôlé par l’attaquant si les restrictions de tenant ne sont pas appliquées au niveau du proxy réseau.
3. L’échelle de preuve forensique (evidentiary threshold ladder)
Section intitulée « 3. L’échelle de preuve forensique (evidentiary threshold ladder) »En investigation post-compromission, les équipes juridiques, les assureurs cyber et les régulateurs (RGPD/CNIL, SEC, NIS2) exigent de distinguer rigoureusement l’exposition potentielle de l’exfiltration avérée.
L’échelle de preuve Hermes Codex formalise cette hiérarchisation :
graph TD L1["1. Possible<br/>Les données résident sur le tenant où le compte a été compromis"] --> L2["2. Configuré<br/>La charge applicative, la licence et les politiques autorisaient l'accès"] L2 --> L3["3. Autorisé<br/>Le compte disposait d'habilitations ACL ou RBAC directes ou héritées"] L3 --> L4["4. Accessible<br/>Aucune règle d'accès conditionnel ni restriction réseau ne bloquait l'accès"] L4 --> L5["5. Utilisé<br/>Le compte s'est authentifié sur le service durant la fenêtre d'attaque"] L5 --> L6["6. Observé<br/>Un événement d'audit atteste de la recherche, lecture ou prévisualisation"] L6 --> L7["7. Prouvé<br/>Un enregistrement cryptographique ou réseau confirme le transfert sortant"]
style L1 fill:#f9f9f9,stroke:#999 style L2 fill:#f0f0f0,stroke:#888 style L3 fill:#e0e0e0,stroke:#777 style L4 fill:#d0d0d0,stroke:#666 style L5 fill:#b0e0e6,stroke:#008b8b style L6 fill:#98fb98,stroke:#2e8b57 style L7 fill:#32cd32,stroke:#006400,color:#fffPaliers de preuve et exigences réglementaires
Section intitulée « Paliers de preuve et exigences réglementaires »- Possible (niveau 1) : le compte possède une boîte ou un accès à un site, mais aucune preuve n’atteste que l’attaquant a sollicité ce workload.
- Configuré & autorisé (niveaux 2-3) : les droits théoriques existent, mais aucune interaction n’est relevée.
- Accessible & utilisé (niveaux 4-5) : l’attaquant s’est connecté à l’application (
UserLoggedIn), créant une fenêtre d’opportunité temporelle. - Observé (niveau 6) : des événements d’audit concrets (
MailItemsAccessed,FileAccessed,SearchQueryPerformed) démontrent la consultation effective de fichiers ou courriels précis. - Prouvé (niveau 7) : des enregistrements indiscutables (
FileDownloaded,FileSyncDownloadedFull, Message Trace sortant) confirment l’exfiltration physique hors du tenant.
4. Ingénierie de détection : requêtes de chasse multi-workloads
Section intitulée « 4. Ingénierie de détection : requêtes de chasse multi-workloads »// Détection de requêtes de recherche suspectes et massivesCloudAppEvents| where TimeGenerated >= ago(7d)| where ActionType in ("SearchQueryPerformed", "Search")| extend QueryText = tostring(RawEventData.QueryText)| summarize QueryCount = count(), DistinctQueries = dcount(QueryText), Queries = make_set(QueryText, 20) by AccountObjectId, IPAddress, bin(TimeGenerated, 1h)| where QueryCount > 30 or DistinctQueries > 15| extend IsSensitiveKeyword = iff(Queries has_any ("motdepasse", "salaire", "rib", "confidential", "virement", "fusion", "secret"), 1, 0)| sort by IsSensitiveKeyword desc, QueryCount desc// Détection des liens de partage anonymes créés par des comptes compromisCloudAppEvents| where TimeGenerated >= ago(14d)| where ActionType in ("AnonymousLinkCreated", "SharingSet")| extend TargetObject = tostring(RawEventData.ObjectId)| extend EventSource = tostring(RawEventData.Workload)| extend ClientIP = tostring(RawEventData.ClientIP)| project TimeGenerated, AccountDisplayName, ActionType, EventSource, TargetObject, ClientIP| sort by TimeGenerated desc<#.SYNOPSIS Recherche les sites SharePoint autorisant le partage externe anonyme.#>Connect-SPOService -Url "https://contoso-admin.sharepoint.com"
$Sites = Get-SPOSite -Limit Allforeach ($Site in $Sites) { if ($Site.SharingCapability -ne "Disabled") { Write-Host "[!] Site autorisant le partage : $($Site.Url) -> $($Site.SharingCapability)" -ForegroundColor Yellow }}5. Procédures d’endiguement du rayon d’impact
Section intitulée « 5. Procédures d’endiguement du rayon d’impact »-
Révocation d’urgence des liens de partage créés : Révoquer immédiatement les liens anonymes générés durant la période de compromission :
Fenêtre de terminal # Suppression des liens anonymes sur un fichier via PnP PowerShellGet-PnPFileSharingLink -Identity "/sites/Finance/Shared Documents/Comptes.xlsx" | Where-Object {$_.LinkKind -eq "Anonymous"} | Remove-PnPFileSharingLink -
Restriction des tenants externes sur les proxys sortants : Injecter les en-têtes HTTP de restriction sur les passerelles web pour empêcher l’exfiltration vers des tenants personnels :
Restrict-Access-To-Tenants: contoso.com, contoso.onmicrosoft.comRestrict-Access-Context: 11111111-2222-3333-4444-555555555555
-
Purge des caches de synchronisation et des sessions locales : Réinitialiser les liaisons OneDrive et Outlook locales via une commande d’effacement sélectif Intune.