Aller au contenu

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"]
Chemin d’accèsTechnique d’attaque typiqueProtocole & ID d’applicationSource télémétrique cléPrécision et granularité forensique
1. Web interactifVol de cookie de session / Proxy AiTMHTTPS / Navigateur (UserAgent)UAL (FileAccessed, Search)Granulaire : identifie chaque fichier lu et requête tapée
2. Client sync natifSynchronisation sur machine pirateCobalt / 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 CodeREST API Graph (Permissions déléguées)Sign-in Logs + UAL APIReconstitue les appels d’API sous le compte utilisateur
4. Principal de serviceCertificat ou secret injecté sur SPNREST API Graph (Files.Read.All)ServicePrincipalSignInLogs + UALOpaque : accès global au tenant sans attribution nominative
5. Export eDiscoveryAdministrateur eDiscovery compromisPortail de conformité PurviewUAL (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:#f5c6cb
  1. 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.
  2. 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.
  3. L’horizon observé (prise de connaissance avérée) :
    • Fichiers affichés via Office Online (FileAccessed avec propriété WOPI) et courriels ouverts individuellement dans OWA (MailItemsAccessed en mode Bind).
    • Atteste de la lecture du document, sans prouver la création d’une copie locale sur l’ordinateur de l’attaquant.
  4. 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.

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_throttled

Où :

  • M_exfil : courriels tracés en sortie dans le Message Trace ou lus unitairement (MailItemsAccessed Bind) par les IP suspectes.
  • F_exfil : fichiers avec événements FileDownloaded ou FileSyncDownloadedFull attribués aux sessions de l’attaquant.
  • S_anon : ensemble des documents contenus dans les dossiers ayant fait l’objet de liens AnonymousLinkCreated consommé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'attaquant
let 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

Lors de la transmission du dossier aux directions juridiques et autorités de contrôle :

  1. É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 FileDownloaded ou FileSyncDownloadedFull).

  2. 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.”

  3. 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.