Investigation OneDrive & exfiltration par synchronisation
1. Architecture de OneDrive entreprise
Section intitulée « 1. Architecture de OneDrive entreprise »Sous le capot, OneDrive Entreprise n’est pas un système de stockage isolé : chaque espace OneDrive est provisionné comme une collection de sites SharePoint personnelle dans l’espace de noms dédié du tenant :
https://contoso-my.sharepoint.com/personal/user_contoso_com/graph TD subgraph CloudNamespace ["Espace personnel Microsoft 365 (contoso-my.sharepoint.com)"] SiteColl["Collection de sites personnelle (/personal/user_contoso_com)"] RootFolder["Bibliothèque racine ('Documents')"] KFM["Known Folder Move (Bureau, Documents, Images)"] OneNoteFolder["Blocs-notes OneNote & AppData"] end
subgraph AccessMechanisms ["Modes d'accès"] WebBrowser["Navigateur web (Portail M365)"] SyncClient["Client de synchronisation OneDrive (onedrive.exe)"] MobileApp["Application mobile OneDrive"] GraphAPI["API Microsoft Graph (/me/drive)"] end
subgraph AuditTelemetry ["Télémétrie d'audit & Endpoint"] CloudAudit["Journal Purview UAL (Workload OneDrive)"] LocalLogs["Journaux ODL locaux (SyncEngine.odl)"] SQLiteDB["Bases SQLite de configuration et d'empreintes"] end
AccessMechanisms --> CloudNamespace SyncClient -.-> LocalLogs SyncClient -.-> SQLiteDB AccessMechanisms --> CloudAuditDifférences forensiques majeures entre SharePoint et OneDrive
Section intitulée « Différences forensiques majeures entre SharePoint et OneDrive »| Dimension forensique | SharePoint Online | OneDrive Entreprise |
|---|---|---|
| Chemin de collection | /sites/<NomDuSite>/ | /personal/<user>_<domaine>_com/ |
| Administrateur principal | Administrateurs de site / Propriétaires de groupe | L’utilisateur lui-même (propriétaire par défaut) |
| Known folder move (KFM) | Non applicable | Synchronise automatiquement le Bureau, Documents et Images |
| Synchronisation par défaut | Sélective par bibliothèque documentaire | Synchronisation intégrale de l’espace personnel (onedrive.exe) |
| Administration secondaire | Gouvernance centralisée | Nécessite l’injection d’un administrateur secondaire en PowerShell |
2. Exfiltration par le client de synchronisation OneDrive (onedrive.exe)
Section intitulée « 2. Exfiltration par le client de synchronisation OneDrive (onedrive.exe) »Le vecteur d’exfiltration le plus redoutable et discret en environnement M365 est la synchronisation pirate :
- L’attaquant compromet le compte utilisateur ou vole un jeton de session / PRT valide.
- Il initialise le client officiel OneDrive (
onedrive.exesous Windows ou macOS) sur sa propre machine non gérée. - Dès l’authentification validée, le client OneDrive négocie un partenariat de synchronisation et télécharge silencieusement l’ensemble des dossiers de la victime sur le disque dur de l’attaquant.
sequenceDiagram autonumber actor Attacker as Attaquant (Poste externe pirate) participant Entra as Microsoft Entra ID participant ODB as Service OneDrive (/personal/...) participant UAL as Journal d'audit unifié Purview participant Host as Système de fichiers de l'attaquant
Attacker->>Entra: Authentification avec identifiants volés / session Entra-->>Attacker: Émission du jeton d'accès pour la ressource SharePoint Attacker->>ODB: Initialisation du client OneDrive (onedrive.exe) ODB->>UAL: Journalisation 'FileSyncClientLoggedOn' (IP de l'attaquant) ODB->>Host: Flux de données descendant en tâche de fond (protocole Cobalt) ODB->>UAL: Journalisation 'FileSyncDownloadedFull' pour CHAQUE fichier reçu ! Note over Host: L'intégralité des documents de la victime est dupliquée en local Note over UAL: 'FileSyncDownloadedFull' apporte la PREUVE MATÉRIELLE de l'exfiltration !La signature médico-légale irréfutable : FileSyncDownloadedFull
Section intitulée « La signature médico-légale irréfutable : FileSyncDownloadedFull »Contrairement à la consultation web (FileAccessed), les transferts par client de synchronisation génèrent un événement UAL d’une valeur juridique absolue :
{ "Workload": "OneDrive", "Operation": "FileSyncDownloadedFull", "UserId": "victim@contoso.com", "ClientIP": "203.0.113.88", "UserAgent": "Microsoft SkyDriveSync 26.045.0302.0001", "SourceFileName": "Salaires_Direction_2026.xlsx", "SourceRelativeUrl": "Documents/Confidentiel/Salaires_Direction_2026.xlsx"}- Niveau de preuve : Prouvé (Niveau 7). Confirme sans équivoque que la charge binaire du fichier a été transférée sur la machine distante.
3. Corrélation des artefacts endpoint (forensique poste client)
Section intitulée « 3. Corrélation des artefacts endpoint (forensique poste client) »Lorsque les analystes ont accès au poste physique (ex. dans le cas d’un vol de données par un collaborateur malveillant ou d’une machine d’entreprise compromise) :
graph LR subgraph EndpointArtifacts ["Artefacts locaux Windows (%LOCALAPPDATA%\Microsoft\OneDrive)"] ODLLogs["*.odl / *.odlgz<br/>(Obfuscated Developer Logs - SyncEngine)"] SyncEngine["SyncEngine.odl<br/>(Contient les empreintes, horodatages et blocs transférés)"] SQLite["settings\Personal\*.dat<br/>(Bases SQLite d'état et de synchronisation)"] KFMConfig["ClientPolicy.ini<br/>(Tenant ID, User CID, racines synchronisées)"] end
SyncEngine --> SQLite1. Journaux obfuscated developer logs (.odl)
Section intitulée « 1. Journaux obfuscated developer logs (.odl) »Situés sous :
%LOCALAPPDATA%\Microsoft\OneDrive\logs\Personal\%LOCALAPPDATA%\Microsoft\OneDrive\logs\Business1\SyncEngine.odl: enregistre chaque transaction de synchronisation, les téléchargements de fichiers et les calculs de hachage.- Déchiffrement : les fichiers sont encodés avec un masque simple. Des outils open source (ex.
OneDriveODL) permettent de les décoder en clair pour extraire les noms des fichiers, leur taille exacte et l’horodatage de finalisation du transfert.
2. Bases de données SQLite locales
Section intitulée « 2. Bases de données SQLite locales »Situés sous :
%LOCALAPPDATA%\Microsoft\OneDrive\settings\Personal\ClientPolicy.ini: enregistre l’ID du tenant Azure, le CID utilisateur et les règles d’exclusion de fichiers.[UserCID].dat: fichier de base de données SQLite consignant la table de correspondance entre les fichiers distants et les chemins locaux sur le disque.
4. Exfiltration web en masse versus téléchargement direct
Section intitulée « 4. Exfiltration web en masse versus téléchargement direct »Si l’attaquant ne peut pas utiliser le client de synchronisation (par exemple si une politique d’accès conditionnel exige un poste conforme Intune), il recourt à l’interface web :
1. Téléchargement d’archives ZIP groupées
Section intitulée « 1. Téléchargement d’archives ZIP groupées »Lorsque l’attaquant sélectionne plusieurs fichiers ou un dossier complet dans l’interface web et clique sur Télécharger, OneDrive compresse les données à la volée dans un fichier .zip unique.
- Signature d’audit : une grappe dense d’événements
FileDownloadedsurvenant en quelques secondes avec la même IP source et le même User-Agent. - Artefact user-agent : comporte fréquemment la chaîne
OneDriveBrowserSyncou pointe vers/_layouts/15/download.aspx.
2. Injection de partage externe permanent
Section intitulée « 2. Injection de partage externe permanent »Pour maintenir un accès persistant sans se reconnecter au compte de la victime, l’attaquant partage la racine de son OneDrive avec son adresse personnelle externe :
- Opération :
SharingSetouAddedToSecureLink. - Cible : dossier racine
Documents. - Conséquence : l’attaquant peut désormais synchroniser le OneDrive de la victime depuis son propre ordinateur personnel via son compte grand public, sans laisser de trace de connexion supplémentaire sur le tenant professionnel.
5. Ingénierie de détection : requêtes de chasse KQL
Section intitulée « 5. Ingénierie de détection : requêtes de chasse KQL »// Détection de téléchargements massifs via le client de synchronisation OneDriveCloudAppEvents| where TimeGenerated >= ago(7d)| where ActionType == "FileSyncDownloadedFull"| extend Workload = tostring(RawEventData.Workload)| where Workload =~ "OneDrive"| extend ClientIP = tostring(RawEventData.ClientIP)| extend FileName = tostring(RawEventData.SourceFileName)| summarize DownloadedFilesCount = count(), Files = make_set(FileName, 20) by AccountDisplayName, ClientIP, bin(TimeGenerated, 1h)| where DownloadedFilesCount > 100| sort by DownloadedFilesCount desc// Détection du partage externe appliqué à la racine des documents OneDriveCloudAppEvents| where TimeGenerated >= ago(14d)| where ActionType in ("SharingSet", "AddedToSecureLink", "AnonymousLinkCreated")| extend Workload = tostring(RawEventData.Workload)| where Workload =~ "OneDrive"| extend TargetPath = tostring(RawEventData.SourceRelativeUrl)| where TargetPath in ("", "Documents", "/") or TargetPath !contains "/"| project TimeGenerated, AccountDisplayName, ActionType, TargetPath, RawEventData| sort by TimeGenerated desc<#.SYNOPSIS Recherche les administrateurs secondaires suspects sur le OneDrive de la victime.#>Connect-SPOService -Url "https://contoso-admin.sharepoint.com"
$UserUrl = "https://contoso-my.sharepoint.com/personal/victim_contoso_com"$Admins = Get-SPOUser -Site $UserUrl | Where-Object {$_.IsSiteAdmin -eq $true}
Write-Host "[+] Administrateurs de la collection $UserUrl :" -ForegroundColor Cyan$Admins | Select-Object DisplayName, LoginName, IsGroup6. Playbook d’investigation : réponse à incident OneDrive
Section intitulée « 6. Playbook d’investigation : réponse à incident OneDrive »-
Rupture des liaisons de synchronisation et révocation des sessions : Révoquer immédiatement les jetons d’actualisation de l’utilisateur pour couper le flux du client de synchronisation :
Fenêtre de terminal Revoke-MgUserSignInSession -UserId "victim@contoso.com" -
Suppression des administrateurs secondaires illégitimes : Supprimer tout compte d’administration tiers greffé sur le OneDrive de la victime :
Fenêtre de terminal Set-SPOUser -Site "https://contoso-my.sharepoint.com/personal/victim_contoso_com" -LoginName "attacker@external.com" -IsSiteCollectionAdmin $false -
Reconstitution de la liste des fichiers exfiltrés : Extraire la liste intégrale des événements
FileSyncDownloadedFullpour fournir le fichier d’impact opposable aux autorités de régulation. -
Restriction d’accès par politique d’accès conditionnel : Verrouiller l’accès au client de synchronisation OneDrive (ID d’application :
ab9b8c07-8f02-4572-86fa-10992910f3c3) en imposant un appareil conforme Intune ou joint au domaine hybride.