12
SVEU ˇ CILIŠTE U ZAGREBU FAKULTET ELEKTROTEHNIKE I RA ˇ CUNARSTVA SEMINAR Alati za otkrivanje ranjivosti APK formata Duje Medak Zagreb, sijeˇ canj 2019.

Alati za otkrivanje ranjivosti APK formatanevena.lss.hr/recordings/fer/predmeti/racfor/2018/seminari_2018_20… · QARK - Quick Android Review Kit QARK je vrlo koristan alat u analizi

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Alati za otkrivanje ranjivosti APK formatanevena.lss.hr/recordings/fer/predmeti/racfor/2018/seminari_2018_20… · QARK - Quick Android Review Kit QARK je vrlo koristan alat u analizi

SVEUCILIŠTE U ZAGREBUFAKULTET ELEKTROTEHNIKE I RACUNARSTVA

SEMINAR

Alati za otkrivanje ranjivosti APKformataDuje Medak

Zagreb, sijecanj 2019.

Page 2: Alati za otkrivanje ranjivosti APK formatanevena.lss.hr/recordings/fer/predmeti/racfor/2018/seminari_2018_20… · QARK - Quick Android Review Kit QARK je vrlo koristan alat u analizi

SADRŽAJ

1. Uvod 1

2. APK format 3

3. Alati za otkrivanje ranjivosti APK formata 43.0.1. AndroBugs framework . . . . . . . . . . . . . . . . . . . . . . . . 4

3.0.2. QARK - Quick Android Review Kit . . . . . . . . . . . . . . . . . 6

3.0.3. Ostali alati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

4. Zakljucak 9

Literatura 10

ii

Page 3: Alati za otkrivanje ranjivosti APK formatanevena.lss.hr/recordings/fer/predmeti/racfor/2018/seminari_2018_20… · QARK - Quick Android Review Kit QARK je vrlo koristan alat u analizi

1. Uvod

Android je mobilni operacijski sustav baziran na modificiranoj jezgri Linuxa kojega je ra-

zvio Google. Sustav je primarno namijenjen mobilnim uredajima s ekranima osjetljivima na

dodir, ali danas se izmijenjene verzije osnovnog sustava koriste i u nekim vrstama televizora,

pametnim satovima, autima i slicno. Android je od 2011 najucestalije korišteni operacijski

sustav na pametnim telefonima, a od Svibnja 2017 preko 2 milijarde ljudi mjesecno ga ko-

risti. Udio mobilnih uredaja koji koriste Android operacijski sustav na svjetskom tržištu u

2018. godini prikazan je na slici 1.1. Korisnici Android sustava mogu na svoj uredaj insta-

lirati aplikacije po želji, a najcešce korištena usluga za pretragu i preuzimanje aplikacija je

Google play koji trenutno sadrži preko 3.3 milijuna aplikacija.

Uz tako veliki broj aplikacija postavlja se pitanje koliko dobro su one kontrolirane i jesu li

neke od aplikacija zlocudne aplikacije koje mogu nanijeti štetu korisniku. Cak iako izvorni

razvijatelj aplikacije nije naumio koristiti aplikaciju u loše svrhe, moguce je da aplikacija

sadrži neke propuste koje bi napadaci mogli iskoristiti. Za to je naravno potrebno znanje o

nacinu rada samog sustava kao i strukture korištenog formata za instalaciju aplikacija (.apk).

Kako bi aplikacije bile sigurne potrebno je znati kojim sve podacima netko može pristupiti

reverznim inženjerstvom APK datoteke te može li izmijeniti neke dijelove kako bi nanio

štetu korisniku koji ce tu aplikaciju koristiti. Postoje mnogi alati koji mogu pomoci u analizi

APK datoteka i otkriti moguce propuste. Neki od tih alata bit ce obradeni u nastavku ovog

seminara.

1

Page 4: Alati za otkrivanje ranjivosti APK formatanevena.lss.hr/recordings/fer/predmeti/racfor/2018/seminari_2018_20… · QARK - Quick Android Review Kit QARK je vrlo koristan alat u analizi

Slika 1.1: Udio mobilnih operacijskih sustava 2018 godine

2

Page 5: Alati za otkrivanje ranjivosti APK formatanevena.lss.hr/recordings/fer/predmeti/racfor/2018/seminari_2018_20… · QARK - Quick Android Review Kit QARK je vrlo koristan alat u analizi

2. APK format

Android paket (eng. Android Package) ili APK je format kojega koriste svi uredaji s Android

operacijskim sustavom za distribuciju i instalaciju mobilnih aplikacija.(Wikipedia, 2018a)

APK datoteke analogne su programskim paketima koji se koriste za neke druge operacijske

sustave kao na primjer APPX za Microsoft Windows ili Debian paket za sustave bazirane na

Debianu. Android aplikacija sastoji se od povezanih aplikacijskih komponenata. Aplikacij-

ske komponente, manifest datoteka i aplikacijski resursi zapakirani su u Aplikacijski paket

format (Application Package Format) odnosno .apk datoteku. APK datoteke zapravo su vr-

sta arhivne datoteke, tocnije paket u ZIP formatu baziran na JAR formatu. Datoteka može

imati bilo koje ime uz uvjet da završava s datotecnom ekstenzijom .apk. APK datoteka je

potpisana s potpisom razvijatelja kako bi se osiguralo vlasništvo.(Rai, 2013) Android sustav

prepoznaje samo taj format pa svi paketi koji se žele instalirati na Android uredaju moraju

biti u tom formatu. Instaliranje i deinstaliranje aplikacija odvija se putem PackageMana-

ger razreda. Najcešce korišten nacin instalacije aplikacija je putem službenih (Google Play

Store) ili neslužbenih stranica. Uz to je moguce instalirati aplikaciju i direktno na uredaj ko-

risteci komunikacijske programe kao što je adb (Android debug bridge). (Wikipedia, 2018b)

Slika 2.1: Struktura APK formata

3

Page 6: Alati za otkrivanje ranjivosti APK formatanevena.lss.hr/recordings/fer/predmeti/racfor/2018/seminari_2018_20… · QARK - Quick Android Review Kit QARK je vrlo koristan alat u analizi

3. Alati za otkrivanje ranjivosti APKformata

Analiza APK datoteke korisna je u nekoliko slucajeva:

1. Želimo se uvjeriti da je neka dostupna aplikacija sigurna za korištenje. (U nekim

državama je reverzno inženjerstvo aplikacija ilegalno ako osoba koja to radi nije ujedno

i vlasnik aplikacije).

2. Drugi slucaj je zlouporaba dostupnih alata za pronalazak mana u aplikaciji.Takve mane

mogle bi se iskoristiti za nanošenje štete nekoj osobi ili kompaniji, iznudivanje novca,

pristup povjerljivim podacima i slicno.

3. Najcešci razlog korištenja ovih alata je sprjecavanje prethodnog slucaja. Razvijatelji

aplikacije trebali bi se pobrinuti da je aplikacija koju ce izdati korisnicima sigurna.

Testiranje sigurnosti aplikacije najbolje bi bilo provesti tako se probaju pristupi za

pronalazak sigurnosnih propusta koje bi i napadaci mogli probati.

Ovisno o svrsi testiranja, pronalazak sigurnosnih propusta i analiza APK datoteke može se

izvršiti uz pomoc razlicitih alata. Analizu datoteke moguce je izvesti direktno na uredaju

gdje se nalazi i pokrece odredena aplikacija, korištenjem nekog od web servisa za analizu

APK datoteka ili pak preuzimanjem alata na racunalo i rucnom analizom aplikacije.

3.0.1. AndroBugs framework

AndroBugs framework je sustav za analizu ranjivosti Android aplikacija koji se koristi za

otkrivanje potencijalnih sigurnosnih ranjivosti (propusta) u Android aplikacijama (Lin). Uz

to ga je moguce koristiti i za poboljšanje ponašanja aplikacije. Framework ne sadrži gra-

ficko sucelje vec se poziva iz konzole. Zbog toga je efikasniji od nekih drugih dostupnih

alata i skeniranje APK datoteke uglavnom traje manje od dvije minute. Za instalaciju alata

potrebno je imati instaliran python 2.7.x , a alat je dostupan za Windows i Linux operacijske

sustave. Alat je open source (GNU GPL v3.0 licenca). Navedeni program pruža sljedece

funkcionalnosti:

4

Page 7: Alati za otkrivanje ranjivosti APK formatanevena.lss.hr/recordings/fer/predmeti/racfor/2018/seminari_2018_20… · QARK - Quick Android Review Kit QARK je vrlo koristan alat u analizi

– Pronalazak sigurnosnih propusta u Android aplikaciji

– Provjera oblikovnih obrazaca koda (je li kod napisan u skladu s vec postojecim dobro

oblikovanim sigurnim rješenjima)

– Provjera opasnih komandi iz ljuske (npr. su)

– Prikupljanje podataka iz bilo koje aplikacije

– Provjera razine sigurnosti aplikacije

Alat je nakon preuzimanja prvo potrebno raspakirati a zatim pokrenuti koristeci skriptu an-

drobugs.py uz prosljedivanje potrebnih argumenata iz konzole. U konzoli ce se ispisati in-

formacije vezane uz provjeru nekih poznatih sigurnosnih propusta vidljivih na slici 3.1. Izlaz

Slika 3.1: Rezultati provjere poznatih sigurnosnih propusta

programa sprema se u odvojenu datoteku koja pruža detaljan uvid u APK datoteku odnosno

rezultate sigurnosnih provjera. Razvijatelji aplikacije mogu zatim koristiti dobivene infor-

macije za preinaku aplikacije i uklanjanje pronadenih propusta. Odlicna znacajka alata je ta

da uz pronadene probleme nudi i moguce rješenje. Na slikama 3.2 do 3.4 prikazani su neki

od mogucih sigurnosnih propusta koje ova aplikacija može pronaci.

Slika 3.2: Upozorenje o postojanju upita koji ne koriste ssl

Slika 3.3: Upozorenje o ucitavanju dinamickog koda

5

Page 8: Alati za otkrivanje ranjivosti APK formatanevena.lss.hr/recordings/fer/predmeti/racfor/2018/seminari_2018_20… · QARK - Quick Android Review Kit QARK je vrlo koristan alat u analizi

Slika 3.4: Obavijest o nesigurno izbrisanim podacima

3.0.2. QARK - Quick Android Review Kit

QARK je vrlo koristan alat u analizi sigurnosti Android aplikacija kojega je razvila kompa-

nija LinkedIn (LinkedIn). Alat pomaže tvorcu aplikacija u pronalasku ucestalih ranjivosti

ne samo u izvornom kodu vec i u cijeloj zapakiranoj APK datoteci. Alat je lagan za ko-

rištenje, ali je i dalje jako mocan i daje detaljan uvid i objašnjenja vezana za pronadene

ranjivosti. Prednost ovog alata je što koristi nekoliko dekompajlera za reverzno inženjerstvo

APK datoteke. Svi izlazi se zatim medusobno kombiniraju iskorištavajuci prednosti sva-

kog pojedinacnog dekompajlera poboljšavajuci time rezultate provedene sigurnosne analize.

Ovim alatom moguce je i stvaranje APK datoteke ili adb (Android debug) komande koje do-

kazuju neke od propusta pronadenih analizom aplikacije. Prilikom testiranja na uredaju nije

potrebno omoguciti puni pristup operacijskom sustavu tzv. root pristup buduci da se ovaj

alat fokusira na ranjivostima koje se mogu pojaviti u inace sigurnim uvjetima. QARK je kao

i AndroBugs potpuno besplatan za korištenje samo što je licenciran Apache licencom. Neki

od sigurnosnih propusta koje QARK pokušava pronaci su:

– Komponente koje su ranjive na presretanje ili prisluškivanje podataka

– Neispravna x.509 validacija certifikata

– Privatni kljucevi sadržani u izvornom kodu

– Neprimjereno zašticene izvezene komponente

– Slaba ili neispravna upotreba kriptografije

– Aplikacije koje omogucavaju sigurnosnu pohranu

– Aplikacije koje koriste zastarjele API verzije s poznatim ranjivostima

Detaljniji prikaz nacina rada, mogucih opcija i nekih kategorija ranjivosti Android aplikacija

koje navedeni sustav pokušava pronaci prikazani su na slici 3.5

6

Page 9: Alati za otkrivanje ranjivosti APK formatanevena.lss.hr/recordings/fer/predmeti/racfor/2018/seminari_2018_20… · QARK - Quick Android Review Kit QARK je vrlo koristan alat u analizi

Slika 3.5: Mogucnosti i nacin rada QARK alata

3.0.3. Ostali alati

Osim vec spomenutih besplatnih alata postoje i mnogi drugi alati koju pomažu u analizi

Android aplikacija. Neke od poznatijih aplikacija koje se koriste za analizu drugih aplikacija

direktno na Andorid uredaju su:

– Android Forensics Analytics (GoNetFPI)

– Apk Analyzer (Dinostudio)

– Apk scanner (SSP183A)

Takve aplikacije omogucavaju detaljno skeniranje uredaja, odreduju propušta li neka aplika-

cija podatke, koristi li nesigurne komunikacijske kanale ili pak namjerno zaobilazi neke od

sigurnosnih kontrola.

Uz to postoje i mnogi web servisi koji omogucavaju online analizu aplikacija. Dio njih

je besplatan, ali cesto je za detaljnije informacije ipak potrebno platiti odredenu naknadu za

korištenje. Popularniji Web servisi na kojima se može testirati sigurnost APK datoteke su:

– Ostrolab

– Appvigil

– Quixxi

– AndroTotal

– Akana

– Mobile App Scanner

Njihova prednost nad prije spomenutim AndroBugs i QARK je jednostavnost korištenja i

mogucnost testiranja sigurnosti aplikacija za druge platforme (Npr. IOS ili Windows). Lijepo

7

Page 10: Alati za otkrivanje ranjivosti APK formatanevena.lss.hr/recordings/fer/predmeti/racfor/2018/seminari_2018_20… · QARK - Quick Android Review Kit QARK je vrlo koristan alat u analizi

dizajnirana korisnicka sucelja uglavnom su pogodnija za brzu analizu sigurnosnih propusta

APK formata. Primjer jednog takvog sucelja prikazan je na slici 3.6.

Slika 3.6: Primjer sucelja online servisa za analizu APK datoteke

8

Page 11: Alati za otkrivanje ranjivosti APK formatanevena.lss.hr/recordings/fer/predmeti/racfor/2018/seminari_2018_20… · QARK - Quick Android Review Kit QARK je vrlo koristan alat u analizi

4. Zakljucak

Broj aktivnih mobilnih uredaja raste iz godine u godinu, a popracenu s tim na izbor se pruža

sve veci broj aplikacija. Buduci da se radi o unosnom poslu kompanije se trude što brže

isporucivati svoje aplikacije ne razmišljajuci uvijek o sigurnosnim propustima koje možda

postoje u njihovim aplikacijama. Bilo da želimo provjeriti sigurnost neke dostupne aplika-

cije ili se pak istaknuti na trenutnom tržištu s nekom sigurnom i pouzdanom aplikacijom,

potrebno nam je znanje o Android operacijskom sustavu, strukturi APK formata i dobrih si-

gurnosnih praksi. Sigurnosnu analizu uvelike olakšavaju neki od dostupnih alata za analizu

APK datoteka. Njihovim korištenjem brže i temeljitije možemo ispitati potencijalne pro-

puste neke aplikacije. Medutim sama cinjenica da postoji tolika kolicina alata za istu svrhu

daje naslutiti da nijedan od tih alata nije potpun i da se najbolji rezultati ostvaruju njihovim

kombiniranjem prema odredenim potrebama.

9

Page 12: Alati za otkrivanje ranjivosti APK formatanevena.lss.hr/recordings/fer/predmeti/racfor/2018/seminari_2018_20… · QARK - Quick Android Review Kit QARK je vrlo koristan alat u analizi

LITERATURA

Dinostudio. Apk Analyzer. https://play.google.com/store/apps/details?

id=dinostudio.android.apkanalyse.

GoNetFPI. Android Forensics Analytics. https://play.google.com/store/

apps/details?id=com.gonetfpi.gonetfpiforensics&hl=en.

Yu-Cheng Lin. AndroBugs. https://github.com/AndroBugs/AndroBugs_

Framework.

LinkedIn. QARK. https://github.com/linkedin/qark.

Pragati Ogal Rai. Android Application Security Essentials. PACKT publishing, 2013.

SSP183A. Apk Scanner. https://play.google.com/store/apps/details?

id=ssp183a.apk.scanner.

Wikipedia. Android Application Package. https://en.wikipedia.org/wiki/

Android_application_package, 2018a. [Online; accessed 02-Jan-2019].

Wikipedia. Android Debug Bridge. https://en.wikipedia.org/wiki/

Android_software_development, 2018b. [Online; accessed 07-Jan-2019].

10