Ovo je stara izmjena dokumenta!
SQLite je lagani, ugrađeni sustav za upravljanje bazama podataka koji se široko koristi u mobilnim aplikacijama, web preglednicima i IoT uređajima. Zbog svoje rasprostranjenosti, SQLite baze podataka često predstavljaju vrijedan izvor digitalnih dokaza u forenzičkim istragama. Ovaj rad obrađuje temeljne koncepte forenzike SQLite baza podataka, način njihovog prikupljanja, strukturu datoteka i metode analize. Rad se detaljno bavi tehnikama oporavka obrisanih podataka iz WAL datoteka i freelist stranica, što omogućava rekonstrukciju izbrisanih informacija koje korisnici namjerno pokušavaju sakriti. U radu su prikazani praktični primjeri forenzičke analize popularnih mobilnih aplikacija poput WhatsApp-a, tehnike za ekstrakciju metapodataka te alati koji se koriste u profesionalnoj forenzičkoj praksi. Razmatrani su i izazovi s kojima se forenzičari susreću, poput enkripcije baza podataka i anti-forenzičkih tehnika.
Keywords: SQLite, digitalna forenzika, forenzika baza podataka, WAL datoteke, mobilna forenzika, podatak
U današnjem digitalnom okruženju mobilni uređaji i aplikacije postali su glavni izvor komunikacije i pohrane osobnih podataka. Velika većina tih aplikacija koristi SQLite baze podataka za lokalnu pohranu informacija, što ih čini jednim od najvažnijih izvora digitalnih dokaza u forenzičkim istragama. SQLite je prisutan gotovo svugdje: u mobilnim operacijskim sustavima (Android i iOS), web preglednicima (Chrome, Firefox, Safari), aplikacijama za razmjenu poruka (WhatsApp, Viber, Telegram), društvenim mrežama i brojnim drugim aplikacijama.
Primjeri aplikacija koje koriste SQLite:
Upravo zbog ovako široke primjene, SQLite forenzika postala je nezaobilazna vještina u digitalnoj forenzici, osobito kod mobilnih istraga. Forenzičari mogu iz SQLite baza ekstraktirati poruke, lokacije, kontakte, povijest pretraživanja, vremenske oznake aktivnosti i mnoge druge vrijedne informacije. Cilj ovog rada je prikazati kako se SQLite baze prikupljaju, analiziraju i interpretiraju u forenzičkom kontekstu, s naglaskom na tehnike oporavka obrisanih podataka koji često predstavljaju najvažnije dokaze u istrazi.
SQLite forenzika je poddisciplina digitalne i mobilne forenzike koja se bavi identifikacijom, prikupljanjem, analizom i prezentacijom SQLite baza podataka kao digitalnih dokaza. Elementi koji se analiziraju u SQLite forenzici uključuju strukturu baze podataka, aktivne zapise, metapodatke, obrisane zapise, WAL datoteke i slobodni prostor unutar baze. Cilj SQLite forenzike je osigurati dokaze koji se mogu koristiti u sudskim, administrativnim i građanskim postupcima u slučajevima računalnog kriminala, mobilne forenzike, kibernetičkih istraga i drugih pravnih postupaka. Za razliku od tradicionalne forenzike baza podataka, koja se često fokusira na velike klijent-poslužitelj sustave (Oracle, MySQL, PostgreSQL), SQLite forenzika specifična je po sljedećim obilježjima:
SQLite je stvoren 2000. godine od strane D. Richarda Hippa kao lagano rješenje za pohranu podataka bez potrebe za poslužiteljem. Naziv „Lite” u SQLiteu ne odnosi se na funkcionalnost (koja je vrlo moćna), već na jednostavnost implementacije i mali memorijski otisak.
U početku je SQLite bio zamišljen kao jednostavna ugrađena baza podataka za aplikacije koje nisu trebale klijent-poslužitelj arhitekturu. Kako su mobilni uređaji postali sve rašireniji, SQLite je postao standardni način lokalne pohrane podataka na mobilnim platformama. U Androidu je SQLite prisutan od samih početaka platforme, a u iOS-u se također široko koristi u aplikacijama već dugi niz godina.
Forenzička analiza SQLite baza postaje kritično važna zbog:
Prema smjernicama NIST-a za mobilnu forenziku, analiza lokalnih podataka na mobilnim uređajima, uključujući SQLite baze, predstavlja važan korak u digitalnoj forenzici.
SQLite je relacijski sustav za upravljanje bazama podataka koji ne koristi klijent–poslužitelj arhitekturu. Za razliku od tradicionalnih baza podataka poput MySQL-a ili PostgreSQL-a, SQLite pohranjuje cijelu bazu u jednu datoteku na disku i ne zahtijeva zaseban poslužiteljski proces.
Glavne karakteristike SQLitea uključuju serverless arhitekturu, pristup bez potrebe za konfiguracijom (zero-configuration), usklađenost s ACID načelima te podršku za većinu SQL-92 standarda. SQLite je cross-platform rješenje koje se ponaša identično na svim većim operacijskim sustavima.
Iz forenzičke perspektive, SQLite nudi jednostavniju analizu jer se svi podatci nalaze u jednoj datoteci koju je lako kopirati i analizirati. Međutim, određeni izazovi uključuju čest nedostatak enkripcije na razini baze podataka, nepostojanje centraliziranih log-datoteka te mogućnost trajnog brisanja podataka korištenjem naredbe VACUUM.
SQLite baza podataka organizirana je u stranice (pages) fiksne veličine, najčešće 4096 bajtova, iako veličina može varirati ovisno o konfiguraciji baze. Razumijevanje unutarnje strukture SQLite baze ključno je za naprednu forenzičku analizu i oporavak obrisanih podataka.
Database Header (prvih 100 bajtova)
Svaka SQLite baza započinje s 100-bajtnim zaglavljem (header) koje sadrži ključne informacije o strukturi baze:
Forenzičar može ručno provjeriti je li datoteka valjana SQLite baza pregledom prvih 16 bajtova u hex editoru, gdje se mora pojaviti ASCII niz “SQLite format 3” s null-terminatorom (00).
Vrste stranica (Page types)
SQLite koristi nekoliko tipova stranica unutar baze podataka:
Sistemska tablica sqlite_master
Svaka SQLite baza sadrži posebnu sistemsku tablicu sqlite_master koja pohranjuje kompletnu shemu baze podataka, uključujući definicije tablica, indeksa, viewova i triggera. Ova tablica je ključna za forenzičku analizu jer omogućuje razumijevanje strukture baze bez potrebe za vanjskom dokumentacijom. Pregledom tablice sqlite_master forenzičari mogu dobiti nazive tablica (npr. messages, contacts), definirane indekse (npr. idx_timestamp) te potpune SQL definicije svake strukture u bazi.
Zbog toga je analiza tablice sqlite_master gotovo uvijek prvi korak u forenzičkoj obradi SQLite baze.
Dodatne SQLite datoteke
Osim glavne .db datoteke, SQLite može koristiti i dodatne pomoćne datoteke:
Prikupljanje SQLite baza mora se provoditi na forenzički ispravan način kako bi dokazi bili prihvatljivi na sudu. Osnovni principi uključuju očuvanje integriteta podataka, dokumentiranje lanca čuvanja i rad isključivo na kopiji podataka.
Lokacije SQLite baza podataka
Android:
iOS:
Desktop sustavi:
Postupak prikupljanja
Izazovi pri prikupljanju
Mobilni uređaji:
Enkripcija:
Live vs. Dead acquisition:
Brisanje zapisa u SQLite bazi ne znači automatski da su podaci trajno izbrisani. U praksi se obrisani podaci često mogu pronaći u WAL datotekama ili u freelist stranicama.
WAL (Write-Ahead Log) U WAL modu, promjene se ne upisuju odmah u glavnu bazu. Umjesto toga, prvo se zapisuju u .wal datoteku. Tek kasnije se ti zapisi integriraju u glavnu bazu kroz proces nazvan checkpoint.
Kako WAL radi:
Zašto je to važno u forenzici:
Freelist stranice (obrisani zapisi)
Kada se zapis obriše, SQLite ne briše odmah podatke s diska. Stranice koje više nisu u upotrebi dodaju se na freelist i mogu se ponovno koristiti kasnije. Do trenutka prepisivanja, podaci na tim stranicama mogu se forenzički oporaviti. Zašto je to važno:
Ekstrakcija podataka iz freelista i WAL-a
U praksi se često izvlače čitljivi tekstualni nizovi (npr. minimalno 10 znakova) iz baze, uključujući WAL i freelist prostor. Zatim se filtriraju prema obrascima (telefoni, emailovi, imena itd.). Ova metoda često otkriva obrisane podatke koji još nisu prebrisani.
Vrijeme je ključ
Što je dulje prošlo od brisanja, veća je vjerojatnost da su podaci prebrisani novim zapisima. Zato je brzo prikupljanje dokaza i ograničavanje korištenja uređaja u forenzici presudno.
Oporavak izbrisanih podataka najzahtjevniji je, ali i najvažniji dio SQLite forenzike. U većini istraga upravo izbrisane poruke predstavljaju ključne dokaze jer ih korisnici namjerno uklanjaju kako bi prikrili aktivnosti.
Tehnike oporavka
Primjer uspješnog oporavka
Scenarij: Osumnjičeni je obrisao WhatsApp poruke neposredno prije uhićenja.
Postupak: Utvrđeno je postojanje WAL datoteke veličine 2,3 MB, što upućuje na necheckpointane promjene. Broj poruka u bazi iznosio je 1 523. Nakon izvršenja checkpoint operacije broj poruka porastao je na 1 543, što ukazuje na 20 zapisa koji su se nalazili isključivo u WAL datoteci. SQL upitima identificirani su zapisi koji su dodani tijekom checkpointa, čime su rekonstruirane obrisane poruke.
Rezultat: Uspješno je oporavljeno 20 WhatsApp poruka koje su bile obrisane, ali nisu bile trajno uklonjene jer WAL datoteka nije bila checkpointana prije forenzičke analize.