SlideShare a Scribd company logo
1 of 38
Download to read offline
MILAN OULEHLA
Security researcher, Pentester, PT LAB - Penetration Testing LABoratory
Bezpečnost mobilních aplikací na
platformě Android
Ú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
Ú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í.
Ú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ší)
Ú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.
Úvod
Jedná se o skici => určité zjednodušení aby
vynikla daná zranitelnost
Chráněná část aplikace, placená funkcionalita =
aktivita
Ú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ů
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
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!
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)
Log Leakage
Zdroj:
https://developer.android.com/reference/android/util/Log.html
Log Leakage
Ukázat Log Leakage na aplikaci
BestMaps9.apk
Log Leakage
Log Leakage
Single-Jump Attack
Cenná funkcionalita
Začátek
Ochranná část kódu
Single-Jump Attack
Cenná funkcionalita
Začátek
Ochranná část kódu
:navesti
goto :navesti
Single-Jump Attack
Princip aplikace BestGame6.apk
isFirstRu
n()?
Start
MainActivity
Finish()
Vytvoří klíče a
uloží je v
KeyStore
/data/data/cz.utb.fai.bestgame6_ptlab/shared_prefs/app_protection.xml
rov
nají
se?
Rozšifrování
passwd_key
pomocí klíče z
KeyStore
Ne
Ne
Ano
Ano
Single-Jump Attack
Ukázat Single-Jump Attack na aplikaci
BestGame6.apk
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
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
Negation Attack
Jeden z důvodů proč nepoužívat single factor
authentication.
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é
Negation Attack
Princip aplikace BestMaps.apk
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
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
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();
}
}
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
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ů
}
Negation Attack
Ukázat Negation Attack na aplikaci
BestMaps.apk
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ů !!!
Removal Attack
Ukázat Removal Attack na aplikaci
BestMaps.apk
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í
Děkuji Vám za pozornost
Milan Oulehla: Bezpečnost mobilních aplikací na Androidu

More Related Content

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

Prezentace - základy bezpečnosti
Prezentace - základy bezpečnostiPrezentace - základy bezpečnosti
Prezentace - základy bezpečnostiBrilo Team
 
Smart Cards & Devices Forum 2013 - Zabezpečení mobilních bankovnictví
Smart Cards & Devices Forum 2013 - Zabezpečení mobilních bankovnictvíSmart Cards & Devices Forum 2013 - Zabezpečení mobilních bankovnictví
Smart Cards & Devices Forum 2013 - Zabezpečení mobilních bankovnictvíOKsystem
 
Bezpečnost mobilních bankovnictví
Bezpečnost mobilních bankovnictvíBezpečnost mobilních bankovnictví
Bezpečnost mobilních bankovnictvíPetr Dvorak
 
Trendy a nové možnosti test automation
Trendy a nové možnosti test automationTrendy a nové možnosti test automation
Trendy a nové možnosti test automationOndřej Machulda
 
mDevCamp 2013 - Bezpečnost mobilního bankovnictví
mDevCamp 2013 - Bezpečnost mobilního bankovnictvímDevCamp 2013 - Bezpečnost mobilního bankovnictví
mDevCamp 2013 - Bezpečnost mobilního bankovnictvíPetr Dvorak
 
QualysGuard InfoDay 2013 - Případová studie ČNB - QG WAS
QualysGuard InfoDay 2013 - Případová studie ČNB - QG WASQualysGuard InfoDay 2013 - Případová studie ČNB - QG WAS
QualysGuard InfoDay 2013 - Případová studie ČNB - QG WASRisk Analysis Consultants, s.r.o.
 
Product API in MallGroup
Product API in MallGroupProduct API in MallGroup
Product API in MallGroupJan Blaško
 
Dependency injection
Dependency injectionDependency injection
Dependency injectionJiří Matula
 
UX monday - uživatelské testování
UX monday - uživatelské testováníUX monday - uživatelské testování
UX monday - uživatelské testováníDesingdev
 
Využití chemie v procesu testování webových aplikací vytvořených pomocí techn...
Využití chemie v procesu testování webových aplikací vytvořených pomocí techn...Využití chemie v procesu testování webových aplikací vytvořených pomocí techn...
Využití chemie v procesu testování webových aplikací vytvořených pomocí techn...Michal Špaček
 
Funkční testování – chybějící vrchol pyramidy (WebExpo 2016)
Funkční testování – chybějící vrchol pyramidy (WebExpo 2016)Funkční testování – chybějící vrchol pyramidy (WebExpo 2016)
Funkční testování – chybějící vrchol pyramidy (WebExpo 2016)Ondřej Machulda
 
Úvod do analýzy - 2 část
Úvod do analýzy -  2 částÚvod do analýzy -  2 část
Úvod do analýzy - 2 částMartin Paták
 
Proč chcete testovat své aplikace
Proč chcete testovat své aplikaceProč chcete testovat své aplikace
Proč chcete testovat své aplikaceatotocz
 
Symantec Advanced Threat Protection
Symantec Advanced Threat ProtectionSymantec Advanced Threat Protection
Symantec Advanced Threat ProtectionMarketingArrowECS_CZ
 
Odpoledne se Seznamem II - Provozní bezpečnost
Odpoledne se Seznamem II - Provozní bezpečnostOdpoledne se Seznamem II - Provozní bezpečnost
Odpoledne se Seznamem II - Provozní bezpečnostchaplin06
 

Similar to Milan Oulehla: Bezpečnost mobilních aplikací na Androidu (20)

Prezentace - základy bezpečnosti
Prezentace - základy bezpečnostiPrezentace - základy bezpečnosti
Prezentace - základy bezpečnosti
 
Smart Cards & Devices Forum 2013 - Zabezpečení mobilních bankovnictví
Smart Cards & Devices Forum 2013 - Zabezpečení mobilních bankovnictvíSmart Cards & Devices Forum 2013 - Zabezpečení mobilních bankovnictví
Smart Cards & Devices Forum 2013 - Zabezpečení mobilních bankovnictví
 
Bezpečnost mobilních bankovnictví
Bezpečnost mobilních bankovnictvíBezpečnost mobilních bankovnictví
Bezpečnost mobilních bankovnictví
 
Trendy a nové možnosti test automation
Trendy a nové možnosti test automationTrendy a nové možnosti test automation
Trendy a nové možnosti test automation
 
7 omylu v IT bezpečnosti
7 omylu v IT bezpečnosti7 omylu v IT bezpečnosti
7 omylu v IT bezpečnosti
 
mDevCamp 2013 - Bezpečnost mobilního bankovnictví
mDevCamp 2013 - Bezpečnost mobilního bankovnictvímDevCamp 2013 - Bezpečnost mobilního bankovnictví
mDevCamp 2013 - Bezpečnost mobilního bankovnictví
 
QualysGuard InfoDay 2013 - Případová studie ČNB - QG WAS
QualysGuard InfoDay 2013 - Případová studie ČNB - QG WASQualysGuard InfoDay 2013 - Případová studie ČNB - QG WAS
QualysGuard InfoDay 2013 - Případová studie ČNB - QG WAS
 
QualysGuard InfoDay 2014 - WAS
QualysGuard InfoDay 2014 - WASQualysGuard InfoDay 2014 - WAS
QualysGuard InfoDay 2014 - WAS
 
Product API in MallGroup
Product API in MallGroupProduct API in MallGroup
Product API in MallGroup
 
Dependency injection
Dependency injectionDependency injection
Dependency injection
 
UX monday - uživatelské testování
UX monday - uživatelské testováníUX monday - uživatelské testování
UX monday - uživatelské testování
 
Využití chemie v procesu testování webových aplikací vytvořených pomocí techn...
Využití chemie v procesu testování webových aplikací vytvořených pomocí techn...Využití chemie v procesu testování webových aplikací vytvořených pomocí techn...
Využití chemie v procesu testování webových aplikací vytvořených pomocí techn...
 
Kefer
KeferKefer
Kefer
 
Funkční testování – chybějící vrchol pyramidy (WebExpo 2016)
Funkční testování – chybějící vrchol pyramidy (WebExpo 2016)Funkční testování – chybějící vrchol pyramidy (WebExpo 2016)
Funkční testování – chybějící vrchol pyramidy (WebExpo 2016)
 
Úvod do analýzy - 2 část
Úvod do analýzy -  2 částÚvod do analýzy -  2 část
Úvod do analýzy - 2 část
 
TNPW2-2012-06
TNPW2-2012-06TNPW2-2012-06
TNPW2-2012-06
 
Proč chcete testovat své aplikace
Proč chcete testovat své aplikaceProč chcete testovat své aplikace
Proč chcete testovat své aplikace
 
Symantec Advanced Threat Protection
Symantec Advanced Threat ProtectionSymantec Advanced Threat Protection
Symantec Advanced Threat Protection
 
TNPW2-2013-06
TNPW2-2013-06TNPW2-2013-06
TNPW2-2013-06
 
Odpoledne se Seznamem II - Provozní bezpečnost
Odpoledne se Seznamem II - Provozní bezpečnostOdpoledne se Seznamem II - Provozní bezpečnost
Odpoledne se Seznamem II - Provozní bezpečnost
 

More from mdevtalk

Jan Čislinský: Seznámení se Sourcery aneb Základy metaprogramování ve Swiftu
Jan Čislinský: Seznámení se Sourcery aneb Základy metaprogramování ve SwiftuJan Čislinský: Seznámení se Sourcery aneb Základy metaprogramování ve Swiftu
Jan Čislinský: Seznámení se Sourcery aneb Základy metaprogramování ve Swiftumdevtalk
 
Jarda Machaň: Proč je dobré míti Developer Evangelistu
Jarda Machaň: Proč je dobré míti Developer EvangelistuJarda Machaň: Proč je dobré míti Developer Evangelistu
Jarda Machaň: Proč je dobré míti Developer Evangelistumdevtalk
 
Pavel Cvetler: Jeden kód, co vládne všem? Žádný problém pro Android i iOS
Pavel Cvetler: Jeden kód, co vládne všem? Žádný problém pro Android i iOSPavel Cvetler: Jeden kód, co vládne všem? Žádný problém pro Android i iOS
Pavel Cvetler: Jeden kód, co vládne všem? Žádný problém pro Android i iOSmdevtalk
 
Anastasiia Vixentael: 10 things you need to know before implementing cryptogr...
Anastasiia Vixentael: 10 things you need to know before implementing cryptogr...Anastasiia Vixentael: 10 things you need to know before implementing cryptogr...
Anastasiia Vixentael: 10 things you need to know before implementing cryptogr...mdevtalk
 
Michal Havryluk: How To Speed Up Android Gradle Builds
Michal Havryluk: How To Speed Up Android Gradle BuildsMichal Havryluk: How To Speed Up Android Gradle Builds
Michal Havryluk: How To Speed Up Android Gradle Buildsmdevtalk
 
Vladislav Iliushin: Dark side of IoT
Vladislav Iliushin: Dark side of IoTVladislav Iliushin: Dark side of IoT
Vladislav Iliushin: Dark side of IoTmdevtalk
 
Georgiy Shur: Bring onboarding to life
Georgiy Shur: Bring onboarding to lifeGeorgiy Shur: Bring onboarding to life
Georgiy Shur: Bring onboarding to lifemdevtalk
 
David Bilík: Anko – modern way to build your layouts?
David Bilík: Anko – modern way to build your layouts?David Bilík: Anko – modern way to build your layouts?
David Bilík: Anko – modern way to build your layouts?mdevtalk
 
Maxim Zaks: Deep dive into data serialisation
Maxim Zaks: Deep dive into data serialisationMaxim Zaks: Deep dive into data serialisation
Maxim Zaks: Deep dive into data serialisationmdevtalk
 
Nikita Tuk: Handling background processes in iOS: problems & solutions
Nikita Tuk: Handling background processes in iOS: problems & solutionsNikita Tuk: Handling background processes in iOS: problems & solutions
Nikita Tuk: Handling background processes in iOS: problems & solutionsmdevtalk
 
Tomáš Kohout: Jak zrychlit iOS vývoj pomocí Swift playgoundů
Tomáš Kohout: Jak zrychlit iOS vývoj pomocí Swift playgoundůTomáš Kohout: Jak zrychlit iOS vývoj pomocí Swift playgoundů
Tomáš Kohout: Jak zrychlit iOS vývoj pomocí Swift playgoundůmdevtalk
 
David Vávra: Firebase + Kotlin + RX + MVP
David Vávra: Firebase + Kotlin + RX + MVPDavid Vávra: Firebase + Kotlin + RX + MVP
David Vávra: Firebase + Kotlin + RX + MVPmdevtalk
 
Adam Šimek: Optimalizace skrolování, RecyclerView
Adam Šimek: Optimalizace skrolování, RecyclerViewAdam Šimek: Optimalizace skrolování, RecyclerView
Adam Šimek: Optimalizace skrolování, RecyclerViewmdevtalk
 
Paul Lammertsma: Account manager & sync
Paul Lammertsma: Account manager & syncPaul Lammertsma: Account manager & sync
Paul Lammertsma: Account manager & syncmdevtalk
 
Charles Du: Introduction to Mobile UX Design
Charles Du: Introduction to Mobile UX DesignCharles Du: Introduction to Mobile UX Design
Charles Du: Introduction to Mobile UX Designmdevtalk
 
Honza Dvorský: Swift Package Manager
Honza Dvorský: Swift Package ManagerHonza Dvorský: Swift Package Manager
Honza Dvorský: Swift Package Managermdevtalk
 
David Bureš - Xamarin, IoT a Azure
David Bureš - Xamarin, IoT a AzureDavid Bureš - Xamarin, IoT a Azure
David Bureš - Xamarin, IoT a Azuremdevtalk
 
Dominik Veselý - Vše co jste kdy chtěli vědět o CI a báli jste se zeptat
Dominik Veselý - Vše co jste kdy chtěli vědět o CI a báli jste se zeptatDominik Veselý - Vše co jste kdy chtěli vědět o CI a báli jste se zeptat
Dominik Veselý - Vše co jste kdy chtěli vědět o CI a báli jste se zeptatmdevtalk
 
Jiří Dutkevič: Ochrana citlivých dat v iOS
Jiří Dutkevič: Ochrana citlivých dat v iOSJiří Dutkevič: Ochrana citlivých dat v iOS
Jiří Dutkevič: Ochrana citlivých dat v iOSmdevtalk
 
Petr Dvořák: Push notifikace ve velkém
Petr Dvořák: Push notifikace ve velkémPetr Dvořák: Push notifikace ve velkém
Petr Dvořák: Push notifikace ve velkémmdevtalk
 

More from mdevtalk (20)

Jan Čislinský: Seznámení se Sourcery aneb Základy metaprogramování ve Swiftu
Jan Čislinský: Seznámení se Sourcery aneb Základy metaprogramování ve SwiftuJan Čislinský: Seznámení se Sourcery aneb Základy metaprogramování ve Swiftu
Jan Čislinský: Seznámení se Sourcery aneb Základy metaprogramování ve Swiftu
 
Jarda Machaň: Proč je dobré míti Developer Evangelistu
Jarda Machaň: Proč je dobré míti Developer EvangelistuJarda Machaň: Proč je dobré míti Developer Evangelistu
Jarda Machaň: Proč je dobré míti Developer Evangelistu
 
Pavel Cvetler: Jeden kód, co vládne všem? Žádný problém pro Android i iOS
Pavel Cvetler: Jeden kód, co vládne všem? Žádný problém pro Android i iOSPavel Cvetler: Jeden kód, co vládne všem? Žádný problém pro Android i iOS
Pavel Cvetler: Jeden kód, co vládne všem? Žádný problém pro Android i iOS
 
Anastasiia Vixentael: 10 things you need to know before implementing cryptogr...
Anastasiia Vixentael: 10 things you need to know before implementing cryptogr...Anastasiia Vixentael: 10 things you need to know before implementing cryptogr...
Anastasiia Vixentael: 10 things you need to know before implementing cryptogr...
 
Michal Havryluk: How To Speed Up Android Gradle Builds
Michal Havryluk: How To Speed Up Android Gradle BuildsMichal Havryluk: How To Speed Up Android Gradle Builds
Michal Havryluk: How To Speed Up Android Gradle Builds
 
Vladislav Iliushin: Dark side of IoT
Vladislav Iliushin: Dark side of IoTVladislav Iliushin: Dark side of IoT
Vladislav Iliushin: Dark side of IoT
 
Georgiy Shur: Bring onboarding to life
Georgiy Shur: Bring onboarding to lifeGeorgiy Shur: Bring onboarding to life
Georgiy Shur: Bring onboarding to life
 
David Bilík: Anko – modern way to build your layouts?
David Bilík: Anko – modern way to build your layouts?David Bilík: Anko – modern way to build your layouts?
David Bilík: Anko – modern way to build your layouts?
 
Maxim Zaks: Deep dive into data serialisation
Maxim Zaks: Deep dive into data serialisationMaxim Zaks: Deep dive into data serialisation
Maxim Zaks: Deep dive into data serialisation
 
Nikita Tuk: Handling background processes in iOS: problems & solutions
Nikita Tuk: Handling background processes in iOS: problems & solutionsNikita Tuk: Handling background processes in iOS: problems & solutions
Nikita Tuk: Handling background processes in iOS: problems & solutions
 
Tomáš Kohout: Jak zrychlit iOS vývoj pomocí Swift playgoundů
Tomáš Kohout: Jak zrychlit iOS vývoj pomocí Swift playgoundůTomáš Kohout: Jak zrychlit iOS vývoj pomocí Swift playgoundů
Tomáš Kohout: Jak zrychlit iOS vývoj pomocí Swift playgoundů
 
David Vávra: Firebase + Kotlin + RX + MVP
David Vávra: Firebase + Kotlin + RX + MVPDavid Vávra: Firebase + Kotlin + RX + MVP
David Vávra: Firebase + Kotlin + RX + MVP
 
Adam Šimek: Optimalizace skrolování, RecyclerView
Adam Šimek: Optimalizace skrolování, RecyclerViewAdam Šimek: Optimalizace skrolování, RecyclerView
Adam Šimek: Optimalizace skrolování, RecyclerView
 
Paul Lammertsma: Account manager & sync
Paul Lammertsma: Account manager & syncPaul Lammertsma: Account manager & sync
Paul Lammertsma: Account manager & sync
 
Charles Du: Introduction to Mobile UX Design
Charles Du: Introduction to Mobile UX DesignCharles Du: Introduction to Mobile UX Design
Charles Du: Introduction to Mobile UX Design
 
Honza Dvorský: Swift Package Manager
Honza Dvorský: Swift Package ManagerHonza Dvorský: Swift Package Manager
Honza Dvorský: Swift Package Manager
 
David Bureš - Xamarin, IoT a Azure
David Bureš - Xamarin, IoT a AzureDavid Bureš - Xamarin, IoT a Azure
David Bureš - Xamarin, IoT a Azure
 
Dominik Veselý - Vše co jste kdy chtěli vědět o CI a báli jste se zeptat
Dominik Veselý - Vše co jste kdy chtěli vědět o CI a báli jste se zeptatDominik Veselý - Vše co jste kdy chtěli vědět o CI a báli jste se zeptat
Dominik Veselý - Vše co jste kdy chtěli vědět o CI a báli jste se zeptat
 
Jiří Dutkevič: Ochrana citlivých dat v iOS
Jiří Dutkevič: Ochrana citlivých dat v iOSJiří Dutkevič: Ochrana citlivých dat v iOS
Jiří Dutkevič: Ochrana citlivých dat v iOS
 
Petr Dvořák: Push notifikace ve velkém
Petr Dvořák: Push notifikace ve velkémPetr Dvořák: Push notifikace ve velkém
Petr Dvořák: Push notifikace ve velkém
 

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