Electron je popularan okvir za izradu desktop aplikacija pomoću web tehnologija. Mnoge Electron aplikacije djeluju poput malog web preglednika u paketu s Node.js-om, što znači da stvaraju mnogo artefakata koji izgledaju slično artefaktima Chromiuma / Google Chromea. Iz perspektive računalne forenzike, ovo je korisno jer često možemo pronaći dokaze na poznatim lokacijama kao što su mape konfiguracije aplikacija, mape web pohrane, mape pred memorije, baze podataka kolačića i mape s izvacima o rušenju sustava. Istovremeno, Electron aplikacije mogu pohranjivati i prilagođene podatke u vlastitim formatima i mogu koristiti značajke šifriranja operativnog sustava koje otežavaju analizu.
Ovaj seminarski rad objašnjava što je Electron, zašto su Electron aplikacije zanimljive za istrage, gdje Electron aplikacije pohranjuju podatke i kako se za njih može primijeniti tipičan forenzički tijek rada. Povezuje Electron analizu s temama poput forenzike datotečnog sustava, forenzike datoteka, forenzike dnevnika, forenzike memorije i mrežne forenzike. Rad također opisuje uobičajene izazove poput šifriranja, više procesnog dizajna i rizika od gubitaka na modernim sustavima.
Ključne riječi: Electron, Chromium, artefakti, korisnički podaci, podaci sesije, ASAR, LevelDB, SQLite, kolačići, predmemorija, izvodi podataka o rušenju sustava, računalna forenzika
Desktop aplikacije se često smatraju „izvornim“ programima, ali mnoge moderne desktop aplikacije izgrađene su pomoću web tehnologije. Jedan od najčešćih okvira za to je Electron. Electron koriste mnoge poznate aplikacije, uključujući alate poput Visual Studio Codea, Slacka, Figme, itd. [13]
S forenzičkog gledišta, Electron je važan jer miješa dva svijeta:
Ova kombinacija znači da Electron aplikacije mogu ostaviti mnoge tragove na disku, a ponekad i u memoriji. Ako ispitivač zna gdje tražiti i kako Chromium pohranjuje podatke, često je moguće rekonstruirati korisničku aktivnost kao što su prijave, posjećene usluge, preuzete datoteke i vrijeme korištenja. Ali postoje i ograničenja, ne primjer enkripcija, obrisane pred memorije ili izgubljeni podaci zbog ponašanja SSD-a.
Electron omogućuje programerima izradu višeplatformskih desktop aplikacija s web tehnologijama. Electron nasljeđuje više procesnu arhitekturu od Chromiuma. U praksi, Electron aplikacija je strukturirana slično web pregledniku. [1] Zato su mnogi alati i komunikacijske aplikacije izgrađene na ovaj način. U istragama je ovo važno jer povećava vjerojatnost da je osumnjičenik koristio barem jednu aplikaciju temeljenu na Electronu (aplikacije za chat, za bilješke, alate za razvojne programere, za produktivnost, itd.)
Electron uglavnom ima sljedeće:
Za forenziku, više procesni model je važan jer se dokazi mogu rasporediti po različitim procesima u memoriji. Glavni proces može pristupiti lokalnom računalu i pohraniti podatke na prilagođena mjesta. Dok proces renderera često koristi web pohranu, pa se stvaraju artefakti u stilu Chromiuma.
Mnoge Electron aplikacije pakiraju svoj izvorni kod u ASAR arhivu. Electron opisuje ASAR kao jednostavan arhivski format sličan tar-u koji spaja više datoteka u jednu. [3] Dokumentacija alata ASAR objašnjava da ASAR arhiva spaja sve datoteke bez kompresije i sadrži JSON zaglavlje koje ih opisuje. Ovo je važno za forenziku zato jer se pristupom ASAR arhivi često može pregledati kod i konfiguracija aplikacije koja objašnjava gdje su podaci pohranjeni ili s kojim krajnjim točkama aplikacija komunicira. Uz to ASAR obično nije kriptiran nego je samo pakiranje. Stoga ga je često moguće izdvojiti za analizu.
Electron pruža standardni način pronalaženja važnih direktorija putem app.getPath(), te dokumentira nekoliko putanja koje su izravno korisne za forenziku. [2]
Drugim riječima. Nakon što se sazna naziv aplikacije ili mape, često je moguće pronaći najvažnije dokaze bez nagađanja. Glavni podaci aplikacije obično se nalazi pod nečim poput AppName gdje točno ime ovisi o aplikaciji.
Budući da se Electron temelji na Chromiumu, Electron aplikacije često pohranjuju podatke povezane s webom u formatima koje koriste Chrome ili Chromium. To uključuje kolačiće, lokalnu pohranu i pohranu sesije, indexedDB, te pred memoriju diska.
Kolačići koriste trajnu pohranu pod nazivom SQLitePersistentCookieStore koja pohranjuju kolačiće u SQLite datoteku baze podataka na putanji temeljenoj na korisničkom profilu. [6] Ista Chromium dokumentacija također napominje da ova trajna pohrana može koristiti delegata za šifriranje i dešifriranje kolačića u stanju mirovanja.
Za forenziku, kolačići mogu prikazati:
Lokalna pohrana i pohrana sesija koriste LevelDB koji je pohranjen u direktorijima poput 'Local Storage/leveldb' i 'Session Storage'. [7] LevelDB može čuvati starije verzije zapisa, tako da ponekad može sadržavati prepisane ili starije vrijednosti koje se još uvijek mogu oporaviti.
Za forenziku, lokalna pohrana i pohrana sesije mogu:
Ranije spomenuti LevelDB koji se koristi za pohranu IndexedDB podataka na disk. [8] Može pohranjivati velike strukturirane podatke kao što su pred memorirane poruke, izvan mrežni podaci ili dokumenti. A sama pred memorija diska pohranjuje resurse dohvaćene s weba kako bi im se kasnije moglo brzo pristupiti. [9] Pred memorija diska može uključivati zaglavlja zahtjeva i sadržaja, ovisno o vrsti pred memorije. Tu onda ima slika, skripti i ponekada podataka o odgovorima. Koje su domene ili usluge kontaktirane, te potencijalna rekonstrukcija pregledanog sadržaja. Jedino ograničenje je što aplikacija može izbrisati ili prebrisati pred memoriju kada je potreban prostor.
Electron podržava putanju mape zapisnika (putem app.getPath('logs')) i dokumentira da ako se app.getPath('logs') pozove prije app.setAppLogsPath(), Electron će stvoriti zadatni direktorij zapisnika. [2] Elektron također dokumentira gdje se zapisnici stvaraju ako pozovete app.setAppLogsPath() bez prilagođene putanje (macOS koristi ~/Library/Logs/YourAppName, a Linux i Windows koriste putanju unutar userData). [2]
U praksi zapisnici mogu biti:
Valja istaknuti izvještaje o rušenju sustava jer mogu sadržavati dijelove memorije u trenutku rušenja. Čak i ako istražitelj ne analizira u potpunosti izvatke, prisutnost izvatka o padu sustava može pokazati da je aplikacija instalirana i korištena, da je došlo do rušenja u određeno vrijeme, te potencijalno koja je verzija aplikacije bila pokrenuta.
Nisu svi podaci u Electron aplikacijama podaci preglednika. Mnoge Electron aplikacije pohranjuju vlastite datoteke unutar userData. Te datoteke mogu biti JSON konfiguracijske datoteke, SQLite base podataka za sadržaj aplikacije, mape pred memorije za priloge, prilagođene spremnike za šifriranje, itd.
Budući da glavni proces ima pristup Node.js-u, Electron aplikacija može pohranjivati podatke i izvan uobičajene pohrane preglednika. [1] Zato je važno pogledati strukturu mapa, a ne samo kolačiće ili pred memoriju.
Ovaj odjeljak prikazuje jednostavan i praktičan tijek rada za ispitivanje Electron aplikacije. Glavna ideja je da se većina dokaza obično nalazi u mapi userData aplikacije. [2] Prvo je potrebno potvrditi da se zapravo radi o Elektron aplikaciji. To možemo na temelju nekih od uobičajenih znakova kao što su ASAR arhiva (često unutar mape resources), mape u stilu Chromiuma unutar korisničke mape, local storage i IndexedDB. Ako su ti znakovi vidljivi obično ih se može tretirati kao Chromium artefakte plus datoteke specifične za aplikaciju.
Kod prikupljanja dokaza moguće je ići u dva smjera. Izrada slike cijelog diska (najbolje za standardni forenzički postupak) ili izvršavanje prikupljanja podataka uživo ako mislite da su aktivne sesije, dešifrirani podaci ili pokrenuti procesi važni. Pri tome je važno imati na umu kako se neki podaci u Electronu brzo mijenjaju (pred memorija i privremene datoteke), stoga ih je važno prikupiti što je prije moguće.
Nakon što je utvrđeno da se radi o Electron aplikaciji najbolje je prvo potražiti sljedeće stavke unutar userData mape:
Cilj nije samo pronaći jedan artefakt, već povezati više tragova kako bi se odgovorilo na pitanje kada je aplikacija korištena, s čime je kontaktirala i što je lokalno pohranila.
Mnoge Electron aplikacije pohranjuju osjetljive podatke uz podršku OS-a. Electronov safeStorage API dizajniran je za zaštitu nizova pohranjenih na disku pomoću kriptografskih sustava koje pruža OS. Electron dokumentira ponašanje platforme gdje macOS koristi Keychain, Windows DPAPI, a Linux ovisi o tajnoj pohrani, s mogućim slabijim rezervnim ako nije dostupna tajna pohrana. [10] Osim šifriranja specifičnog za Electron, sam Chromium može šifrirati lokalne podatke ovisno o OS/u i verziji, a detalji se mogu mijenjati s vremenom. [11]
Za forenzičkog istražitelja, glavne točke su:
Electron aplikacije zapisuju puno podataka u pred memoriju i bazu podataka. Neki od njih se često prepisuju. Na SSD-ovima, TRIM i sakupljanje smeća mogu smanjiti mogućnost oporavka izbrisanih artefakata. Također, pred memorije preglednika mogu dizajnom izbaciti stare unose. [9] Neke Electron aplikacije koriste jedan zadani profil, ali druge mogu stvoriti više sesija ili prilagođenih lokacija.
Također, Electron napominje da Chromium može zapisati vrlo veliku pred memoriju diska u sessionData, a programeri mogu postaviti sessionData negdje drugdje. [2] Dakle, istraživači bi trebali biti otvoreni na ideju da se putovi pohrane mogu mijenjati. Veliku ulogu igraju i ažuriranja aplikacije koja mogu promijeniti ASAR arhivu, što može utjecati na način pohrane i imenovanja artefakata.
Electron aplikacije su posebna, ali vrlo česta meta u računalnoj forenzici. Ponašaju se kao mješavina desktop programa i web preglednika. Budući da Electron nasljeđuje Chromiumovu više procesnu arhitekturu i koristi web tehnologije, Electron aplikacije često stvaraju artefakte koji izgledaju slično Chromeovim artefaktima. [1]
Najvažnija praktična lekcija je da Electron aplikacije obično pohranjuju svoje glavne tragove u predvidljivom korisničkom direktoriju. Electron dokumentira standardne putanje poput userData, sessionData, logs i crashDumps, te objašnjava da sessionData može uključivati localStorage, kolačiće, pred memoriju diska, stanje mreže i DevTools datoteke. [2] Forenzička analiza stoga često počinje pronalaženjem mape userData aplikacije, a zatim pariranjem artefakata Chromium stila kao što su SQLite baze podataka i LevelDB direktorij.
Istodobno, istražitelji moraju uzeti u obzir izazove poput enkripcije, volatilnosti dokaza i promjena uzrokovanih ažuriranjima. Dobra istraga koristi korelaciju između tragova datotečnog sustava, zapisnika, artefakata pohrane i mrežnih dokaza. Kada se pažljivo provede, Electron forenzika može pružiti snažne dokaze o korištenju aplikacije i aktivnosti korisnika.
[1] (https://www.electronjs.org/docs/latest/tutorial/process-model)
[2] (https://www.electronjs.org/docs/latest/api/app)
[3] (https://www.electronjs.org/docs/latest/tutorial/asar-archives)
[6] (https://chromium.googlesource.com/chromium/src/+/HEAD/net/cookies/README.md)
[7] (https://www.cclsolutionsgroup.com/post/chromium-session-storage-and-local-storage)
[8] (https://developer.chrome.com/docs/chromium/indexeddb-storage-improvements)
[9] (https://www.chromium.org/developers/design-documents/network-stack/disk-cache/)
[10] (https://www.electronjs.org/docs/latest/api/safe-storage)
[11] (https://textslashplain.com/2020/09/28/local-data-encryption-in-chromium/)
[12] (https://www.electronjs.org/docs/latest/api/crash-reporter)