Upload
others
View
3
Download
1
Embed Size (px)
Citation preview
SVEUČILIŠTE U ZAGREBU
FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA
RAČUNALNA FORENZIKA
Zaštita i sigurnost operacijskog sustava Android
Lovro Pejić
Zagreb, prosinac, 2018.
SADRŽAJ
1. Uvod ....................................................................................................................... 1
2. Sigurnost ................................................................................................................ 2
2.1. Narušavanje sigurnosti ..................................................................................... 3
2.2. Sigurnosni savjeti pomoću kojih se može povećati razina sigurnosti prilikom izrade Android aplikacije ......................................................................................... 6
2.2.1. Android dopuštenja .................................................................................... 6
2.2.2. Zahtijevanje dopuštenja ............................................................................. 6
2.2.3. Logički dnevnik .......................................................................................... 9
2.2.4. ProGourd ................................................................................................. 10
2.2.5. Apktool .................................................................................................... 12
2.2.6. Android Pay ............................................................................................. 14
2.2.7. Podmetanje elemenata aplikacije ............................................................ 14
2.2.8. Android Device Manager ......................................................................... 16
3. Zaključak .............................................................................................................. 17
4. Literatura .............................................................................................................. 18
5. Sažetak ................................................................................................................. 19
1
1. Uvod
U današnje vrijeme mobilni uređaji postali su dio naše svakodnevice. Skoro svi ih
posjeduju i njihova primjena postala je izuzetno velika. Ljudi ih koriste kako bi
olakšali svoje svakodnevne aktivnosti, pomažu ljudima pri obavljanju njihovih
privatnih ili poslovnih obveza, te se uvelike koriste za zabavu i opuštanje.
Povećanjem brojnosti mobilnih uređaja, odnosno njihovom sve većom
popularnošću, došlo je do pojave i razvoja različitih zlonamjernih alata kako bi se
iskoristile njihove mane i slabosti. Prema izvještaju sigurnosne kompanije McAfee
svake se godine ukradu podatci intelektualnog vlasništva u vrijednosti većoj od
160 milijardi američkih dolara.
Potaknut cijelom tom situacijom, nastao je pojam: „Računalni kriminal“. Navedeni
pojam označava zlonamjerne radnje koje su počinjene s namjerom da se našteti
ugledu žrtve, te učini fizička ili intelektualna šteta pojedincu ili pak ostvari gubitak
neke vrste na direktan ili indirektan način, korištenjem telekomunikacijske mreže i
mobilnih uređaja.
Važno je spomenuti činjenicu da nisu sve prijevare i nastale štete posljedica
korisničke naivnosti. Ranjivost softvera i različite nepravilnosti (npr. određene
postavke) pružale su mogućnost napadačima da se dokopaju povjerljivih
korisničkih podataka i iskoriste ih u zlonamjerne svrhe. Velika većina poznatih
ranjivosti softvera najčešće se ispravi u što kraćem mogućem roku, no uvijek
postoje i nepredvidive iznimke. Činjenica je da su se mnogi propusti mogli
spriječiti da su se zadovoljili određeni sigurnosni standardi.
U ovom rada obradit će se najpoznatiji oblici implementacije zaštite u
operacijskom sustavu Android, kao i načini na koje se sigurnost može narušiti
ukoliko nije dobro implementirana ili ako je neadekvatno prilagođena namjeni
aplikacije.
2
2. Sigurnost
Definicija sigurnosti glasi: „Sigurnost je stupanj zaštite od opasnosti, štete, gubitka
ili kriminalne aktivnosti“. Implementacija razine sigurnosti u aplikacijama ovisi o
namjeni aplikacije. Primjerice, sigurnost aplikacije za evidenciju stanja u frižideru
nije toliko bitna, dok je sigurnost aplikacije za vođenje stanja i transakcija s
bankovnog računa poprilično važna. Iz gore navedenog lako je zaključiti da način
na koji će se određene stvari razvijati uvelike ovisi o domeni aplikacije.
Google određenim pravilima pokušava nametnuti programerima određene
standarde razvoja aplikacija. Njihovim uvođenjem povećavaju se mjere prevencije
i stupanj zaštite korisnika od potencijalno štetnih aplikacija. Prije objavljivanja na
Google Play Store sve Android aplikacije prolaze kroz mnogobrojna sigurnosna
testiranja. Programeri čije aplikacije ne zadovoljavaju postavljena sigurnosna
pravila bivaju suspendirani ili upozoreni da izmjene svoju aplikaciju prema
zahtijevanim pravilima. Nakon što su sva pravila zadovoljena i aplikacija je
uspješno prošla kroz sva testiranja, sve je spremno za objavljivanje u trgovini
aplikacija. Objavljivanjem aplikacije u trgovini aplikacija ne znači da je aplikacija
sigurna već da trenutnim ispitivanjem nije pokazala loše naznake što ne znači da
je provedeno testiranje u potpunosti bilo ispravno. Dodatno, čak i nakon
instalacije aplikacije Google povremeno skenira ponašanje aplikacija, te ukoliko
utvrdi sumnjivo ponašanje obavještava korisnika i po potrebi blokira daljnji rad
aplikacije.
Sigurnost je izuzetno veliko područje i potreba za sigurnošću javlja se u raznim
situacijama. Npr. kod spremanja lokalnih podataka, kod komunikacije preko
mreže, pri razmjeni podataka ili prilikom pregleda osjetljivih podataka na uređaju.
Sve te radnje imaju različitu potrebnu razinu zaštite.
Najčešći razlozi za narušavanje sigurnosti su: neprikladno korištenje platforme,
nesiguran spremnik podataka, nesigurna komunikacija, loša kvaliteta koda,
nesigurna autorizacija i/ili autentifikacija, nedovoljna kriptografija i dr.
U ovom radu bit će obrađeni samo neki od navedenih razloga.
3
2.1. Narušavanje sigurnosti
Postoji više načina na koje se može pristupiti podatcima Android uređaja. Neki od
njih su ručne, fizičke i logičke akvizicije.
Ručna akvizicija predstavlja ručno pregledavanje podataka na mobitelu korištenjem
ekrana i tipkovnice, gdje se podatcima pokušava pristupiti interakcijom s uređajem.
Drugi način je fizička akvizicija koja podrazumijeva stvaranje posebne kopije
memorije uređaja zaobilaženjem datotečnog sustava i analiziranje određenim
metodama. Taj način nije uvijek pogodan jer može nepovratno oštetiti uređaj. Treći
način je logička akvizicija, a to je ujedno i način koji će biti detaljnije obrađen u ovom
radu.
Logička akvizicija obuhvaća izvlačenje podataka s uređaja povezanog s nekim
drugim uređajem. To primjerice može biti mobilni uređaj povezan USB kabelom sa
stolnim računalom. Na taj način moguće je pristupiti internim podatcima samog
uređaja. Najjednostavniji način povezivanja je korištenjem ADB (Android Debug
Bridge) alata. ADB je alat komandne linije koji omogućava konekciju između više
uređaja. Nakon povezivanja s uređajem napadač može napraviti statičku ili
dinamičku analizu podataka.
U slučaju statičke analize podataka napadač treba preuzeti instaliranu .apk
datoteku i raspakirati je kako bi mogao proučiti njen sadržaj. Apk je format datoteke
koju Android koristi za distribuciju aplikacija. Najjednostavniji način za pristup
podatcima je preimenovanje .apk ekstenzije u .zip. Sadržaj raspakirane .zip
datoteke može varirati ovisno o implementaciji aplikacije, ali uvijek sadrži resurse
aplikacije kao i konfiguracijsku AndroidManifest datoteku.
Slika 1. Premenovanje .apk arhive u .zip arhivu
Ukoliko aplikacija nije zaštićena alatima za zaštitu koda, otvaranjem .zip arhive
napadaču postaju dostupni određeni elementi aplikacije.
4
Slika 2.
Elementi aplikacije koji postaju dostupni napadaču otvaranjem .zip arhive
U res direktoriju nalaze se svi resursi aplikacije kao što su xml datoteke izgleda
ekrana, animacije, slike, tekstovi i boje korištene u aplikaciji.
AndroidManifest je xml datoteka u kojoj su definirane osnovne postavke aplikacije
koje Android operacijski sustav učitava prilikom pokretanja aplikacije. Neke od
postavki koje se definiraju unutar te datoteke su naziv paketa aplikacije, dozvole
koje korisnik mora prihvatiti ako želi koristiti aplikaciju, minimalni potrebni nivo
Android sustava na kojem se pokreće aplikacija i nazivi komponenti koje se koriste
unutar aplikacije.
Osim pristupa resursima i konfiguracijskoj datoteci, moguće je pristupiti i izvornom
kodu same aplikacije.
Najjednostavniji način za dohvat podataka ukoliko aplikacija nije zaštićena alatima
za zaštitu koda sastoji se od nekoliko koraka:
1. Početni korak je promjena formata arhive aplikacije iz .apk u .zip. (Slika 1.)
U .zip arhivi nalazi se datoteka classes.dex koja sadrži međukod aplikacije.
2. Zatim je potrebno prevesti .dex datoteku u java izvorni kod. To se može
napraviti s alatom poput dex2jar.
3. Nakon preuzimanja alata potrebno je kopirati classes.dex datoteku u
raspakirani direktorij alata i pokrenuti iz komandne linije sljedeću naredbu:
d2j-dex2jar.bat classes.dex. Ta naredba će potom napraviti novu .jar arhivu.
4. Zatim je potrebno ekstenziju .jar arhive preimenovati u .zip i raspakirati
arhivu. U .zip arhivi nalaze se izvorni razredi aplikacije u .class formatu.
5
5. .class datoteke moguće je pročitati skidanjem dodatka za razvojnu okolinu
kao što je Android Studio.
6. Nakon instalacije alata .class datoteke se mogu otvoriti u Android Studio
alatu gdje je vidljiv njihov izvorni sadržaj.
Slika 3.
Prikaz izvornog sadržaja datoteke
Drugi način analize je dinamička analiza. Ona zahtjeva da aplikacija bude
pokrenuta i analizira informacije koje su dostupne samo u trenutku izvođenja. Ti
podatci su u statičkoj analizi zapravo nevidljivi. To mogu biti podatci koji se
generiraju u određenom trenutku, ispisi aplikacije (tzv. logovi) ili dekriptirani
zaštićeni dijelovi koda.
S ciljem dobivanja kompletnog uvida u način funkcioniranja aplikacije napadači
često primjenjuju oba pristupa.
Osim korištenja podataka aplikacije, u aplikaciju se može umetnuti određeni dio
programskog koda. Najčešći pokušaj je podmetanje dijela za promjenu određenih
postavki aplikacije. Prilikom implementacije postavki u aplikaciji prikazuju se
predefinirani elementi ekrana. Ti se elementi nazivaju fragmenti. Ukoliko učitavanje
tih elemenata nije zaštićeno napadač bi mogao prikazati svoj novi, izmijenjeni
ekran, koji pruža mogućnosti koje su drugačije od zamišljenih.
U daljnjoj obradi ovog rada bit će obrađeni različiti načini zaštite kojih bi se trebalo
pridržavati prilikom izrade sigurnih Android aplikacija.
6
2.2. Sigurnosni savjeti pomoću kojih se može povećati razina sigurnosti prilikom izrade Android aplikacije
S ciljem poboljšanja sigurnosti aplikacija, poželjno je pridržavati se određenih uputa
i standarada.
2.2.1. Android dopuštenja
Aplikacije unutar Android operativnog sustava odvojene su u zasebne cjeline. Kako
bi aplikacije međusobno komunicirale i dijelile podatke svaka aplikacija mora
eksplicitno podijeliti podatke i dopustiti njihovo korištenje. To se obavlja
deklariranjem potrebnih dopuštenja koja omogućuju korištenje dodatnih
mogućnosti uključujući pristup svojstvima uređaja kao što su npr. kamera, mikrofon,
itd.
2.2.2. Zahtijevanje dopuštenja
Prilikom izrade aplikacije broj zahtijevanih osjetljivih dopuštenja trebalo bi svesti na
minimum. Ograničavanjem nepotrebnog pristupa dijelovima uređaja sprječava se
zlouporaba dopuštenja i poboljšava korisnička pristupačnost čime aplikacija
postaje manje izložena vanjskim napadima. U pravilu ako aplikacija nema potrebe
za određenom funkcionalnošću onda ne bi niti trebala zahtijevati njeno dopuštenje.
Osim dopuštenja (engl. permission) unutar aplikacije moguće je navesti i svojstva
koja aplikacija koristi korištenjem <uses-feature> elementa unutar AndroidManifest
datoteke.
Slika 4. Primjer korištenja svojstva u AndroidManifest datoteci
Ako postoji svojstvo bez kojeg aplikacija ne može raditi onda ga je potrebno
deklarirati korištenjem <uses-feature> s dodatkom <android:required>.
Element deklarira jednu hardversku ili softversku značajku koju aplikacija koristi.
Deklariranje elementa svojstva je samo informativno što znači da Android sustav
ne provjerava podržava li uređaj tražena svojstva.
7
Štoviše, iako je svojstvo deklarirano to ne znači da ga aplikacija ima pravo koristiti.
Drugim riječima, u svakom slučaju potrebno je zatražiti korisničko dopuštenje.
Android dopuštenja podijeljena su u dvije kategorije. To su normalna (obična)
dopuštenja i opasna (dopuštenja visokog rizika). Normalna dopuštenja su
omogućena na razini sustava, dok je opasna dopuštenja potrebno eksplicitno
zatražiti. Neka od dopuštenja koja spadaju u opasna dopuštenja su dopuštenja za
korištenje kamere, imenika, lokacije, poruka, mikrofona, i dr.
Slika 5.
Popis opasnih dopuštenja
8
Slika 6.
Primjer traženja opasnog dopuštenja od korisnika
Slika 7.
Primjer korištenja dopuštenja u AndroidManifest datoteci
Prije Android verzije 5.0 sva zahtijevana dopuštenja zatražila su se prilikom
instalacije aplikacije. Nakon Android 5.0 uvedeno je eksplicitno zahtijevanje svakog
pojedinog dopuštenja u trenutku njegove prve uporabe. Sada je moguće odbiti
pojedinačno dopuštenje i koristiti samo određene dijelove aplikacije.
U trenutku kada je određena dozvola potrebna korisnika se pita za njeno
dopuštenje. U slučaju da korisnik odbije može mu se prikazati poruka koja ga
9
obavještava zašto je specifično dopuštenje potrebno unutar aplikacije. Ako korisnik
svejedno odbije, onda neće imati pristup određenom dijelu aplikacije koji zahtjeva
odbijeno dopuštenje za rad, no moći će koristiti ostatak aplikacije za koje nije
potrebno nikakvo posebno dopuštenje, ili dijelove aplikacije za koje je već dozvolio
potrebna dopuštenja. S druge strane, ako korisnik prihvati zatraženo dopuštenje
moći će dalje nesmetano koristiti aplikaciju. Sva omogućena dopuštenja mogu se
vidjeti i naknadno urediti u postavkama aplikacije na mobilnom uređaju.
Slika 7.
Prikaz omogućenih dopuštenja u postavkama aplikacije
2.2.3. Logički dnevnik
Prilikom razvoja aplikacija programeri često koriste priručne ispise kako bi vidjeli
trenutno stanje aplikacije. Priručni ispisi zapisuju se u logički dnevnik koji može biti
izvor osjetljivih podataka aplikacije.
Prilikom zapisivanja podataka u logički dnevnik potrebno je biti iznimno oprezan.
Podatci logičkog dnevnika su udaljeni resurs kojemu može pristupiti bilo koja
aplikacija koja ima tzv. „read logs“ dopuštenje. Iako su podatci uređaja privremeni
i brišu se prilikom ponovnog pokretanja uređaja, neodgovornim zapisivanjem
10
osjetljivih podataka u logički dnevnik, razno razni povjerljivi korisnički podatci mogu
se zlonamjerno preuzeti i iskoristiti. Kako bi se spriječilo slučajno zapisivanje
povjerljivih podataka u logički dnevnik preporuča se koristiti „Log.d“ oznaku unutar
aplikacije koja zapisuje podatke samo u razvojnoj verziji.
Slika 8.
Primjer korištenja logiranja unutar razvojne verzije aplikacije
2.2.4. ProGourd
Nakon što je aplikacija napravljena nije ju dovoljno samo zapakirati za korištenje
jer se na taj način predaje i izvorni kod u nezaštićenom obliku. Takav oblik pogodan
je za razne manipulacije i jednostavan pristup načinu implementacije aplikacije.
Drugim riječima, omogućen je jasan uvid u nešto što bi trebalo prikriti.
Kako bi se to spriječilo potrebno je kod zaštititi, a već ugrađeni i preporučeni način
je zašita korištenjem ProGuarda.
ProGuard je alat koji smanjuje, optimizira i prikriva Java izvorni kod. Prikriva kod
na način da zamjenjuje nazive varijabli, metoda i razreda unutar projekta nasumice
generiranim riječima ili slovima kako bi neovlaštenog korisnika spriječio u pristupu
i razumijevanju izvornog koda.
ProGuard se prilikom izrade aplikacije može uključiti ili isključiti iz verzije aplikacije
jednostavnom promjenom logičke vrijednosti varijable minifyEnabled u build.gradle
datoteci projekta.
11
Slika 9. Korištenje ProGuarda – opcije
Korištenje ProGuarda je preporučljivo koristiti samo prilikom izrade produkcijske
verzije aplikacije jer usporava samu izgradnju aplikacije. Ako se koristi prilikom
razvoja aplikacija će se svaki put optimizirati i obfuscirati iako za to zapravo nema
potrebe.
Slika 10.
ProGuard - Prikaz originalnog i obfusciranog koda
Ukoliko zlonamjerna osoba preuzme instalacijsku datoteku aplikacije koja je
zaštićena ProGuardom to uvelike otežava napadaču pristup izvornom kodu i
njegovo razumijevanje, te dohvat osjetljivih podataka.
12
Korištenje ProGuarda samo otežava pristup izvornom kodu. On se i dalje može
dohvatiti korištenjem alata kao što je apktool, ali je izvorni kod i dalje u nečitljivom
obliku.
2.2.5. Apktool
Apktool je alat za dekodiranje zatvorenih binarnih Android aplikacija. Korištenje
alata Apktool je poprilično jednostavno. Nakon preuzimanja arhive potrebno je
otvoriti komandnu liniju i upisati sljedeću naredbu (slika 11.) koja dekodira .apk
arhivu aplikacije.
Slika 11.
Prikaz korištenja apktool alata
Slika 12.
Koraci koji se provode prilikom korištenja alata apktool
13
Izlaz naredbe je arhiva u kojoj se nalaze raspakirane komponente aplikacije.
Slika 13.
Sadržaj arhive nastale pri završetku obrade apktool alata
U smali direktoriju nalazi se obfuscirani kod aplikacije.
Slika 14. Primjer smali koda
Dobiveni „smali“ kod kojeg je proizveo apktool je teško čitljiv i za njegovo potpuno
razumijevanje potrebno je dosta vremena i truda, a rezultat je upitan.
14
2.2.6. Android Pay
Iako KeyStore nije pružio unificirani i siguran način zaštite podataka na uređaju
podatci moraju biti zaštićeni i u slučaju njihovog ručnog unosa. Nakon što se
podatci ručno unesu oni mogu biti poslani na udaljene poslužitelje kako bi se
iskoristili. U slučaju korištenja kreditnih kartica slanje osjetljivih podataka o kartici
nije preporučljivo. Zato su u Googleu razvili Android Pay.
Prilikom kupovine Android Pay ne šalje prave podatke kreditne kartice prodavaču
već šalje virtualni broj računa koji predstavlja korisnika. Na taj način podatci
korisničke kartice ostaju zaštićeni i u slučaju loše zaštite prodavačeve strane.
Iako bi kod aplikacije mogao biti dobro napisan i sve dodatne mjere poduzete kako
bi se zaštitili podatci potrebno je osigurati aplikaciju od podmetanja i korištenja tuđih
elemenata.
2.2.7. Podmetanje elemenata aplikacije
Unutar postavki aplikacije prikazuju se ekrani koji korisniku dopuštaju prilagodbu
aplikacije prema vlastitom načinu korištenja. Određeni dijelovi mogu biti uključeni,
drugi isključeni, može biti omogućeno spremanje lozinki ili spajanje na Internet
samo ukoliko je dostupna wireless konekcija.
Kako napadači ne bi podmetnuli svoj ekran potrebno je u dio aplikacije postaviti
ograničenje mogućih ekrana. To se radi na način da se definira koji ekrani se mogu
otvoriti ukoliko je potrebno prikazati postavke aplikacije.
Na taj način se sprječava otvaranje ekrana koji nisu pripremljeni od strane autora
aplikacije.
Slika 18.
Metoda za provjeru elemenata ekrana postavki
15
Ponekad se u postavkama aplikacije mogu mijenjati i osobni podatci korisnika.
Takvi podatci bi se potom slali na poslužitelj kako bi korisnik na svim uređajima s
istim korisničkim imenom imao iste podatke. Podatci koji se šalju putem interneta
na udaljeni poslužitelj mogu također biti meta napada. Podatci se na Internet
najčešće šalju koristeći protokol HTTP.
HTTP protokol je nesigurna verzija protokola u kojoj su podatci koji se šalju svima
dostupni.
HTTPS je sigurna verzija protokola HTTP, pri čemu se „S“ odnosi na sigurnost koja
je osigurana dodavanjem protokola TLS na originalni protokol HTTP. Drugim
riječima, tim pristupom je dodana enkripcija na komunikaciju između klijenta i
poslužitelja, a time podatci postaju sigurniji.
Slika 19.
Primjer nezaštićene komunikacije korištenjem protokola HTTP
16
Slika 20.
Primjer zaštićene komunikacije korištenjem protokola HTTPS
2.2.8. Android Device Manager
Naposljetku, ukoliko su svi sigurnosni savjeti implementirani uvijek postoji
mogućnost od gubitka samog korisničkog uređaja na kojem se mogu nalaziti
osjetljivi podatci. S dostupnim uređajem napadač može pokušati pronaći
sigurnosne propuste uređaja ili aplikacija na uređaju. Ako korisnik izgubi mobilni
uređaj ili mu se otuđi, sigurnost privatnih podataka je glavni prioritet.
Unutar Android sustava implementiran je način na koji korisnik može upravljati
svojim uređajem na daljinu koristeći Android Device Manager.
Android Device Manager je menadžer uređaja implementiran na razini Android
sustava kojim korisnik može upravljati uređajem na daljinu. Korisnik mora biti
povezan Google korisničkim računom kako bi usluga bila omogućena. Podatke je
moguće i obrisati koristeći povezani račun. Na taj način se mogu zaštititi privatni
podatci na uređaju da ne dođu u posjed neovlaštene osobe. Koristeći Android
Device Manager korisnik također može i locirati gdje se uređaj nalazi, te stoga
pokušati poduzeti odgovarajuće mjere kako bi se uređaj vratio vlasniku.
17
3. Zaključak
U Androidu još uvijek ne postoji siguran način zaštite podataka unutar aplikacije.
Postoje samo načini na koji se zlonamjernoj osobi može otežati pristup podatcima.
Ideja zaštite podataka unutar aplikacije je natjerati napadača da odustane od svojih
namjera, jer je proces dohvata podataka traje predugo.
U zadnjim inačicama Android biblioteka postoje pokušaji da se napravi zaštićeni
unificirani spremnik podataka aplikacije, no zbog velike količine različitih uređaja i
verzija Androida to još uvijek ne radi kvalitetno.
Sigurnost je veoma širok pojam i u ovom radu nisu pokriveni svi aspekti sigurnosti.
Postoji centralizirana stranica „OWASP Mobile Security Project“ namijenjena
sigurnosnim timovima koja pruža informacije o mogućim sigurnosnim prijetnjama i
načinu kako još bolje unaprijediti sigurnost u aplikacijama.
Zlonamjerni napadači konstantno traže nove načine kako bi narušili sigurnost
aplikacija. Praćenje sigurnosnih trendova sigurno je jedan od boljih načina kako
osigurati kvalitetu i integritet aplikacija.
18
4. Literatura
[1] H. D and J. K, Cyber crime and the Victimization of Women: Laws, Rights, and Regulations, Hershey, PA, USA: IGI Global. ISBN 978-1-60960-830-9, 2011.
[2] Wikipedia, "https://hr.wikipedia.org/wiki/Sigurnost," [Online]. Link: https://hr.wikipedia.org/wiki/Sigurnost.
[3] »OWASP - Mobile top 10,« [Mrežno]. Link: https://www.owasp.org/index.php/Mobile_Top_10_2016-Top_10. [4] V. Šimić, Proces prevođenja forenzičke analize Android operacijskog sustava. Završni rad br. 3478, Zagreb, 2014. [5] »Android developers,« [Mrežno]. Link: https://developer.android.com/studio/command-line/adb.html [6] V. Berger, Zaštita mobilnih aplikacija od zlonamjernih izmjena, Zagreb: Diplomski rad br. 709, 2014. [7] Trinimon, »Is there a way to get the source code from an apk file,« Stacoverflow, 13 5 2013. [Mrežno]. Link: http://stackoverflow.com/a/15395456 [8] »Android developers,« [Mrežno]. Link: https://developer.android.com/guide/topics/manifest/uses-feature-element.html. [9] »Android developers,« [Mrežno]. Link: https://developer.android.com/guide/topics/permissions/requesting.html.
[10] »Fabric,« [Mrežno]. Link: https://fabric.io/blog/2014/02/18/mastering-proguard-for-building-lightweight-android-code/ [11] »Android developers,« [Mrežno]. Link: https://developer.android.com/reference/android/content/Context.html. [12] »Android developers,« [Mrežno]. Link: https://developer.android.com/reference/java/security/KeyStore.html. [13] »Android Authority,« [Mrežno]. Link: http://www.androidauthority.com/use-android-keystore-store-passwords-sensitive-information-623779/. [14] Dori, »Stackoverflow - How to detect if pin password pattern is required to unlock phone,« [Mrežno]. Link: http://stackoverflow.com/questions/7879143/how-to-detect-if-pin-password-pattern-is-required-to-unlock-phone/27801128#27801128. [15] »OWASP Mobile Security Project,« [Mrežno]. Link: https://www.owasp.org/index.php/OWASP_Mobile_Security_Project. [16] A. Baotić, »Realm - Best Practices in App Security,« 27 8 2016. [Mrežno]. Link: https://news.realm.io/news/360andev-ana-baotic-best-practices-app-security-android/.
19
5. Sažetak
Sigurnost je važan element u današnjem svijetu. Velik broj kriminalnih radnji na
mobilnim uređajima događa se zbog sigurnosnih propusta. Sigurnost korisničkih
podataka na mobilnim uređajima s Android operacijskim sustavom se može narušiti
lošom implementacijom samih aplikacija, ali i poboljšati korištenjem određenih
uputa prilikom njihove izrade. U ovom radu navedeni su primjeri na koje načine
napadač može pristupiti osjetljivim podatcima korisnika, te kako ih potom
zloupotrijebiti. Navedeni su i načini na koje se korisnik može zaštititi od takvih
napada, te smjernice koje bi se trebale koristiti prilikom implementacije aplikacija
kako bi se spriječio neovlašteni pristup osjetljivim podatcima.