Réseau et accès distant
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.
- Emplacement
- C:\Users\<user>\AppData\Roaming\<App>\ (Slack, Signal, discord, Telegram Desktop)
- Prouve
- Un compte de messagerie utilisé sur ce PC, avec messages, contacts et fichiers en cache
- Horodatages
- Selon l'appli, tout en UTC : ts Slack (secondes epoch), millisecondes epoch Signal, ID snowflake et ISO 8601 Discord ; horodatages NTFS du cache
- Rétention
- Caches écrasés au fil des nouveaux contenus ; données supprimées gardées dans LevelDB/SQLite jusqu'à compaction ou VACUUM ; le serveur peut en garder plus
- Accès
- Fichiers du profil ; bases verrouillées tant que les applis tournent, les quitter d'abord ; stockages chiffrés : clés DPAPI de l'utilisateur requises
- Type
- Base de données
- Windows
- 1011
- Cible KAPE
- SlackSignalWhatsAppWhatsApp_MediaTelegramDiscord
- Velociraptor
- Windows.Triage.Targets:SlackSignalWhatsAppWhatsApp_MediaTelegramDiscord
Outils
Comparer tous les outilsPrésentation
La plupart des messageries de bureau sont des technologies web encapsulées : Slack, Discord et l'ancien WhatsApp Desktop sont des applications Electron qui stockent leurs données dans l'IndexedDB, le Local Storage (LevelDB) et le cache disque de Chromium. Signal Desktop conserve une base SQLite chiffrée. Telegram Desktop utilise son propre magasin chiffré tdata, et l'application WhatsApp actuelle du Microsoft Store garde des bases SQLite chiffrées dans son dossier de paquet.
Deux constats orientent chaque dossier : les données locales ne sont qu'un cache d'un service cloud, donc incomplètes, et plusieurs applications les chiffrent avec des clés liées à l'utilisateur Windows (DPAPI) ; la collecte doit alors souvent se faire sur un système allumé, session ouverte.
Emplacement
| Application | Chemin Windows | Contenu principal |
|---|---|---|
| Slack | %APPDATA%\Slack\ → IndexedDB\, Local Storage\leveldb\, Cache\, logs\, storage\ | Messages et état de l'espace de travail en cache (LevelDB), journaux, état des téléchargements |
| Signal Desktop | %APPDATA%\Signal\sql\db.sqlite | Base SQLCipher : conversations, messages, métadonnées des pièces jointes |
| Signal Desktop | %APPDATA%\Signal\config.json, %APPDATA%\Signal\Local State | Clé de la base (key dans les anciennes versions, encryptedKey aujourd'hui) et clé d'enveloppe protégée par DPAPI |
| Signal Desktop | %APPDATA%\Signal\attachments.noindex\, logs\ | Pièces jointes et avatars, journaux de l'application |
| WhatsApp (application Microsoft Store) | %LOCALAPPDATA%\Packages\5319275A.WhatsAppDesktop_cv1g1gvanyjgm\LocalState\ | Bases SQLite chiffrées (avec fichiers WAL), médias shared\transfers\, profilePictures\ |
| WhatsApp (ancienne application Electron) | %APPDATA%\WhatsApp\ → Cache\, Local Storage\leveldb\ | Cache et stockage local du client WhatsApp Web |
| Telegram Desktop | %APPDATA%\Telegram Desktop\tdata\ | Paramètres chiffrés, clés de session et cache des médias |
| Telegram Desktop | %USERPROFILE%\Downloads\Telegram Desktop\ | Fichiers enregistrés depuis les conversations |
| Discord | %APPDATA%\discord\ → Cache\Cache_Data\, Local Storage\leveldb\ | Cache HTTP contenant le JSON des messages et les pièces jointes, données du compte |
Ce que l'artefact prouve
- Compte et usage : l'application était installée et connectée sous ce profil Windows, avec des identifiants de compte (ID utilisateur, numéro de téléphone, nom d'espace de travail).
- Communications : contenu des messages en cache, contacts et noms de canaux, lorsqu'ils ne sont pas chiffrés ou une fois déchiffrés.
- Transfert de fichiers : pièces jointes reçues ou envoyées dans les caches et dossiers de téléchargement.
- Fenêtre d'activité : les journaux et les horodatages du cache montrent quand le client était actif.
- L'artefact ne donne pas un historique complet. Les clients mettent en cache ce que l'utilisateur a fait défiler ; Telegram conserve l'historique côté serveur ; les messages éphémères et les suppressions à distance effacent les copies locales.
Champs clés
| Application / source | Données utiles |
|---|---|
| IndexedDB / LevelDB de Slack | Objets message avec ts, user, channel, text ; listes d'espaces de travail et d'utilisateurs |
Table messages de Signal | conversationId, body, type (entrant/sortant), sent_at, received_at, JSON des pièces jointes |
Table conversations de Signal | Nom du contact ou du groupe, numéro e164, nom de profil |
| Bases de l'application WhatsApp du Store | Conversations, messages et contacts une fois déchiffrés |
tdata de Telegram | Tables chiffrées de paramètres, sessions, médias en cache et brouillons |
| Entrées du cache Discord | Réponses d'API (/messages) avec id, author, content, attachments, timestamp |
Horodatages
| Horodatage | Positionné quand | Format | Pièges |
|---|---|---|---|
ts de Slack | Publication du message | Secondes epoch Unix avec fraction en microsecondes (chaîne), UTC | Sert aussi d'identifiant du message |
sent_at, received_at de Signal | Envoi par l'expéditeur / réception sur ce poste | Millisecondes epoch Unix, UTC | sent_at dépend de l'horloge de l'expéditeur |
| ID de message Discord (snowflake) | Création du message | Bits de poids fort = millisecondes depuis l'epoch Discord (01/01/2015 UTC) | Décodez l'ID même si le timestamp JSON manque |
timestamp JSON de Discord | Création du message | ISO 8601, UTC | Le cache ne contient que ce que le client a récupéré |
| Dates des fichiers de cache / LevelDB | Écriture du fichier | NTFS, UTC | Reflètent la mise en cache, pas l'heure du message |
Rétention et effacement
- Les caches sont écrasés au fil des nouveaux contenus ; d'anciennes conversations peuvent avoir disparu localement tout en restant sur le serveur.
- LevelDB et SQLite gardent les données supprimées jusqu'au compactage ou au
VACUUM: analysez les fichiers.log/.ldbet le WAL SQLite pour retrouver des restes. - Les messages éphémères et la « suppression pour tous » de Signal et WhatsApp effacent des lignes ; Signal ne garde aucune copie dans le cloud.
- Désinstaller l'application du Store supprime son dossier de paquet ; les applications Electron laissent souvent leurs données
%APPDATA%après désinstallation. - Depuis mi-2024, Signal Desktop ne stocke plus la clé de la base en clair dans
config.json: elle est enveloppée parsafeStoraged'Electron, qui s'appuie sur DPAPI sous Windows. Le déchiffrement hors ligne exige alors la clé maîtresse DPAPI de l'utilisateur (mot de passe ou extraction à chaud).
Collecte
- Cibles KAPE :
Slack,Signal,WhatsApp,WhatsApp_Media,Telegram,Discord - Velociraptor (
Windows.Triage.Targets) : les mêmes noms. - Lacunes : la cible
Signalcollecteconfig.jsonetdb.sqlitemais niLocal State, nidb.sqlite-wal, ni le dossier DPAPIProtect; les ciblesWhatsAppcollectent cache, Local Storage et médias mais pas les bases chiffrées deLocalState. Ajoutez-les à la main. - Commandes natives : fermez d'abord les applications (bases verrouillées) et, en présence de chiffrement, privilégiez une collecte à chaud pendant que l'utilisateur est connecté.
robocopy C:\Users\alice\AppData\Roaming\Signal E:\case\signal /E /COPY:DAT
robocopy C:\Users\alice\AppData\Roaming\Microsoft\Protect E:\case\Protect /E /COPY:DAT
robocopy C:\Users\alice\AppData\Local\Packages\5319275A.WhatsAppDesktop_cv1g1gvanyjgm\LocalState E:\case\whatsapp /E /COPY:DAT
robocopy "C:\Users\alice\AppData\Roaming\Telegram Desktop" E:\case\telegram /E /COPY:DAT
- Les exports des plateformes sont souvent la meilleure source : export d'espace de travail Slack (administrateur), paquet « Demander toutes mes données » de Discord, « Exporter les données Telegram » (JSON/HTML) dans Telegram Desktop et export de discussion de l'application WhatsApp du téléphone.
Outils d'analyse
- ccl_chromium_reader (CCL Solutions, open source) : lit LevelDB, IndexedDB et Local Storage pour Slack, Discord et l'ancien WhatsApp.
- sigtop (open source) : exporte les messages et pièces jointes de Signal Desktop ; gère la clé protégée par DPAPI sous Windows lorsqu'il est lancé en tant qu'utilisateur.
- DB Browser for SQLCipher : ouvre
db.sqliteavec la clé brute (0x+ clé hexadécimale, paramètres par défaut SQLCipher 4). - ChromeCacheView (NirSoft) : parcourt les caches Chromium de Slack, Discord et WhatsApp et en extrait le JSON des messages et les images.
- tg-desktop-investigation et TelegramStorageParser (open source) : déchiffrent et analysent
tdatade Telegram lorsqu'aucun code local n'est défini ou qu'il est connu. - ZAPiXDESK (open source) : déchiffrement à chaud des bases de l'application WhatsApp du Store.
Conseils d'investigation
- Prouvez d'abord l'installation et l'usage : Prefetch, octets réseau par application dans SRUM et dates de création des dossiers utilisateur.
- Demandez tôt un export de la plateforme ou une réquisition au fournisseur : la copie sur le poste est partielle et parfois chiffrée.
- Si la machine est allumée et l'utilisateur connecté, collectez clés et bases immédiatement (ordre de volatilité) : après l'arrêt, le déchiffrement DPAPI exige le mot de passe de l'utilisateur.
- Décodez les snowflakes Discord et les valeurs
tsde Slack en UTC et alignez-les sur l'historique des navigateurs, car ces services sont souvent aussi utilisés dans un navigateur. - Les aperçus de messages affichés en notification Windows peuvent survivre dans la base des notifications même si les données de l'application sont chiffrées ou effacées.
- Vérifiez
Downloads\Telegram Desktop, les pièces jointes Signal et lestransfersWhatsApp pour repérer des fichiers exfiltrés ou reçus, et calculez leurs empreintes.
Artefacts liés
- 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.
- 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.
- 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.
- Fichiers Prefetch (.pf)Fiche Prefetch Windows : emplacement des .pf par version, nombre d'exécutions, huit dernières dates, fichiers référencés, rétention et analyse.
- Fichiers de données Outlook (PST et OST)Fiche Outlook PST/OST : emplacements des fichiers, messages et éléments supprimés, cache Content.Outlook, clés de profil, nouvel Outlook et analyse.
Termes du glossaire
- Journal WAL SQLite (-wal)Le fichier annexe -wal où SQLite écrit les modifications récentes avant de les fusionner dans la base ; il contient souvent les preuves récentes.
- 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.
- 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.
- 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.