Upload
others
View
3
Download
0
Embed Size (px)
Citation preview
SVEUCILIŠTE U ZAGREBUFAKULTET ELEKTROTEHNIKE I RACUNARSTVA
SEMINAR
Alati za otkrivanje ranjivosti APKformataDuje Medak
Zagreb, sijecanj 2019.
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
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
Slika 1.1: Udio mobilnih operacijskih sustava 2018 godine
2
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
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
– 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
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
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
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
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
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