Aller au contenu

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

Pré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

ApplicationChemin WindowsContenu 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.sqliteBase SQLCipher : conversations, messages, métadonnées des pièces jointes
Signal Desktop%APPDATA%\Signal\config.json, %APPDATA%\Signal\Local StateClé 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 / sourceDonnées utiles
IndexedDB / LevelDB de SlackObjets message avec ts, user, channel, text ; listes d'espaces de travail et d'utilisateurs
Table messages de SignalconversationId, body, type (entrant/sortant), sent_at, received_at, JSON des pièces jointes
Table conversations de SignalNom du contact ou du groupe, numéro e164, nom de profil
Bases de l'application WhatsApp du StoreConversations, messages et contacts une fois déchiffrés
tdata de TelegramTables chiffrées de paramètres, sessions, médias en cache et brouillons
Entrées du cache DiscordRéponses d'API (/messages) avec id, author, content, attachments, timestamp

Horodatages

HorodatagePositionné quandFormatPièges
ts de SlackPublication du messageSecondes epoch Unix avec fraction en microsecondes (chaîne), UTCSert aussi d'identifiant du message
sent_at, received_at de SignalEnvoi par l'expéditeur / réception sur ce posteMillisecondes epoch Unix, UTCsent_at dépend de l'horloge de l'expéditeur
ID de message Discord (snowflake)Création du messageBits 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 DiscordCréation du messageISO 8601, UTCLe cache ne contient que ce que le client a récupéré
Dates des fichiers de cache / LevelDBÉcriture du fichierNTFS, UTCReflè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/.ldb et 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 par safeStorage d'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 Signal collecte config.json et db.sqlite mais ni Local State, ni db.sqlite-wal, ni le dossier DPAPI Protect ; les cibles WhatsApp collectent cache, Local Storage et médias mais pas les bases chiffrées de LocalState. 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.sqlite avec 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 tdata de 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 ts de 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 les transfers WhatsApp pour repérer des fichiers exfiltrés ou reçus, et calculez leurs empreintes.

Artefacts liés

Termes du glossaire

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