О чём не молчит Windows. История уведомлений

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Приветствую всех заинтересованных!

В современном мире все привыкли к быстрым коммуникациям через мессенджеры, многозадачности и возможности получать всплывающие на экран уведомления о событиях или сообщениях, не открывая при этом предварительно самого приложения. В Windows по аналогии с другими OS есть свой механизм для доставки уведомлений пользователю - Windows Push Notification Services (WNS). И при расследовании какого-либо инцидента для форенсик специалиста могут быть полезны сведения из уведомлений Windows. Например представим ситуацию, что злоумышленник использовал мессенджер “WhatsApp”, который использует механизм WNS для доставки уведомлений, но после использования удалил приложение и его данные. Как раз в таком случае и будут полезны сведения сохраняемые самой операционной системой и относящие к WNS.

Сведения из Windows Push Notification Services позволяют узнать следующее:

  • На хосте запускалось то или иное приложение, т.к. каждое уведомление связано с конкретным приложением. Можно узнать дату установки этого приложения.

  • Часть сообщений из мессенджеров, имена/никнеймы/почтовые адреса. Эта информация может содержаться в Payload уведомления.

  • Действия, которые были выполнены некоторыми приложениями, т.к. ряд приложений могут выполнять действия в фоне, увеломления оповещают пользователя о результате/необходимости обратить внимание на что-то. Это может содержаться в Payload уведомления.

Все уведомления в Windows делятся на три типа:

  • Toast - всплывающее прямоугольное уведомление в правом нижнем углу экрана (в Windows 8.1 правый верхний угол).

Внешний вид Toast уведомления
Внешний вид Toast уведомления
  • Tile - присутствует только в Windows 10/8.1 представляет собой “живую” плитку (анимации и обновляемая информация на плитке) в меню Пуск.

Внешний вид Tile для Windows 10 и 8/8.1
Внешний вид Tile для Windows 10 и 8/8.1
  • Badge - цифра или символ рядом с иконкой приложения в Taskbar.

Внешний вид Badge уведомлений.
Внешний вид Badge уведомлений.

Сведения о них хранятся в файле %LOCALAPPDATA%\Microsoft\Windows\Notifications\wpndatabase.db, данный файл представляет собой SQLite базу данных. Внутри этой базы данных основной интерес будут представлять таблицы “Notification” и “NotificationHandler”. Стоит отметить, что у уведомлений есть срок жизни и операционная система не сохраняет уведомления в базе данных насовсем. Например, если пользователь смахнул, нажал на уведомление или открыл приложение, которое отправило его, то оно будет удалено из базы. Однако, при удачном стечении обстоятельств недавно убранные системой записи из wpndatabase.db можно восстановить с помощью файла WAL (write-ahead log), который находится в той же директории и имеет название wpndatabase.db-wal. WAL представляет собой файл транзакций, все изменения в таблицах сначала будут отображены внутри этого файла. Прошлые изменения перестанут быть видны в файле WAL, когда в нём будет размещено более 1000 страниц (значение по умолчанию, прагма wal_autocheckpoint) (вся база SQLite состоит из страниц, размер страницы равен степени двойки, для wpndatabase.db размер страницы 4096 байт).

Заданные для wpndatabase.db PRAGMA
Заданные для wpndatabase.db PRAGMA

Вернёмся к таблицам внутри wpndatabase.db.
В таблице “NotificationHandler” нас будет интересовать столбцы:

  • PrimaryID - название приложения, которое может отправлять уведомления.

  • RecordID - числовой идентификатор этого приложения.

  • CreatedTime - соответствует дате установки приложения.

А в таблице “Notification” следующие:

  • HandlerID - соответствует RecordID из “NotificationHandler”.

  • Type - тип уведомления.

  • Payload - содержимое уведомления, обычно в XML формате.

  • PayloadType - формат Payload.

  • ArrivalTime - время поступления уведомления в формате Windows Filetime.

Рассмотрим инструменты для работы с этим видом доказательств. Из свободно распостраняемых утилит для форенсики wpndatabase.db хорошо подходит sql сценарий Notifications.sql. Он удобно группирует сведения из двух обозначенных нами таблиц.

Результат выполнения Notifications.sql
Результат выполнения Notifications.sql

Для восстановления уведомлений, которые убраны из основной базы, но которые могут оставаться в WAL подходит утилита walitean в сочетании с следующим sql запросом:

SELECT unknown0 AS Id, unknown1 AS HandlerId, unknown2 AS ActiveId, unknown3 AS Type, 
unknown4 AS Payload, unknown5 AS Tag, unknown6 AS 'Group', 
datetime((unknown7/10000000)-11644473600, 'unixepoch') AS ExpiryTime, 
datetime((unknown8/10000000)-11644473600, 'unixepoch') AS ArrivalTime, 
unknown9 AS DataVersion FROM IIBTBTTIIUTIU

Результат также получается достаточно удобный для анализа, за исключением того, что придётся вручную сопоставить HandlerID с именем приложения.

Восстановленные из WAL записи
Восстановленные из WAL записи

Также отдельно стоит отметить, что walitean написан на устаревшем Python 2, но тем не менее отлично отработал в Windows 11 на тестовом стенде. Подводя итог, артефакты из истории уведомлений могут быть хорошим вспомогательным источником, но учитывая небольшой срок жизни самих уведомлений и малый объём ротируемых данных в WAL, выжать из этого артефакта максимум информации не получится. Продолжение следует...

Источник: https://habr.com/ru/articles/829690/


Интересные статьи

Интересные статьи

Легендарный производитель персональных компьютеров Compaq появился в 1982 году. Три техасца создали компьютер, который взорвал рынок — Compaq Portable. Всего 13 килограмм, 4,77 мегагерц, процессор 808...
После основательного экскурса в историю «нетрадиционных» (на сегодняшний день) систем и долгого перерыва пора вернуться к самой массовой архитектуре для ПК — х86. Сегодня у нас на очереди долгожда...
Добрый день. Данный пост несколько отличается от моих обычных ликбезов психологической направленности, а больше направлен на исследование границы между "потребительским терроризмом" и "защитой собстве...
Этим летом мы организовали в Санкт-Петербурге небольшой офис-коворкинг — место встречи удалёнщиков из европейской части России и штаб для нескольких продуктовых команд. Мы искали что-то кроме бизнес-ц...
Я решил написать эту историю по мотивам своего опыта покупки подарка на день Святого Валентина в интернет-магазине МТС. Моему кошельку эту стало, гораздо меньше, чем моим...