Slijede razlike između dviju inačica stranice.
| Starije izmjene na obje strane Starija izmjena Novija izmjena | Starija izmjena | ||
|
racfor_wiki:seminari2025:nb53918 [2026/01/20 16:45] Nikola Botić [Alati za forenzičku analizu SQLite baza podataka] |
racfor_wiki:seminari2025:nb53918 [2026/01/20 23:30] (trenutno) Nikola Botić [Izazovi i ograničenja SQLite forenzike] |
||
|---|---|---|---|
| Redak 68: | Redak 68: | ||
| * Offset 44–47: | * Offset 44–47: | ||
| * Offset 48–51: | * Offset 48–51: | ||
| + | |||
| + | {{: | ||
| 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 " | 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 " | ||
| Redak 133: | Redak 135: | ||
| * Ne smije se kopirati samo .db datoteka. Potrebno je prikupiti i: | * Ne smije se kopirati samo .db datoteka. Potrebno je prikupiti i: | ||
| * .db-wal (Write-Ahead Log – često sadrži obrisane podatke) | * .db-wal (Write-Ahead Log – često sadrži obrisane podatke) | ||
| - | * Element obične liste.db-shm | + | * .db-shm |
| * .db-journal | * .db-journal | ||
| - Osiguranje integriteta | - Osiguranje integriteta | ||
| - | * Element obične listeKopirane | + | * Kopirane |
| **Izazovi pri prikupljanju** | **Izazovi pri prikupljanju** | ||
| Redak 159: | Redak 161: | ||
| **WAL (Write-Ahead Log)** | **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. | 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. | ||
| Redak 166: | Redak 169: | ||
| - Checkpoint – sadržaj WAL-a se zapisuje u glavnu bazu | - Checkpoint – sadržaj WAL-a se zapisuje u glavnu bazu | ||
| - Truncate – nakon checkpointa, | - Truncate – nakon checkpointa, | ||
| + | |||
| + | {{: | ||
| Zašto je to važno u forenzici: | Zašto je to važno u forenzici: | ||
| Redak 177: | Redak 182: | ||
| Zašto je to važno: | Zašto je to važno: | ||
| * Broj stranica u freelistu pokazuje količinu potencijalno obrisanih podataka. | * Broj stranica u freelistu pokazuje količinu potencijalno obrisanih podataka. | ||
| - | * Primjer: 47 stranica × 4096 B ≈ 188 KB podataka koji se mogu biti prisutni i oporavljivi. | + | * Primjer: 47 stranica × 4096 B ≈ 188 KB podataka koji mogu biti prisutni i oporavljivi. |
| **Ekstrakcija podataka iz freelista i WAL-a** | **Ekstrakcija podataka iz freelista i WAL-a** | ||
| Redak 198: | Redak 203: | ||
| - Heksadecimalna analiza | - Heksadecimalna analiza | ||
| * Napredna tehnika koja uključuje analizu sirovih bajtova baze podataka. Forenzičari pretražuju karakteristične SQLite strukture (npr. leaf B-tree stranice koje započinju s bajtom 0x0D) kako bi identificirali obrisane zapise koji još nisu prebrisani. | * Napredna tehnika koja uključuje analizu sirovih bajtova baze podataka. Forenzičari pretražuju karakteristične SQLite strukture (npr. leaf B-tree stranice koje započinju s bajtom 0x0D) kako bi identificirali obrisane zapise koji još nisu prebrisani. | ||
| - | - Specijalizirani forenzički alati | + | - Specijalizirani forenzički alati - više o njima u poglavlju ispod |
| - | * Za automatizirani oporavak često se koriste specijalizirani alati: | + | |
| - | * Autopsy – open-source alat s podrškom za SQLite carving | + | |
| - | * PhotoRec i Scalpel – alati za file carving | + | |
| - | * SQLite Forensic Explorer – komercijalni alat za pregled obrisanih zapisa | + | |
| - | * Oxygen Forensic Detective i Magnet AXIOM – profesionalne platforme za mobilnu forenziku | + | |
| **Primjer uspješnog oporavka** | **Primjer uspješnog oporavka** | ||
| Redak 210: | Redak 210: | ||
| **Postupak: | **Postupak: | ||
| - | Utvrđeno je postojanje WAL datoteke veličine 2,3 MB, što upućuje na necheckpointane | + | Utvrđeno je postojanje WAL datoteke veličine 2,3 MB, što upućuje na ne checkpointane |
| SQL upitima identificirani su zapisi koji su dodani tijekom checkpointa, | SQL upitima identificirani su zapisi koji su dodani tijekom checkpointa, | ||
| Redak 217: | Redak 217: | ||
| ===== Alati za forenzičku analizu SQLite baza podataka ===== | ===== Alati za forenzičku analizu SQLite baza podataka ===== | ||
| + | |||
| + | * sqlite3 – službeni command-line alat za rad sa SQLite bazama; omogućuje izvođenje SQL upita, pregled strukture baze i osnovnu analizu podataka | ||
| + | * DB Browser for SQLite – grafički alat s vizualnim prikazom tablica, SQL editorom i pregledom sheme baze | ||
| + | * Autopsy / Sleuth Kit – open-source forenzička platforma s podrškom za automatsku detekciju SQLite baza, vremensku analizu i pretragu ključnih riječi | ||
| + | * SQLite Forensic Explorer – specijalizirani alat za forenzičku analizu SQLite baza, uključujući oporavak obrisanih zapisa i WAL analizu | ||
| + | * Oxygen Forensic – profesionalni alat za mobilnu forenziku s automatskom analizom aplikacijskih SQLite baza | ||
| + | * Magnet AXIOM – sveobuhvatna forenzička platforma za analizu mobilnih uređaja i aplikacija koje koriste SQLite baze | ||
| + | ===== Primjeri: Primjena SQLite forenzike ===== | ||
| + | |||
| + | **Primjer 1: Analiza WhatsApp komunikacije u kaznenom slučaju** | ||
| + | |||
| + | **Scenarij**: | ||
| + | |||
| + | **Postupak analize**: | ||
| + | |||
| + | WhatsApp baza podataka msgstore.db locirana je u standardnoj Android lokaciji aplikacije / | ||
| + | |||
| + | Analiza je započela identifikacijom najaktivnijih kontakata grupiranjem poruka prema identifikatorima kontakata, čime je izdvojeno deset najfrekventnijih komunikacijskih partnera. | ||
| + | |||
| + | Zatim je provedena ekstrakcija poruka za odabrane kontakte u kritičnom vremenskom razdoblju (10.–20. siječnja 2024.). Vremenske oznake konvertirane su iz Unix timestamp formata u čitljiv datum i vrijeme. | ||
| + | |||
| + | Dodatno je izvršena pretraga ključnih riječi unutar poruka, s fokusom na financijske pojmove (npr. novac, transfer, račun) radi identifikacije potencijalno inkriminirajuće komunikacije. | ||
| + | |||
| + | **Rezultat**: | ||
| + | Identificirano je 47 poruka u kritičnom vremenskom razdoblju s izravnim referencama na financijske transakcije. Dodatno, analizom WAL datoteke uspješno je oporavljeno 12 obrisanih poruka koje nisu bile prisutne u glavnoj bazi. | ||
| + | |||
| + | |||
| + | **Primjer 2: Oporavak obrisanih SMS poruka na Android uređaju** | ||
| + | |||
| + | **Scenarij**: | ||
| + | |||
| + | **Postupak analize**: | ||
| + | |||
| + | SMS poruke na Android uređajima pohranjuju se u sistemskoj SQLite bazi mmssms.db, smještenoj u direktoriju / | ||
| + | |||
| + | Tijekom analize utvrđena je prisutnost WAL datoteke uz glavnu bazu, što je ukazivalo na postojanje nesinkroniziranih zapisa. | ||
| + | |||
| + | Analiza je započela brojanjem SMS poruka u trenutnom stanju baze, pri čemu je identificirano 523 zapisa. Nakon izvođenja checkpoint operacije, kojom su podaci iz WAL-a integrirani u glavnu bazu, broj poruka povećao se na 538, što predstavlja razliku od 15 zapisa. | ||
| + | |||
| + | Ekstrahirane poruke sadržavale su telefonske brojeve pošiljatelja i primatelja, vremenske oznake, sadržaj poruke te smjer komunikacije (poslano ili primljeno). SQL upiti korišteni su za filtriranje zapisa dodanih nakon checkpointa. | ||
| + | |||
| + | **Rezultat**: | ||
| + | Uspješno je oporavljeno 15 SMS poruka koje je korisnik obrisao, ali su ostale pohranjene u WAL datoteci zbog odgođene sinkronizacije. | ||
| + | ===== Izazovi i ograničenja SQLite forenzike ===== | ||
| + | |||
| + | SQLite forenzika suočava se s nizom tehničkih i proceduralnih izazova koji mogu značajno otežati ili u potpunosti onemogućiti analizu. | ||
| + | |||
| + | **1. Enkripcija baza podataka** | ||
| + | |||
| + | **Problem**: | ||
| + | |||
| + | Mnoge aplikacije koriste enkripciju SQLite baza kako bi zaštitile korisničke podatke. Najčešće implementacije uključuju: | ||
| + | * SQLCipher – open-source enkripcija temeljena na AES-256 algoritmu | ||
| + | * SQLite Encryption Extension (SEE) – službena komercijalna ekstenzija | ||
| + | * Prilagođene (custom) metode enkripcije | ||
| + | |||
| + | Pokušaj otvaranja enkriptirane baze standardnim SQLite alatima rezultira greškom koja sugerira da datoteka nije valjana SQLite baza. | ||
| + | Moguća rješenja: | ||
| + | * pokušaj probijanja lozinke (ako je slaba) | ||
| + | * memory forensics – ekstrakcija ključa iz radne memorije | ||
| + | * izdvajanje ključa iz sigurnosnih kopija ili konfiguracijskih datoteka | ||
| + | * reverse engineering aplikacije radi pronalaska ključeva ili algoritama | ||
| + | |||
| + | {{: | ||
| + | |||
| + | **2. Anti-forenzičke tehnike** | ||
| + | |||
| + | **Problem**: | ||
| + | |||
| + | Korisnici ili aplikacije mogu primijeniti tehnike kojima se namjerno otežava forenzička analiza. | ||
| + | * Secure delete - Kada je omogućeno, SQLite odmah prepisuje obrisane zapise nulama umjesto da ih ostavi u freelistu, čime se onemogućuje oporavak obrisanih podataka. | ||
| + | * VACUUM operacija - VACUUM reorganizira bazu i trajno uklanja sav slobodni (freelist) prostor. Nakon izvođenja ove operacije, oporavak obrisanih zapisa postaje iznimno težak ili nemoguć. | ||
| + | |||
| + | {{: | ||
| + | |||
| + | **Protumjere**: | ||
| + | * brzo i pravovremeno prikupljanje dokaza | ||
| + | * live forensics dok je uređaj uključen | ||
| + | * izrada memory dumpova | ||
| + | |||
| + | **3. Sinkronizacija s cloud servisima** | ||
| + | |||
| + | **Problem**: | ||
| + | |||
| + | Moderne aplikacije često sinkroniziraju podatke s cloud servisima, zbog čega lokalna SQLite baza može sadržavati samo dio relevantnih podataka. | ||
| + | |||
| + | **Rješenja**: | ||
| + | * forenzičko prikupljanje cloud podataka (uz odgovarajuću pravnu osnovu) | ||
| + | * analiza API komunikacije aplikacije | ||
| + | * mrežna (network) forenzika | ||
| ===== Zaključak ===== | ===== Zaključak ===== | ||
| + | |||
| + | SQLite baze podataka predstavljaju ključan izvor digitalnih dokaza u modernoj forenzici, osobito u analizi mobilnih uređaja i aplikacija. Zbog široke primjene i relativno jednostavne strukture, SQLite baze često sadrže vrijedne informacije o komunikaciji, | ||
| + | |||
| + | Jedna od značajnih prednosti SQLite forenzike je mogućnost oporavka podataka koji su korisnici obrisali. Obrisani zapisi mogu ostati dostupni u WAL datotekama, freelist prostorima ili journal datotekama, ovisno o načinu rada baze i stanju zapisivanja. Upravo zato je važno provesti prikupljanje i analizu na ispravan način, kako bi se očuvala integritet i dobili relevantni dokazi. | ||
| + | Istovremeno, | ||
| + | |||
| + | Zbog toga je za uspješnu analizu potrebno kombinirati tehničko znanje o strukturi SQLite baza s odgovarajućim alatima i forenzičkim postupcima. | ||
| + | |||
| + | U konačnici, razumijevanje unutarnje strukture SQLite baze, rada WAL mehanizma i mogućnosti oporavka obrisanih podataka čini SQLite forenziku neizostavnom vještinom u digitalnoj forenzici, a primjena ispravnih metoda prikupljanja i analize ključna je za valjanost dokaza. | ||
| ===== Literatura ===== | ===== Literatura ===== | ||
| - | [1] [[http://books.google.hr/books? | + | [1] [[https://www.sqlite.org/docs.html|SQLite Službena Dokumentacija]] |
| + | |||
| + | [2] [[https:// | ||
| + | |||
| + | [3] [[https:// | ||
| + | |||
| + | [4] [[https:// | ||
| + | |||
| + | [5] [[https:// | ||
| + | |||
| + | [6] [[https:// | ||
| - | [2] [[http://www.google.com/books? | + | [7] [[https://www.geeksforgeeks.org/ |
| - | [3] [[http://www.cogtech.usc.edu/publications/kirschner_Sweller_Clark.pdf|Kirschner, | + | [8] [[https://reincubate.com/support/how-to/iphone-backup-files-structure/ |