Dieses Dokuwiki verwendet ein von Anymorphic Webdesign erstelltes Thema.
Prijevodi ove stranice:

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, pružajući korisniku iskustvo slično nativnoj (native) aplikaciji. Ovaj rad analizira gdje i kako PWA ostavljaju tragove te kako istražitelj može razlikovati korištenje PWA od običnog pregledavanja weba. Promatrani su artefakti Windows i Android sustava, uz kratku napomenu o ograničenjima pristupa na iOS. Kao rezultat, identificirani su pouzdani indikatori instalacije PWA na Windowsu (prečaci s parametrima pokretanja, unosi za deinstalaciju u registru, mape “Web Applications” i zapisi u Preferences datoteci profila) te na Androidu (WebAPK paketi s prefiksom org.chromium.webapk, tragovi u packages.xml i poveznice prema podacima unutar Chrome sandboxa). Rad dodatno sažima koje baze i direktorije u web pregledniku treba analizirati (npr. History, Cookies, Cache, Service Worker, IndexedDB) kako bi se rekonstruirala aktivnost unutar PWA.

Ključne riječi: PWA; računalna forenzika; artefakti preglednika; service worker; Web App Manifest; WebAPK; Chrome; Windows; Android

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, offline podrška itd.) i može se instalirati na uređaj kao samostalna aplikacija[1]. Za razliku od klasičnih mobilnih aplikacija, PWA se ne distribuiraju nužno putem trgovina aplikacija, već je korisniku dovoljno posjetiti web stranicu i prihvatiti ponudu za instalaciju[1]. Instalacijom PWA, preglednik preuzima posebnu datoteku manifesta i potrebne resurse u priručnu memoriju, čime aplikacija postaje dostupna i bez mrežne veze. Zbog korištenja standardnih web tehnologija (HTML, CSS, JavaScript), ista PWA aplikacija radi na više različitih platformi (desktop i mobilnim uređajima) kroz kompatibilan preglednik[1]. PWA ima vlastitu ikonu, pokreće se u zasebnom prozoru bez adresne trake, može raditi u pozadini i koristiti značajke uređaja poput obavijesti[2].

Tradicionalno, forenzičari su razlikovali web pregledničke artefakte (povijest pregledavanja, kolačiće, cache) od artefakata instaliranih programa ili mobilnih aplikacija. PWA međutim briše tu granicu, jer se ponaša kao aplikacija, ali se oslanja na web preglednik i njegove mehanizme pohrane podataka. Zbog toga dokazi o korištenju PWA mogu biti raspršeni kroz više slojeva sustava, od klasičnih zapisa preglednika pa do sistemskih tragova instalacije aplikacije. Cilj ovog rada je istražiti gdje se ti tragovi nalaze i kako ih interpretirati. U sljedećim poglavljima su prvo opisane osnovne značajke PWA i njihova arhitektura, zatim forenzički izazovi i sigurnosni aspekti progresivnih web aplikacija, potom specifični PWA artefakti na Windows i Android platformama, te naposljetku metodologije i alati za forenzičku analizu PWA.

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, ali odvojeno od glavne web stranice. Service worker djeluje slično kao posredni poslužitelj (proxy) između web-aplikacije i mreže. Može presresti mrežne zahtjeve i poslužiti im odgovore iz priručne memorije ili obavljati zadatke u pozadini[3]. To je važno za PWA jer omogućuje aplikaciji rad u izvanmrežnom načinu i brzo učitavanje već posjećenih stranica[3].

Osim toga, PWA može koristiti i druge moderne web API-je koje podržavaju preglednici, primjerice slanje push obavijesti, rad u pozadini, pristup kameri, geolokaciji, te integracija s izbornikom za dijeljenje podataka uređaja.

Svaka PWA se pokreće unutar sandboxa web preglednika, te pohranjuje podatke koristeći web spremišta podataka poput Local Storage, IndexedDB, Cache Storage i kolačića. Ti podaci trajno ostaju na uređaju dok ih aplikacija izričito ne obriše ili dok ih korisnik ne ukloni (npr. deinstalacijom PWA ili čišćenjem podataka preglednika) [3].

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), Microsoft Edge (temeljen na Chromiumu) također podržava PWA, dok Firefox podržava PWA na Androidu te je od nedavno ponovno omogućio instalaciju PWA i na desktop Windowsima[1].

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, PWA se pokreće u posebnom prozoru ili u punom zaslonu, bez uobičajenih elemenata preglednika, što dodatno doprinosi dojmu da je riječ o zasebnoj aplikaciji, a ne o običnoj web stranici[2].

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), s posebnim parametrima za pokretanje PWA. Konkretno, Chrome koristi pomoćni proces chrome_proxy.exe kojem prosljeđuje parametar –app-id=<identifikator> da bi pokrenuo PWA u zasebnom prozoru.

Ovaj identifikator (app-id) je jedinstven za svaku instaliranu PWA i generira se na temelju domena/aplikacije. Kada korisnik pokrene PWA prečac, sustav zapravo pokreće Chrome s navedenim parametrom. To rezultira pojavom prozora aplikacije bez uobičajenog Chrome sučelja, unutar kojeg se učitava PWA sadržaj. 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. “Youtube”), izdavač (“Google\Chrome”), datum instalacije, putanja do ikone (koja se nalazi u Chrome profilu) te Uninstall string iliti naredba kojom Chrome može deinstalirati tu PWA.

Taj uninstall string zapravo poziva Chrome s parametrom –uninstall-app-id=<identifikator>, što je interni način da Chrome ukloni PWA (obriše njene datoteke i unose). 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_<identifikator>\ u kojem drži podatke o instaliranoj PWA.

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, kada, i (preko naziva u registru ili Preferences datoteci) koja web aplikacija je u pitanju.

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 /data/system/packages.xml ili preko adb shell pm liste paketa).

PS> adb shell pm list packages | Select-String webapk

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, tu je i direktorij aplikacije u putanji /data/data/org.chromium.webapk.*. Taj direktorij (sandbox za WebAPK) vjerojatno sadrži minimalne konfiguracije, dok se glavni podaci o aplikaciji još uvijek čuvaju unutar Chromeovih direktorija. Važan trag je i sama .apk datoteka WebAPK-a, koja se nalazi u /data/app/ direktoriju (točnu putanju i naziv može se iščitati iz packages.xml). Ako forenzičar izdvoji taj APK i analizira njegov AndroidManifest.xml, u njemu će naći label aplikacije (npr. naziv koji će korisnik vidjeti) i možda URL startne aktivnosti[5]. Na taj način može se identificirati koja je web aplikacija upakirana u dotični WebAPK. Alternativno, postoje i zapisi u Google Play servisima. Iako PWA nije instaliran iz Trgovine Play, interni mehanizam instalacije preko Chromea ipak koristi dio instalacijskog sustava. Zapisi u SQLite bazi install_queue.db u sklopu Google Play komponenti mogu pokazati preslikavanje između tog paketnog imena i naziva aplikacije[5]. Također, launcher (aplikacija za početni zaslon) često sadrži evidenciju ikona, npr. Pixel launcher ima bazu app_icons.db gdje se navodi ime aplikacije i pripadajuće ime paketa[5]. 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 /data/data/com.android.chrome/ direktoriju za standardni Chrome). Povijest preglednika sadrži URL-ove posjećene unutar PWA, kolačići i web storage za tu domenu su također u Chromeovim datotekama Cookies ili Local Storage, praktično identično kao da je korisnik posjećivao stranicu u običnom pregledniku. Razlika je u nekim suptilnim tragovima, npr. u History bazi zapisi pokretanja PWA imaju posebnu oznaku (flag)[5].

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), jer se ondje nalaze povijest i ostali web artefakti PWA.

Za iOS je pristup datotečnom sustavu ograničen, pa se najčešće iz backupa uzima Safari povijest (History.db), WebClip konfiguracije, i sl.

3. Korištenje forenzičkih alata

Mnogi standardni forenzički alati imaju mogućnost parsiranja artefakata web preglednika. Na primjer, Magnet AXIOM, Cellebrite UFED/Physical Analyzer, Belkasoft, XRY i drugi često automatski prepoznaju i parsiraju Chrome povijest, kolačiće, cache i SQLite baze, kao i Safari web podatke. Međutim, ti alati često ne označavaju izravno da se radi o PWA, pa forenzičar mora ručno protumačiti nalaze. U praksi to znači filtrirati povijest po domeni PWA, provjeriti učestalost i vrijeme pristupa te rezultate povezati s drugim tragovima. Za detaljniju analizu ponekad se koriste specijalizirani alati ili prilagođene skripte, primjerice za prepoznavanje posebnih oznaka u Chromeovoj History bazi (poput PAGE_TRANSITION flagova).

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, većina korisničkih podataka PWA se nalazi u okviru podataka preglednika, stoga analiza mora obuhvatiti i cache, povijest, lokalne baze i druge web artefakte povezane s PWA. Izazovno je izdvojiti aktivnosti korisnika unutar PWA, no može se postići istraživanjem posebnih indikatora (poput Chromeovih flagova ili posebnih datoteka za PWA instance).

Forenzika progresivnih web aplikacija je još u razvoju. PWA postaju sve naprednije pa se forenzički alati i tehnike moraju kontinuirano nadograđivati.

Literatura

racfor_wiki/seminari2025/vr53858.txt · Zadnja izmjena: 2026/02/01 14:51 od Vlatko Rohak
Dieses Dokuwiki verwendet ein von Anymorphic Webdesign erstelltes Thema.
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0