
Wilt u weten welke soorten forensische artefacten van WhatsApp er zijn in verschillende besturingssystemen en waar deze kunnen worden aangetroffen? Dan bent u hier aan het juiste adres. In dit artikel opent een specialist van het Group-IB Computer Forensics Lab. Igor Mikhailov de serie publicaties over forensisch onderzoek van WhatsApp en welke informatie kan worden verkregen bij het analyseren van een apparaat.
Laten we meteen opmerken dat in verschillende besturingssystemen verschillende soorten WhatsApp-artefacten worden opgeslagen, en als een onderzoeker bepaalde soorten WhatsApp-gegevens van één apparaat kan extraheren, betekent dit nog niet dat vergelijkbare soorten gegevens van een ander apparaat kunnen worden verkregen. Als bijvoorbeeld een systeemunit wordt gewaykeurd die draait op Windows, zullen op de schijven waarschijnlijk geen WhatsApp-chats worden gevonden (met uitzondering van reservekopieën van iOS-apparaten, die mogelijk op dezelfde opslagmedia kunnen worden aangetroffen). Bij het in beslag nemen van laptops en mobiele apparaten zijn er ook specifieke bijzonderheden. Laten we dit in meer detail bespreken.
WhatsApp-artefacten op een Android-apparaat
Om WhatsApp-artefacten van een apparaat dat draait op Android te extraheren, moet de onderzoeker over superuser-rechten beschikken (‘root’) op het onderzochte apparaat of op een andere manier een fysiek geheugenafbeelding of het bestandssysteem van het apparaat kunnen extraheren (bijvoorbeeld door gebruik te maken van softwarekwetsbaarheden van een specifiek mobiel apparaat).
De applicatiebestanden bevinden zich in het geheugen van de telefoon in de sectie waar de gebruikersgegevens worden opgeslagen. Deze sectie heet doorgaans ‘userdata’. De submappen en bestanden van het programma bevinden zich op het pad: ‘/data/data/com.whatsapp/’.

De belangrijkste bestanden die forensische artefacten van WhatsApp op Android bevatten, zijn de databases ‘wa.db’ en ‘msgstore.db’.
In de database ‘wa.db’ staat een volledige lijst van WhatsApp-contacten van de gebruiker, inclusief het telefoonnummer, de weergegeven naam, tijdstempels en andere informatie die bij registratie bij WhatsApp is opgegeven. Het bestand ‘wa.db’ bevindt zich op het pad: ‘/data/data/com.whatsapp/databases/’ en heeft de volgende structuur:

De meest interessante tabellen in de database ‘wa.db’ voor de onderzoeker zijn:
- ‘wa_contacts’
Deze tabel bevat informatie over contacten: id van het contact in WhatsApp, informatie over de status, weergegeven gebruikersnaam, tijdstempels, enzovoort.Tabelweergave:

TabelstructuurVeldnaam Waarde _id volgnummer van de record (in de SQL-tabel) jid WhatsApp ID van het contact, geschreven in het formaat @s.whatsapp.net is_whatsapp_user bevat ‘1’ als het contact overeenkomt met een daadwerkelijk WhatsApp-gebruiker, ‘0’ in andere gevallen status bevat de tekst die wordt weergegeven in de status van het contact status_timestamp bevat een tijdstempel in Unix Epoch Time (ms) number telefoonnummer dat aan het contact is gekoppeld raw_contact_id volgnummer van het contact display_name weergegeven naam van het contact phone_type type telefoon phone_label label dat aan het telefoonnummer van het contact is gekoppeld unseen_msg_count aantal berichten die door het contact zijn verzonden maar niet zijn gelezen door de ontvanger photo_ts bevat een tijdstempel in Unix Epoch Time thumb_ts bevat een tijdstempel in Unix Epoch Time photo_id_timestamp bevat een tijdstempel in Unix Epoch Time (ms) given_name waarde van het veld komt overeen met ‘display_name’ voor elk contact wa_name naam van het contact in WhatsApp (weergegeven naam zoals aangegeven in het profiel van het contact) sort_name naam van het contact die wordt gebruikt bij sorteeroperaties nickname nickname van het contact in WhatsApp (weergegeven nickname zoals aangegeven in het profiel van het contact) company bedrijf (weergegeven bedrijf zoals aangegeven in het profiel van het contact) title aanspreking (mevrouw/meneer; weergegeven aanspreking zoals ingesteld in het profiel van het contact) offset offset - ‘sqlite_sequence’
Deze tabel bevat informatie over het aantal contacten; - ‘android_metadata’
Deze tabel bevat informatie over de taallokalisatie van WhatsApp.
In de database ‘msgstore.db’ bevat informatie over verzonden berichten, zoals het telefoonnummer van het contact, de tekst van het bericht, de status van het bericht, tijdstempels, en gegevens over bestanden die in berichten zijn verzonden, enzovoort. Bestand ‘msgstore.db’ bevindt zich op het pad: ‘/data/data/com.whatsapp/databases/’ en heeft de volgende structuur:

De meest interessante tabellen in het bestand ‘msgstore.db’ voor de onderzoeker zijn:
- ‘sqlite_sequence’
Deze tabel bevat algemene informatie over deze database, zoals het totale aantal opgeslagen berichten, het totale aantal chats, enzovoort.Tabelweergave:

- ‘message_fts_content’
Bevat de tekst van verzonden berichten.Tabelweergave:

- ‘messages’
Deze tabel bevat informatie zoals het telefoonnummer van het contact, de tekst van het bericht, de status van het bericht, tijdstempels, en gegevens over bestanden die in berichten zijn verzonden.Tabelweergave:

TabelstructuurVeldnaam Waarde _id volgnummer van de record (in de SQL-tabel) key_remote_jid WhatsApp ID van de communicatiepartner key_from_me berichtrichting: ‘0’ – inkomend, ‘1’ — uitgaand key_id unieke identificatie van het bericht status Berichtstatus: ‘0’ – afgeleverd, ‘4’ – in afwachting op de server, ‘5’ – ontvangen op de bestemming, ‘6’ – controlebericht, ‘13’ – bericht geopend door de ontvanger (gelezen) need_push is ‘2’ als dit een broadcastbericht is, anders bevat het ‘0’ data berichttekst (wanneer de parameter ‘media_wa_type’ gelijk is aan ‘0’) timestamp bevat een tijdstempel in Unix Epoch-tijdformaat (ms), de waarde wordt verkregen uit de klok van het apparaat media_url bevat de URL van het verzonden bestand (wanneer de parameter ‘media_wa_type’ gelijk is aan ‘1’, ‘2’, ‘3’) media_mime_type MIME-type van het verzonden bestand (wanneer de parameter ‘media_wa_type’ gelijk is aan ‘1’, ‘2’, ‘3’) media_wa_type berichttype: ‘0’ – tekst, ‘1’ – afbeeldingsbestand, ‘2’ – audiobestand, ‘3’ – videobestand, ‘4’ – contactkaart, ‘5’ – geografische gegevens media_size grootte van het verzonden bestand (wanneer de parameter ‘media_wa_type’ gelijk is aan ‘1’, ‘2’, ‘3’) media_name naam van het verzonden bestand (wanneer de parameter ‘media_wa_type’ gelijk is aan ‘1’, ‘2’, ‘3’) media_caption Bevat de woorden ‘audio’, ‘video’ voor de overeenkomstige waarden van de parameter ‘media_wa_type’ (wanneer de parameter ‘media_wa_type’ gelijk is aan ‘1’, ‘3’) media_hash gecodeerde base64-hash van het verzonden bestand, berekend met het HAS-256-algoritme (wanneer de parameter ‘media_wa_type’ gelijk is aan ‘1’, ‘2’, ‘3’) media_duration duur in seconden voor het mediabestand (wanneer de parameter ‘media_wa_type’ gelijk is aan ‘1’, ‘2’, ‘3’) oorsprong is ‘2’ als dit een broadcastbericht is, anders bevat het ‘0’ latitude geografische gegevens: breedtegraad (wanneer de parameter ‘media_wa_type’ gelijk is aan ‘5’) longitude geografische gegevens: lengtegraad (wanneer de parameter ‘media_wa_type’ gelijk is aan ‘5’) thumb_image service-informatie remote_recource ID van de afzender (alleen voor groepschats) received_timestamp ontvangsttijd, bevat een tijdstempel in Unix Epoch-tijdformaat (ms), de waarde wordt verkregen uit de klok van het apparaat (wanneer de parameter ‘key_from_me’ gelijk is aan ‘0’, ‘-1’ of een andere waarde) send_timestamp wordt niet gebruikt, heeft meestal de waarde ‘-1’ receipt_server_timestamp ontvangsttijd door de centrale server, bevat een tijdstempel in Unix Epoch-tijdformaat (ms), de waarde wordt verkregen uit de klok van het apparaat (wanneer de parameter ‘key_from_me’ gelijk is aan ‘1’, ‘-1’ of een andere waarde receipt_device_timestamp ontvangsttijd van het bericht door een andere abonnee, bevat een tijdstempel in Unix Epoch-tijdformaat (ms), de waarde wordt verkregen uit de klok van het apparaat (wanneer de parameter ‘key_from_me’ gelijk is aan ‘1’, ‘-1’ of een andere waarde read_device_timestamp de tijd van het openen (lezen) van het bericht, bevat een tijdsaanduiding in het Unix Epoch Time-formaat (ms), de waarde wordt uit de klok van het apparaat gehaald played_device_timestamp de tijd van het afspelen van het bericht, bevat een tijdsaanduiding in het Unix Epoch Time-formaat (ms), de waarde wordt uit de klok van het apparaat gehaald raw_data de miniatuur van het verzonden bestand (wanneer de parameter ‘media_wa_type’ gelijk is aan ‘1’ of ‘3’) recipient_count het aantal ontvangers (voor broadcastberichten) participant_hash wordt gebruikt bij het verzenden van berichten met geografische gegevens starred niet gebruikt quoted_row_id onbekend, bevat meestal de waarde ‘0’ mentioned_jids niet gebruikt multicast_id niet gebruikt offset offset Deze lijst met velden is niet uitputtend. Voor verschillende versies van WhatsApp kunnen sommige velden aanwezig of afwezig zijn. Daarnaast kunnen er extra velden aanwezig zijn ‘media_enc_hash’, ‘edit_version’, ‘payment_transaction_id’ enzovoorts.
- ‘messages_thumbnails’
Deze tabel bevat informatie over verzonden afbeeldingen en tijdsaanduidingen. In de kolom ‘timestamp’ is de tijd aangegeven in het Unix Epoch Time-formaat (ms). - ‘chat_list’
Deze tabel bevat informatie over chats.Tabelweergave:

Bij het onderzoeken van WhatsApp op een mobiel apparaat met Android moet ook op de volgende bestanden worden gelet:
- Bestand ‘msgstore.db.cryptXX’ (waarbij XX een of twee cijfers van 0 tot 12 is, bijvoorbeeld msgstore.db.crypt12). Bevat een versleutelde back-up van WhatsApp-berichten (de back-up van het bestand msgstore.db). Het bestand (of bestanden) ‘msgstore.db.cryptXX’ bevindt zich op het pad: ‘/data/media/0/WhatsApp/Databases/’ (virtuele SD-kaart), ‘/mnt/sdcard/WhatsApp/Databases/ (fysieke SD-kaart)’.
- Bestand ‘key’. Bevat de cryptografische sleutel. Bevindt zich op het pad: ‘/data/data/com.whatsapp/files/’. Wordt gebruikt voor het ontsleutelen van versleutelde WhatsApp-back-ups.
- Bestand ‘com.whatsapp_preferences.xml’. Bevat informatie over het WhatsApp-accountprofiel. Het bestand bevindt zich op het pad: ‘/data/data/com.whatsapp/shared_prefs/’.
Fragment van de inhoud van het bestand
… 9123456789 (telefoonnummer dat aan het WhatsApp-account is gekoppeld) … 2.17.395 (versie van WhatsApp) … Hey there! I am using WhatsApp. (bericht dat in de status van het account wordt weergegeven) … Alex (naam van de eigenaar van het account) … - Bestand ‘registration.RegisterPhone.xml’. Bevat informatie over het telefoonnummer dat aan het WhatsApp-account is gekoppeld. Het bestand bevindt zich op het pad: ‘/data/data/com.whatsapp/shared_prefs/’.
De inhoud van het bestand
- Bestand ‘axolotl.db’. Bevat cryptografische sleutels en andere gegevens die nodig zijn voor de identificatie van de account eigenaar. Gevonden op het pad: ‘/data/data/com.whatsapp/databases/’.
- Bestand ‘chatsettings.db’. Bevat informatie over de configuratie van de applicatie.
- Bestand ‘wa.db’. Bevat details van contacten. Een zeer interessante (in forensisch perspectief) en informatieve database. Hierin kan gedetailleerde informatie gevonden worden over verwijderde contacten.
Daarnaast moet ook aandacht besteed worden aan de volgende mappen:
- Map ‘/data/media/0/WhatsApp/Media/WhatsApp Images/’. Bevat verzonden grafische bestanden.
- Map ‘/data/media/0/WhatsApp/Media/WhatsApp Voice Notes/’. Bevat spraakberichten in .OPUS-bestanden.
- Map ‘/data/data/com.whatsapp/cache/Profile Pictures/’. Bevat grafische bestanden - afbeeldingen van contacten.
- Map ‘/data/data/com.whatsapp/files/Avatars/’. Bevat grafische bestanden - miniaturen van contactafbeeldingen. Deze bestanden hebben een ‘.j’ extensie, maar zijn desondanks grafische bestanden in JPEG-formaat (JPG).
- Map ‘/data/data/com.whatsapp/files/Avatars/’. Bevat grafische bestanden - afbeelding en miniatuur van de afbeelding die door de account eigenaar is ingesteld als avatar.
- Map ‘/data/data/com.whatsapp/files/Logs/’. Bevat een logboek van de werkzaamheden van het programma (bestand ‘whatsapp.log’) en back-ups van de logs (bestanden met namen in het formaat whatsapp-jjjj-mm-dd.1.log.gz).
WhatsApp logboeken:

Logfragment2017-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] wachtwoordbestand ontbreekt of is niet leesbaar
2017-01-10 09:37:09.782 LL_I D [1:main] statistieken Tekstberichten: 59 verzonden, 82 ontvangen / Media Berichten: 1 verzonden (0 bytes), 0 ontvangen (9850158 bytes) / Offline Berichten: 81 ontvangen (19522 msec gemiddelde vertraging) / Berichten Service: 116075 bytes verzonden, 211729 bytes ontvangen / Voip Oproepen: 1 uitgaande oproepen, 0 binnenkomende oproepen, 2492 bytes verzonden, 1530 bytes ontvangen / Google Drive: 0 bytes verzonden, 0 bytes ontvangen / Roaming: 1524 bytes verzonden, 1826 bytes ontvangen / Totale Gegevens: 118567 bytes verzonden, 10063417 bytes ontvangen
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
- Map ‘/data/media/0/WhatsApp/Media/WhatsApp Audio/’. Bevat ontvangen audiobestanden.
- Map ‘/data/media/0/WhatsApp/Media/WhatsApp Audio/Sent/’. Bevat verzonden audiobestanden.
- Map ‘/data/media/0/WhatsApp/Media/WhatsApp Images/’. Bevat ontvangen afbeeldingsbestanden.
- Map ‘/data/media/0/WhatsApp/Media/WhatsApp Images/Sent/’. Bevat verzonden afbeeldingsbestanden.
- Map ‘/data/media/0/WhatsApp/Media/WhatsApp Video/’. Bevat ontvangen videobestanden.
- Map ‘/data/media/0/WhatsApp/Media/WhatsApp Video/Sent/’. Bevat verzonden videobestanden.
- Map ‘/data/media/0/WhatsApp/Media/WhatsApp Profile Photos/’. Bevat afbeeldingsbestanden die geassocieerd zijn met de eigenaar van het WhatsApp-account.
- Om ruimte te besparen op de interne opslag van Android-smartphones, kunnen sommige WhatsApp-gegevens op de SD-kaart worden opgeslagen. Op de SD-kaart bevindt zich in de rootmap de map ‘WhatsApp’, waar de volgende artefacten van dit programma kunnen worden gevonden:

- Map ‘.Share’ (‘/mnt/sdcard/WhatsApp/.Share/’). Bevat kopieën van bestanden die naar andere WhatsApp-gebruikers zijn verzonden.
- Map ‘.trash’ (‘/mnt/sdcard/WhatsApp/.trash/’). Bevat verwijderde bestanden.
- Map ‘Databases’ (‘/mnt/sdcard/WhatsApp/Databases/’). Bevat versleutelde back-ups. Deze kunnen worden ontsleuteld met een bestand ‘key’, dat uit het geheugen van het geanalyseerde apparaat is gehaald.
Bestanden die zich in de submap bevinden ‘Databases’:

- Map ‘Media’ (‘/mnt/sdcard/WhatsApp/Media/’). Bevat submappen ‘WallPaper’, ‘WhatsApp Audio’, ‘WhatsApp Afbeeldingen’, ‘WhatsApp Profiel Foto's’, ‘WhatsApp Video’, ‘WhatsApp Stemnotities’, waarin de ontvangen en verzonden multimedia bestanden (afbeeldingsbestanden, videobestanden, spraakberichten, foto's, geassocieerd met het profiel van de WhatsApp-accounthouder, achtergronden) zijn opgeslagen.
- Map ‘Profiel Foto's’ (‘/mnt/sdcard/WhatsApp/Profile Pictures/’). Bevat afbeeldingsbestanden die geassocieerd zijn met het profiel van de WhatsApp-accounthouder.
- Soms kan er een map op de SD-kaart zijn ‘files’ (‘/mnt/sdcard/WhatsApp/Files/’). In deze map staan bestanden opgeslagen met programmavoorkeuren en gebruikersinstellingen.
Kenmerken van gegevensopslag op sommige modellen mobiele apparaten
Op sommige modellen mobiele apparaten die draaien op het Android-systeem kunnen WhatsApp-artifacten op een andere locatie worden opgeslagen. Dit wordt veroorzaakt door veranderingen in de gegevensopslagruimte van applicaties door de systeemsoftware van het mobiele apparaat. Bijvoorbeeld, op mobiele apparaten van Xiaomi is er een functie voor het creëren van een tweede werkruimte (‘SecondSpace’). Wanneer deze functie wordt geactiveerd, verandert de locatie van de gegevens. Zo, als op een normaal mobiel apparaat met Android de gebruikersgegevens worden opgeslagen in de map ‘/data/user/0/’ (wat verwijst naar de gebruikelijke ‘/data/data/’), dan worden in de tweede werkruimte de gegevens van de applicaties opgeslagen in de map ‘/data/user/10/’. Dus, aan de hand van de locatie van het bestand ‘wa.db’:
- op een gewone smartphone die draait op Android: /data/user/0/com.whatsapp/databases/wa.db’ (wat gelijkstaat aan ‘/data/data/com.whatsapp/databases/wa.db’);
- in de tweede werkruimte van de Xiaomi-smartphone: ‘/data/user/10/com.whatsapp/databases/wa.db’.
WhatsApp-artifacten in iOS-apparaten
In tegenstelling tot Android, worden de gegevens van de WhatsApp-app in iOS overgebracht naar een back-up (iTunes-back-up). Daarom vereist het extraheren van de gegevens van deze applicatie geen toegang tot het bestandssysteem of het maken van een fysieke geheugen dump van het onderzochte apparaat. Het grootste deel van de relevante informatie is opgeslagen in de database ‘ChatStorage.sqlite’, die zich bevindt op het pad: ‘/private/var/mobile/Applications/group.net.whatsapp.WhatsApp.shared/’ (in sommige programma's wordt dit pad weergegeven als ‘AppDomainGroup-group.net.whatsapp.WhatsApp.shared’).
Structuur ‘ChatStorage.sqlite’:

De meest informatieve tabellen in de database ‘ChatStorage.sqlite’ zijn ‘ZWAMESSAGE’ en ‘ZWAMEDIAITEM’.
Uiterlijk van de tabel ‘ZWAMESSAGE’:

Structuur van de tabel ‘ZWAMESSAGE’
| Veldnaam | Waarde |
|---|---|
| Z_PK | volgnummer van de record (in de SQL-tabel) |
| Z_ENT | tabelidentificatie, heeft de waarde ‘9’ |
| Z_OPT | onbekend, bevat meestal waarden van ‘1’ tot ‘6’ |
| ZCHILDMESSAGESDELIVEREDCOUNT | onbekend, bevat meestal de waarde ‘0’ |
| ZCHILDMESSAGESPLAYEDCOUNT | onbekend, bevat meestal de waarde ‘0’ |
| ZCHILDMESSAGESREADCOUNT | onbekend, bevat meestal de waarde ‘0’ |
| ZDATAITEMVERSION | onbekend, bevat meestal de waarde ‘3’, is waarschijnlijk een aanwijzer voor het tekstbericht |
| ZDOCID | onbekend |
| ZENCRETRYCOUNT | onbekend, bevat meestal de waarde ‘0’ |
| ZFILTEREDRECIPIENTCOUNT | onbekend, bevat meestal waarden ‘0’, ‘2’, ‘256’ |
| ZISFROMME | berichtrichting: ‘0’ – inkomend, ‘1’ — uitgaand |
| ZMESSAGEERRORSTATUS | status van de berichtoverdracht. Als het bericht is verzonden/ontvangen, heeft het de waarde ‘0’ |
| ZMESSAGETYPE | type van het verzonden bericht |
| ZSORT | onbekend |
| ZSPOTLIGHSTATUS | onbekend |
| ZSTARRED | onbekend, niet gebruikt |
| ZCHATSESSION | onbekend |
| ZGROUPMEMBER | onbekend, niet gebruikt |
| ZLASTSESSION | onbekend |
| ZMEDIAITEM | onbekend |
| ZMESSAGEINFO | onbekend |
| ZPARENTMESSAGE | onbekend, niet gebruikt |
| ZMESSAGEDATE | tijdstempel in het OS X Epoch-tijdformaat |
| ZSENTDATE | tijd van verzending van het bericht in het OS X Epoch-tijdformaat |
| ZFROMJID | WhatsApp ID van de afzender |
| ZMEDIASECTIONID | bevat jaar en maand van verzending van het mediabestand |
| ZPHASH | onbekend, niet gebruikt |
| ZPUSHPAME | naam van de contactpersoon die het mediabestand heeft verzonden in UTF-8-formaat |
| ZSTANZID | unieke identificatie van het bericht |
| ZTEXT | bericht tekst |
| ZTOJID | WhatsApp ID van de ontvanger |
| OFFSET | offset |
Uiterlijk van de tabel ‘ZWAMEDIAITEM’:

Structuur van de tabel ‘ZWAMEDIAITEM’
| Veldnaam | Waarde |
|---|---|
| Z_PK | volgnummer van de record (in de SQL-tabel) |
| Z_ENT | tabelidentificatie, heeft de waarde ‘8’ |
| Z_OPT | onbekend, bevat meestal waarden van ‘1’ tot ‘3’. |
| ZCLOUDSTATUS | bevat de waarde ‘4’ als het bestand is geüpload. |
| ZFILESIZE | bevat de bestandsgrootte (in bytes) voor geüploade bestanden |
| ZMEDIAORIGIN | onbekend, bevat meestal de waarde ‘0’ |
| ZMOVIEDURATION | duur van het mediabestand, kan voor pdf-bestanden het aantal pagina's van het document bevatten |
| ZMESSAGE | bevat het volgnummer (nummer verschilt van dat in de kolom ‘Z_PK’) |
| ZASPECTRATIO | aspectverhouding, niet gebruikt, bevat meestal de waarde ‘0’ |
| ZHACCURACY | onbekend, bevat meestal de waarde ‘0’ |
| ZLATTITUDE | breedte in pixels |
| ZLONGTITUDE | hoogte in pixels |
| ZMEDIAURLDATE | tijdstempel in het OS X Epoch-tijdformaat |
| ZAUTHORNAME | auteur (voor documenten kan dit de bestandsnaam bevatten) |
| ZCOLLECTIONNAME | niet gebruikt |
| ZMEDIALOCALPATH | bestandsnaam (met pad) in het bestandssysteem van het apparaat |
| ZMEDIAURL | URL waar het mediabestand zich bevond. Als het bestand van de ene abonnee naar de andere werd verzonden, werd het versleuteld en de extensie zal worden aangegeven als de extensie van het verzonden bestand — .enc |
| ZTHUMBNAILLOCALPATH | pad naar de miniatuur van het bestand in het bestandssysteem van het apparaat |
| ZTITLE | bestandsnaam |
| ZVCARDNAME | hash van het mediabestand, kan bij verzending naar een groep de identificatie van de verzender bevatten |
| ZVCARDSTRING | bevat informatie over het type verzonden bestand (bijvoorbeeld image/jpeg), kan bij verzending naar een groep de identificatie van de ontvanger bevatten |
| ZXMPPTHUMBPATH | pad naar de miniatuur van het bestand in het bestandssysteem van het apparaat |
| ZMEDIAKEY | onbekend, waarschijnlijk bevat het een sleutel voor het decoderen van het versleutelde bestand. |
| ZMETADATA | metadata van het verzonden bericht |
| Offset | offset |
Andere interessante database tabellen ‘ChatStorage.sqlite’ zijn:
- ‘ZWAPROFILEPUSHNAME’. Koppelt WhatsApp ID aan de naam van de contactpersoon;
- ‘ZWAPROFILEPICTUREITEM’. Koppelt WhatsApp ID aan de profielfoto van de contactpersoon;
- ‘Z_PRIMARYKEY’. De tabel bevat algemene informatie over deze database, zoals het totale aantal opgeslagen berichten, het totale aantal chats, enz.
Bij het onderzoeken van WhatsApp op een mobiel apparaat met iOS moet ook op de volgende bestanden gelet worden:
- Bestand ‘BackedUpKeyValue.sqlite’. Bevat cryptografische sleutels en andere gegevens die nodig zijn voor de identificatie van de account eigenaar. Gevonden op het pad: /private/var/mobile/Applications/group.net.whatsapp.WhatsApp.shared/.
- Bestand ‘ContactsV2.sqlite’. Bevat informatie over de contactpersonen van de gebruiker, zoals volledige naam, telefoonnummer, status van de contactpersoon (in tekst), WhatsApp ID, enz. Geplaatst op het pad: /private/var/mobile/Applications/group.net.whatsapp.WhatsApp.shared/.
- Bestand ‘consumer_version’. Bevat het versienummer van de geïnstalleerde WhatsApp-app. Geplaatst op het pad: /private/var/mobile/Applications/group.net.whatsapp.WhatsApp.shared/.
- Bestand ‘current_wallpaper.jpg’. Bevat de huidige achtergrondafbeelding van de WhatsApp-app. Geplaatst op het pad: /private/var/mobile/Applications/group.net.whatsapp.WhatsApp.shared/. In oudere versies van de app wordt het bestand gebruikt ‘wallpaper’, dat zich bevindt op het pad: ‘/private/var/mobile/Applications/net.whatsapp.WhatsApp/Documents/’.
- Bestand ‘blockedcontacts.dat’. Bevat informatie over geblokkeerde contacten. Geplaatst op het pad: /private/var/mobile/Applications/net.whatsapp.WhatsApp/Documents/.
- Bestand ‘pw.dat’. Bevat het versleutelde wachtwoord. Geplaatst op het pad: ‘/private/var/mobile/Applications/net.whatsapp.WhatsApp/Library/’.
- Bestand ‘net.whatsapp.WhatsApp.plist’ (of het bestand ‘group.net.whatsapp.WhatsApp.shared.plist’). Bevat informatie over het WhatsApp-accountprofiel. Het bestand bevindt zich op het pad: ‘/private/var/mobile/Applications/group.net.whatsapp.WhatsApp.shared/Library/Preferences/’.
De inhoud van het bestand ‘group.net.whatsapp.WhatsApp.shared.plist’
Daarnaast moet ook aandacht besteed worden aan de volgende mappen:
- Map ‘/private/var/mobile/Applications/group.net.whatsapp.WhatsApp.shared/Media/Profile/’. Bevat miniaturen van contacten, groepen (bestanden met de extensie .thumb), profielfoto's van contacten, profielfoto van de WhatsApp-accounthouder (bestand ‘Photo.jpg’).
- Map ‘/private/var/mobile/Applications/group.net.whatsapp.WhatsApp.shared/Message/Media/’. Bevat multimedia bestanden en hun miniaturen
- Map ‘/private/var/mobile/Applications/net.whatsapp.WhatsApp/Documents/’. Bevat een logboek van de applicatie (bestand ‘calls.log’) en back-ups van de logboeken van de applicatie (bestand ‘calls.backup.log’).
- Map ‘/private/var/mobile/Applications/group.net.whatsapp.WhatsApp.shared/stickers/’. Bevat stickers (bestanden in het formaat ‘.webp’).
- Map ‘/private/var/mobile/Applications/net.whatsapp.WhatsApp/Library/Logs/’. Bevat logboeken van de applicatie.
WhatsApp-artifacten in Windows
WhatsApp-artifacten in Windows kunnen op verschillende plaatsen worden gevonden. In de eerste plaats zijn dit de mappen die uitvoerbare en ondersteunende bestanden van de applicatie bevatten (voor Windows 8/10):
- ‘C:Program Files (x86)WhatsApp’
- ‘C:Users%User profile% AppDataLocalWhatsApp’
- ‘C:Users%User profile% AppDataLocalVirtualStore Program Files (x86)WhatsApp’
In de map ‘C:Users%User profile% AppDataLocalWhatsApp’ bevindt zich een logbestand ‘SquirrelSetup.log’, waarin informatie over de controle op updates en de installatie van het programma te vinden is.
In de map ‘C:Users%User profile% AppDataRoamingWhatsApp’ bevindt zich meerdere submappen:
Bestand ‘main-process.log’ bevat informatie over de werking van het WhatsApp-programma.
Submap ‘databases’ bevat het bestand ‘Databases.db’, maar dit bestand bevat geen informatie over chats of contacten.
Van forensisch belang zijn de bestanden die zich in de map bevinden ‘Cache’. Dit zijn voornamelijk bestanden met namen ‘f_*******’ (waarbij * een getal van 0 tot 9 is), die versleutelde multimedia-bestanden en documenten bevatten, maar er zijn ook onvercijferde bestanden tussen. Bijzondere interesse wekken de bestanden ‘data_0’, ‘data_1’, ‘data_2’, ‘data_3’, die zich in dezelfde submap bevinden. Bestanden ‘data_0’, ‘data_1’, ‘data_3’ bevatten externe links naar de verzonden versleutelde multimedia-bestanden en documenten.
Een voorbeeld van de informatie die in het bestand ‘data_1’ is opgenomen
Kan ook het bestand ‘data_3’ grafische bestanden bevatten.
Bestand ‘data_2’ bevat de profielfoto's van contacten (kunnen worden hersteld door te zoeken op de bestandsnamen).
De profielfoto's die in het bestand zijn opgenomen ‘data_2’:

Daarom kunnen de chats niet op de computer worden gevonden, maar kunnen de volgende elementen worden aangetroffen:
- multimedia-bestanden;
- documenten die via WhatsApp zijn verzonden;
- informatie over de contacten van de accounteigenaar.
WhatsApp-artifacten in MacOS
In MacOS zijn er soortgelijke soorten WhatsApp-artifacten te vinden als in Windows.
De programmabestanden bevinden zich in de mappen:
- ‘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’
In deze map bevinden zich submappen waarvan de namen overeenkomen met de telefoonnummers die zijn gekoppeld aan de WhatsApp-account van de eigenaar. - ‘C:Users%User profile%LibraryCachesWhatsApp.ShipIt’
In deze map bevindt zich informatie over de installatie van het programma. - ‘C:Users%User profile%PicturesMediatheek iPhoto.photolibraryMasters’, ‘C:Users%User profile%PicturesMediatheek iPhoto.photolibraryThumbnails’
In deze mappen bevinden zich systeem- en andere bestanden van de applicatie, waaronder foto's en miniaturen van WhatsApp-contacten. - ‘C:Users%User profile%LibraryCachesWhatsApp’
In deze map zijn verschillende SQLite-databases te vinden die worden gebruikt voor het cachen van gegevens. - ‘C:Users%User profile%LibraryApplication SupportWhatsApp’
In deze map bevinden zich verschillende submappen:
In de map ‘C:Users%User profile%LibraryApplication SupportWhatsAppCache’ bevatten bestanden ‘data_0’, ‘data_1’, ‘data_2’, ‘data_3’ en bestanden met namen ‘f_*******’ (waar * een getal van 0 tot 9 is). Informatie over de inhoud van deze bestanden is beschreven in het gedeelte 'WhatsApp-artefacten in Windows'.In de map ‘C:Users%User profile%LibraryApplication SupportWhatsAppIndexedDB’ kunnen multimedia-bestanden bevatten (bestanden hebben geen extensies).
Bestand ‘main-process.log’ bevat informatie over de werking van het WhatsApp-programma.
Bronnen
- Forensische analyse van WhatsApp Messenger op Android-smartphones, door Cosimo Anglano, 2014.
- Whatsapp Forensics: Verkenning van bestandssystemen en databases op de Android- en iOS-applicatie door Ahmad Pratama, 2014.
In de volgende artikelen in deze serie:
Decryptie van versleutelde WhatsApp-databasesEen artikel waarin we informatie geven over hoe de encryptiesleutel van WhatsApp wordt gegenereerd en praktische voorbeelden geven van hoe de versleutelde databases van deze applicatie kunnen worden gedecodeerd.
Gegevensextractie van WhatsApp uit cloudopslagEen artikel waarin we uitleggen welke gegevens van WhatsApp in de cloud worden opgeslagen en de methoden beschrijven voor het extraheren van deze gegevens uit cloudopslagdiensten.
WhatsApp-gegevensextractie: praktische voorbeeldenEen artikel waarin stap voor stap wordt uitgelegd met welke programma's en hoe je WhatsApp-gegevens uit verschillende apparaten kunt extraheren.
Bron: habr.com








