Sadržaj

Forenzika pametnih satova

Sažetak

Korištenje jednostavnih prenosivih uređaja poput pametnih satova ili pametnih prstena je porasla u zadnjih desetak godina. Oni predstavljaju obilje podataka koje nismo ni svjesni da se očitavaju, zapisuju i obrađuju. Zato u nastavku ćemo proći kroz tri najprodavanije vrste pametnih satova koji se prodaju na tržištu, zanimljive lokacijske i zdravstvene podatke koje oni zapisuju te kako mi možemo doci do tih podataka i kako ih čitati i obrađivati.

Keywords: pametni satovi; podaci; alati;

Uvod

Kroz proteklih desetak godina mogli smo svjedočiti velikom porastu popularnosti nosivih uređaja, sve od bežičnih slušalica, prstena pa do pametnih satova. Nekada su satovi bili jednostavni mehaničku instrumenti za mjerenja vremena no kako vrijeme prolazi i tehnologija prožima vrlo veliki dio čovjekove okoline tako je došla i do ovoga. Danas u osim što pametni satovi predstavljaju instrument za mjerenje vremena u sebi sadrže i brojne druge senzore poput akcelerometra, GPS prijemnika, optičkog senzora za otkucaj srca, module za beskontaktno plaćanje, antene za bežičnu komunikaciju i mnoge druge. Takvi uređaji više nisu dodatak ili pomagalo nekom drugom uređaju već predstavljaju autonomni čvor u IoT svijetu koji neprestano pomoću senzora generiraju, obrađuju i spremaju podatke.

Promatrajući pametne satove iz perspektive digitalne forenzike, oni mogu prikupljati obilje podataka svake sekunde svakog dana budući da su satovi za razliku od mobitela konstanto vezani uz tijelo. Mogu nam reci nešto o osobi od interesa poput kuda se kretala, kakav joj je puls bio, je li bila pod stresom i ako je na kojoj lokaciji, itd. Cilj rada je proučiti metode i procese digitalne forenzike vezane za pametne satove. Istražiti će se načini generiranja, zapisa i izvlačenja podataka iz više vrsta pametnih satova te će se spomenuti najčešće korišteni alati.

Arhitektura pametnih satova

Kako bi mogli doći do podataka koje tražimo ključno je razumijevanje arhitekture pametnog sata. Danas podaci mogu biti distribuirani na više mjesta ovisno o implementaciji. Mogu biti na samom satu, povezanom pametnom telefonu ili na oblaku. Također svaki proizvođač koristi svoj operacijski sustav koji na drugačije načine sprema i obrađuje podatke. Najzastupljeniji uređaji u uporabi su watchOS kojeg je napravio Apple te se temelji na iOS-u te koristi APFS datotečni sustav s SQLite bazom podataka u kojoj su podaci izolirani i kriptirani, Wear OS kojeg je napravio Samsung baziran na Androidu koji koristi SQLite bazu podataka za pohranu te RTOS (Real Time Operating Systems) kojeg koristi Garmin gdje se podaci spremaju u datoteke specifičnog .fit (Flexible and Interoperable Data Transfer) formata.

Samsung

Kod Sasmungovih pametnih satova postoji više načina na koje se može doći do podataka. Prva metoda koristi alat Android Debug Bridge koji izravno pristupa sistemskim zapisima sata u stvarnom vremenu. Nakon što se sat poveže s računalom podaci o lokaciji se mogu dobiti pokretanjem naredbe “adb logcat”. Nažalost ova metoda nam ne može reći ništa o povijesnim podacima sata već samo o podacima koje sat trenutno obrađuje ili podacima koje su neke aplikacije zadnje koristile.

Drugi nama interesantniji način prikupljanja podataka bi bio zapis podataka o lokaciji u neku datoteku te kasnije preuzimanje i proučavanje takve datoteke. Jedan od alata koji nam to omogućuje je GNSS Logger. To je Googleova aplikacija koja bilježi sirove podatke o lokaciji izravno s GPS čipa sata. Ovaj alat bilježi bilo kakvu promjenu brzine, visine i koordinata u neku .txt ili .csv datoteku. Takvo bilježenje podataka je vrlo precizno te se samim time kretanje može preciznije i točnije rekonstruirati no ta preciznost dolazi na naplatu kod potrošnje energije sata. Kasnije se datoteka s podacima može preuzeti naredbom “adb pull” te obrađivati na računalu. [2]

Svaka od ove dvije prethodno opisane metode ima manu kod forenzike. U prvoj metodi dobivamo samo zadnje podatke i ne možemo pristupiti prethodnima dok kod druge metode ako želimo povijest podataka moramo na sat staviti alat koji će nam omogući prikupljanje takvih podataka. Zato je Google prošle godine promijenio načina rada lokalne povijesti na pametnim satovima koji koriste Android prebacivši pohranu tih podataka s oblaka na uređaj. Naravno podaci će se spremati i na oblak ali će se i na satu nalaziti podaci od nekoliko zadnjih tjedana i mjeseci. No do ovih podataka je znatno teže doći budući da zahtijevaju root ovlasti i nalaze se SQLite bazi podataka u sistemskoj particiji. Do podataka je moguće doći koristeći ADB razvojini pristup te naredbu “adb shell”, nadalje se treba navigirati do mape “/data/data/<ime_paketa>/databases/”. Tamo se nalazi datoteka location.db. [1][3]

Dodatno na isti način se mogu preuzeti i zdravstveni podaci. Za zdravstvene podatke WearOS koristi Health Services kao središnji sustav koji upravlja senzorima te pomoću ADB-a te podatke možemo pratiti u stvarnom vremenu ili preuzeti posljednje podatke koje su neke aplikacije zapisale budući da su ostale u memoriji. Naredba kojim možemo vidjeti takve sirove podatke je “adb shell dumpsys service com.google.android.wearable.healthservices”. Nadalje ako želimo više povijesnih podataka, WearOS ima standardno središte gdje se zapisuju svi podaci sa senzora nazvano Health Connect. Ti podaci se mogu preuzeti preko mobitela u izborniku Settings > Privacy > Helath Connect u JSON ili CSV formatu. Ovi podaci sadrže preciznu vremensku oznaku za svaki podatak zapisan.

Apple

Ekstrakcija podataka s Apple pametnih satova je znatno teža nego sa Samsungovih. S Apple pametnih satova podatke nije moguće jednostavno preuzeti budući da Apple to ne dopušta te su podaci kriptirani s kraja na kraj. Jedini način kako se podaci mogu izvući je tako da se kopiraju na povezani Iphone te se dalje preko njega ili nekog drugog alata obrađuju. Apple podatke o lokaciji sprema na tri različita načina. Prvi način pohrane podataka o lokaciji je GPX datoteka treninga. Kada započnemo neki treninga u kojem se zapisuje GPS lokacija Apple Watch stvara vrlo precizna trag kretanja kako bi se kasnije ruta mogla što preciznije rekonstruirati. Ti se podaci mogu izvesti pomoću opcije “Export Health Data” te će se unutar izvezene mape nalaziti podmapa “workout-routes”. Tamo će se nalaziti .gpx datoteke što je zapravo XML format zapisa podataka. U tim podacima su zapisane longituda, ladituda, nadmorska visina te točno vrijeme. Na slikama ispod možemo vidjeti kako izgledaju te tablice podataka te sami podaci u XML formatu.[4]

Drugi način na koji Apple Watch bilježi podatke o lokaciji naziva se “Core Location” ili “Significant Locations”. On bilježi lokacijske podatke kao mjesta na kojima se korisnik često nalazi. Te podatke moguće je izvući tako da se ja povezanom Iphoneu ode na Settings > Privacy & Security > Location Services > System Services > Significant Locations. Tu se nalazi lista često posjećivanih mjesta.[5]

Nadalje Apple Watch slično kao i WearOS sprema sirove podatke o lokaciji i SQLite bazi na sam sat te prebacuje te iste podatke na mobitel zbog čuvanja. Ako se napravi kopija iPhonea na računalo možemo pronaći tablicu lokacija na kojima se sat nalazio na putanji HomeDomain/Library/Caches/com.apple.routined/StateModel.sqlite. Atributi koje nalazimo u tablici su ZLATITUDE, ZLONGITUDE, ZTIMESTAPM i ZUNCERTAINTY gdje se vrijeme zapisuje kao broj sekundi od 1. siječnja 2001., a ZUNCERTAINTY je polumjer preciznosti u metrima.[7]

Za preuzimanje sirovih zdravstvenih podataka poput otkucaja srca ili zasićenosti kisikom vrijede ista pravila kao i za preuzimanje sirovih podataka o lokaciji. Jedini način da se dođe do tih podataka jest da se napravi kopija iPhonea na kojem su prethodno bili sinkronizirani podaci sa sata, na računalo. Nakon toga se na lokaciji HomeDomain/Libray/Health/ može pronaći SQLite baza podataka healthdb.sqlite koja sadrži sirove podatke sinkronizirane sa sata. [6][7]

Garmin

Garmin za razliku od Samsunga ili Applea danas omogućava znatno jednostavniju ekstrakciju podataka. Koristi standardizirane formate datoteka koje su lako dostupne korisnicima ili forenzičarima. Podatke o lokaciji i zdravlju sprema direktno na sat. Na satu mogu postojati dvije vrste lokacijskih podataka, općenito lokacijski podaci koje sat očita zajedno s zdravstvenim podacima i sprema u jednakim vremenskim intervalima ili podaci o lokaciji zabilježeni tijekom aktivnosti. Do ovih podataka se dolazi tako da se spoji sat na računalo koje ga prepoznaje kao USB memoriju te se navigira do GARMIN/Monitor/ za općenite podatke o lokaciji i zdravlju zabilježene tokom dana poput broja koraka, potrošenim kalorijama, razini stresa, otkucajima srca itd. ili do GARMIN/Activity/ za podatke o lokaciji s treninga. Te datoteke su u .fit binarnom formatu te nakon sto ih se preuzme sa sata, kako bi ih pročitali, moramo koristi Garmin FIT SDK kako bi smo ih pretvorili u CSV ili JSON format. Ispod se nalazi primjer tih podataka u JSON i CSV formatu. [8][9]

{

  "DailyActivityKey": "6e2626f8-e891-ed11-98ad-f4ce23710c45_6d1a196e-21cf-43ca-88e9-73fc3211da48",
  "ParticipantID": "6e2626f8-e891-ed11-98ad-f4ce23710c45",
  "ParticipantIdentifier": "46ce54ac-e891-ed11-98ad-f4ce23710c45",
  "InsertedDate": "2025-03-13T23:42:02Z",
  "ID": "6d1a196e-21cf-43ca-88e9-73fc3211da48",
  "Score": 82,
  "ActiveCalories": 188,
  "AverageMetMinutes": 1.40625,
  "Contributors": {
      "MeetDailyTargets": 60,
      "MoveEveryHour": 78,
      "RecoveryTime": 100,
      "StayActive": 70,
      "TrainingFrequency": 96,
      "TrainingVolume": 97
  },
  "EquivalentWalkingDistance": 3521,
  "HighActivityMetMinutes": 0,
  "HighActivityTime": 0,
  "InactivityAlerts": 2,
  "LowActivityMetMinutes": 106,
  "LowActivityTime": 10560,
  "MediumActivityMetMinutes": 50,
  "MediumActivityTime": 960,
  "Met": {
      "Interval": 60.0,
      "Items": [1.1, 0.9, 1.1, 1.0, 1.0, 0.9, 0.9, 1.2, 1.3, 1.6, 1.9, 1.8, 1.7, 1.7, 1.3, 1.3, 1.7, 1.6, 1.2, 1.3, 2.3, 1.2, 1.2, 2.2, 5.1, 4.3, 5.2, 5.2, 3.2, 1.6, 1.2, 1.2, 1.3, 2.3, 4.2, 5.9, 5.4, 3.1, 1.3, 1.5, 1.2, 1.2],
      "Timestamp": "2025-03-16T04:00:00.000-04:00"
  },
  "MetersToTarget": 4800,
  "NonWearTime": 0,
  "RestingTime": 14500,
  "SedentaryMetMinutes": 6,
  "SedentaryTime": 31000,
  "Steps": 5200,
  "TargetCalories": 410,
  "TargetMeters": 9400,
  "TotalCalories": 2100,
  "Day": "2025-03-16",
  "Timestamp": "2025-03-16T04:00:00-04:00"

}

Ako se ne možemo spojiti fizički na sat ali imamo pristup računu korisnika postoji način za preuzimanje čitave zip arhive o svim podacima koje je sat zabilježio i spremio na oblak. Podatke na taj način preuzimamo tako da odemo na profil, navigiramo do Garminovog portala za upravljanje podacima te tamo odaberemo opciju “Export Your Data”. Na taj način dobivamo link za preuzimanje zip arhive u kojoj se nalaze svi podaci iz mape Monitor u JSON formatu.[9]

Alati za prikupljanje analizu i obradu podataka

Danas, za prikupljanje, analizu i obradu podataka s ove tri vrste satova najčešće su korišteni alati ADB (Android Debug Bridge) za WearOS, DB Browser for SQLite za Apple i WearOS i Garmin FIT SDK za Garnim satove.

ADB - Android Debug Bridge

Android Debug Bridge je alat koji se koristi za komunikaciju sa satovima koji koriste WearOS. U našem slučaju su to Samsung satovi no mogu biti i Google Pixel Watch, Xiaomi Watch i drugi. Sat se računalom povezuje putem Wi-Fi ili Bluetooth veze pomoću opcije ispravljanja pogrešaka. Alat se pokreće iz terminala te upisom naredbe “adb shell” dobivamo pristup satu i njegovom operacijskom sustavu na računalu. Nakon toga dostupne su nam još neke naredbe poput “pull” koja nam omogućuje kopiranje datoteka sa sata, “install” koja nam omogućuje instalaciju aplikacija te “logcat” za pregled sistemskih zapisa u stvarnom vremenu. [10]

DB Browser for SQLite

Budući da Apple Watch i WearOS uređaji pohranjuju podatke u SQLite bazu podataka, alat DB Browser for SQLite nam sluzi za čitanje tako spremljenih podataka. On pretvara sirove binarne podatke sa sata u nama ljudima čitljive tablične podatke. Postupak je vrlo jednostavan, tablice koje preuzmemo sa sata uvezemo u program te ih tamo možemo sortirati, proučavati ili izvoziti u neki drugi, nama poželjniji format. Ispod se nalazi slika koja prikazuje kako izgledaju tablice, te prikazuje pretraživanje tablica u DB Browseru [11]

Garmin FIT SDK

Garmin koristi malo drugačiji format zapisa podataka od Samsunga ili Applea. Kao što smo već prije spomenuli on ne koristi klasičnu bazu podataka već sve podatke, ovisno o vrsti sprema u zasebne .fit datoteke. Zato postoji Garminov službeni SDK (Software Development KIT) koji sadrži alat naziva FitCSVTool koji nam te .fit datoteke pretvara u čitljive CSV tablice. Ovo je jedini način da se podaci s Garmin sata pretvore u čitljivi format. Alat se koristi kroz terminal upisivanjem naredbe “java -jar FitCSVTool.jer monitoring_data.fit”. Slika ispod prikazuje korištenje alata. [8]

Zaključak

Danas postoji vrlo veliki broj različitih pametnih satova koji rade većinom iste stvari, samo zapisuju i spremaju podatke na različite načine. Pristup tim podacima ovisno o operacijskom sustavu i proizvođaču je jednostavan kao kod Garmina ili jako otežan kako kod Applea. Također ovisno o načinu zapisa podataka postoje različiti programi za interpretaciju i obradu istih. Ovo područje tek uzima zamah, raste i razvija se te bi moglo predstavljati vrlo velike izvore forenzički podatak u nekim istraga, pronaći odgovore na pitanja koja bi bez tih podataka ostala neodgovorena ili zdravstvenih podataka kod ljudi s nekim dijagnozama i uvelike olakšati njihov život.

Literatura

[1] Android - Pulling SQlite database android device

[2] GnssLogger

[3] Get SQLite database from Android app

[4] Apple

[5] Apple documentation

[6] Interpreting the location data extracted from the Apple Health database

[7] Apple Backup security

[8] Garmin

[9] Garmin Export

[10] Android Debug Bridge (adb)

[11] SQLite Browers Wiki