WhatsApp на долоні: де і як можна виявити криміналістичні артефакти?

WhatsApp на долоні: де і як можна виявити криміналістичні артефакти?

Хочете дізнатися, які типи криміналістичних артефактів WhatsApp існують у різних операційних системах і де саме вони можуть бути виявлені тоді вам сюди. Цією статтею спеціаліст Лабораторії комп'ютерної криміналістики Group-IB Ігор Михайлов відкриває серію публікацій про криміналістичне дослідження WhatsApp і про те, які відомості можна отримати під час аналізу пристрою.

Відразу відзначимо, що в різних операційних системах зберігаються різні типи артефактів WhatsApp, і якщо з одного пристрою дослідник може витягти певні типи даних WhatsApp, це зовсім не означає, що такі типи даних можна витягти з іншого пристрою. Наприклад, якщо вилучається системний блок під керуванням Windows, то на його дисках, ймовірно, не будуть виявлені чати WhatsApp (виняток становлять резервні копії iOS-пристроїв, які можуть бути виявлені на цих накопичувачах). При вилученні ноутбуків та мобільних пристроїв будуть свої особливості. Поговоримо про це детальніше.

Артефакти WhatsApp в Android-пристрої

Для того, щоб отримати артефакти WhatsApp з пристрою під керуванням ОС Android, дослідник повинен мати права суперкористувача ('корінь') на досліджуваному пристрої або мати можливість іншим способом витягти фізичний дамп пам'яті пристрою, або його файлову систему (наприклад, використовуючи програмні вразливості конкретного мобільного пристрою).

Файли програми розміщуються в пам'яті телефону в розділі, де зберігаються дані користувача. Як правило, цей розділ має ім'я '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 таблиці)
    джид WhatsApp ID контакту, записується у форматі <номер телефону>@s.whatsapp.net
    is_whatsapp_user містить '1' якщо контакту відповідає фактичний користувач WhatsApp, '0' в іншому випадку
    статус містить текст, що відображається у статусі контакту
    status_timestamp містить тимчасову мітку у форматі Unix Epoch Time (ms)
    номер номер телефону, асоційований з контактом
    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 ім'я контакту, що використовується в операціях сортування
    прізвисько нік контакту в WhatsApp (відображається нік, вказаний у профілі контакту)
    компанія компанія (відображається компанія, вказана у профілі контакту)
    назву звернення (пані/пан; відображається звернення, налаштоване у профілі контакту)
    зсув зміщення
  • '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_jid WhatsApp ID партнера з комунікації
    key_from_me напрямок повідомлення: '0' – вхідний, '1' — вихідний
    ключ_ідентифікатор унікальний ідентифікатор повідомлення
    статус статус повідомлення: '0' – доставлено, '4' – чекає на сервері, '5' – отримано за місцем призначення, '6' – контрольне повідомлення, '13' – повідомлення відкрито одержувачем (прочитано)
    need_push має значення '2', якщо це широкомовне повідомлення, інакше містить '0'
    дані текст повідомлення (коли параметр 'media_wa_type' дорівнює '0')
    відмітка часу містить тимчасову мітку у форматі 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')
    походження має значення '2', якщо це широкомовне повідомлення, інакше містить '0'
    широта геодані: широта (коли параметр 'media_wa_type' дорівнює '5')
    довготи геодані: довгота (коли параметр '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), значення береться з годинника пристрою
    необроблені дані мініатюра файлу, що передається (коли параметр 'media_wa_type' дорівнює '1' або '3')
    кількість_одержувачів кількість одержувачів (для широкомовних повідомлень)
    participant_hash використовується при передачі повідомлень з геоданими
    обрані не використовується
    quoted_row_id невідомо, зазвичай містить значення '0'
    mentioned_jids не використовується
    multicast_id не використовується
    зсув зміщення

    Цей перелік полів не є вичерпним. Для різних версій 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)'.
  • Файл 'ключ'. Містить криптографічний ключ. Розташовується шляхом: '/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_ID [524:WhatsApp Worker #1] missedcallnotification/init count:0 timestamp:0
2017-01-10 09:37:09.758 LL_ID [524:WhatsApp Worker #1] missedcallnotification/update cancel true
2017-01-10 09:37:09.768 LL_ID [1:main] app-init/load-me
2017-01-10 09:37:09.772 LL_ID [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 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 bytes sent, 0 bytes received / Total Data: 1524 bytes sent, 1826 bytes received
2017-01-10 09:37:09.785 LL_ID [1:main] media-state-manager/refresh-media-state/writable-media
2017-01-10 09:37:09.806 LL_ID [1:main] app-init/initialize/timer/stop: 24
2017-01-10 09:37:09.811 LL_ID [1:main] msgstore/checkhealth
2017-01-10 09:37:09.817 LL_ID [1:main] msgstore/checkhealth/journal/delete false
2017-01-10 09:37:09.818 LL_ID [1:main] msgstore/checkhealth/back/delete false
2017-01-10 09:37:09.818 LL_ID [1:main] msgstore/checkdb/data/data/com.whatsapp/databases/msgstore.db
2017-01-10 09:37:09.819 LL_ID [1:main] msgstore/checkdb/list _jobqueue-WhatsAppJobManager 16384 drw=011
2017-01-10 09:37:09.820 LL_ID [1:main] msgstore/checkdb/list _jobqueue-WhatsAppJobManager-journal 21032 drw=011
2017-01-10 09:37:09.820 LL_ID [1:main] msgstore/checkdb/list axolotl.db 184320 drw=011
2017-01-10 09:37:09.821 LL_ID [1:main] msgstore/checkdb/list axolotl.db-wal 436752 drw=011
2017-01-10 09:37:09.821 LL_ID [1:main] msgstore/checkdb/list axolotl.db-shm 32768 drw=011
2017-01-10 09:37:09.822 LL_ID [1:main] msgstore/checkdb/list msgstore.db 540672 drw=011
2017-01-10 09:37:09.823 LL_ID [1:main] msgstore/checkdb/list msgstore.db-wal 0 drw=011
2017-01-10 09:37:09.823 LL_ID [1:main] msgstore/checkdb/list msgstore.db-shm 32768 drw=011
2017-01-10 09:37:09.824 LL_ID [1:main] msgstore/checkdb/list wa.db 69632 drw=011
2017-01-10 09:37:09.825 LL_ID [1:main] msgstore/checkdb/list wa.db-wal 428512 drw=011
2017-01-10 09:37:09.825 LL_ID [1:main] msgstore/checkdb/list wa.db-shm 32768 drw=011
2017-01-10 09:37:09.826 LL_ID [1:main] msgstore/checkdb/list chatsettings.db 4096 drw=011
2017-01-10 09:37:09.826 LL_ID [1:main] msgstore/checkdb/list chatsettings.db-wal 70072 drw=011
2017-01-10 09:37:09.827 LL_ID [1:main] msgstore/checkdb/list chatsettings.db-shm 32768 drw=011
2017-01-10 09:37:09.838 LL_ID [1:main] msgstore/checkdb/version 1
2017-01-10 09:37:09.839 LL_ID [1:main] msgstore/canquery
2017-01-10 09:37:09.846 LL_ID [1:main] msgstore/canquery/count 1
2017-01-10 09:37:09.847 LL_ID [1:main] msgstore/canquery/timer/stop: 8
2017-01-10 09:37:09.847 LL_ID [1:main] msgstore/canquery 517 | time spent:8
2017-01-10 09:37:09.848 LL_ID [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/'). Містить зашифровані резервні копії. Вони можуть бути розшифровані за наявності файлу 'ключ', вилученого з пам'яті аналізованого пристрою.

    Файли, що знаходяться в підкаталозі 'Databases':

    WhatsApp на долоні: де і як можна виявити криміналістичні артефакти?

  • Каталог "Половина" ('/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
ZFROMJID WhatsApp ID відправника
ZMEDIASECTIONID містить рік і місяць відправки медіафайлу
ZPHASH невідомо, чи не використовується
ZPUSHPAME ім'я контакту відправив медіафайл у форматі UTF-8
ZSTANZID унікальний ідентифікатор повідомлення
ZTEXT Текст повідомлення
ZTOJID WhatsApp 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 ім'я файлу (із зазначенням шляху) у файловій системі пристрою
ZMEDIAURL URL, за яким знаходився медіафайл. Якщо файл передавався від одного абонента іншому, він був зашифрований, і його розширення буде вказано як розширення файлу, що передається — .enc
ZTHUMBNAILLOCALPATH шлях до мініатюри файлу у файловій системі пристрою
ZTITLE заголовок файлу
ZVCARDNAME хеш медіафайлу, при передачі файлу до групи може містити ідентифікатор відправника
ZVCARDSTRING містить інформацію про тип файлу, що передається (наприклад, image/jpeg), при передачі файлу до групи може містити ідентифікатор одержувача
ZXMPPTHUMBPATH шлях до мініатюри файлу у файловій системі пристрою
ZMEDIAKEY невідомо, мабуть, містить ключ для розшифрування зашифрованого файлу.
ZMETADATA метадані повідомлення, що передається
Зсув зміщення

Іншими цікавими таблицями бази даних '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 на Android smartphones, на Cosimo Anglano, 2014 року.
  2. Whatsapp Forensics: Eksplorasi система berkas dan basis data pada application Android dan iOS by Ahmad Pratama, 2014.

У наступних статтях цієї серії:

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

Джерело: habr.com

Додати коментар або відгук