Slijede razlike između dviju inačica stranice.
| Novija izmjena | Starija izmjena | ||
|
racfor_wiki:seminari2025:vr53858 [2025/12/23 09:01] Vlatko Rohak stvoreno |
racfor_wiki:seminari2025:vr53858 [2026/02/01 14:51] (trenutno) Vlatko Rohak [Windows] |
||
|---|---|---|---|
| Redak 1: | Redak 1: | ||
| - | Forenzika progresivnih web aplikacija (PWA) | + | ====== |
| + | |||
| + | ===== Sažetak ===== | ||
| + | Progresivna web aplikacija (PWA) predstavlja vrstu web aplikacije koje se može instalirati na uređaj poput uobičajene aplikacije, ali u pozadini koristi web tehnologije i web preglednik[1]. Zahvaljujući značajkama kao što su service worker-i i lokalna priručna memorija, PWA omogućuje izvanmrežni rad, push obavijesti i druge funkcionalnosti, | ||
| + | |||
| + | **Ključne riječi**: PWA; računalna forenzika; artefakti preglednika; | ||
| + | ===== Uvod ===== | ||
| + | |||
| + | Progresivne web aplikacije (PWA) su se pojavile 2015. kao spoj klasičnih web stranica i izvornih aplikacija. PWA je web aplikacija koja ispunjava određene kriterije (sigurna veza, responzivnost, | ||
| + | |||
| + | Tradicionalno, | ||
| + | |||
| + | ===== Poglavlje 1: Osnove progresivnih web aplikacija (PWA) ===== | ||
| + | Od važnih komponenti PWA, tu je kao prvo Web App Manifest. To je JSON datoteka s meta-podacima (naziv aplikacije, ikona, početni URL, način prikaza itd.) koja pregledniku signalizira da stranica podržava instalaciju. Kada korisnik odabere instalirati PWA, manifest i pripadajuće ikone se preuzimaju i stvaraju se prečaci na uređaju. Druga ključna komponenta je Service Worker. To je pozadinska skripta koja se pokreće unutar preglednika, | ||
| + | |||
| + | Osim toga, PWA može koristiti i druge moderne web API-je koje podržavaju preglednici, | ||
| + | |||
| + | Svaka PWA se pokreće unutar sandboxa web preglednika, | ||
| + | |||
| + | Danas svi moderni preglednici podržavaju bar dio PWA funkcionalnosti. Primjerice, Google Chrome (na desktopu i Androidu) ima potpunu podršku za PWA, Apple Safari je postupno uveo podršku (Safari na iOS-u tek od verzije 11.3 podržava service workere, a od iOS 16.4 i push notifikacije), | ||
| + | |||
| + | Za krajnje korisnike, instalacija PWA obično se svodi na odabir opcije u pregledniku (npr. „Install app…“, „Add to Home Screen“ ili slično) pri posjeti web stranice koja podržava PWA. Nakon instalacije, | ||
| + | |||
| + | ===== Poglavlje 2: Artefakti PWA na različitim platformama ===== | ||
| + | |||
| + | Forenzički artefakti progresivnih web aplikacija mogu se razlikovati ovisno o platformi i pregledniku koji je korišten za instalaciju. U ovoj cjelini se razmatraju dva okruženja: Windows računala te Android mobilni uređaji. | ||
| + | |||
| + | ===== Windows ===== | ||
| + | |||
| + | Na Windows sustavima, PWA se tipično instalira putem preglednika Google Chrome ili Microsoft Edge (koji je baziran na Chromiumu). Kada korisnik instalira PWA, preglednik obavlja nekoliko radnji koje ostavljaju fizičke tragove na disku i u registru sustava Windows. Prije svega, stvara se prečac (.lnk datoteka) za aplikaciju. U slučaju Chromea, prečac se obično postavlja na Desktop (ili u izbornik Start) i nosi naziv PWA aplikacije. Taj .lnk pokazuje na izvršnu datoteku preglednika (chrome.exe), | ||
| + | |||
| + | {{ : | ||
| + | |||
| + | Ovaj identifikator (app-id) je jedinstven za svaku instaliranu PWA i generira se na temelju domena/ | ||
| + | Drugo, prilikom instalacije PWA ažurira se Windows registar. Chrome registrira novu aplikaciju u registru za potrebe deinstalacije. U grani registra HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Uninstall\ pojavit će se novi ključ koji predstavlja tu PWA aplikaciju. Ime ključa obično je nasumični GUID ili hash, a unutar njega se nalaze vrijednosti poput: naziv aplikacije (npr. " | ||
| + | |||
| + | {{ : | ||
| + | |||
| + | Taj uninstall string zapravo poziva Chrome s parametrom --uninstall-app-id=< | ||
| + | Na datotečnom sustavu, glavno spremište PWA nalazi se unutar korisničkog profila Chromea. U direktoriju profila (primjerice %LOCALAPPDATA%\Google\Chrome\User Data\Default\) Chrome kreira poddirektorij Web Applications\_crx_< | ||
| + | |||
| + | {{ : | ||
| + | |||
| + | Tu se mogu nalaziti datoteke poput ikone aplikacije (*.ico), potencijalno konfiguracijske datoteke, itd. | ||
| + | Također, Chromeov JSON file Preferences unutar profila sadrži sekciju u kojoj bilježi instalirane aplikacije i ekstenzije, pa se ondje može naći naziv PWA i njen start URL. | ||
| + | Što se tiče predmemoriranog sadržaja i podataka same aplikacije, oni se nalaze u uobičajenim Chromeovim bazama. Npr. sadržaj koji je PWA preuzela offline bit će u Cache folderu ili Service Worker folderu vezanom uz tu domenu, lokalne baze podataka bit će u IndexedDB mapama, itd., pod domenom web stranice PWA. | ||
| + | U praksi, korisno je pregledati procesne logove ako su dostupni, npr. Windows event log (ID 4688) ili Sysmon zapise, jer će se u njima vidjeti pokretanje procesa chrome_proxy.exe i chrome.exe s odgovarajućim argumentima što direktno indicira korištenje PWA[4]. Ako takvi logovi nisu dostupni, dovoljno je analizirati disk. | ||
| + | Svi ovi elementi zajedno daju cjelovitu sliku o tome je li neka PWA bila instalirana, | ||
| + | |||
| + | ===== Android ===== | ||
| + | |||
| + | |||
| + | Na Android uređajima progresivne web aplikacije integrirane su kroz mobilni pregledni. Postoje dva moguća načina pojavljivanja PWA na Androidu: Basic PWA (stariji pristup) i WebAPK (noviji pristup). U ranijim verzijama Chromea, kada bi korisnik odabrao „Add to Home Screen“, sustav bi jednostavno dodao web clip, to jest prečac s ikonom na početni zaslon, a pokretanje bi otvorilo stranicu u pregledniku. U novijim verzijama, Chrome zapravo generira instalacijski paket. Taj automatski generirani WebAPK ima jedinstveno paketno ime koje počinje s org.chromium.webapk. Ovakav paket normalno je vidljiv sustavu kao i svaka druga aplikacija, što znači da će se pojaviti u listi instaliranih paketa (npr. u datoteci / | ||
| + | |||
| + | '' | ||
| + | |||
| + | {{ : | ||
| + | |||
| + | Bitno je uočiti string webapk u nazivu paketa, jer on odaje da se radi o PWA, iako ostatak naziva izgleda nasumično[5]. U Androidu 15 nadalje, sustav i u sučelju naznačuje da je aplikaciju instalirao Chrome (što upućuje na PWA porijeklo), dok u Androidu 14 to nije pouzdano prikazano[5]. | ||
| + | Forenzička analiza PWA na Androidu može se podijeliti na sistemski nivo i nivo podataka preglednika. Na sistemskom nivou, istražitelj koji ima pristup punoj datotečnoj slici uređaja može potražiti tragove WebAPK instalacija. Osim u packages.xml, | ||
| + | Drugi aspekt je ono što PWA radi i gdje ostaju njeni korisnički podaci. Budući da PWA na Androidu većinom koriste Chrome engine, svi podaci o korištenju te PWA uglavnom se nalaze u Chromeovom profilu (koji je u / | ||
| + | ===== Poglavlje 3: Metode i alati za forenzičku analizu PWA ===== | ||
| + | |||
| + | Analiza progresivnih web aplikacija zahtijeva kombinaciju tehnika iz forenzike web preglednika i klasične forenzike aplikacija i operativnog sustava. | ||
| + | |||
| + | ==== 1. Identifikacija prisutnosti PWA ==== | ||
| + | |||
| + | Prvi korak je utvrditi je li na analiziranom uređaju uopće korištena PWA. Forenzičar treba pregledati instalirane programe i prečace. | ||
| + | |||
| + | Na Windows sustavu, to znači pregled Desktop i Start izbornika za ikone koje odgovaraju PWA (npr. mogu izgledati kao poznate aplikacije, ali zapravo otvaraju Chrome). Također, treba pretražiti registar za Uninstall unose čiji izdavač ili put upućuju na Chrome ili Edge i sadrže parametre tipa --uninstall-app-id. Takvi unosi gotovo sigurno predstavljaju instaliranu PWA[4]. | ||
| + | |||
| + | Na Androidu, identifikacija uključuje ispitivanje liste paketa: komandno (adb shell pm list packages | grep webapk) ili analizom packages.xml se traži pojava org.chromium.webapk paketa[5]. Ako je dostupan filesystem extraction uređaja, može se provjeriti direktorij /data/data/ za potdirektorije koji počinju s org.chromium.webapk. | ||
| + | |||
| + | Na iOS-u, obično se traže tragovi WebClip konfiguracija i Safari artefakti dostupni iz backupa. | ||
| + | |||
| + | ==== 2. Prikupljanje artefakata ==== | ||
| + | |||
| + | Zatim slijedi prikupljanje svih povezanih artefakata. | ||
| + | |||
| + | Za desktop, to znači kopiranje Chromeovog korisničkog profila (ili barem relevantnih datoteka poput History, Cookies, Cache, Local Storage i IndexedDB direktorija) kako bi se iz njih izvukli podatci. Također se kopira i NTUSER.DAT u registru, radi analize Uninstall ključeva i druge konfiguracije. | ||
| + | |||
| + | Za mobilne uređaje se prikupljaju logički ili fizički dump podatci aplikacija. Na Androidu je važan Chromeov sandbox (com.android.chrome), | ||
| + | |||
| + | Za iOS je pristup datotečnom sustavu ograničen, pa se najčešće iz backupa uzima Safari povijest (History.db), | ||
| + | |||
| + | ==== 3. Korištenje forenzičkih alata ==== | ||
| + | |||
| + | Mnogi standardni forenzički alati imaju mogućnost parsiranja artefakata web preglednika. Na primjer, Magnet AXIOM, Cellebrite UFED/ | ||
| + | |||
| + | ===== Zaključak ===== | ||
| + | |||
| + | U ovom radu prikazali smo kako PWA funkcionira te koje specifične tragove ostavlja na različitim platformama. | ||
| + | |||
| + | Na primjeru Windows i Android platformi je prikazano da instalacija PWA ostavlja određene sistemske artefakte (poput prečaca, unosa u registru ili zapisa u listi paketa) koji mogu poslužiti za identifikaciju same aplikacije. Istovremeno, | ||
| + | |||
| + | Forenzika progresivnih web aplikacija je još u razvoju. PWA postaju sve naprednije pa se forenzički alati i tehnike moraju kontinuirano nadograđivati. | ||
| + | |||
| + | ===== Literatura ===== | ||
| + | |||
| + | [1] [[https:// | ||
| + | |||
| + | [2] [[https:// | ||
| + | |||
| + | [3] [[https:// | ||
| + | |||
| + | [4] [[https:// | ||
| + | |||
| + | [5] [[https:// | ||