WhatsApp на ладони: где и как можно обнаружить криминалистические артефакты?

WhatsApp на ладони: где и как можно обнаружить криминалистические артефакты?

Хотите узнать, какие типы криминалистических артефактов WhatsApp существуют в различных операционных системах и где именно они могут быть обнаружены — тогда вам сюда. Этой статьей специалист Лаборатории компьютерной криминалистики Group-IB Игорь Михайлов открывает серию публикаций о криминалистическом исследовании WhatsApp и о том, какие сведения можно получить при анализе устройства.

Сразу отметим, что в разных операционных системах хранятся различные типы артефактов WhatsApp, и если из одного устройства исследователь может извлечь определенные типы данных WhatsApp, это совсем не означает, что подобные типы данных можно извлечь из другого устройства. Например, если изымается системный блок под управлением ОС Windows, то на его дисках, вероятно, не будут обнаружены чаты WhatsApp (исключение составляют резервные копии iOS-устройств, которые могут быть обнаружены на этих же накопителях). При изъятии ноутбуков и мобильных устройств будут свои особенности. Поговорим об этом поподробнее.

Артефакты WhatsApp в Android-устройстве

Для того, чтобы извлечь артефакты WhatsApp из устройства под управлением ОС Android, исследователь должен иметь права суперпользователя (‘root’) на исследуемом устройстве или иметь возможность иным способом извлечь физический дамп памяти устройства, или его файловую систему (например, используя программные уязвимости конкретного мобильного устройства).

Файлы приложения располагаются в памяти телефона в разделе, в котором сохраняются данные пользователя. Как правило, этот раздел носит имя ‘userdata’. Подкаталоги и файлы программы располагаются по пути: ‘/data/data/com.whatsapp/’.

WhatsApp на ладони: где и как можно обнаружить криминалистические артефакты?
Основными файлами, которые содержат криминалистические артефакты WhatsApp в ОС Android являются базы данных ‘wa.db’ и ‘msgstore.db’.

В базе данных ‘wa.db’ содержится полный список контактов пользователя WhatsApp, включая номер телефона, отображаемое имя, временные метки и любую другую информацию, указанную при регистрации в WhatsApp. Файл ‘wa.db’ располагается по пути: ‘/data/data/com.whatsapp/databases/’ и имеет следующую структуру:

WhatsApp на ладони: где и как можно обнаружить криминалистические артефакты?
Наиболее интересными таблицами в базе данных ‘wa.db’ для исследователя являются:

  • ‘wa_contacts’
    Эта таблица содержит информацию о контактах: id контакта в WhatsApp, информацию о статусе, отображаемое имя пользователя, временные отметки и т.д.

    Внешний вид таблицы:

    WhatsApp на ладони: где и как можно обнаружить криминалистические артефакты?
    Структура таблицы

    Имя поляЗначение
    _idпорядковый номер записи (в SQL таблице)
    jidWhatsApp ID контакта, записывается в формате <номер телефона>@s.whatsapp.net
    is_whatsapp_userсодержит ‘1’ если контакту соответствует фактический пользователь WhatsApp, ‘0’ в ином случае
    statusсодержит текст, отображаемый в статусе контакта
    status_timestampсодержит временную метку в формате Unix Epoch Time (ms)
    numberномер телефона, ассоциированный с контактом
    raw_contact_idпорядковый номер контакта
    display_nameотображаемое имя контакта
    phone_typeтип телефона
    phone_labelметка, ассоциированная с номером контакта
    unseen_msg_countколичество сообщений которые были отправлены контактом но небыли прочитаны получателем
    photo_tsсодержит временную метку в формате Unix Epoch Time
    thumb_tsсодержит временную метку в формате Unix Epoch Time
    photo_id_timestampсодержит временную метку в формате Unix Epoch Time (ms)
    given_nameзначение поля совпадает с ‘display_name’ для каждого контакта
    wa_nameимя контакта в WhatsApp (отображается имя, указанное в профиле контакта)
    sort_nameимя контакта, используемое в операциях сортировки
    nicknameник контакта в WhatsApp (отображается ник, указанный в профиле контакта)
    companyкомпания (отображается компания, указанная в профиле контакта)
    titleобращение (госпожа/господин; отображается обращение, настроенное в профиле контакта)
    offsetсмещение
  • ‘sqlite_sequence’
    Эта таблица содержит информацию о количестве контактов;
  • ‘android_metadata’
    Эта таблица содержит информацию о языковой локализации WhatsApp.

В базе данных ‘msgstore.db’ содержится информация о переданных сообщениях, такая как номер контакта, текст сообщения, статус сообщения, временные метки, сведения о переданных файлах, включенных в сообщения, и т.д. Файл ‘msgstore.db’ располагается по пути: ‘/data/data/com.whatsapp/databases/’ и имеет следующую структуру:

WhatsApp на ладони: где и как можно обнаружить криминалистические артефакты?
Наиболее интересными таблицами в файле ‘msgstore.db’ для исследователя являются:

  • ‘sqlite_sequence’
    Эта таблица содержит общую информацию об этой базе данных, например, общее число хранимых сообщений, общее число чатов и т.д.

    Внешний вид таблицы:

    WhatsApp на ладони: где и как можно обнаружить криминалистические артефакты?

  • ‘message_fts_content’
    Содержит текст переданных сообщений.

    Внешний вид таблицы:

    WhatsApp на ладони: где и как можно обнаружить криминалистические артефакты?

  • ‘messages’
    Эта таблица содержит такую информацию, как номер контакта, текст сообщения, статус сообщения, временные метки, сведения о переданных файлах, включенных в сообщения.

    Внешний вид таблицы:

    WhatsApp на ладони: где и как можно обнаружить криминалистические артефакты?
    Структура таблицы

    Имя поляЗначение
    _idпорядковый номер записи (в SQL таблице)
    key_remote_jidWhatsApp ID партнера по коммуникации
    key_from_meнаправление сообщения: ‘0’ – входящее, ‘1’ — исходящее
    key_idуникальный идентификатор сообщения
    statusстатус сообщения: ‘0’ – доставлено, ‘4’ – ждет на сервере, ‘5’ – получено по месту назначения, ‘6’ – контрольное сообщение, ‘13’ – сообщение открыто получателем (прочитано)
    need_pushимеет значение ‘2’, если это широковещательное сообщение, в ином случае содержит ‘0’
    dataтекст сообщения (когда параметр ‘media_wa_type’ равен ‘0’)
    timestampсодержит временную метку в формате Unix Epoch Time (ms), значение берется из часов устройства
    media_urlсодержит URL передаваемого файла (когда параметр ‘media_wa_type’ равен ‘1’, ‘2’, ‘3’)
    media_mime_typeMIME-тип передаваемого файла (когда параметр ‘media_wa_type’ равен ‘1’, ‘2’, ‘3’)
    media_wa_typeтип сообщения: ‘0’ – текст, ‘1’ – графический файл, ‘2’- аудио-файл, ‘3’ – видео- файл, ‘4’ – карточка контакта, ‘5’ — геоданные
    media_sizeразмер передаваемого файла (когда параметр ‘media_wa_type’ равен ‘1’, ‘2’, ‘3’)
    media_nameимя передаваемого файла (когда параметр ‘media_wa_type’ равен ‘1’, ‘2’, ‘3’)
    media_captionСодержит слова ‘audio’, ‘video’ для соответствующих значений параметра ‘media_wa_type’ (когда параметр ‘media_wa_type’ равен ‘1’, ‘3’)
    media_hashзакодированный в формате base64 хэш передаваемого файла, рассчитанный по алгоритму HAS-256 (когда параметр ‘media_wa_type’ равен ‘1’, ‘2’, ‘3’)
    media_durationпродолжительность в секундах для медиафайла (когда параметр ‘media_wa_type’ равен ‘1’, ‘2’, ‘3’)
    originимеет значение ‘2’, если это широковещательное сообщение, в ином случае содержит ‘0’
    latitudeгеоданные: широта (когда параметр ‘media_wa_type’ равен ‘5’)
    longitudeгеоданные: долгота (когда параметр ‘media_wa_type’ равен ‘5’)
    thumb_imageслужебная информация
    remote_recourceID отправителя (только для групповых чатов)
    received_timestampвремя получения, содержит временную метку в формате Unix Epoch Time (ms), значение берется из часов устройства (когда параметр ‘key_from_me’ имеет ‘0’, ‘-1’ или иное значение)
    send_timestampне используется, обычно имеет значение ‘-1’
    receipt_server_timestampвремя получения центральным сервером, содержит временную метку в формате Unix Epoch Time (ms), значение берется из часов устройства (когда параметр ‘key_from_me’ имеет ‘1’, ‘-1’ или иное значение
    receipt_device_timestampвремя получения сообщения другим абонентом, содержит временную метку в формате Unix Epoch Time (ms), значение берется из часов устройства (когда параметр ‘key_from_me’ имеет ‘1’, ‘-1’ или иное значение
    read_device_timestampвремя открытия (чтения) сообщения, содержит временную метку в формате Unix Epoch Time (ms), значение берется из часов устройства
    played_device_timestampвремя воспроизведения сообщения, содержит временную метку в формате Unix Epoch Time (ms), значение берется из часов устройства
    raw_dataминиатюра передаваемого файла (когда параметр ‘media_wa_type’ равен ‘1’ или ‘3’)
    recipient_countколичество получателей (для широковещательных сообщений)
    participant_hashиспользуется при передаче сообщений с геоданными
    starredне используется
    quoted_row_idнеизвестно, обычно содержит значение ‘0’
    mentioned_jidsне используется
    multicast_idне используется
    offsetсмещение

    Данный список полей не является исчерпывающим. Для разных версий WhatsApp часть полей могут присутствовать или отсутствовать. Дополнительно могут присутствовать поля ‘media_enc_hash’, ‘edit_version’, ‘payment_transaction_id’ и т.д.

  • ‘messages_thumbnails’
    Эта таблица содержит информацию о переданных изображениях и временные метки. В колонке ‘timestamp’ время указано в формате Unix Epoch Time (ms).
  • ‘chat_list’
    Эта таблица содержит информацию о чатах.

    Внешний вид таблицы:

    WhatsApp на ладони: где и как можно обнаружить криминалистические артефакты?

Также при исследовании WhatsApp в мобильном устройстве под управлением Android надо обращать внимание на следующие файлы:

  • Файл ‘msgstore.db.cryptXX’ (где XX – одна или две цифры от 0 до 12, например, msgstore.db.crypt12). Содержит зашифрованную резервную копию сообщений WhatsApp (резервная копия файла msgstore.db). Файл (или файлы) ‘msgstore.db.cryptXX’ располагается по пути: ‘/data/media/0/WhatsApp/Databases/’ (виртуальная SD-карта), ‘/mnt/sdcard/WhatsApp/Databases/ (физическая SD-карта)’.
  • Файл ‘key’. Содержит криптографический ключ. Располагается по пути: ‘/data/data/com.whatsapp/files/’. Используется для расшифровки зашифрованных резервных копий WhatsApp.
  • Файл ‘com.whatsapp_preferences.xml’. Содержит информацию о профиле аккаунта WhatsApp. Файл располагается по пути: ‘/data/data/com.whatsapp/shared_prefs/’.

    Фрагмент содержимого файла

    <?xml version="1.0" encoding="ISO-8859-1"?>
    …
    <string name="ph">9123456789</string> (номер телефона, ассоциированный с аккаунтом WhatsApp)
    …
    <string name="version">2.17.395</string> (версия WhatsApp)
    …
    <string name="my_current_status">Hey there! I am using WhatsApp.</string> (сообщение, отображаемое в статусе аккаунта)
    …
    <string name="push_name">Alex</string> (имя владельца аккаунта)
    … 
  • Файл ‘registration.RegisterPhone.xml’. Содержит информацию о номере телефона, ассоциированного с аккаунтом WhatsApp. Файл располагается по пути: ‘/data/data/com.whatsapp/shared_prefs/’.

    Содержимое файла

    <?xml version="1.0" encoding="ISO-8859-1"?>
    <map>
    <string name="com.whatsapp.registration.RegisterPhone.phone_number">9123456789</string>
    <int name="com.whatsapp.registration.RegisterPhone.verification_state" value="0"/>
    <int name="com.whatsapp.registration.RegisterPhone.country_code_position" value="-1"/>
    <string name="com.whatsapp.registration.RegisterPhone.input_phone_number">912 345-67-89</string>
    <int name="com.whatsapp.registration.RegisterPhone.phone_number_position" value="10"/>
    <string name="com.whatsapp.registration.RegisterPhone.input_country_code">7</string>
    <string name="com.whatsapp.registration.RegisterPhone.country_code">7</string>
    </map>
  • Файл ‘axolotl.db’. Содержит криптографические ключи и иные данные, которые необходимы для идентификации владельца аккаунта. Располагается по пути: ‘/data/data/com.whatsapp/databases/’.
  • Файл ‘chatsettings.db’. Содержит информацию о конфигурации приложения.
  • Файл ‘wa.db’. Содержит детали контактов. Очень интересная (в криминалистическом аспекте) и информативная база данных. В ней может быть найдена подробная информация об удаленных контактах.

Также нужно обращать внимание на следующие каталоги:

  • Каталог ‘/data/media/0/WhatsApp/Media/WhatsApp Images/’. Содержит переданные графические файлы.
  • Каталог ‘/data/media/0/WhatsApp/Media/WhatsApp Voice Notes/’. Содержит голосовые сообщения в файлах формата .OPUS.
  • Каталог ‘/data/data/com.whatsapp/cache/Profile Pictures/’. Содержит графические файлы – изображения контактов.
  • Каталог ‘/data/data/com.whatsapp/files/Avatars/’. Содержит графические файлы – миниатюры изображения контактов. Эти файлы имеют расширение ‘.j’, но, тем не менее, являются графическими файлами формата JPEG (JPG).
  • Каталог ‘/data/data/com.whatsapp/files/Avatars/’. Содержит графические файлы – изображение и миниатюру изображения, установленного как аватар владельцем аккаунта.
  • Каталог ‘/data/data/com.whatsapp/files/Logs/’. Содержит журнал работы программы (файл ‘whatsapp.log’) и резервные копии журналов работы программы (файлы с именами формата whatsapp-гггг-мм-дд.1.log.gz).

Файлы журналов WhatsApp:

WhatsApp на ладони: где и как можно обнаружить криминалистические артефакты?
Фрагмент журнала2017-01-10 09:37:09.757 LL_I D [524:WhatsApp Worker #1] missedcallnotification/init count:0 timestamp:0
2017-01-10 09:37:09.758 LL_I D [524:WhatsApp Worker #1] missedcallnotification/update cancel true
2017-01-10 09:37:09.768 LL_I D [1:main] app-init/load-me
2017-01-10 09:37:09.772 LL_I D [1:main] password file missing or unreadable
2017-01-10 09:37:09.782 LL_I D [1:main] statistics Text Messages: 59 sent, 82 received / Media Messages: 1 sent (0 bytes), 0 received (9850158 bytes) / Offline Messages: 81 received (19522 msec average delay) / Message Service: 116075 bytes sent, 211729 bytes received / Voip Calls: 1 outgoing calls, 0 incoming calls, 2492 bytes sent, 1530 bytes received / Google Drive: 0 bytes sent, 0 bytes received / Roaming: 1524 bytes sent, 1826 bytes received / Total Data: 118567 bytes sent, 10063417 bytes received
2017-01-10 09:37:09.785 LL_I D [1:main] media-state-manager/refresh-media-state/writable-media
2017-01-10 09:37:09.806 LL_I D [1:main] app-init/initialize/timer/stop: 24
2017-01-10 09:37:09.811 LL_I D [1:main] msgstore/checkhealth
2017-01-10 09:37:09.817 LL_I D [1:main] msgstore/checkhealth/journal/delete false
2017-01-10 09:37:09.818 LL_I D [1:main] msgstore/checkhealth/back/delete false
2017-01-10 09:37:09.818 LL_I D [1:main] msgstore/checkdb/data/data/com.whatsapp/databases/msgstore.db
2017-01-10 09:37:09.819 LL_I D [1:main] msgstore/checkdb/list _jobqueue-WhatsAppJobManager 16384 drw=011
2017-01-10 09:37:09.820 LL_I D [1:main] msgstore/checkdb/list _jobqueue-WhatsAppJobManager-journal 21032 drw=011
2017-01-10 09:37:09.820 LL_I D [1:main] msgstore/checkdb/list axolotl.db 184320 drw=011
2017-01-10 09:37:09.821 LL_I D [1:main] msgstore/checkdb/list axolotl.db-wal 436752 drw=011
2017-01-10 09:37:09.821 LL_I D [1:main] msgstore/checkdb/list axolotl.db-shm 32768 drw=011
2017-01-10 09:37:09.822 LL_I D [1:main] msgstore/checkdb/list msgstore.db 540672 drw=011
2017-01-10 09:37:09.823 LL_I D [1:main] msgstore/checkdb/list msgstore.db-wal 0 drw=011
2017-01-10 09:37:09.823 LL_I D [1:main] msgstore/checkdb/list msgstore.db-shm 32768 drw=011
2017-01-10 09:37:09.824 LL_I D [1:main] msgstore/checkdb/list wa.db 69632 drw=011
2017-01-10 09:37:09.825 LL_I D [1:main] msgstore/checkdb/list wa.db-wal 428512 drw=011
2017-01-10 09:37:09.825 LL_I D [1:main] msgstore/checkdb/list wa.db-shm 32768 drw=011
2017-01-10 09:37:09.826 LL_I D [1:main] msgstore/checkdb/list chatsettings.db 4096 drw=011
2017-01-10 09:37:09.826 LL_I D [1:main] msgstore/checkdb/list chatsettings.db-wal 70072 drw=011
2017-01-10 09:37:09.827 LL_I D [1:main] msgstore/checkdb/list chatsettings.db-shm 32768 drw=011
2017-01-10 09:37:09.838 LL_I D [1:main] msgstore/checkdb/version 1
2017-01-10 09:37:09.839 LL_I D [1:main] msgstore/canquery
2017-01-10 09:37:09.846 LL_I D [1:main] msgstore/canquery/count 1
2017-01-10 09:37:09.847 LL_I D [1:main] msgstore/canquery/timer/stop: 8
2017-01-10 09:37:09.847 LL_I D [1:main] msgstore/canquery 517 | time spent:8
2017-01-10 09:37:09.848 LL_I D [529:WhatsApp Worker #3] media-state-manager/refresh-media-state/internal-storage available:1,345,622,016 total:5,687,922,688

  • Каталог ‘/data/media/0/WhatsApp/Media/WhatsApp Audio/’. Содержит полученные аудиофайлы.
  • Каталог ‘/data/media/0/WhatsApp/Media/WhatsApp Audio/Sent/’. Содержит отправленные аудиофайлы.
  • Каталог ‘/data/media/0/WhatsApp/Media/WhatsApp Images/’. Содержит полученные графические файлы.
  • Каталог ‘/data/media/0/WhatsApp/Media/WhatsApp Images/Sent/’. Содержит отправленные графические файлы.
  • Каталог ‘/data/media/0/WhatsApp/Media/WhatsApp Video/’. Содержит полученные видеофайлы.
  • Каталог ‘/data/media/0/WhatsApp/Media/WhatsApp Video/Sent/’. Содержит отправленные видеофайлы.
  • Каталог ‘/data/media/0/WhatsApp/Media/WhatsApp Profile Photos/’. Содержит графические файлы, ассоциированные с владельцем аккаунта WhatsApp.
  • Для экономии места в памяти Android-смартфона часть данных WhatsApp может храниться на SD-карте. На SD-карте, в корневом каталоге, расположен каталог ‘WhatsApp’, где могут быть найдены следующие артефакты этой программы:

    WhatsApp на ладони: где и как можно обнаружить криминалистические артефакты?

  • Каталог ‘.Share’ (‘/mnt/sdcard/WhatsApp/.Share/’). Содержит копии файлов, которые были переданы другим пользователям WhatsApp.
  • Каталог ‘.trash’ (‘/mnt/sdcard/WhatsApp/.trash/’). Содержит удаленные файлы.
  • Каталог ‘Databases’ (‘/mnt/sdcard/WhatsApp/Databases/’). Содержит зашифрованные резервные копии. Они могут быть расшифрованы при наличии файла ‘key’, извлеченного из памяти анализируемого устройства.

    Файлы, находящиеся в подкаталоге ‘Databases’:

    WhatsApp на ладони: где и как можно обнаружить криминалистические артефакты?

  • Каталог ‘Media’ (‘/mnt/sdcard/WhatsApp/Media/’). Содержит подкаталоги ‘WallPaper’, ‘WhatsApp Audio’, ‘WhatsApp Images’, ‘WhatsApp Profile Photos’, ‘WhatsApp Video’, ‘WhatsApp Voice Notes’, в которых находятся полученные и переданные мультимедиа файлы (графические файлы, видеофайлы, голосовые сообщения, фотографии, ассоциированные с профилем владельца аккаунта WhatsApp, обои).
  • Каталог ‘Profile Pictures’ (‘/mnt/sdcard/WhatsApp/Profile Pictures/’). Содержит графические файлы, ассоциированные с профилем владельца аккаунта WhatsApp.
  • Иногда на SD-карте может присутствовать каталог ‘files’ (‘/mnt/sdcard/WhatsApp/Files/’). В этом каталоге содержатся файлы, в которых хранятся настройки программы и предпочтения пользователя.

Особенности хранения данных в некоторых моделях мобильных устройств

В некоторых моделях мобильных устройств под управлением ОС Android возможно хранение артефактов WhatsApp в ином месте. Это обусловлено изменением пространства хранения данных приложений системным программным обеспечением мобильного устройства. Так, например, в мобильных устройствах Xiaomi есть функция создания второго рабочего пространства («SecondSpace»). При активации данной функции происходит изменение месторасположения данных. Так, если в обычном мобильном устройстве под управлением ОС Android данные пользователя хранятся в каталоге ‘/data/user/0/’ (что является ссылкой на привычные ‘/data/data/’), то во втором рабочем пространстве данные приложений хранятся в каталоге ‘/data/user/10/’. То есть, на примере месторасположения файла ‘wa.db’:

  • в обычном смартфоне под управлением ОС Android: /data/user/0/com.whatsapp/databases/wa.db’ (что эквивалентно ‘/data/data/com.whatsapp/databases/wa.db’);
  • во втором рабочем пространстве смартфона Xiaomi: ‘/data/user/10/com.whatsapp/databases/wa.db’.

Артефакты WhatsApp в iOS-устройстве

В отличие от Android ОС, в iOS данные приложения WhatsApp передаются в резервную копию (iTunes backup). Поэтому, извлечение данных этого приложения не требует извлечения файловой системы или создания физического дампа памяти исследуемого устройства. Большая часть значимой информации содержится в базе данных ‘ChatStorage.sqlite’, которая располагается по пути: ‘/private/var/mobile/Applications/group.net.whatsapp.WhatsApp.shared/’ (в некоторых программах этот путь отображается как ‘AppDomainGroup-group.net.whatsapp.WhatsApp.shared’).

Структура ‘ChatStorage.sqlite’:

WhatsApp на ладони: где и как можно обнаружить криминалистические артефакты?
Наиболее информативными в базе данных ‘ChatStorage.sqlite’ являются таблицы ‘ZWAMESSAGE’ и ‘ZWAMEDIAITEM’.

Внешний вид таблицы ‘ZWAMESSAGE’:

WhatsApp на ладони: где и как можно обнаружить криминалистические артефакты?
Структура таблицы ‘ZWAMESSAGE’

Имя поляЗначение
Z_PKпорядковый номер записи (в SQL таблице)
Z_ENTидентификатор таблицы, имеет значение ‘9’
Z_OPTнеизвестно, обычно содержит значения от ‘1’ до ‘6’
ZCHILDMESSAGESDELIVEREDCOUNTнеизвестно, обычно содержит значение ‘0’
ZCHILDMESSAGESPLAYEDCOUNTнеизвестно, обычно содержит значение ‘0’
ZCHILDMESSAGESREADCOUNTнеизвестно, обычно содержит значение ‘0’
ZDATAITEMVERSIONнеизвестно, обычно содержит значение ‘3’, вероятно, является указателем текстового сообщения
ZDOCIDнеизвестно
ZENCRETRYCOUNTнеизвестно, обычно содержит значение ‘0’
ZFILTEREDRECIPIENTCOUNTнеизвестно, обычно содержит значения ‘0’, ‘2’, ‘256’
ZISFROMMEнаправление сообщения: ‘0’ – входящее, ‘1’ — исходящее
ZMESSAGEERRORSTATUSстатус передачи сообщения. Если сообщение отправлено/получено, то имеет значение ‘0’
ZMESSAGETYPEтип передаваемого сообщения
ZSORTнеизвестно
ZSPOTLIGHSTATUSнеизвестно
ZSTARREDнеизвестно, не используется
ZCHATSESSIONнеизвестно
ZGROUPMEMBERнеизвестно, не используется
ZLASTSESSIONнеизвестно
ZMEDIAITEMнеизвестно
ZMESSAGEINFOнеизвестно
ZPARENTMESSAGEнеизвестно, не используется
ZMESSAGEDATEвременная отметка в формате OS X Epoch Time
ZSENTDATEвремя отправки сообщения в формате OS X Epoch Time
ZFROMJIDWhatsApp ID отправителя
ZMEDIASECTIONIDсодержит год и месяц отправки медиафайла
ZPHASHнеизвестно, не используется
ZPUSHPAMEимя контакта отправившего медиафайл в формате UTF-8
ZSTANZIDуникальный идентификатор сообщения
ZTEXTтекст сообщения
ZTOJIDWhatsApp ID получателя
OFFSETсмещение

Внешний вид таблицы ‘ZWAMEDIAITEM’:

WhatsApp на ладони: где и как можно обнаружить криминалистические артефакты?
Структура таблицы ‘ZWAMEDIAITEM’

Имя поляЗначение
Z_PKпорядковый номер записи (в SQL таблице)
Z_ENTидентификатор таблицы, имеет значение ‘8’
Z_OPTнеизвестно, обычно содержит значения от ‘1’ до ‘3’.
ZCLOUDSTATUSсодержит значение ‘4’ если файл загружен.
ZFILESIZEсодержит длину файла (в байтах) для загруженных файлов
ZMEDIAORIGINнеизвестно, обычно имеет значение ‘0’
ZMOVIEDURATIONпродолжительность медиафайла, для pdf файлов может содержать число страниц документа
ZMESSAGEсодержит порядковый номер (номер отличается от того, который указан в колонке ‘Z_PK’)
ZASPECTRATIOсоотношение сторон, не используется, обычно имеет значение ‘0’
ZHACCURACYнеизвестно, обычно имеет значение ‘0’
ZLATTITUDEширина в пикселях
ZLONGTITUDEвысота в пикселях
ZMEDIAURLDATEвременная метка в формате OS X Epoch Time
ZAUTHORNAMEавтор (для документов, может содержать название файла)
ZCOLLECTIONNAMEне используется
ZMEDIALOCALPATHимя файла (с указанием пути) в файловой системе устройства
ZMEDIAURLURL, по которому находился медиафайл. Если файл передавался от одного абонента другому, он был зашифрован, и его расширение будет указано как расширение передаваемого файла — .enc
ZTHUMBNAILLOCALPATHпуть до миниатюры файла в файловой системе устройства
ZTITLEзаголовок файла
ZVCARDNAMEхеш медиафайла, при передаче файла в группу может содержать идентификатор отправителя
ZVCARDSTRINGсодержит информацию о типе передаваемого файла (например, image/jpeg), при передаче файла в группу может содержать идентификатор получателя
ZXMPPTHUMBPATHпуть до миниатюры файла в файловой системе устройства
ZMEDIAKEYнеизвестно, вероятно, содержит ключ для расшифровки зашифрованного файла.
ZMETADATAметаданные передаваемого сообщения
Offsetсмещение

Другими интересными таблицами базы данных ‘ChatStorage.sqlite’ являются:

  • ‘ZWAPROFILEPUSHNAME’. Соотносит WhatsApp ID с именем контакта;
  • ‘ZWAPROFILEPICTUREITEM’. Соотносит WhatsApp ID с аватаркой контакта;
  • ‘Z_PRIMARYKEY’. Таблица содержит общую информацию об этой базе данных, такую как общее число хранимых сообщений, общее число чатов и т.д.

Также при исследовании WhatsApp в мобильном устройстве под управлением iOS надо обращать внимание на следующие файлы:

  • Файл ‘BackedUpKeyValue.sqlite’. Содержит криптографические ключи и иные данные, которые необходимы для идентификации владельца аккаунта. Располагается по пути: /private/var/mobile/Applications/group.net.whatsapp.WhatsApp.shared/.
  • Файл ‘ContactsV2.sqlite’. Содержит информацию о контактах пользователя, такую как ФИО, номер телефона, статус контакта (в виде текста), WhatsApp ID и т.д. Располагается по пути: /private/var/mobile/Applications/group.net.whatsapp.WhatsApp.shared/.
  • Файл ‘consumer_version’. Содержит номер версии установленного приложения WhatsApp. Располагается по пути: /private/var/mobile/Applications/group.net.whatsapp.WhatsApp.shared/.
  • Файл ‘current_wallpaper.jpg’. Содержит текущие обои фона программы WhatsApp. Располагается по пути: /private/var/mobile/Applications/group.net.whatsapp.WhatsApp.shared/. В старых версиях приложения используется файл ‘wallpaper’, который располагается по пути: ‘/private/var/mobile/Applications/net.whatsapp.WhatsApp/Documents/’.
  • Файл ‘blockedcontacts.dat’. Содержит информацию о заблокированных контактах. Располагается по пути: /private/var/mobile/Applications/net.whatsapp.WhatsApp/Documents/.
  • Файл ‘pw.dat’. Содержит зашифрованный пароль. Располагается по пути: ‘/private/var/mobile/Applications/net.whatsapp.WhatsApp/Library/’.
  • Файл ‘net.whatsapp.WhatsApp.plist’ (или файл ‘group.net.whatsapp.WhatsApp.shared.plist’). Содержит информацию о профиле аккаунта WhatsApp. Файл располагается по пути: ‘/private/var/mobile/Applications/group.net.whatsapp.WhatsApp.shared/Library/Preferences/’.

Содержимое файла ‘group.net.whatsapp.WhatsApp.shared.plist’ WhatsApp на ладони: где и как можно обнаружить криминалистические артефакты?
Также нужно обращать внимание на следующие каталоги:

  • Каталог ‘/private/var/mobile/Applications/group.net.whatsapp.WhatsApp.shared/Media/Profile/’. Содержит миниатюры контактов, групп (файлы с расширением .thumb), аватары контактов, аватар владельца аккаунта WhatsApp (файл ‘Photo.jpg’).
  • Каталог ‘/private/var/mobile/Applications/group.net.whatsapp.WhatsApp.shared/ Message/Media/’. Содержит мультимедиа-файлы и их миниатюры
  • Каталог ‘/private/var/mobile/Applications/net.whatsapp.WhatsApp/Documents/’. Содержит журнал работы программы (файл ‘calls.log’) и резервные копии журналов работы программы (файл ‘calls.backup.log’).
  • Каталог ‘/private/var/mobile/Applications/group.net.whatsapp.WhatsApp.shared/stickers/’. Содержит стикеры (файлы в формате ‘.webp’).
  • Каталог ‘/private/var/mobile/Applications/net.whatsapp.WhatsApp/Library/Logs/’. Содержит журналы работы программы.

Артефакты WhatsApp в Windows

Артефакты WhatsApp в Windows можно найти в нескольких местах. Прежде всего, это каталоги, содержащие исполняемые и вспомогательные файлы программы (для Windows 8/10):

  • ‘C:Program Files (x86)WhatsApp’
  • ‘C:Users%User profile% AppDataLocalWhatsApp’
  • ‘C:Users%User profile% AppDataLocalVirtualStore Program Files (x86)WhatsApp’

В каталоге ‘C:Users%User profile% AppDataLocalWhatsApp’ располагается лог-файл ‘SquirrelSetup.log’, в котором находится информация о проверке наличия обновлений и инсталляции программы.

В каталоге ‘C:Users%User profile% AppDataRoamingWhatsApp’ находится несколько подкаталогов:

WhatsApp на ладони: где и как можно обнаружить криминалистические артефакты?
Файл ‘main-process.log’ содержит информацию о работе программы WhatsApp.

Подкаталог ‘databases’ содержит файл ‘Databases.db’, но этот файл не содержит никакой информации о чатах или контактах.

Наиболее интересными с криминалистической точки зрения являются файлы, находящиеся в каталоге ‘Cache’. В основном это файлы с именами ‘f_*******’ (где * — число от 0 до 9), содержащие зашифрованные мультимедиа-файлы и документы, но среди них встречаются и незашифрованные файлы. Особый интерес представляют файлы ‘data_0’, ‘data_1’, ‘data_2’, ‘data_3’, находящиеся в этом же подкаталоге. Файлы ‘data_0’, ‘data_1’, ‘data_3’ содержат внешние ссылки на передаваемые зашифрованные мультимедиа-файлы и документы.

Пример информации, содержащейся в файле ‘data_1’WhatsApp на ладони: где и как можно обнаружить криминалистические артефакты?
Также файл ‘data_3’ может содержать графические файлы.

Файл ‘data_2’ содержит аватары контактов (могут быть восстановлены поиском по заголовкам файлов).

Аватары, содержащиеся в файле ‘data_2’:

WhatsApp на ладони: где и как можно обнаружить криминалистические артефакты?
Таким образом, в памяти компьютера нельзя найти сами чаты, но можно найти:

  • мультимедиа-файлы;
  • документы, передававшиеся с помощью WhatsApp;
  • информацию о контактах владельца аккаунта.

Артефакты WhatsApp в MacOS

В MacOS можно найти типы артефактов WhatsApp, подобные тем, которые имеются в ОС Windows.

Файлы программы находятся каталогах:

  • ‘C:ApplicationsWhatsApp.app’
  • ‘C:Applications._WhatsApp.app’
  • ‘C:Users%User profile%LibraryPreferences’
  • ‘C:Users%User profile%LibraryLogsWhatsApp’
  • ‘C:Users%User profile%LibrarySaved Application StateWhatsApp.savedState’
  • ‘C:Users%User profile%LibraryApplication Scripts’
  • ‘C:Users%User profile%LibraryApplication SupportCloudDocs’
  • ‘C:Users%User profile%LibraryApplication SupportWhatsApp.ShipIt’
  • ‘C:Users%User profile%LibraryContainerscom.rockysandstudio.app-for-whatsapp’
  • ‘C:Users%User profile% Library Mobile Documents <текстовая переменная> WhatsApp Accounts’
    В этом каталоге находятся подкаталоги, имена которых представляют собой номера телефонов, ассоциированных с владельцем аккаунта WhatsApp.
  • ‘C:Users%User profile%LibraryCachesWhatsApp.ShipIt’
    В этом каталоге содержится информация об инсталляции программы.
  • ‘C:Users%User profile%PicturesМедиатека iPhoto.photolibraryMasters’, ‘C:Users%User profile%PicturesМедиатека iPhoto.photolibraryThumbnails’
    В этих каталогах содержатся служебные файлы программы и, в том числе, фотографии и миниатюры контактов WhatsApp.
  • ‘C:Users%User profile%LibraryCachesWhatsApp’
    В этом каталоге находятся несколько SQLite-баз, которые используются для кэширования данных.
  • ‘C:Users%User profile%LibraryApplication SupportWhatsApp’
    В этом каталоге находится несколько подкаталогов:

    WhatsApp на ладони: где и как можно обнаружить криминалистические артефакты?
    В каталоге ‘C:Users%User profile%LibraryApplication SupportWhatsAppCache’ находятся файлы ‘data_0’, ‘data_1’, ‘data_2’, ‘data_3’ и файлы с именами ‘f_*******’ (где * — число от 0 до 9). Информация о том, какие сведения содержат эти файлы, описана в разделе «Артефакты WhatsApp в Windows».

    В каталоге ‘C:Users%User profile%LibraryApplication SupportWhatsAppIndexedDB’ могут содержаться мультимедийные файлы (файлы не имеют расширений).

    Файл ‘main-process.log’ содержит информацию о работе программы WhatsApp.

Источники

  1. Forensic analysis of WhatsApp Messenger on Android smartphones, by Cosimo Anglano, 2014.
  2. Whatsapp Forensics: Eksplorasi sistem berkas dan basis data pada aplikasi Android dan iOS by Ahmad Pratama, 2014.

В следующих статьях этой серии:

Расшифровка зашифрованных баз WhatsAppСтатья, в которой будет приведена информация о том, каким образом происходит генерация ключа шифрования WhatsApp, и даны практические примеры, показывающие, как произвести расшифровку зашифрованных баз этого приложения.
Извлечение данных WhatsApp из облачных хранилищСтатья, в которой мы расскажем, какие данные WhatsApp хранятся в облаках, и опишем методы извлечения этих данных из облачных хранилищ.
Извлечение данных WhatsApp: практические примерыСтатья, в которой будет пошагово описано, какими программами и как произвести извлечение данных WhatsApp из различных устройств.

Источник: habr.com

Добавить комментарий