Мы покажем что конкретно остаётся на iOS и Android после удаления Telegram и Signal, через какие инструменты это находится и сколько времени проходит, прежде чем артефакты начинают исчезать.
Условия эксперимента
На оба устройства поставили Telegram и Signal, попользовались несколько дней в обычном режиме (переписка, звонки, медиа), после чего удалили оба приложения. Извлечения делались в три этапа:
-
С установленными приложениями (контрольное)
-
Сразу после удаления
-
Через 6 дней (iOS) / 14 дней (оба)
Извлечения обрабатывались в Cellebrite PA, Magnet AXIOM, Oxygen Forensic Detective, iLEAPP/aLEAPP. Это важно, потому что разные инструменты видят разное. Забегая вперёд: ни один из них не нашёл всё.
Анализ iOS
Поиск по ключевым словам
Запускаем в Cellebrite PA поиск по bundle ID ph.telegra.Telegraph. В контрольном извлечении (при установленном приложении) находит кучу результатов. Удалили Telegram, извлекли снова. Количество результатов просело, но все еще есть. Через 6 дней после удаления результатов стало чуть меньше, но они всё ещё есть.

С Signal (org.whispersystems.signal) картина аналогичная:

AXIOM показывает похожую динамику, но находит другие файлы: (сравнение по колонкам — установлено-удалено-спустя неделю)

AXIOM поиск ph.telegra.Telegraph

AXIOM поиск org.whispersystems.signal
Гораздо больше совпадений находится по полным ключевым словам:
Поиск по Signal:


Telegram:


Пока картина следующая — даже банальный поиск по ключевым словам после удаления приложения даёт десятки и сотни совпадений. Сам факт установки приложения на устройство предполагает возможное наличие в нем учетной записи подозреваемого, что может помочь аналитику в дальнейшем.
Факт установки и удаления в Mobile Installation Logs
iOS ведёт логи установки и удаления приложений. Эти записи пережили и удаление, и 14 дней ожидания.
В AXIOM видно запись об установке и удалении Signal:

iLEAPP показывает то же для Telegram:

Тут фиксируются конкретные временные метки: когда поставили и когда снесли. Для следствия это бывает важнее самой переписки.
SMS с кодами активации
Оба мессенджера при регистрации/авторизации присылают SMS с кодом. Эти сообщения лежат в стандартной SMS-базе и никуда не деваются при удалении приложения.


Казалось бы, мелочь. Но SMS от Telegram с кодом подтверждения однозначно доказывает, что пользователь как минимум начал процесс регистрации на этом устройстве. А дата SMS фиксирует, когда это произошло.
Тем более, СМС хранятся даже после удаления, пока их не затрет новыми данными.
Анализ уведомлений
iOS хранит уведомления в отдельной базе. Эта база — самый ценный артефакт из тех, что переживают удаление приложения. Потому что (как вы могли догадаться) в уведомлениях лежит не только метаинформация (время, отправитель), но и текст сообщений. База доступна для анализа даже после удаления приложения.
Cellebrite PA достаёт уведомления от Telegram:

AXIOM находит уведомления от Signal:

iLEAPP показывает уведомления Telegram в другом формате, но суть та же:

Если пользователь не отключил уведомления для мессенджера, мы получаем фрагменты переписки даже после полного удаления приложения. Signal позиционируется как защищённый мессенджер, но от уведомлений защищать никто не обещал 😉
interactionC.db — анализ контактов
Здесь обнаружился интересный нюанс. База interactionC.db хранит записи о взаимодействиях пользователя с контактами через приложения.
При удалении Telegram записи из неё удаляются (но поддаются восстановлению через Oxygen). А вот при удалении Signal записи остаются нетронутыми.

Почему так? Telegram, видимо, реализует очистку своих данных из этой базы при удалении (или iOS делает это за него). Signal этого не делает. Так что в этом конкретном месте более «защищённый» мессенджер оставляет больше следов.
Анализ Power Log
Current Power Log хранит данные об энергопотреблении приложений за 3-5 дней. Но у iOS есть привычка делать бэкапы этих логов.
В итоге через 6 дней после удаления данных оказалось даже больше, чем сразу после удаления, за счёт дубликатов из резервных копий.

Axiom — Telegram

Axiom — Signal

Telegram App Usage
Power Log фиксирует состояние приложения (foreground/background), использование сети, расход батареи. По этим данным можно восстановить паттерн использования — когда человек открывал мессенджер, как долго он был активен, сколько трафика ушло.
Biome
Добавленный в 2021 в iOS Biome Framework пришел на замену knowledgeC и создан для логирования системной и пользовательской активности. Большая часть данных Biome удаляется вместе с приложением, но два типа записей уцелели:
-
Notifications (метаданные уведомлений)
-
Text Input Sessions (сессии ввода текста)

iLEAPP Biome Notifications — Telegram

iLEAPP Biome Text Input Sessions — Signal
Text Input Sessions и Уведомления сохраняются через 6 дней после удаления. То есть мы видим, когда пользователь набирал текст в Signal. Не что набирал, но когда и как долго.
KnowledgeC и Screen Time
Записи в KnowledgeC удаляются при деинсталляции, но удалённые строки можно вытащить из SQLite, пока их не успело затереть. Если извлечение сделано быстро, восстановление реально. Через 6 дней Screen Time восстановить уже не удалось, а вот факт установки/удаления в KnowledgeC остался.

Telegram

Signal
Net Usage, TCC, storeUser.db
Net Usage (статистика сетевого трафика) была доступна сразу после удаления, но через 6 дней исчезла.

В TCC (базе разрешений) записи обычно удаляются вместе с приложением, но разрешение kTCCServiceLiverpool для Telegram почему-то осталось:

storeUser.db содержит две таблицы: установленные приложения и история покупок через Apple ID.
Опять же, сравнивая две эти таблицы, можно увидеть, что было удалено. Правда, нужно учитывать, что приложение могло быть установлено на другом устройстве с тем же аккаунтом.
Через 14 дней после удаления на iOS
Что осталось:
|
Артефакт |
Сразу после удаления |
Через 14 дней |
|---|---|---|
|
Mobile Installation Logs |
да |
да |
|
SMS (коды активации) |
да |
да |
|
Уведомления (с текстом!) |
да |
да |
|
InteractionC |
Signal: да. Telegram: восстановим |
да |
|
Power Logs |
да (с бэкапами) |
да (меньше) |
|
Biome (Notifications, Text Input) |
да |
да |
|
KnowledgeC |
факт установки/удаления |
да |
|
Screen Time |
восстановим |
нет |
|
Net Usage |
да |
нет |
|
TCC |
частично (Telegram) |
да |
|
storeUser.db |
да |
да |
Опять же, через две недели после удаления Telegram и Signal с айфона мы всё ещё можем доказать факт использования, восстановить фрагменты переписки из уведомлений и построить таймлайн активности по Power Log.
Анализ Android
Поиск по ключевым словам
Cellebrite PA, поиск по org.telegram.messenger:

Поиск по org.thoughtcrime.securesms (package name Signal):

localappstate.db и gass.db
Это, по сути, главные базы Google Play.localappstate.db хранит аккаунт Google, время первой установки и последнего обновления. gass.db содержит версию и SHA-256 хеш APK. Оба файла переживают удаление приложения.



Та же инфа, что и на iOS — какая версия Telegram была установлена, когда, через какой аккаунт. Для Signal данные аналогичные.
SMS с кодами
Аналогично iOS. Лежат в mmssms.db и message_content.db:


Telegram и медиафайлы на SD-карте
Telegram по умолчанию сохраняет полученные медиафайлы на эмулированную SD-карту. А при удалении приложения эти файлы не удаляются. Все фотографии, видео и документы, полученные через Telegram, остаются на месте.

Signal, к слову, этого не делает. Его медиа хранятся в дате приложения и удаляются вместе с ним.
Digital Wellbeing
Это Android-аналог Screen Time. Отслеживает использование приложений и уведомления. Данные остаются после удаления.


Недоставленные сообщения в Firebase Cloud Messaging
FCM хранит очередь push-уведомлений, которые не были доставлены. Если приложение удалили, сообщения остались в очереди. Некоторые форензики это называют «золотым вторым шансом»


По факту это канал утечки контента даже из Signal, который в норме не оставляет текст сообщений нигде, кроме своей зашифрованной базы.
PkgPredictions.db (Samsung)
Samsung-специфичная база, хранит временные метки запуска приложений. Данные живут 7-14 дней.


notification_log.db (старые Samsung)
Это целиком журнал уведомлений с типами событий и временными метками:

Usage Stats
Самый живучий артефакт из всех.
Эта статистика использования приложений не удаляется при деинсталляции. И все.


Battery Stats
Содержит информацию о работе приложений: wakelock-и, сетевая активность, расход батареи. Лучший способ анализа: извлечь через баг-репорт и открыть в Battery Historian.


Library.db
Привязана к аккаунту Google, не к устройству. Заполняется при входе, включая приложения с других устройств. Для привязки к конкретному девайсу не годится, но для общей картины полезна.
Этим похожа на storeUser.db в iOS, которую описывали выше


Android: итог через 14 дней
|
Артефакт |
Сразу после удаления |
Через 14 дней |
|---|---|---|
|
localappstate.db / gass.db |
да |
да |
|
SMS (коды активации) |
да |
да |
|
Медиафайлы на SD-карте (Telegram) |
да |
да |
|
Digital Wellbeing |
да |
да |
|
Firebase Cloud Messaging |
да |
да |
|
PkgPredictions.db (Samsung) |
да |
да |
|
Usage Stats |
да |
да (частично) |
|
Battery Stats |
да |
да |
|
Library.db |
да |
да |
|
Разрешения, AppOps, Network stats |
нет |
нет |
Кто оставляет больше следов?
Оба мессенджера оставляют достаточно артефактов, чтобы доказать факт использования. Но есть нюансы.
Telegram оставляет больше контента: медиафайлы на SD-карте (Android), данные в interactionC удаляются, но восстанавливаемы.
Signal не хранит медиа вне песочницы, но неожиданно оставляет больше метаданных: записи в interactionC не удаляются при удалении на iOS, а через FCM на Android могут утечь части контента.
Оба мессенджера одинаково беззащитны перед: SMS-кодами активации, уведомлениями iOS, Power Log, Usage Stats/Digital Wellbeing, Battery Stats.
Блокировки и дыры в безопасности мессенджеров в нашем тгк.
Ничего лишнего!
ссылка на оригинал статьи https://habr.com/ru/articles/1023506/