Хотите узнать, какие типы криминалистических артефактов WhatsApp существуют в различных операционных системах и где именно они могут быть обнаружены — тогда вам сюда. Этой статьей специалист Лаборатории компьютерной криминалистики Group-IB Игорь Михайлов открывает серию публикаций о криминалистическом исследовании WhatsApp и о том, какие сведения можно получить при анализе устройства.
Сразу отметим, что в разных операционных системах хранятся различные типы артефактов WhatsApp, и если из одного устройства исследователь может извлечь определенные типы данных WhatsApp, это совсем не означает, что подобные типы данных можно извлечь из другого устройства. Например, если изымается системный блок под управлением ОС Windows, то на его дисках, вероятно, не будут обнаружены чаты WhatsApp (исключение составляют резервные копии iOS-устройств, которые могут быть обнаружены на этих же накопителях). При изъятии ноутбуков и мобильных устройств будут свои особенности. Поговорим об этом поподробнее.
Артефакты WhatsApp в Android-устройстве
Для того, чтобы извлечь артефакты WhatsApp из устройства под управлением ОС Android, исследователь должен иметь права суперпользователя („šaknis“) на исследуемом устройстве или иметь возможность иным способом извлечь физический дамп памяти устройства, или его файловую систему (например, используя программные уязвимости конкретного мобильного устройства).
Файлы приложения располагаются в памяти телефона в разделе, в котором сохраняются данные пользователя. Как правило, этот раздел носит имя ‘userdata’. Подкаталоги и файлы программы располагаются по пути: ‘/data/data/com.whatsapp/’.
Основными файлами, которые содержат криминалистические артефакты WhatsApp в ОС Android являются базы данных ‘wa.db’ и ‘msgstore.db’.
В базе данных ‘wa.db’ содержится полный список контактов пользователя WhatsApp, включая номер телефона, отображаемое имя, временные метки и любую другую информацию, указанную при регистрации в WhatsApp. Файл ‘wa.db’ располагается по пути: ‘/data/data/com.whatsapp/databases/’ и имеет следующую структуру:
Наиболее интересными таблицами в базе данных ‘wa.db’ для исследователя являются:
- ‘wa_contacts’
Эта таблица содержит информацию о контактах: id контакта в WhatsApp, информацию о статусе, отображаемое имя пользователя, временные отметки и т.д.Внешний вид таблицы:
Структура таблицыLauko pavadinimas Vertė _id порядковый номер записи (в SQL таблице) jid WhatsApp ID контакта, записывается в формате <номер телефона>@s.whatsapp.net is_whatsapp_user содержит ‘1’ если контакту соответствует фактический пользователь WhatsApp, ‘0’ в ином случае statusas содержит текст, отображаемый в статусе контакта status_timestamp содержит временную метку в формате Unix Epoch Time (ms) skaičius номер телефона, ассоциированный с контактом raw_contact_id порядковый номер контакта DISPLAY_NAME отображаемое имя контакта phone_type telefono tipas phone_label метка, ассоциированная с номером контакта unseen_msg_count количество сообщений которые были отправлены контактом но небыли прочитаны получателем photo_ts содержит временную метку в формате Unix Epoch Time thumb_ts содержит временную метку в формате Unix Epoch Time photo_id_timestamp содержит временную метку в формате Unix Epoch Time (ms) duotas vardas значение поля совпадает с ‘display_name’ для каждого контакта wa_name имя контакта в WhatsApp (отображается имя, указанное в профиле контакта) sort_name имя контакта, используемое в операциях сортировки pravardė ник контакта в WhatsApp (отображается ник, указанный в профиле контакта) įmonė компания (отображается компания, указанная в профиле контакта) pavadinimas обращение (госпожа/господин; отображается обращение, настроенное в профиле контакта) kompensuoti šališkumas - ‘sqlite_sequence’
Эта таблица содержит информацию о количестве контактов; - ‘android_metadata’
Эта таблица содержит информацию о языковой локализации WhatsApp.
В базе данных ‘msgstore.db’ содержится информация о переданных сообщениях, такая как номер контакта, текст сообщения, статус сообщения, временные метки, сведения о переданных файлах, включенных в сообщения, и т.д. Файл ‘msgstore.db’ располагается по пути: ‘/data/data/com.whatsapp/databases/’ и имеет следующую структуру:
Наиболее интересными таблицами в файле ‘msgstore.db’ для исследователя являются:
- ‘sqlite_sequence’
Эта таблица содержит общую информацию об этой базе данных, например, общее число хранимых сообщений, общее число чатов и т.д.Внешний вид таблицы:
- ‘message_fts_content’
Содержит текст переданных сообщений.Внешний вид таблицы:
- ‘messages’
Эта таблица содержит такую информацию, как номер контакта, текст сообщения, статус сообщения, временные метки, сведения о переданных файлах, включенных в сообщения.Внешний вид таблицы:
Структура таблицыLauko pavadinimas Vertė _id порядковый номер записи (в SQL таблице) key_remote_jid WhatsApp ID партнера по коммуникации key_from_me направление сообщения: ‘0’ – входящее, ‘1’ — исходящее key_id уникальный идентификатор сообщения statusas статус сообщения: ‘0’ – доставлено, ‘4’ – ждет на сервере, ‘5’ – получено по месту назначения, ‘6’ – контрольное сообщение, ‘13’ – сообщение открыто получателем (прочитано) need_push имеет значение ‘2’, если это широковещательное сообщение, в ином случае содержит ‘0’ duomenys текст сообщения (когда параметр ‘media_wa_type’ равен ‘0’) timestamp содержит временную метку в формате Unix Epoch Time (ms), значение берется из часов устройства media_url содержит URL передаваемого файла (когда параметр ‘media_wa_type’ равен ‘1’, ‘2’, ‘3’) media_mime_type MIME-тип передаваемого файла (когда параметр ‘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’) kilmė имеет значение ‘2’, если это широковещательное сообщение, в ином случае содержит ‘0’ platuma геоданные: широта (когда параметр ‘media_wa_type’ равен ‘5’) ilguma геоданные: долгота (когда параметр ‘media_wa_type’ равен ‘5’) thumb_image служебная информация remote_recource ID отправителя (только для групповых чатов) 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 используется при передаче сообщений с геоданными išrinktieji nenaudojamas quoted_row_id неизвестно, обычно содержит значение ‘0’ mentioned_jids nenaudojamas multicast_id nenaudojamas kompensuoti šališkumas Данный список полей не является исчерпывающим. Для разных версий WhatsApp часть полей могут присутствовать или отсутствовать. Дополнительно могут присутствовать поля ‘media_enc_hash’, ‘edit_version’, ‘payment_transaction_id’ ir tt
- ‘messages_thumbnails’
Эта таблица содержит информацию о переданных изображениях и временные метки. В колонке ‘timestamp’ время указано в формате Unix Epoch Time (ms). - ‘chat_list’
Эта таблица содержит информацию о чатах.Внешний вид таблицы:
Также при исследовании WhatsApp в мобильном устройстве под управлением Android надо обращать внимание на следующие файлы:
- byla ‘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-карта)’.
- byla ‘key’. Содержит криптографический ключ. Располагается по пути: ‘/data/data/com.whatsapp/files/’. Используется для расшифровки зашифрованных резервных копий WhatsApp.
- byla ‘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> (имя владельца аккаунта) …
- byla ‘registration.RegisterPhone.xml’. Содержит информацию о номере телефона, ассоциированного с аккаунтом WhatsApp. Файл располагается по пути: ‘/data/data/com.whatsapp/shared_prefs/’.
Failo turinys
<?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>
- byla ‘axolotl.db’. Содержит криптографические ключи и иные данные, которые необходимы для идентификации владельца аккаунта. Располагается по пути: ‘/data/data/com.whatsapp/databases/’.
- byla ‘chatsettings.db’. Содержит информацию о конфигурации приложения.
- byla ‘wa.db’. Содержит детали контактов. Очень интересная (в криминалистическом аспекте) и информативная база данных. В ней может быть найдена подробная информация об удаленных контактах.
Также нужно обращать внимание на следующие каталоги:
- katalogas ‘/data/media/0/WhatsApp/Media/WhatsApp Images/’. Содержит переданные графические файлы.
- katalogas ‘/data/media/0/WhatsApp/Media/WhatsApp Voice Notes/’. Содержит голосовые сообщения в файлах формата .OPUS.
- katalogas ‘/data/data/com.whatsapp/cache/Profile Pictures/’. Содержит графические файлы – изображения контактов.
- katalogas ‘/data/data/com.whatsapp/files/Avatars/’. Содержит графические файлы – миниатюры изображения контактов. Эти файлы имеют расширение ‘.j’, но, тем не менее, являются графическими файлами формата JPEG (JPG).
- katalogas ‘/data/data/com.whatsapp/files/Avatars/’. Содержит графические файлы – изображение и миниатюру изображения, установленного как аватар владельцем аккаунта.
- katalogas ‘/data/data/com.whatsapp/files/Logs/’. Содержит журнал работы программы (файл ‘whatsapp.log’) и резервные копии журналов работы программы (файлы с именами формата whatsapp-гггг-мм-дд.1.log.gz).
Файлы журналов 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
- katalogas ‘/data/media/0/WhatsApp/Media/WhatsApp Audio/’. Содержит полученные аудиофайлы.
- katalogas ‘/data/media/0/WhatsApp/Media/WhatsApp Audio/Sent/’. Содержит отправленные аудиофайлы.
- katalogas ‘/data/media/0/WhatsApp/Media/WhatsApp Images/’. Содержит полученные графические файлы.
- katalogas ‘/data/media/0/WhatsApp/Media/WhatsApp Images/Sent/’. Содержит отправленные графические файлы.
- katalogas ‘/data/media/0/WhatsApp/Media/WhatsApp Video/’. Содержит полученные видеофайлы.
- katalogas ‘/data/media/0/WhatsApp/Media/WhatsApp Video/Sent/’. Содержит отправленные видеофайлы.
- katalogas ‘/data/media/0/WhatsApp/Media/WhatsApp Profile Photos/’. Содержит графические файлы, ассоциированные с владельцем аккаунта WhatsApp.
- Для экономии места в памяти Android-смартфона часть данных WhatsApp может храниться на SD-карте. На SD-карте, в корневом каталоге, расположен каталог ‘WhatsApp’, где могут быть найдены следующие артефакты этой программы:
- katalogas ‘.Share’ (‘/mnt/sdcard/WhatsApp/.Share/’). Содержит копии файлов, которые были переданы другим пользователям WhatsApp.
- katalogas ‘.trash’ (‘/mnt/sdcard/WhatsApp/.trash/’). Содержит удаленные файлы.
- katalogas ‘Databases’ (‘/mnt/sdcard/WhatsApp/Databases/’). Содержит зашифрованные резервные копии. Они могут быть расшифрованы при наличии файла ‘key’, извлеченного из памяти анализируемого устройства.
Файлы, находящиеся в подкаталоге ‘Databases’:
- katalogas 'puse' (‘/mnt/sdcard/WhatsApp/Media/’). Содержит подкаталоги ‘WallPaper’, ‘WhatsApp Audio’, „WhatsApp vaizdai“, ‘WhatsApp Profile Photos’, ‘WhatsApp Video’, ‘WhatsApp Voice Notes’, в которых находятся полученные и переданные мультимедиа файлы (графические файлы, видеофайлы, голосовые сообщения, фотографии, ассоциированные с профилем владельца аккаунта WhatsApp, обои).
- katalogas ‘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’).
Struktūra ‘ChatStorage.sqlite’:
Наиболее информативными в базе данных ‘ChatStorage.sqlite’ являются таблицы ‘ZWAMESSAGE’ и ‘ZWAMEDIAITEM’.
Внешний вид таблицы ‘ZWAMESSAGE’:
Структура таблицы ‘ZWAMESSAGE’
Lauko pavadinimas | Vertė |
---|---|
Z_PK | порядковый номер записи (в SQL таблице) |
Z_ENT | идентификатор таблицы, имеет значение ‘9’ |
Z_OPT | неизвестно, обычно содержит значения от ‘1’ до ‘6’ |
ZCHILDMESSAGESDELIVEREDCOUNT | неизвестно, обычно содержит значение ‘0’ |
ZCHILDMESSAGESPLAYEDCOUNT | неизвестно, обычно содержит значение ‘0’ |
ZCHILDMESSAGESREADCOUNT | неизвестно, обычно содержит значение ‘0’ |
ZDATAITEMVERSION | неизвестно, обычно содержит значение ‘3’, вероятно, является указателем текстового сообщения |
ZDOCID | nežinoma |
ZENCRETRYCOUNT | неизвестно, обычно содержит значение ‘0’ |
ZFILTEREDRECIPIENTCOUNT | неизвестно, обычно содержит значения ‘0’, ‘2’, ‘256’ |
ZISFROMME | направление сообщения: ‘0’ – входящее, ‘1’ — исходящее |
ZMESSAGEERRORSTATUS | статус передачи сообщения. Если сообщение отправлено/получено, то имеет значение ‘0’ |
ZMESSAGETYPE | тип передаваемого сообщения |
ZSORT | nežinoma |
ZSPOTLIGHSTATUS | nežinoma |
ZSTARRED | неизвестно, не используется |
ZCHATSESSION | nežinoma |
ZGROUPMEMBER | неизвестно, не используется |
ZLASTSESSION | nežinoma |
ZMEDIAITEM | nežinoma |
ZMESSAGEINFO | nežinoma |
ZPARENTMESSAGE | неизвестно, не используется |
ZMESSAGEDATE | временная отметка в формате OS X Epoch Time |
ZSENTDATE | время отправки сообщения в формате OS X Epoch Time |
ZFROMJID | WhatsApp ID отправителя |
ZMEDIASECTIONID | содержит год и месяц отправки медиафайла |
ZPHASH | неизвестно, не используется |
ZPUSHPAME | имя контакта отправившего медиафайл в формате UTF-8 |
ZSTANZID | уникальный идентификатор сообщения |
ZTEXT | Pranešimo tekstas |
ZTOJID | WhatsApp ID получателя |
Ofsetinė | šališkumas |
Внешний вид таблицы ‘ZWAMEDIAITEM’:
Структура таблицы ‘ZWAMEDIAITEM’
Lauko pavadinimas | Vertė |
---|---|
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 | nenaudojamas |
ZMEDIALOCALPATH | имя файла (с указанием пути) в файловой системе устройства |
ZMEDIAURL | URL, по которому находился медиафайл. Если файл передавался от одного абонента другому, он был зашифрован, и его расширение будет указано как расширение передаваемого файла — .enc |
ZTHUMBNAILLOCALPATH | путь до миниатюры файла в файловой системе устройства |
ZTITLE | заголовок файла |
ZVCARDNAME | хеш медиафайла, при передаче файла в группу может содержать идентификатор отправителя |
ZVCARDSTRING | содержит информацию о типе передаваемого файла (например, image/jpeg), при передаче файла в группу может содержать идентификатор получателя |
ZXMPPTHUMBPATH | путь до миниатюры файла в файловой системе устройства |
ZMEDIAKEY | неизвестно, вероятно, содержит ключ для расшифровки зашифрованного файла. |
ZMETADATA | метаданные передаваемого сообщения |
Kompensuoti | šališkumas |
Другими интересными таблицами базы данных ‘ChatStorage.sqlite’ yra:
- ‘ZWAPROFILEPUSHNAME’. Соотносит WhatsApp ID с именем контакта;
- ‘ZWAPROFILEPICTUREITEM’. Соотносит WhatsApp ID с аватаркой контакта;
- ‘Z_PRIMARYKEY’. Таблица содержит общую информацию об этой базе данных, такую как общее число хранимых сообщений, общее число чатов и т.д.
Также при исследовании WhatsApp в мобильном устройстве под управлением iOS надо обращать внимание на следующие файлы:
- byla ‘BackedUpKeyValue.sqlite’. Содержит криптографические ключи и иные данные, которые необходимы для идентификации владельца аккаунта. Располагается по пути: /private/var/mobile/Applications/group.net.whatsapp.WhatsApp.shared/.
- byla ‘ContactsV2.sqlite’. Содержит информацию о контактах пользователя, такую как ФИО, номер телефона, статус контакта (в виде текста), WhatsApp ID и т.д. Располагается по пути: /private/var/mobile/Applications/group.net.whatsapp.WhatsApp.shared/.
- byla ‘consumer_version’. Содержит номер версии установленного приложения WhatsApp. Располагается по пути: /private/var/mobile/Applications/group.net.whatsapp.WhatsApp.shared/.
- byla ‘current_wallpaper.jpg’. Содержит текущие обои фона программы WhatsApp. Располагается по пути: /private/var/mobile/Applications/group.net.whatsapp.WhatsApp.shared/. В старых версиях приложения используется файл ‘wallpaper’, который располагается по пути: ‘/private/var/mobile/Applications/net.whatsapp.WhatsApp/Documents/’.
- byla ‘blockedcontacts.dat’. Содержит информацию о заблокированных контактах. Располагается по пути: /private/var/mobile/Applications/net.whatsapp.WhatsApp/Documents/.
- byla ‘pw.dat’. Содержит зашифрованный пароль. Располагается по пути: ‘/private/var/mobile/Applications/net.whatsapp.WhatsApp/Library/’.
- byla ‘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’
Также нужно обращать внимание на следующие каталоги:
- katalogas ‘/private/var/mobile/Applications/group.net.whatsapp.WhatsApp.shared/Media/Profile/’. Содержит миниатюры контактов, групп (файлы с расширением .thumb), аватары контактов, аватар владельца аккаунта WhatsApp (файл ‘Photo.jpg’).
- katalogas ‘/private/var/mobile/Applications/group.net.whatsapp.WhatsApp.shared/ Message/Media/’. Содержит мультимедиа-файлы и их миниатюры
- katalogas ‘/private/var/mobile/Applications/net.whatsapp.WhatsApp/Documents/’. Содержит журнал работы программы (файл ‘calls.log’) и резервные копии журналов работы программы (файл ‘calls.backup.log’).
- katalogas ‘/private/var/mobile/Applications/group.net.whatsapp.WhatsApp.shared/stickers/’. Содержит стикеры (файлы в формате ‘.webp’).
- katalogas ‘/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’
Kataloge ‘C:Users%User profile% AppDataLocalWhatsApp’ располагается лог-файл ‘SquirrelSetup.log’, в котором находится информация о проверке наличия обновлений и инсталляции программы.
Kataloge ‘C:Users%User profile% AppDataRoamingWhatsApp’ находится несколько подкаталогов:
byla ‘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’
Также файл ‘data_3’ может содержать графические файлы.
byla ‘data_2’ содержит аватары контактов (могут быть восстановлены поиском по заголовкам файлов).
Аватары, содержащиеся в файле ‘data_2’:
Таким образом, в памяти компьютера нельзя найти сами чаты, но можно найти:
- мультимедиа-файлы;
- документы, передававшиеся с помощью 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’
В этом каталоге находится несколько подкаталогов:
Kataloge ‘C:Users%User profile%LibraryApplication SupportWhatsAppCache’ находятся файлы ‘data_0’, ‘data_1’, ‘data_2’, ‘data_3’ и файлы с именами ‘f_*******’ (где * — число от 0 до 9). Информация о том, какие сведения содержат эти файлы, описана в разделе «Артефакты WhatsApp в Windows».Kataloge ‘C:Users%User profile%LibraryApplication SupportWhatsAppIndexedDB’ могут содержаться мультимедийные файлы (файлы не имеют расширений).
byla ‘main-process.log’ содержит информацию о работе программы WhatsApp.
Informacijos šaltiniai
- Forensic analysis of WhatsApp Messenger on Android smartphones, by Cosimo Anglano, 2014.
- Whatsapp Forensics: Eksplorasi sistem berkas dan basis data pada aplikasi Android dan iOS by Ahmad Pratama, 2014.
В следующих статьях этой серии:
Расшифровка зашифрованных баз WhatsAppСтатья, в которой будет приведена информация о том, каким образом происходит генерация ключа шифрования WhatsApp, и даны практические примеры, показывающие, как произвести расшифровку зашифрованных баз этого приложения.
Извлечение данных WhatsApp из облачных хранилищСтатья, в которой мы расскажем, какие данные WhatsApp хранятся в облаках, и опишем методы извлечения этих данных из облачных хранилищ.
Извлечение данных WhatsApp: практические примерыСтатья, в которой будет пошагово описано, какими программами и как произвести извлечение данных WhatsApp из различных устройств.
Šaltinis: www.habr.com