Chemins d'accès aux données & calcul du rayon d'impact
1. Les 5 chemins d’accès fondamentaux aux données dans Microsoft 365
Section intitulée « 1. Les 5 chemins d’accès fondamentaux aux données dans Microsoft 365 »Les cyberattaquants interagissent avec les données de l’entreprise à travers cinq canaux architecturaux distincts, chacun présentant une signature protocolaire, une méthode d’authentification et une finesse de journalisation spécifiques.
graph TD Attacker[Attaquant / Compte compromis] --> P1[Chemin 1 : Session Web / Mobile interactive] Attacker --> P2[Chemin 2 : Clients de synchronisation natifs] Attacker --> P3[Chemin 3 : Jetons délégués d'applications OAuth] Attacker --> P4[Chemin 4 : Principaux de service Applicatifs] Attacker --> P5[Chemin 5 : Super-privilège Purview eDiscovery]
P1 -->|OWA, Portail SPO, Teams Web| Log1["Purview UAL: FileAccessed, MailItemsAccessed (Bind)"] P2 -->|OneDrive.exe, Synchro Outlook OST| Log2["Purview UAL: FileSyncDownloadedFull, MailItemsAccessed (Sync)"] P3 -->|API Graph sous contexte utilisateur| Log3["Purview UAL + Sign-in Logs (Délégation d'identité)"] P4 -->|API Graph / Secret d'application / Certificat| Log4["ServicePrincipalSignInLogs + Activités UAL"] P5 -->|ComplianceSearchAction| Log5["Audit Purview : SearchExported, SearchCreated"]Analyse comparative des 5 chemins d’accès
Section intitulée « Analyse comparative des 5 chemins d’accès »| Chemin d’accès | Technique d’attaque typique | Protocole & ID d’application | Source télémétrique clé | Précision et granularité forensique |
|---|---|---|---|---|
| 1. Web interactif | Vol de cookie de session / Proxy AiTM | HTTPS / Navigateur (UserAgent) | UAL (FileAccessed, Search) | Granulaire : identifie chaque fichier lu et requête tapée |
| 2. Client sync natif | Synchronisation sur machine pirate | Cobalt / MAPI-HTTP (onedrive.exe) | UAL (FileSyncDownloadedFull) | Déterminant : prouve la copie binaire intégrale du fichier |
| 3. Jeton OAuth délégué | Application OAuth illégitime / Device Code | REST API Graph (Permissions déléguées) | Sign-in Logs + UAL API | Reconstitue les appels d’API sous le compte utilisateur |
| 4. Principal de service | Certificat ou secret injecté sur SPN | REST API Graph (Files.Read.All) | ServicePrincipalSignInLogs + UAL | Opaque : accès global au tenant sans attribution nominative |
| 5. Export eDiscovery | Administrateur eDiscovery compromis | Portail de conformité Purview | UAL (SearchExported, SearchCreated) | Catastrophique : extraction groupée de millions d’éléments |
2. Construction de la matrice de preuve : accessible versus exfiltré
Section intitulée « 2. Construction de la matrice de preuve : accessible versus exfiltré »Les notifications réglementaires de violation de données (ex. notification CNIL sous 72 heures en vertu de l’article 33 du RGPD) imposent une distinction nette entre le périmètre théorique et les faits matériellement constatés :
flowchart TD AllData["Ensemble des données du Tenant (Corpus global)"] --> Accessible["1. Périmètre Accessible<br/>(Données que le compte avait le droit théorique de consulter)"] Accessible --> Queried["2. Périmètre Découvert<br/>(Données ciblées par recherche : SearchQueryPerformed)"] Queried --> Accessed["3. Périmètre Observé<br/>(Fichiers ouverts ou prévisualisés : MailItemsAccessed, FileAccessed)"] Accessed --> Exfiltrated["4. Périmètre Exfiltré Prouvé<br/>(Fichiers matériellement transférés : FileDownloaded, FileSyncDownloadedFull)"]
style AllData fill:#f5f5f5,stroke:#999 style Accessible fill:#fff3cd,stroke:#ffeeba style Queried fill:#d1ecf1,stroke:#bee5eb style Accessed fill:#d4edda,stroke:#c3e6cb style Exfiltrated fill:#f8d7da,stroke:#f5c6cbLes 4 horizons d’évaluation forensique
Section intitulée « Les 4 horizons d’évaluation forensique »- L’horizon accessible (rayon d’impact théorique) :
- Comprend la boîte aux lettres de la victime, son OneDrive personnel et l’ensemble des sites SharePoint où elle dispose de droits de lecture ou de membre.
- Règle de communication : Ne jamais déclarer ce volume comme “exfiltré” sans preuve tangible.
- L’horizon découvert (intention de l’attaquant) :
- Documents et courriels renvoyés par les requêtes de recherche textuelle (
SearchQueryPerformed). - Révèle les cibles tactiques d’intérêt de l’attaquant.
- Documents et courriels renvoyés par les requêtes de recherche textuelle (
- L’horizon observé (prise de connaissance avérée) :
- Fichiers affichés via Office Online (
FileAccessedavec propriété WOPI) et courriels ouverts individuellement dans OWA (MailItemsAccesseden modeBind). - Atteste de la lecture du document, sans prouver la création d’une copie locale sur l’ordinateur de l’attaquant.
- Fichiers affichés via Office Online (
- L’horizon exfiltré (compromission matérielle définitive) :
- Transferts binaires avérés :
FileDownloaded,FileSyncDownloadedFull, courriels délivrés via le Message Trace et fichiers récupérés via des liens anonymes par des IP tierces. - Nécessite la déclaration formelle de fuite de données aux autorités compétentes.
- Transferts binaires avérés :
3. Formule de calcul du rayon d’impact (blast radius)
Section intitulée « 3. Formule de calcul du rayon d’impact (blast radius) »Pour calculer l’empreinte réelle de la compromission, les analystes appliquent la formule de synthèse sur la fenêtre d’incident (T_debut à T_fin) :
Rayon d'Impact = M_exfil ∪ F_exfil ∪ S_anon ∪ C_throttledOù :
M_exfil: courriels tracés en sortie dans le Message Trace ou lus unitairement (MailItemsAccessedBind) par les IP suspectes.F_exfil: fichiers avec événementsFileDownloadedouFileSyncDownloadedFullattribués aux sessions de l’attaquant.S_anon: ensemble des documents contenus dans les dossiers ayant fait l’objet de liensAnonymousLinkCreatedconsommés par des tiers.C_throttled: population intégrale des dossiers de messagerie où l’audit a consignéIsThrottled: True.
4. Ingénierie de détection : requêtes de synthèse KQL
Section intitulée « 4. Ingénierie de détection : requêtes de synthèse KQL »// Synthèse de tous les événements de téléchargement et d'accès de l'attaquantlet CompromiseStart = datetime(2026-09-01T00:00:00Z);let CompromiseEnd = datetime(2026-09-17T23:59:59Z);let SuspectUser = "victim@contoso.com";let KnownAttackerIPs = dynamic(["198.51.100.45", "203.0.113.88"]);CloudAppEvents| where TimeGenerated between (CompromiseStart .. CompromiseEnd)| where AccountDisplayName =~ SuspectUser or RawEventData.UserId =~ SuspectUser| where IPAddress in (KnownAttackerIPs) or RawEventData.ClientIP in (KnownAttackerIPs)| extend Workload = tostring(RawEventData.Workload)| extend Operation = tostring(RawEventData.Operation)| extend ObjectName = coalesce(tostring(RawEventData.SourceFileName), tostring(RawEventData.Item), tostring(RawEventData.ObjectId))| extend TargetPath = tostring(RawEventData.SourceRelativeUrl)| summarize EventCount = count(), FirstSeen = min(TimeGenerated), LastSeen = max(TimeGenerated) by Workload, Operation, ObjectName, TargetPath, IPAddress| sort by Workload asc, Operation asc// Détection des recherches et exports massifs non autorisés dans PurviewCloudAppEvents| where TimeGenerated >= ago(30d)| where ActionType in ("SearchCreated", "SearchExported", "SearchPreviewed")| extend SearchName = tostring(RawEventData.SearchName)| extend ExportLocations = tostring(RawEventData.Locations)| project TimeGenerated, AccountDisplayName, ActionType, SearchName, ExportLocations, IPAddress, RawEventData| sort by TimeGenerated desc<#.SYNOPSIS Génère la liste exhaustive des fichiers et messages exfiltrés par une IP suspecte.#>Connect-ExchangeOnline
$User = "victim@contoso.com"$AttackerIPs = @("198.51.100.45", "203.0.113.88")$StartDate = (Get-Date "2026-09-01")$EndDate = (Get-Date "2026-09-17")
Write-Host "[+] Extraction des événements d'exfiltration avérée pour $User..." -ForegroundColor Cyan
$ExfilOps = @("FileDownloaded", "FileSyncDownloadedFull", "MailItemsAccessed", "Send", "SendAs")$Results = Search-UnifiedAuditLog -Operations $ExfilOps -FreeText $User -StartDate $StartDate -EndDate $EndDate -ResultSize 5000
$Filtered = $Results | Where-Object { $Payload = $_.AuditData | ConvertFrom-Json $AttackerIPs -contains $Payload.ClientIP}
Write-Host "[!] $($Filtered.Count) accès matériels constatés depuis les adresses de l'attaquant !" -ForegroundColor Red$Filtered | Select-Object CreationDate, Operations, @{N='ClientIP';E={($_.AuditData | ConvertFrom-Json).ClientIP}}, @{N='Objet';E={($_.AuditData | ConvertFrom-Json).SourceFileName}} | Export-Csv -Path "Rapport_Rayon_Impact.csv" -NoTypeInformation5. Cadre de reporting réglementaire opposable
Section intitulée « 5. Cadre de reporting réglementaire opposable »Lors de la transmission du dossier aux directions juridiques et autorités de contrôle :
-
Éviter impérativement l’amalgame entre accessible et compromis : Présenter systématiquement deux tableaux séparés : le Corpus Potentiellement Accessible (l’ensemble des bibliothèques auxquelles l’utilisateur avait accès) et le Corpus Matériellement Exfiltré (la liste étayée par des événements
FileDownloadedouFileSyncDownloadedFull). -
Qualifier rigoureusement les limitations d’audit : En présence de throttling de boîte aux lettres (
IsThrottled: True), déclarer explicitement :“Conformément aux mécanismes de limitation d’audit d’Exchange Online, les synchronisations massives dépassant 1 000 éléments ne consignent pas les identifiants unitaires de messages. Bien que 14 courriels aient été formellement tracés, les 850 messages contenus dans le dossier Boîte de réception doivent être juridiquement présumés exposés.”
-
Fournir des métadonnées probantes inaltérables : Associer à chaque élément du bordereau d’exfiltration son URL complète, son horodatage UTC à la seconde, l’adresse IP source et le volume d’octets transférés.