Aller au contenu

Réseau et accès distant

Microsoft Teams (client classique et nouveau client)

Fiche Microsoft Teams : dossiers de l'ancien et du nouveau client, messages et appels en IndexedDB LevelDB, journaux, exports Purview ou Graph comme référence.

Emplacement
C:\Users\<user>\AppData\Local\Packages\MSTeams_8wekyb3d8bbwe\LocalCache\Microsoft\MSTeams\
Prouve
Conversations, appels, réunions et partages de fichiers mis en cache par Teams
Horodatages
composeTime et originalArrivalTime en ISO 8601, UTC ; début/fin d'appel en UTC ; lignes de log dont le fuseau varie selon le format
Rétention
Le cache client ne contient que le contenu récemment chargé ; la compaction LevelDB supprime les anciennes versions ; côté service, rétention Purview
Accès
Fichiers du profil ; LevelDB verrouillé tant que Teams tourne, le quitter d'abord ; contenu cloud via eDiscovery Purview ou l'API Graph
Type
Base de données
Windows
1011
Cible KAPE
MicrosoftTeams
Velociraptor
Windows.Triage.Targets:MicrosoftTeams

Présentation

Microsoft Teams est une application web encapsulée dans un client de bureau. Le client classique (1.x) reposait sur Electron ; le nouveau Teams (2.x, paquet MSTeams) utilise Microsoft Edge WebView2. Dans les deux cas, le client conserve localement une copie des conversations récentes, des journaux d'appels, des contacts et des réunions dans le stockage Chromium : IndexedDB et Local Storage, tous deux construits sur LevelDB, plus un cache disque et des journaux texte.

Le client classique est bloqué depuis le 1er juillet 2025 : les postes actuels utilisent le nouveau client, mais des images anciennes et des profils mis à niveau contiennent encore des données classiques. Le cache local n'est qu'une copie partielle : l'enregistrement de référence se trouve dans Microsoft 365.

Emplacement

ClientCheminContenu
Teams classique (1.x)%APPDATA%\Microsoft\Teams\IndexedDB\https_teams.microsoft.com_0.indexeddb.leveldb\Messages, contacts, journaux d'appels, transferts de fichiers
Teams classique%APPDATA%\Microsoft\Teams\Local Storage\leveldb\Paramètres, brouillons, détails de réunions et de transferts
Teams classique%APPDATA%\Microsoft\Teams\Cache\, logs.txt, desktop-config.json, storage.jsonCache disque (images, avatars), journal d'activité, données de compte et de configuration
Nouveau Teams (2.x)%LOCALAPPDATA%\Packages\MSTeams_8wekyb3d8bbwe\LocalCache\Microsoft\MSTeams\Racine de toutes les données du client
Nouveau Teams...\MSTeams\EBWebView\WV2Profile_tfw\ (IndexedDB\, Local Storage\, dossiers de cache)Profil WebView2 : conversations, fils de réponses, profils
Nouveau Teams...\MSTeams\Logs\Fichiers journaux du client
Microsoft 365Dossier caché TeamsMessagesData dans la boîte Exchange Online de chaque participant (boîte de groupe pour les canaux)Copie de conformité interrogée par eDiscovery (Purview)

Les dossiers LevelDB doivent être copiés en entier (*.ldb, *.log, MANIFEST-*, CURRENT) : une partie des enregistrements se trouve dans le fichier .log de journalisation anticipée.

Ce que l'artefact prouve

  • Communications : texte, expéditeur, conversation et heure des messages en tête-à-tête, de groupe, de canal et de réunion mis en cache sur ce poste.
  • Appels et réunions : entrées de journal d'appels avec participants, sens, heures de début et de fin (en JSON dans les enregistrements de conversation).
  • Partage de fichiers : liens et noms des fichiers partagés (les fichiers eux-mêmes sont dans OneDrive ou SharePoint).
  • Utilisation du compte : tenant et compte connectés sur ce poste, via desktop-config.json/storage.json (classique) et les journaux.
  • L'artefact ne contient pas l'historique complet : seulement ce que le client a synchronisé et mis en cache. L'absence locale d'un message ne prouve rien ; appuyez-vous sur les données du tenant.

Champs clés

Champ / magasinSignification
Magasin conversationsUn enregistrement par fil : id, membres, sujet, threadProperties, lastMessage
Magasin replychainsMessages regroupés par fil de réponses ; corps, expéditeur, composeTime, originalArrivalTime
Identifiant 19:…@unq.gbl.spacesConversation en tête-à-tête
Identifiant 19:…@thread.v2 / @thread.tacv2Conversation de groupe / canal
Identifiant 19:meeting_…@thread.v2Conversation de réunion
48:calllogsFil de l'historique des appels
isFromMe (classique)Sens du message
Magasin profilesNoms affichés, adresses e-mail et identifiants des contacts

Horodatages

HorodatagePositionné quandFormatPièges
composeTimeRédaction / envoi par l'expéditeurChaîne ISO 8601, UTCDépend de l'horloge du client émetteur
originalArrivalTimeRéception par le serviceChaîne ISO 8601, UTCLe plus fiable pour ordonner les messages entre participants
Début / fin d'appelAppel établi / terminéPropriétés JSON de l'enregistrement d'appel, UTCUn appel manqué n'a pas de durée
Heure des lignes de journal (logs.txt, Logs\)Événement du clientHorodatage texteVérifiez le fuseau horaire de chaque format
Graph createdDateTime, lastModifiedDateTime, deletedDateTimeCréation, modification, suppression côté serviceISO 8601, UTCRéférence, mais seulement pour ce que la rétention conserve

Rétention et effacement

  • Le cache du client ne contient que ce qui a été chargé récemment ; d'anciennes conversations peuvent n'avoir jamais été mises en cache sur un poste donné.
  • Le compactage LevelDB réécrit les fichiers et élimine les anciennes versions, mais des messages modifiés ou supprimés peuvent subsister dans le .log et d'anciens .ldb jusqu'au compactage.
  • Vider le cache Teams (la procédure documentée par Microsoft consiste à supprimer le contenu du dossier MSTeams) efface les preuves locales ; des dossiers recréés avec des dates de création récentes sont un indice.
  • Côté service, les stratégies de rétention Purview fixent la durée de conservation dans TeamsMessagesData ; la suppression d'un message par l'utilisateur ne le retire pas d'une copie de conformité conservée.

Collecte

  • Cible KAPE : MicrosoftTeams. Elle collecte IndexedDB, Local Storage, Cache et desktop-config.json du client classique (%APPDATA%\Microsoft\Teams), ainsi qu'un chemin de journaux sous le paquet MicrosoftTeams_8wekyb3d8bbwe. Elle ne couvre pas le dossier MSTeams_8wekyb3d8bbwe du nouveau client : ajoutez-le à la main.
  • Velociraptor (Windows.Triage.Targets) : MicrosoftTeams (même périmètre, même lacune).
  • Commandes natives : quittez Teams d'abord (les fichiers LevelDB sont verrouillés pendant l'exécution), puis copiez le dossier entier.
robocopy "C:\Users\alice\AppData\Local\Packages\MSTeams_8wekyb3d8bbwe\LocalCache\Microsoft\MSTeams" E:\case\teams-new /E /COPY:DAT /R:1 /W:1
robocopy "C:\Users\alice\AppData\Roaming\Microsoft\Teams" E:\case\teams-classic /E /COPY:DAT /R:1 /W:1
  • Cloud : demandez un export eDiscovery Purview du contenu Teams du dépositaire, ou utilisez les API d'export Microsoft Graph (/users/{id}/chats/getAllMessages, /teams/{id}/channels/getAllMessages, autorisations d'application requises), qui renvoient du JSON chatMessage.

Outils d'analyse

  • forensicsim (Alexander Bilz, open source) : ms_teams_parser.exe convertit un dossier IndexedDB de Teams en JSON (messages, réactions, contacts, rendez-vous), avec un module Autopsy. Conçu pour Teams classique ; une étude de 2026 l'a jugé peu fiable sur le nouveau client WebView2.
  • dfindexeddb (Google, open source) : analyseur bas niveau d'IndexedDB/LevelDB Chromium avec sortie JSON, utilisé pour étudier le nouveau Teams.
  • ccl_chromium_reader (CCL Solutions, open source) : bibliothèque Python qui lit LevelDB, IndexedDB et Local Storage de Chromium.
  • LevelDBDumper (Matt Dawson) : extrait les paires clé/valeur brutes de LevelDB.
  • ChromeCacheView (NirSoft) : parcours du cache disque de Teams (images, avatars).

Conseils d'investigation

  • Commencez par le tenant : un export Purview ou Graph est complet et attribuable ; le cache local montre ensuite ce que le poste a réellement affiché, et quand.
  • Interrogez LevelDB avec un vrai parseur, pas avec strings : les valeurs sont compressées (Snappy) et une recherche de mots-clés sur les fichiers bruts manque des messages.
  • Ordonnez avec originalArrivalTime et corrélez les appels avec l'utilisation réseau de ms-teams.exe dans SRUM sur la même heure.
  • Les fichiers partagés pointent vers des URL OneDrive ou SharePoint : vérifiez le client OneDrive et les artefacts des navigateurs.
  • Les notifications de messages entrants peuvent survivre dans la base des notifications après la disparition de la conversation.
  • Des messages supprimés ou modifiés restent parfois dans d'anciens enregistrements LevelDB : analysez chaque fichier .ldb et .log, pas seulement la vue courante.

Artefacts liés

Termes du glossaire

Tous les artefacts sur une page : aide-mémoire