Forensik der Windows-Benachrichtigungen: wpndatabase.db
Was die Windows-Benachrichtigungsdatenbank speichert, wo sie liegt, was sie belegt und wo ihre Grenzen liegen: ein Praxisleitfaden zu wpndatabase.db für DFIR.
Kurz gesagt. Jedes Profil unter Windows 10 (ab 1607) und Windows 11 hat eine Benachrichtigungsdatenbank unter %LOCALAPPDATA%\Microsoft\Windows\Notifications\wpndatabase.db. Sie speichert die empfangenen Toasts als XML — Absender, Textzeilen, Schaltflächen, Startargumente — mit Eingangs- und Ablaufzeit in UTC. Es handelt sich um eine SQLite-Datenbank im WAL-Modus, daher muss wpndatabase.db-wal mitgesichert werden. Gelöschte Benachrichtigungen überdauern oft im freien Speicher.
Benachrichtigungen sind ein unterschätztes Artefakt. Das Betriebssystem schreibt sie im Auftrag anderer Apps, sie enthalten eine Kopie dessen, was der Benutzer auf dem Bildschirm sah, und sie überleben das, was sie angekündigt haben: Die Chatnachricht ist in der App gelöscht, die Schadsoftware in Quarantäne, der Download verschoben — der Toast steht noch in der Datenbank.
Dieser Leitfaden ist der Einstieg in die Serie; jeder Abschnitt verweist auf einen vertiefenden Artikel.
Was gespeichert wird
Apps lösen Benachrichtigungen über die Windows-Benachrichtigungsplattform aus, entweder lokal oder über die Windows Push Notification Services (WNS). Die Plattform speichert sie pro Benutzer in einer SQLite-Datenbank mit diesen Haupttabellen (Schema wie von den Parsern Plaso und Dissect dokumentiert):
| Tabelle | Inhalt |
|---|---|
Notification | Eine Zeile pro Toast, Kachel-Update oder Badge: Type, das Payload-XML, Tag, Group, ArrivalTime, ExpiryTime |
NotificationHandler | Eine Zeile pro benachrichtigungsfähiger App: PrimaryId, HandlerType, CreatedTime, ModifiedTime |
HandlerAssets, HandlerSettings | Schlüssel-/Wert-Details pro Handler |
WNSPushChannel | Von WNS an Apps vergebene Push-Kanal-URIs mit Erstellungs- und Ablaufzeit |
Metadata | Schlüssel auf Datenbankebene |
Die vollständige Feldreferenz finden Sie unter Tabellen und Spalten von wpndatabase.db erklärt.
Wo sie liegt
C:\Users\<user>\AppData\Local\Microsoft\Windows\Notifications\wpndatabase.db, daneben wpndatabase.db-wal und wpndatabase.db-shm. Windows-10-Builds vor 1607 und Windows 8.x nutzten eine Binärdatei, appdb.dat, im selben Ordner — siehe appdb.dat, der alte Benachrichtigungsspeicher. Wie Sie beide sicher kopieren, erklärt die Anleitung zur Sicherung.
Was sie verrät
- Nachrichtenvorschauen. Chat- und Mail-Apps schreiben Absender und die ersten Zeilen einer Nachricht in den Toast. Diese Vorschauen bleiben in der Datenbank, bis die Benachrichtigung abläuft oder geschlossen wird, ihre Bytes oft noch länger.
- Sicherheitswarnungen. Toasts von Antivirus und Windows-Sicherheit nennen die Bedrohung und oft den Dateipfad.
- Benutzeraktivität mit genauen Zeiten. „Download abgeschlossen“, Hinweise zu Wechseldatenträgern, Erinnerungen und Anmeldeaufforderungen tragen alle eine Eingangszeit in UTC (Windows-
FILETIME). - Welche Apps benachrichtigen dürfen. Die Handler-Tabelle listet jede registrierte App mit Erstellungszeit auf, auch eine, die während eines Vorfalls aufgetaucht ist.
- Cloud-Infrastruktur.
WNSPushChannelzeigt, welche Apps einen Push-Kanal hatten und wann er erstellt wurde.
Das Fallbeispiel zeigt, wie sich diese Teile in eine Zeitlinie fügen.
Was sie nicht verrät
Eine Benachrichtigung existiert nur, wenn die App eine ausgelöst hat, der Benutzer Benachrichtigungen für sie aktiviert hatte und sie noch nicht abgelaufen oder geschlossen ist. Fehlende Einträge beweisen nichts. Ein Toast belegt zudem nur, dass das System eine Benachrichtigung empfangen hat, nicht, dass der Benutzer sie gelesen hat. Handler-Zeiten sind als Text ohne dokumentierte Zeitzone gespeichert, anders als die FILETIME-Werte der Benachrichtigungen, die in UTC vorliegen.
Gelöschte Benachrichtigungen
Wird eine Benachrichtigung geschlossen oder läuft sie ab, löscht Windows die Zeile. SQLite überschreibt gelöschte Datensätze standardmäßig nicht: Sie bleiben als freier Speicher in der Seite, in der Freelist oder in älteren Seitenabbildern in der Datei und der WAL. Gelöschte Benachrichtigungen wiederherstellen erklärt den Mechanismus und seine Grenzen.
Werkzeuge
Plaso hat ein SQLite-Plugin windows_push_notification, Dissect ein Plugin notifications (für wpndatabase.db und appdb.dat), und im Velociraptor-Exchange gibt es das Artefakt Windows.Forensics.NotificationsDatabase. Der Windows Notification Parser auf dieser Website läuft im Browser, wendet die WAL an, stellt jeden Payload als lesbare Karte dar und stellt gelöschte Zeilen wieder her — siehe wpndatabase.db im Browser analysieren.
FAQ
Was ist wpndatabase.db?
Die benutzerspezifische SQLite-Datenbank der Windows-Push-Notification-Plattform. Sie speichert die Toasts, Kachel-Updates und Badges, die Apps an den Benutzer gesendet haben, mit der sendenden App, Eingangszeit, Ablaufzeit und dem XML-Inhalt der Benachrichtigung.
Behält Windows Benachrichtigungen, nachdem sie geschlossen wurden?
Die Zeile wird gelöscht, doch SQLite lässt die Bytes des gelöschten Datensatzes in der Regel in der Datei, bis der Speicher wiederverwendet wird. Geschlossene Benachrichtigungen lassen sich daher oft aus freiem Speicher wiederherstellen.