+ All Categories
Home > Mobile > Milan Oulehla: Bezpečnost mobilních aplikací na Androidu

Milan Oulehla: Bezpečnost mobilních aplikací na Androidu

Date post: 22-Jan-2018
Category:
Upload: mdevtalk
View: 68 times
Download: 2 times
Share this document with a friend
38
Transcript
Page 1: Milan Oulehla: Bezpečnost mobilních aplikací na Androidu
Page 2: Milan Oulehla: Bezpečnost mobilních aplikací na Androidu

MILAN OULEHLA Security researcher, Pentester, PT LAB - Penetration Testing LABoratory

Page 3: Milan Oulehla: Bezpečnost mobilních aplikací na Androidu

Bezpečnost mobilních aplikací na

platformě Android

Page 4: Milan Oulehla: Bezpečnost mobilních aplikací na Androidu

Úvod

Člen PT LAB – Penetration Testing Laboratory - http://ptlab.fai.utb.cz/oulehla/

Nezávislý konzultant v oblasti penetračního testování na mobilní platformě s důrazem na Android OS

Page 5: Milan Oulehla: Bezpečnost mobilních aplikací na Androidu

Úvod

Spolupráce s OWASP (přednáška OWASP Czech Chapter Meeting)

Doktorské studiu na Fakultě aplikované informatiky Univerzity Tomáše Bati ve Zlíně

Výzkumu v oblastech aplikační bezpečnosti a detekci mobilního malware pomocí neuronových sítí.

Page 6: Milan Oulehla: Bezpečnost mobilních aplikací na Androidu

Úvod

Přednáška je postavena na chybách ze skutečných aplikací.

Zdroje:

• PT LAB

• Má penetrační praxe

• Sledování programátorských fór (např. http://stackoverflow.com a další)

Page 7: Milan Oulehla: Bezpečnost mobilních aplikací na Androidu

Úvod

NENÍ ZVEŘEJNĚNA ANI ČÁRKA Z ORIGINÁLNÍCH ZDROJOVÝCH KÓDŮ MÝCH ZÁKAZNÍKŮ NEBO ZÁKAZNÍKŮ PT LABU!

NEDOZVÍTE SE ANI IDENTITU APLIKACÍ ANI IDENTITU ZÁKAZNÍKŮ!

Vždy jsem si vzal princip dané zranitelnosti a vše jsem naprogramoval sám.

Page 8: Milan Oulehla: Bezpečnost mobilních aplikací na Androidu

Úvod

Jedná se o skici => určité zjednodušení aby vynikla daná zranitelnost

Chráněná část aplikace, placená funkcionalita = aktivita

Page 9: Milan Oulehla: Bezpečnost mobilních aplikací na Androidu

Útok pomocí syntaktické analýzy

Ukázat „kombajn“ na PasswordClass.apk Analýza 1: APKTool: APK --> *.smali Rekurzivní vyhledávání pomocí regulárních výrazů uvnitř souborů Analýza 2: Dex2jar: APK --> JAR Rekurzivní vyhledávání pomocí regulárních výrazů uvnitř souborů

Page 10: Milan Oulehla: Bezpečnost mobilních aplikací na Androidu

Semiobfuskace

Samovysvětlující název: Semiobfuskovaný název:

třída: třída:

CheckCredentials ProcessTexts

metoda: metoda:

performAuthentication checkTextIntegrity

proměnná: proměnná:

password text_pattern

Page 11: Milan Oulehla: Bezpečnost mobilních aplikací na Androidu

Log Leakage

3xZ: Zabezpečená síťová komunikace Zabezpečená mobilní aplikace Zapomenuté logy => Všechna práce se zabezpečováním • mobilních aplikací, • síťové komunikace, • serveru byla na nic!

Page 12: Milan Oulehla: Bezpečnost mobilních aplikací na Androidu

Log Leakage

d(String tag, String msg, Throwable tr)

d(String tag, String msg)

...

e(String tag, String msg, Throwable tr)

e(String tag, String msg)

...

println(int priority, String tag, String msg)

Page 13: Milan Oulehla: Bezpečnost mobilních aplikací na Androidu

Log Leakage

Page 14: Milan Oulehla: Bezpečnost mobilních aplikací na Androidu

Zdroj: https://developer.android.com/reference/android/util/Log.html

Page 15: Milan Oulehla: Bezpečnost mobilních aplikací na Androidu

Log Leakage

Ukázat Log Leakage na aplikaci

BestMaps9.apk

Page 16: Milan Oulehla: Bezpečnost mobilních aplikací na Androidu

Log Leakage

Page 17: Milan Oulehla: Bezpečnost mobilních aplikací na Androidu

Log Leakage

Page 18: Milan Oulehla: Bezpečnost mobilních aplikací na Androidu

Single-Jump Attack

Cenná funkcionalita

Začátek

Ochranná část kódu

Page 19: Milan Oulehla: Bezpečnost mobilních aplikací na Androidu

Single-Jump Attack

Cenná funkcionalita

Začátek

Ochranná část kódu

:navesti

goto :navesti

Page 20: Milan Oulehla: Bezpečnost mobilních aplikací na Androidu

Single-Jump Attack

Princip aplikace BestGame6.apk

Page 21: Milan Oulehla: Bezpečnost mobilních aplikací na Androidu

isFirstRun()?

Start MainActivity

Finish()

Vytvoří klíče a uloží je v KeyStore

/data/data/cz.utb.fai.bestgame6_ptlab/shared_prefs/app_protection.xml

rovnají se?

Rozšifrování passwd_key

pomocí klíče z KeyStore

Ne

Ne

Ano

Ano

Page 22: Milan Oulehla: Bezpečnost mobilních aplikací na Androidu

Single-Jump Attack

Ukázat Single-Jump Attack na aplikaci BestGame6.apk

Page 23: Milan Oulehla: Bezpečnost mobilních aplikací na Androidu

Multi-Jump Attack

Ochranná část kódu 1

Cenná funkcionalita 1

Začátek

Ochranná část kódu 2

Cenná funkcionalita 2

Ochranná část kódu 3

Cenná funkcionalita 3

Page 24: Milan Oulehla: Bezpečnost mobilních aplikací na Androidu

Multi-Jump Attack

Ukázat Multi-Jump Attack na aplikaci:

RE2Multi-Jump.apk

• Nejprve nainstalovat a spustit původní app

• Pak teprve nainstalovat HACKED verzi

Page 25: Milan Oulehla: Bezpečnost mobilních aplikací na Androidu

Negation Attack

Jeden z důvodů proč nepoužívat single factor authentication.

Page 26: Milan Oulehla: Bezpečnost mobilních aplikací na Androidu

Negation Attack

Nezajímavý kód (např. nová výzva k zadaní

platného hesla) Cenná funkcionalita

Ověření

Úspěšné Neúspěšné

Nezajímavý kód (např. nová výzva k zadaní

platného hesla) Cenná funkcionalita

Ověření

Úspěšné Neúspěšné

Page 27: Milan Oulehla: Bezpečnost mobilních aplikací na Androidu

Negation Attack

Princip aplikace BestMaps.apk

Page 28: Milan Oulehla: Bezpečnost mobilních aplikací na Androidu

Přihlašovací údaje jsou ověřeny serverem Tady mimo aplikaci! Třída: ServerAuthentication Metoda performAuthentication() // public

Bylo ověření úspěšné?

NE

Opětovná výzva k zadaní přihlašovacích údajů

Login:user111 Password: heslo

ANO

Je spuštěna chráněná/placená část aplikace

Page 29: Milan Oulehla: Bezpečnost mobilních aplikací na Androidu

Přihlašovací údaje jsou ověřeny serverem Tady mimo aplikaci! Třída: ServerAuthentication Metoda performAuthentication() // public

Bylo ověření úspěšné?

ANO!

Opětovná výzva k zadaní přihlašovacích údajů

Login:user111 Password: heslo

NE!

Je spuštěna chráněná/placená část aplikace

Page 30: Milan Oulehla: Bezpečnost mobilních aplikací na Androidu

loginEditText = (EditText)findViewById(R.id.input_login); passwordEditText = (EditText)findViewById(R.id.input_password); ... ... public void checkCredentials_onClick(View v) { ServerAuthentication serverAuthentication = new ServerAuthentication(loginEditText.getText().toString(), passwordEditText.getText().toString()); if(serverAuthentication.performAuthentication()) { loginEditText.setText(""); passwordEditText.setText(""); Intent intent = new Intent(context, BestMapsActivity.class); startActivity(intent); } else { loginEditText.setText(""); passwordEditText.setText(""); Toast.makeText(context, "Wrong Credentials", Toast.LENGTH_LONG).show(); } }

Page 31: Milan Oulehla: Bezpečnost mobilních aplikací na Androidu

Negation Attack

if(serverAuthentication.performAuthentication()) { // přihlašovaní údaje jsou platné // chráněná funkcionalita } else { // přihlašovaní údaje nejsou platné // výzva k opětovnému zadání přihlašovacích údajů }

Vrací: true = přihlašovaní údaje byly ověřeny false = přihlašovaní údaje nebyly ověřeny

Page 32: Milan Oulehla: Bezpečnost mobilních aplikací na Androidu

Negation Attack

if(!serverAuthentication.performAuthentication())

{ // přihlašovaní údaje nejsou platné // chráněná funkcionalita } else { // přihlašovaní údaje jsou platné // výzva k opětovnému zadání přihlašovacích údajů }

Page 33: Milan Oulehla: Bezpečnost mobilních aplikací na Androidu

Negation Attack

Ukázat Negation Attack na aplikaci

BestMaps.apk

Page 34: Milan Oulehla: Bezpečnost mobilních aplikací na Androidu

Removal Attack

Ochranná část kódu

Cenná funkcionalita

Začátek

Cenná funkcionalita

Začátek

Spouští

Ne vždy lze použít Negation Attack, proto existuje Removal Attack, který je složitější ale mnohem ničivější

Pozor na PŘÉPSÁNÍ nebo ODSTRANĚNÍ aktivního obsahu registrů !!!

Page 35: Milan Oulehla: Bezpečnost mobilních aplikací na Androidu

Removal Attack

Ukázat Removal Attack na aplikaci

BestMaps.apk

Page 36: Milan Oulehla: Bezpečnost mobilních aplikací na Androidu

Pár slov na konec

• Neošetřené vstupy

• Nešifrovaná komunikace mezi mobilní aplikací a serverem

• Citlivé údaje nešifrované v lokální databázi

• Poskytovatelé obsahu bez korektního zabezpečení

Page 37: Milan Oulehla: Bezpečnost mobilních aplikací na Androidu

Děkuji Vám za pozornost

Page 38: Milan Oulehla: Bezpečnost mobilních aplikací na Androidu

Recommended