Aller au contenu

Investigation OneDrive & exfiltration par synchronisation

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 --> CloudAudit

Différences forensiques majeures entre SharePoint et OneDrive

Section intitulée « Différences forensiques majeures entre SharePoint et OneDrive »
Dimension forensiqueSharePoint OnlineOneDrive Entreprise
Chemin de collection/sites/<NomDuSite>//personal/<user>_<domaine>_com/
Administrateur principalAdministrateurs de site / Propriétaires de groupeL’utilisateur lui-même (propriétaire par défaut)
Known folder move (KFM)Non applicableSynchronise automatiquement le Bureau, Documents et Images
Synchronisation par défautSélective par bibliothèque documentaireSynchronisation intégrale de l’espace personnel (onedrive.exe)
Administration secondaireGouvernance centraliséeNé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 :

  1. L’attaquant compromet le compte utilisateur ou vole un jeton de session / PRT valide.
  2. Il initialise le client officiel OneDrive (onedrive.exe sous Windows ou macOS) sur sa propre machine non gérée.
  3. 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 --> SQLite

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.

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 :

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 FileDownloaded survenant en quelques secondes avec la même IP source et le même User-Agent.
  • Artefact user-agent : comporte fréquemment la chaîne OneDriveBrowserSync ou pointe vers /_layouts/15/download.aspx.

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 : SharingSet ou AddedToSecureLink.
  • 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 OneDrive
CloudAppEvents
| 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

6. Playbook d’investigation : réponse à incident OneDrive

Section intitulée « 6. Playbook d’investigation : réponse à incident OneDrive »
  1. 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"
  2. 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
  3. Reconstitution de la liste des fichiers exfiltrés : Extraire la liste intégrale des événements FileSyncDownloadedFull pour fournir le fichier d’impact opposable aux autorités de régulation.

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