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
Outils
Comparer tous les outilsPré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
| Client | Chemin | Contenu |
|---|---|---|
| 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.json | Cache 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 365 | Dossier 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 / magasin | Signification |
|---|---|
Magasin conversations | Un enregistrement par fil : id, membres, sujet, threadProperties, lastMessage |
Magasin replychains | Messages regroupés par fil de réponses ; corps, expéditeur, composeTime, originalArrivalTime |
Identifiant 19:…@unq.gbl.spaces | Conversation en tête-à-tête |
Identifiant 19:…@thread.v2 / @thread.tacv2 | Conversation de groupe / canal |
Identifiant 19:meeting_…@thread.v2 | Conversation de réunion |
48:calllogs | Fil de l'historique des appels |
isFromMe (classique) | Sens du message |
Magasin profiles | Noms affichés, adresses e-mail et identifiants des contacts |
Horodatages
| Horodatage | Positionné quand | Format | Pièges |
|---|---|---|---|
composeTime | Rédaction / envoi par l'expéditeur | Chaîne ISO 8601, UTC | Dépend de l'horloge du client émetteur |
originalArrivalTime | Réception par le service | Chaîne ISO 8601, UTC | Le plus fiable pour ordonner les messages entre participants |
| Début / fin d'appel | Appel établi / terminé | Propriétés JSON de l'enregistrement d'appel, UTC | Un appel manqué n'a pas de durée |
Heure des lignes de journal (logs.txt, Logs\) | Événement du client | Horodatage texte | Vérifiez le fuseau horaire de chaque format |
Graph createdDateTime, lastModifiedDateTime, deletedDateTime | Création, modification, suppression côté service | ISO 8601, UTC | Ré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
.loget d'anciens.ldbjusqu'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 etdesktop-config.jsondu client classique (%APPDATA%\Microsoft\Teams), ainsi qu'un chemin de journaux sous le paquetMicrosoftTeams_8wekyb3d8bbwe. Elle ne couvre pas le dossierMSTeams_8wekyb3d8bbwedu 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 JSONchatMessage.
Outils d'analyse
- forensicsim (Alexander Bilz, open source) :
ms_teams_parser.execonvertit 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
originalArrivalTimeet corrélez les appels avec l'utilisation réseau dems-teams.exedans 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
.ldbet.log, pas seulement la vue courante.
Artefacts liés
- Messageries de bureau (Slack, Signal, WhatsApp…)Fiche messageries de bureau : où Slack, Signal, WhatsApp, Telegram et Discord stockent leurs données sous Windows, chiffrement, horodatages et exports.
- Artefacts des navigateurs (Chrome, Edge, Firefox)Fiche navigateurs : fichiers de profil Chromium et Firefox, tables History et places.sqlite, horodatages WebKit et PRTime, téléchargements, cookies, cache.
- Base des notifications (wpndatabase.db)Fiche base des notifications Windows : tables de wpndatabase.db, Payload XML des toasts, ArrivalTime et ExpiryTime en FILETIME, récupération WAL, appdb.dat.
- Client de synchronisation OneDriveFiche OneDrive : clés de registre du compte, métadonnées SyncEngineDatabase.db et <CID>.dat, journaux ODL, SafeDelete.db, fichiers à la demande et analyse.
- SRUM (System Resource Usage Monitor)Fiche SRUM : tables et GUID de SRUDB.dat, octets réseau et temps CPU par application, enregistrements horaires UTC, rétention de 30 à 60 jours, réparation ESE.
Termes du glossaire
- Collecte de triageAcquisition ciblée d'artefacts à forte valeur (ruches, journaux, $MFT, Prefetch) au lieu d'une image disque complète, via KAPE ou Velociraptor.
- UTC et heure locale dans les artefacts WindowsPourquoi certains artefacts Windows enregistrent l'UTC et d'autres l'heure locale, et comment la clé TimeZoneInformation aide à normaliser une chronologie.
- Anti-forensiqueTechniques visant à détruire, cacher ou falsifier des preuves : effacement de journaux, timestomping, wiping, suppression des clichés ou du journal USN.
- Ordre de volatilitéLe principe consistant à collecter d'abord les preuves les plus volatiles, avant qu'elles ne disparaissent, comme décrit dans la RFC 3227.