SlideShare a Scribd company logo
Testowanie bezpieczeństwa 
aplikacji mobilnych 
Sławomir Jasek
Dzień dobry! 
Sławomir Jasek 
Pentester / konsultant bezpieczeństwa 
Od 2003 roku: 
Ocena bezpieczeństwa aplikacji, systemów, sieci... 
Najskuteczniej pomagamy już od etapu projektowania.
Co będzie 
● Spojrzenie pentestera (= intruza) na aplikacje mobilne 
● Testowanie – na przykładach głównie Android 
– Analiza paczki i kodu 
– Dane zapisywane w urządzeniu i w logach 
– RPC 
– Transmisja 
– API 
● Podsumowanie
Aplikacja mobilna – spojrzenie intruza 
RPC 
UŻYTKOWNIK 
SIEĆ 
ZAPIS 
DANYCH 
OS
Jak? 
Inna aplikacja na 
urządzeniu 
Podatności systemu 
Kradzież, zgubienie 
urządzenia, przypadkowy 
dostęp, inna aplikacja... 
Social engineering, 
słabości użytkowników 
np. słabe hasło, zbyt 
trudne mechanizmy 
Ataki na 
transmisję - 
podsłuch, 
słabości SSL 
API – błędy kontroli 
dostępu, logiczne, 
konfiguracji... 
Analiza 
paczki
Kto? 
„grubszy cwaniak” 
„script-kiddie” 
Krzysztof Jarzyna 
ze Szczecina 
Dorwał się do narzędzi, 
wali na oślep, zwykle nie 
bardzo rozumiejąc co się 
dzieje. 
Coś mu się przypadkiem 
udało (lub nie), i afera 
gotowa. 
Ma motywację, zasoby 
oraz możliwości 
przeprowadzenia ataku 
nakierowanego
Po co? 
● Jak to po co? 
Bo może! 
● Dla sławy! 
● Dla satysfakcji 
● Dla pieniędzy 
● Dla innych korzyści 
● ... 
https://www.flickr.com/photos/viirok/2498157861
Paczka aplikacji 
PLAY / STORE
Paczka aplikacji 
● Android 
– Aplikacje bez root 
np. „My App Sharer” 
– APK Leecher 
– Playdrone – masowe 
pobieranie do chmury 
– (nie wspominając root) 
● iOS, inne – DRM nie jest problemem
Rozpakowanie, dekompilacja...
Analiza kodu 
● Do ataku jakiegoś procesu przydaje się rozumieć 
jak on działa 
● Własna kryptografia, błędy implementacji... 
● Hasła, klucze, tokeny zaszyte w aplikacji 
Np. tokeny FB, Google, MS, Yahoo i Linkedin aplikacji Airb2b – 10 milionów użytkowników 
http://viennot.com/playdrone.pdf 
● Tak, znaleźliśmy token FB w aplikacji ;)
Przykład 
● Przesyłanie mailem danych do „bazy” – 
support@pewnafirma.com 
● Założenie : wysyłamy bezpośrednio przez nasz serwer 
pocztowy – mail.pewnafirma.com, nie angażujemy kont 
użytkownika 
● Serwer oczywiście nie jest open-relayem, do wysłania maila 
wymaga uwierzytelnienia 
● Hasło zaszyte w aplikacji 
● Co możemy zrobić? (oprócz wysyłania spamu) 
To samo hasło do POP3 = dostęp do skrzynki!
Wytęż wzrok i znajdź klucz „szyfrujący” 
w zaobfuskowanym kodzie 
public final class a 
implements b 
{ 
private static final char[] a = { 67,72,65,82,84,79,83,67,72,76,85,68,78,73,69 }; 
private static void a(char[] paramArrayOfChar, char paramChar) 
{ 
paramArrayOfChar[0] = paramChar; int i = 0; 
if (i < paramArrayOfChar.length) 
{ 
if (i % 2 == 0) { paramArrayOfChar[i] = a[(i % a.length)]; } 
for (;;) 
{ 
i++; break; paramArrayOfChar[0] = paramChar; 
} 
} 
}
Wytęż wzrok i znajdź klucz „szyfrujący” 
w zaobfuskowanym kodzie 
public final class a 
implements b 
{ 
private static final char[] a = { 67,72,65,82,84,79,83,67,72,76,85,68,78,73,69 }; 
private static void a(char[] paramArrayOfChar, char paramChar) 
{ 
paramArrayOfChar[0] = paramChar; int i = 0; 
if (i < paramArrayOfChar.length) 
{ 
if (i % 2 == 0) { paramArrayOfChar[i] = a[(i % a.length)]; } 
for (;;) 
{ 
i++; break; paramArrayOfChar[0] = paramChar; 
} 
} 
} 
„CHARSCHLUDNIE”
Manifest, analiza uprawnień...
Dane zapisywane na urządzeniu 
Kradzież, zgubienie 
urządzenia, przypadkowy 
dostęp, inna aplikacja...
Jak to sprawdzić 
● Ręcznie: adb pull na różnych etapach pracy aplikacji 
• Automaty, skrypty – np. wrzucanie do svn
Uprawnienia plików
Logi, cache... 
● Dość często zawierają pełne żądania HTTP, 
wprowadzane klawisze – np. hasło użytkownika 
INSERT INTO "cfurl_cache_response" 
VALUES(2,0,1594297610,0,'http://dev/service/auth/createFirstSession?password=35 
971831&sessionId=857006 &userId=24384344','1970-01-21 23:03:36');
Logi, cache... 
● Dość często zawierają pełne żądania HTTP, 
wprowadzane klawisze – np. hasło użytkownika 
I/System.out( 1098): BaseActivity calling: /login onResponseData: 
{"response":{"mask":"c794ffa2ffbdffc180ff41ff","phi":"/(...) 
D/InputEventConsistencyVerifier( 1098): 0: sent at 6529438000000, KeyEvent { action=ACTION_UP, 
keyCode=KEYCODE_3, scanCode=4, metaState=0, flags=0x8, repeatCount=0, eventTime=6529438, 
downTime=6529371, deviceId=0, source=0x301 } 
D/InputEventConsistencyVerifier( 1098): 0: sent at 6532144000000, KeyEvent { action=ACTION_UP, 
keyCode=KEYCODE_5, scanCode=6, metaState=0, flags=0x8, repeatCount=0, eventTime=6532144, 
downTime=6532032, deviceId=0, source=0x301 } 
D/InputEventConsistencyVerifier( 1098): 0: sent at 6534378000000, KeyEvent { action=ACTION_UP, 
keyCode=KEYCODE_7, scanCode=8, metaState=0, flags=0x8, repeatCount=0, eventTime=6534378, 
downTime=6534277, deviceId=0, source=0x301 } 
D/InputEventConsistencyVerifier( 1098): 0: sent at 6536876000000, KeyEvent { action=ACTION_UP, 
keyCode=KEYCODE_0, scanCode=11, metaState=0, flags=0x8, repeatCount=0, eventTime=6536876, 
downTime=6536811, deviceId=0, source=0x301 } 
I/System.out( 1098): BaseActivity calling: /login/maskedPassword onResponseData: 
{"response":{"state":"A","authenticated":true},"msgId":"1344674218830418930","errorCode":0,"time" 
:1351588394408,"errorDesc":""}
Logi, cache – skutki 
● Warunki wykorzystania trudne do spełnienia 
– Kto może te logi czytać? 
– Jak długo są przetrzymywane? 
– Czy problem dotyczy tylko jednego feralnego builda? 
– Czy problem występuje na wszystkich wersjach OS? 
– Jakie dodatkowe warunki muszą być spełnione? 
– ... 
● Ale to może nie mieć żadnego znaczenia w obliczu 
klęski wizerunkowej – np. Starbucks, styczeń 2014
Logi, cache – skutki 
● Warunki wykorzystania trudne do spełnienia 
– Kto może te logi czytać? 
– Jak długo są przetrzymywane? 
– Czy problem dotyczy tylko jednego feralnego builda? 
– Czy problem występuje na wszystkich wersjach OS? 
– Jakie dodatkowe warunki muszą być spełnione? 
– ... 
● Ale to może nie mieć żadnego znaczenia w obliczu 
klęski wizerunkowej – np. Starbucks, styczeń 2014
Logi, cache – skutki 
● Warunki wykorzystania trudne do spełnienia 
– Kto może te logi czytać? 
– Jak długo są przetrzymywane? 
– Czy problem dotyczy tylko jednego feralnego builda? 
– Czy problem występuje na wszystkich wersjach OS? 
– Jakie dodatkowe warunki muszą być spełnione? 
– ... 
● Ale to może nie mieć żadnego znaczenia w obliczu 
klęski wizerunkowej – np. Starbucks, styczeń 2014
Logi, cache – skutki 
● Warunki wykorzystania trudne do spełnienia 
– Kto może te logi czytać? 
– Jak długo są przetrzymywane? 
– Czy problem dotyczy tylko jednego feralnego builda? 
– Czy problem występuje na wszystkich wersjach OS? 
– Jakie dodatkowe warunki muszą być spełnione? 
– ... 
● Ale to może nie mieć żadnego znaczenia w obliczu 
klęski wizerunkowej – np. Starbucks, styczeń 2014
Logi, cache – skutki 
● Warunki wykorzystania trudne do spełnienia 
– Kto może te logi czytać? 
– Jak długo są przetrzymywane? 
– Czy problem dotyczy tylko jednego feralnego builda? 
– Czy problem występuje na wszystkich wersjach OS? 
– Jakie dodatkowe warunki muszą być spełnione? 
– ... 
● Ale to może nie mieć żadnego znaczenia w obliczu 
klęski wizerunkowej – np. Starbucks, styczeń 2014
Logi, cache – skutki 
● Warunki wykorzystania trudne do spełnienia 
– Kto może te logi czytać? 
– Jak długo są przetrzymywane? 
– Czy problem dotyczy tylko jednego feralnego builda? 
– Czy problem występuje na wszystkich wersjach OS? 
– Jakie dodatkowe warunki muszą być spełnione? 
– ... 
● Ale to może nie mieć żadnego znaczenia w obliczu 
klęski wizerunkowej – np. Starbucks, styczeń 2014
Logi, cache – skutki 
● Warunki wykorzystania trudne do spełnienia 
– Kto może te logi czytać? 
– Jak długo są przetrzymywane? 
– Czy problem dotyczy tylko jednego feralnego builda? 
– Czy problem występuje na wszystkich wersjach OS? 
– Jakie dodatkowe warunki muszą być spełnione? 
– ... 
● Ale to może nie mieć żadnego znaczenia w obliczu 
klęski wizerunkowej – np. Starbucks, styczeń 2014
RPC 
Inna aplikacja na 
urządzeniu
BAD INTENTions 
<receiver android:name =“MojReceiver”> 
<intent -filter> 
<action android:name = "android.intent.action.PACKAGE_ADDED" 
String action = intent.getAction(); 
if (action...)
BAD INTENTions 
<receiver android:name =“MojReceiver”> 
<intent -filter> 
<action android:name = "android.intent.action.PACKAGE_ADDED" 
String action = intent.getAction(); 
if (action...) 
Intent intent = new Intent(); 
intent.setComponent (“MojReceiver”); 
sendBroadcast(intent);
BAD INTENTions 
<receiver android:name =“MojReceiver”> 
<intent -filter> 
<action android:name = "android.intent.action.PACKAGE_ADDED" 
String action = intent.getAction(); 
if (action...) 
Intent intent = new Intent(); 
intent.setComponent (“MojReceiver”); 
sendBroadcast(intent); 
Nullpointer exception 
CRASH
BAD INTENTions 
<receiver android:name =“MojReceiver”> 
<intent -filter> 
<action android:name = "android.intent.action.PACKAGE_ADDED" 
String action = intent.getAction(); 
if (action action...) 
!= null ){ 
if(action...) 
Intent intent = new Intent(); 
intent.setComponent (“MojReceiver”); 
sendBroadcast(intent); 
Nullpointer exception 
CRASH
BAD INTENTions 
<receiver android:name =“MojReceiver”> 
<intent -filter> 
<action android:name = "android.intent.action.PACKAGE_ADDED" 
String action = intent.getAction(); 
if (action != null) ){ 
Uid = intent.getStringExtra(“android.intent.extra.UID”);
BAD INTENTions 
<receiver android:name =“MojReceiver”> 
<intent -filter> 
<action android:name = "android.intent.action.PACKAGE_ADDED" 
String action = intent.getAction(); 
if (action != null) ){ 
Uid = intent.getStringExtra(“android.intent.extra.UID”); 
Intent intent = new Intent (“AKUKU”); 
intent.setComponent (“MojReceiver”); 
intent.putExtra (“android.intent.extra.UID”, attackerUID); 
sendBroadcast(intent);
BAD INTENTions 
<receiver android:name =“MojReceiver”> 
<intent -filter> 
<action android:name = "android.intent.action.PACKAGE_ADDED" 
String action = intent.getAction(); 
if (action != null) ){ 
null && action.equals (“PACKAGE_ADDED”) ){ 
Uid = intent.getStringExtra(“android.intent.extra.UID”); 
Intent intent = new Intent (“AKUKU”); 
intent.setComponent (“MojReceiver”); 
intent.putExtra (“android.intent.extra.UID”, attackerUID); 
sendBroadcast(intent);
BAD INTENTions 
<permission android:name ="com.dobreprogramy.permission" 
android:protectionLevel = "signature" ... 
<receiver android:name ="dobryReceiver" android:exported="true" 
android:permission="com.dobreprogramy.permission"> 
... 
</receiver>
BAD INTENTions 
<permission android:name ="com.dobreprogramy.permission" 
android:protectionLevel = "signature" ... 
<receiver android:name ="dobryReceiver" android:exported="true" 
android:permission="com.dobreprogramy.permission"> 
... 
</receiver> 
Intruz może zarejestrować to samo wcześniej 
<permission android:name ="com.dobreprogramy.permission" 
android:protectionLevel="normal" ...> 
<uses-permission android:name ="com.dobreprogramy.permission"/>
Analiza/atak RPC 
● Mnóstwo narzędzi 
– Drozer 
https://www.mwrinfosecurity.com/products/drozer/ 
– Android Hooker, comdroid, chex, epicc, iSEC intent 
fuzzer/sniffer... 
● Ręcznie 
am broadcast -n com.aplikacja/com.aplikacja.BroadcastReceiver 
am start -a android.intent.action.CALL -d tel://000-0000
Transmisja 
Intruz musi mieć dostęp 
do transmisji – pasywny 
(podsłuch), lub aktywny – 
aby modyfikować ruch 
Ataki na 
transmisję - 
podsłuch, 
słabości SSL
Przechwytywanie ruchu 
● Local proxy – co się dzieje „na łączu” (np. żądania HTTP) 
– Burp: wersja darmowa na początek wystarczy 
portswigger.net/burp 
– Fiddler – MS 
www.telerik.com/fiddler 
– wiele innych 
● Emulator przez proxy: 
www.telerik.com/fiddler/ 
emulator -avd emu -http-proxy 127.0.0.1:8080
SSL – wróćmy do podstaw 
CA
Co zrobi klient? 
● Jeśli ten sam certyfikat byłby 
podpisany innym CA? 
[POWINIEN] wyświetlić 
ostrzeżenie, przerwać 
transmisję... 
Zaakceptuje bez 
mrugnięcia. 
CA nie jest w 
zaufanych 
CA w zaufanych
Certyfikaty CA zaszyte w urządzeniach 
● Ćwiczenie: sprawdź jakie CA masz w swoim 
telefonie 
● Np. iOS8 ma m.in. certyfikaty rządów: 
Chin: China Internet Network Information Center 
Hong Kongu: Hongkong Post e-Cert. 
Japonii: 3 CA 
Holandii: 3 CA (PKIoverheid) 
Taiwanu: Government Root Certification Authority 
Turcji: Scientific and Technological Research Council of Turkey 
USA: 5 CA, Department of Defense
SSL – „Man in the middle” 
CA 
? 
Verisign 
www.pewnafirma.pl 
Verisign 
www.pewnafirma.pl
Stosunkowo często... 
sslcontext = SSLContext.getInstance("TLS"); 
atrustmanager = new TrustManager[1]; 
atrustmanager[0] = new EasyX509TrustManager(null); 
sslcontext.init(null, atrustmanager, null); 
Pusty TrustManager – akceptuje wszystkie certyfikaty
Przechwytywanie ruchu SSL 
● Certyfikat CA Burp-a
Instalujemy w urządzeniu 
● Aplikacja używa domyślnego 
truststore urządzenia 
– Android > 4 – w interfejsie 
– Wrzucamy na kartę SD (plik .crt) 
adb push cacert.der /sdcard/cacert.crt 
– „Zainstaluj z karty SD” 
● Certyfikat zaszyty w aplikacji 
(pinning) 
– Podmieniamy w paczce aplikacji
API 
API – błędy kontroli 
dostępu, logiczne, 
konfiguracji...
Mobile CAPTCHA 
● Proces rejestracji, potwierdzanej SMS 
● CAPTCHA w celu ograniczenia masowego 
nadużycia procesu (koszty SMS, przeciążenie 
systemu...) 
● Należy kliknąć w odpowiedni obrazek (1 z 6)
Mobile CAPTCHA 
● Pomysł chybiony już w założeniach 
– Prawdopodobieństwo trafienia „na ślepo” bardzo 
wysokie 
● W implementacji jeszcze gorzej 
– Każdy obrazek to inny statyczny plik, intruz może je zindeksować 
i ustalić w którym miejscu jest obrazek przedstawiający żądane 
słowo
REST API 
fragment otrzymanej dokumentacji REST API
Historia rachunku
Żądanie HTTP po przechwyceniu 
GET /services/history/account/85101022350445200448009906 45101022350445200448005388 HTTP/1.1 
SA-DeviceId: 940109f08ba56a89 
SA-SessionId: 826175 
Accept: application/json 
Host: acc 
Connection: Keep-Alive 
User-Agent: Apache-HttpClient/UNAVAILABLE (java 1.4) 
Podmiana nr rachunku – uzyskujemy cudze dane
Dane użytkownika 
Użytkownik 1 
GET /services/user/profile HTTP/1.1 
SA-DeviceId: d4c79a0fd994b1f8 
SA-SessionId: 850071 
Accept: application/json 
Host: acc 
Connection: Keep-Alive 
User-Agent: Apache-HttpClient/UNAVAILABLE (java 1.4)
Dane użytkownika 
Użytkownik 1 
2 
GET /services/user/profile HTTP/1.1 
SA-DeviceId: d4c79a0fd994b1f8 
940109f08ba56a89 
SA-SessionId: 850075 
850071 
Accept: application/json 
Host: acc 
Connection: Keep-Alive 
User-Agent: Apache-HttpClient/UNAVAILABLE (java 1.4) 
DeviceId jedynym zabezpieczeniem
Historia pewnej aplikacji... 
● Mnóstwo błędów kontroli dostępu 
● Po zgłoszeniu dostawcy: 
„Kontrola dostępu w aplikacji jest, tylko na 
testowym środowisku wyłączona” 
● Pomimo napiętych terminów włączyć się udało 
dopiero po kilku tygodniach ;)
Przechwytywanie ruchu – utrudnienie
Prawdopodobnie powstrzyma 
przypadkowych... 
http://www.recreateweb.com.au/web-development/respond-2014-what-responsive-web-design-can-learn-from-accessibility-best-practice/
...oraz masowych intruzów 
http://www.recreateweb.com.au/web-development/respond-2014-what-responsive-web-design-can-learn-from-accessibility-best-practice/
A Was? 
#1 – żeby coś zaatakować 
trzeba zrozumieć jak to działa 
https://www.flickr.com/photos/itspaulkelly/633298765
Zaszyfrowany ruch 
KLUCZ PUBLICZNY 
Jak się dobrać do transmisji? 
LOSOWY 
KLUCZ SESJI 
SESYJNY DO SERWERA 
TRANSMISJA ZASZYFROWANA 
KLUCZEM SESJI
Drobne usprawnienie aplikacji 
– stały klucz w SMALI 
new-array v8, v8, [B 
fill-array-data v8, :array_5a 
return-object v8 
:array_5a 
.array-data 1 
0x44t 
0x2bt 
0x72t 
(...)
Burp extension
Burp extension
Burp Extension
Burp Extension
Burp Extension
Architektura, środowisko
Znane podatności
Konsole administracyjne
Konsole administracyjne
Niektóre schwytane problemy REST 
● Błędy kontroli dostępu 
● Nieprawidłowa obsługa sesji 
● Błędy uwierzytelnienia i 
autoryzacji 
● Błędy logiczne 
● SQL injection 
● Błędy architektury/konfiguracji 
● ... 
https://www.flickr.com/photos/elycefeliz/6648603999
Część z ryzyk do ogarnięcia
OWASP Mobile Top 10
Czekamy na Was! 
Darmowe konsultacje: 
www.securing.pl/konsultacje 
Pracuj z nami: 
http://www.securing.pl/pl/kariera.html 
slawomir.jasek@securing.pl

More Related Content

What's hot

Bankowość i płatności mobilne - Jak zrobić to bezpiecznie?
Bankowość i płatności mobilne - Jak zrobić to bezpiecznie?Bankowość i płatności mobilne - Jak zrobić to bezpiecznie?
Bankowość i płatności mobilne - Jak zrobić to bezpiecznie?
SecuRing
 
Możliwości złośliwego oprogramowania na platformy mobilne
Możliwości złośliwego oprogramowania na platformy mobilneMożliwości złośliwego oprogramowania na platformy mobilne
Możliwości złośliwego oprogramowania na platformy mobilne
SecuRing
 
Pentester - fakty i mity
Pentester - fakty i mityPentester - fakty i mity
Pentester - fakty i mity
Logicaltrust pl
 
Co z bezpieczeństwem aplikacji mobilnych? - studium przypadków (KrakWhiteHat ...
Co z bezpieczeństwem aplikacji mobilnych? - studium przypadków (KrakWhiteHat ...Co z bezpieczeństwem aplikacji mobilnych? - studium przypadków (KrakWhiteHat ...
Co z bezpieczeństwem aplikacji mobilnych? - studium przypadków (KrakWhiteHat ...
Logicaltrust pl
 
OWASP Mobile TOP 10 na przykładzie aplikacji bankowych - Semafor 2016 - Mateu...
OWASP Mobile TOP 10 na przykładzie aplikacji bankowych - Semafor 2016 - Mateu...OWASP Mobile TOP 10 na przykładzie aplikacji bankowych - Semafor 2016 - Mateu...
OWASP Mobile TOP 10 na przykładzie aplikacji bankowych - Semafor 2016 - Mateu...
Logicaltrust pl
 
Wyciek danych w aplikacjach - Artur Kalinowski, 4Developers
Wyciek danych w aplikacjach - Artur Kalinowski, 4DevelopersWyciek danych w aplikacjach - Artur Kalinowski, 4Developers
Wyciek danych w aplikacjach - Artur Kalinowski, 4Developers
Logicaltrust pl
 
Testy bezpieczeństwa - niesztampowe przypadki
Testy bezpieczeństwa - niesztampowe przypadkiTesty bezpieczeństwa - niesztampowe przypadki
Testy bezpieczeństwa - niesztampowe przypadki
Logicaltrust pl
 
Narzędzia do zautomatyzowanego testowania bezpieczeństwa aplikacji WWW
Narzędzia do zautomatyzowanego testowania bezpieczeństwa aplikacji WWWNarzędzia do zautomatyzowanego testowania bezpieczeństwa aplikacji WWW
Narzędzia do zautomatyzowanego testowania bezpieczeństwa aplikacji WWW
Logicaltrust pl
 
Urządzenia i usługi bezpieczeństwa IT - pełna ochrona czy... zaproszenie dla ...
Urządzenia i usługi bezpieczeństwa IT - pełna ochrona czy... zaproszenie dla ...Urządzenia i usługi bezpieczeństwa IT - pełna ochrona czy... zaproszenie dla ...
Urządzenia i usługi bezpieczeństwa IT - pełna ochrona czy... zaproszenie dla ...
Logicaltrust pl
 
Czy systematyczne podejście do testów bezpieczeństwa się opłaca?
Czy systematyczne podejście do testów bezpieczeństwa się opłaca?Czy systematyczne podejście do testów bezpieczeństwa się opłaca?
Czy systematyczne podejście do testów bezpieczeństwa się opłaca?
Logicaltrust pl
 
Jak tworzyć bezpieczne aplikacje?
Jak tworzyć bezpieczne aplikacje?Jak tworzyć bezpieczne aplikacje?
Jak tworzyć bezpieczne aplikacje?
SecuRing
 
Wyzwania dla bezpieczeństwa związane z nowymi technologiami w aplikacjach ban...
Wyzwania dla bezpieczeństwa związane z nowymi technologiami w aplikacjach ban...Wyzwania dla bezpieczeństwa związane z nowymi technologiami w aplikacjach ban...
Wyzwania dla bezpieczeństwa związane z nowymi technologiami w aplikacjach ban...
SecuRing
 
Devops/Sysops security
Devops/Sysops securityDevops/Sysops security
Devops/Sysops security
Logicaltrust pl
 
Krytyczne błędy konfiguracji
Krytyczne błędy konfiguracjiKrytyczne błędy konfiguracji
Krytyczne błędy konfiguracji
Logicaltrust pl
 
Devops security
Devops securityDevops security
Devops security
Logicaltrust pl
 
Hacking Internet of Things
Hacking Internet of ThingsHacking Internet of Things
Hacking Internet of Things
SecuRing
 
JDD2014/ 4Developers 2015: Błędy uwierzytelniania i zarządzania sesją w JEE -...
JDD2014/ 4Developers 2015: Błędy uwierzytelniania i zarządzania sesją w JEE -...JDD2014/ 4Developers 2015: Błędy uwierzytelniania i zarządzania sesją w JEE -...
JDD2014/ 4Developers 2015: Błędy uwierzytelniania i zarządzania sesją w JEE -...
PROIDEA
 
Wyscig o czynnik ludzki
Wyscig o czynnik ludzkiWyscig o czynnik ludzki
Wyscig o czynnik ludzki
Artur Marek Maciąg
 
[Confidence 2016] Red Team - najlepszy przyjaciel Blue Teamu
[Confidence 2016] Red Team - najlepszy przyjaciel Blue Teamu[Confidence 2016] Red Team - najlepszy przyjaciel Blue Teamu
[Confidence 2016] Red Team - najlepszy przyjaciel Blue Teamu
Piotr Kaźmierczak
 
Czy twoje zabezpieczenia są skuteczne? Błędy i podatności w rozwiązaniach zab...
Czy twoje zabezpieczenia są skuteczne? Błędy i podatności w rozwiązaniach zab...Czy twoje zabezpieczenia są skuteczne? Błędy i podatności w rozwiązaniach zab...
Czy twoje zabezpieczenia są skuteczne? Błędy i podatności w rozwiązaniach zab...
SecuRing
 

What's hot (20)

Bankowość i płatności mobilne - Jak zrobić to bezpiecznie?
Bankowość i płatności mobilne - Jak zrobić to bezpiecznie?Bankowość i płatności mobilne - Jak zrobić to bezpiecznie?
Bankowość i płatności mobilne - Jak zrobić to bezpiecznie?
 
Możliwości złośliwego oprogramowania na platformy mobilne
Możliwości złośliwego oprogramowania na platformy mobilneMożliwości złośliwego oprogramowania na platformy mobilne
Możliwości złośliwego oprogramowania na platformy mobilne
 
Pentester - fakty i mity
Pentester - fakty i mityPentester - fakty i mity
Pentester - fakty i mity
 
Co z bezpieczeństwem aplikacji mobilnych? - studium przypadków (KrakWhiteHat ...
Co z bezpieczeństwem aplikacji mobilnych? - studium przypadków (KrakWhiteHat ...Co z bezpieczeństwem aplikacji mobilnych? - studium przypadków (KrakWhiteHat ...
Co z bezpieczeństwem aplikacji mobilnych? - studium przypadków (KrakWhiteHat ...
 
OWASP Mobile TOP 10 na przykładzie aplikacji bankowych - Semafor 2016 - Mateu...
OWASP Mobile TOP 10 na przykładzie aplikacji bankowych - Semafor 2016 - Mateu...OWASP Mobile TOP 10 na przykładzie aplikacji bankowych - Semafor 2016 - Mateu...
OWASP Mobile TOP 10 na przykładzie aplikacji bankowych - Semafor 2016 - Mateu...
 
Wyciek danych w aplikacjach - Artur Kalinowski, 4Developers
Wyciek danych w aplikacjach - Artur Kalinowski, 4DevelopersWyciek danych w aplikacjach - Artur Kalinowski, 4Developers
Wyciek danych w aplikacjach - Artur Kalinowski, 4Developers
 
Testy bezpieczeństwa - niesztampowe przypadki
Testy bezpieczeństwa - niesztampowe przypadkiTesty bezpieczeństwa - niesztampowe przypadki
Testy bezpieczeństwa - niesztampowe przypadki
 
Narzędzia do zautomatyzowanego testowania bezpieczeństwa aplikacji WWW
Narzędzia do zautomatyzowanego testowania bezpieczeństwa aplikacji WWWNarzędzia do zautomatyzowanego testowania bezpieczeństwa aplikacji WWW
Narzędzia do zautomatyzowanego testowania bezpieczeństwa aplikacji WWW
 
Urządzenia i usługi bezpieczeństwa IT - pełna ochrona czy... zaproszenie dla ...
Urządzenia i usługi bezpieczeństwa IT - pełna ochrona czy... zaproszenie dla ...Urządzenia i usługi bezpieczeństwa IT - pełna ochrona czy... zaproszenie dla ...
Urządzenia i usługi bezpieczeństwa IT - pełna ochrona czy... zaproszenie dla ...
 
Czy systematyczne podejście do testów bezpieczeństwa się opłaca?
Czy systematyczne podejście do testów bezpieczeństwa się opłaca?Czy systematyczne podejście do testów bezpieczeństwa się opłaca?
Czy systematyczne podejście do testów bezpieczeństwa się opłaca?
 
Jak tworzyć bezpieczne aplikacje?
Jak tworzyć bezpieczne aplikacje?Jak tworzyć bezpieczne aplikacje?
Jak tworzyć bezpieczne aplikacje?
 
Wyzwania dla bezpieczeństwa związane z nowymi technologiami w aplikacjach ban...
Wyzwania dla bezpieczeństwa związane z nowymi technologiami w aplikacjach ban...Wyzwania dla bezpieczeństwa związane z nowymi technologiami w aplikacjach ban...
Wyzwania dla bezpieczeństwa związane z nowymi technologiami w aplikacjach ban...
 
Devops/Sysops security
Devops/Sysops securityDevops/Sysops security
Devops/Sysops security
 
Krytyczne błędy konfiguracji
Krytyczne błędy konfiguracjiKrytyczne błędy konfiguracji
Krytyczne błędy konfiguracji
 
Devops security
Devops securityDevops security
Devops security
 
Hacking Internet of Things
Hacking Internet of ThingsHacking Internet of Things
Hacking Internet of Things
 
JDD2014/ 4Developers 2015: Błędy uwierzytelniania i zarządzania sesją w JEE -...
JDD2014/ 4Developers 2015: Błędy uwierzytelniania i zarządzania sesją w JEE -...JDD2014/ 4Developers 2015: Błędy uwierzytelniania i zarządzania sesją w JEE -...
JDD2014/ 4Developers 2015: Błędy uwierzytelniania i zarządzania sesją w JEE -...
 
Wyscig o czynnik ludzki
Wyscig o czynnik ludzkiWyscig o czynnik ludzki
Wyscig o czynnik ludzki
 
[Confidence 2016] Red Team - najlepszy przyjaciel Blue Teamu
[Confidence 2016] Red Team - najlepszy przyjaciel Blue Teamu[Confidence 2016] Red Team - najlepszy przyjaciel Blue Teamu
[Confidence 2016] Red Team - najlepszy przyjaciel Blue Teamu
 
Czy twoje zabezpieczenia są skuteczne? Błędy i podatności w rozwiązaniach zab...
Czy twoje zabezpieczenia są skuteczne? Błędy i podatności w rozwiązaniach zab...Czy twoje zabezpieczenia są skuteczne? Błędy i podatności w rozwiązaniach zab...
Czy twoje zabezpieczenia są skuteczne? Błędy i podatności w rozwiązaniach zab...
 

Similar to Testowanie bezpieczenstwa aplikacji mobilnych

Testowanie bezpieczeństwa aplikacji mobilnych
Testowanie bezpieczeństwa aplikacji mobilnychTestowanie bezpieczeństwa aplikacji mobilnych
Testowanie bezpieczeństwa aplikacji mobilnych
Slawomir Jasek
 
Jak stworzyć udany system informatyczny
Jak stworzyć udany system informatycznyJak stworzyć udany system informatyczny
Jak stworzyć udany system informatyczny
qbeuek
 
Shall we play a game? PL version
Shall we play a game? PL versionShall we play a game? PL version
Shall we play a game? PL version
Maciej Lasyk
 
Jak kraść miliony, czyli o błędach bezpieczeństwa, które mogą spotkać również...
Jak kraść miliony, czyli o błędach bezpieczeństwa, które mogą spotkać również...Jak kraść miliony, czyli o błędach bezpieczeństwa, które mogą spotkać również...
Jak kraść miliony, czyli o błędach bezpieczeństwa, które mogą spotkać również...
The Software House
 
Praktyczne code reviews - PHPConPl
Praktyczne code reviews - PHPConPlPraktyczne code reviews - PHPConPl
Praktyczne code reviews - PHPConPl
Sebastian Marek
 
4Developers 2015: Frameworki jee vs cross-site scripting (xss) - Piotr Bucki
4Developers 2015: Frameworki jee vs cross-site scripting (xss) - Piotr Bucki4Developers 2015: Frameworki jee vs cross-site scripting (xss) - Piotr Bucki
4Developers 2015: Frameworki jee vs cross-site scripting (xss) - Piotr Bucki
PROIDEA
 
[Quality Meetup #9] TestOps, QAOps - czy ktoś taki istnieje? - Aleksandra Kor...
[Quality Meetup #9] TestOps, QAOps - czy ktoś taki istnieje? - Aleksandra Kor...[Quality Meetup #9] TestOps, QAOps - czy ktoś taki istnieje? - Aleksandra Kor...
[Quality Meetup #9] TestOps, QAOps - czy ktoś taki istnieje? - Aleksandra Kor...
Future Processing
 
Jak zacząć, aby nie żałować - czyli 50 twarzy PHP
Jak zacząć, aby nie żałować - czyli 50 twarzy PHPJak zacząć, aby nie żałować - czyli 50 twarzy PHP
Jak zacząć, aby nie żałować - czyli 50 twarzy PHP
Piotr Horzycki
 
Pocałunek śmierci
Pocałunek śmierciPocałunek śmierci
Pocałunek śmierciDivante
 
Testowanie na 101 sposobów
Testowanie na 101 sposobówTestowanie na 101 sposobów
Testowanie na 101 sposobów
Katarzyna Javaheri-Szpak
 
CISSPDAY 2011 - 2 AM A Disaster just Began
CISSPDAY 2011 - 2 AM A Disaster just BeganCISSPDAY 2011 - 2 AM A Disaster just Began
CISSPDAY 2011 - 2 AM A Disaster just BeganTobias Koprowski
 
Girls in It - Front-end & Back-end. Jak zacząć
Girls in It - Front-end & Back-end. Jak zacząćGirls in It - Front-end & Back-end. Jak zacząć
Girls in It - Front-end & Back-end. Jak zacząć
monterail
 
Tomasz Kopacz MTS 2012 Wind RT w Windows 8 i tzw aplikacje lob (line of busin...
Tomasz Kopacz MTS 2012 Wind RT w Windows 8 i tzw aplikacje lob (line of busin...Tomasz Kopacz MTS 2012 Wind RT w Windows 8 i tzw aplikacje lob (line of busin...
Tomasz Kopacz MTS 2012 Wind RT w Windows 8 i tzw aplikacje lob (line of busin...Tomasz Kopacz
 
Łebski Development czyli kiedy i dlaczego tworzyć oprogramowanie pod klucz i ...
Łebski Development czyli kiedy i dlaczego tworzyć oprogramowanie pod klucz i ...Łebski Development czyli kiedy i dlaczego tworzyć oprogramowanie pod klucz i ...
Łebski Development czyli kiedy i dlaczego tworzyć oprogramowanie pod klucz i ...
Wojciech Sznapka
 
Zhakuj swojego Wordpressa, WordUP Trojmiasto
Zhakuj swojego Wordpressa, WordUP TrojmiastoZhakuj swojego Wordpressa, WordUP Trojmiasto
Zhakuj swojego Wordpressa, WordUP Trojmiasto
secman_pl
 
Produkcja aplikacji internetowych
Produkcja aplikacji internetowychProdukcja aplikacji internetowych
Produkcja aplikacji internetowych
Tomasz Borowski
 
DynamoDB – podstawy modelowania danych dla opornych
DynamoDB – podstawy modelowania danych dla opornychDynamoDB – podstawy modelowania danych dla opornych
DynamoDB – podstawy modelowania danych dla opornych
The Software House
 
JDD 2017: Bezpieczny wypoczynek - czyli uwierzytelnianie RESTa (Krzysztof Be...
JDD 2017:  Bezpieczny wypoczynek - czyli uwierzytelnianie RESTa (Krzysztof Be...JDD 2017:  Bezpieczny wypoczynek - czyli uwierzytelnianie RESTa (Krzysztof Be...
JDD 2017: Bezpieczny wypoczynek - czyli uwierzytelnianie RESTa (Krzysztof Be...
PROIDEA
 
REST API - teoria i praktyka - WordUp Trójmiasto
REST API - teoria i praktyka - WordUp TrójmiastoREST API - teoria i praktyka - WordUp Trójmiasto
REST API - teoria i praktyka - WordUp Trójmiasto
Tomasz Dziuda
 
university day 1
university day 1university day 1
university day 1
Sławomir Borowiec
 

Similar to Testowanie bezpieczenstwa aplikacji mobilnych (20)

Testowanie bezpieczeństwa aplikacji mobilnych
Testowanie bezpieczeństwa aplikacji mobilnychTestowanie bezpieczeństwa aplikacji mobilnych
Testowanie bezpieczeństwa aplikacji mobilnych
 
Jak stworzyć udany system informatyczny
Jak stworzyć udany system informatycznyJak stworzyć udany system informatyczny
Jak stworzyć udany system informatyczny
 
Shall we play a game? PL version
Shall we play a game? PL versionShall we play a game? PL version
Shall we play a game? PL version
 
Jak kraść miliony, czyli o błędach bezpieczeństwa, które mogą spotkać również...
Jak kraść miliony, czyli o błędach bezpieczeństwa, które mogą spotkać również...Jak kraść miliony, czyli o błędach bezpieczeństwa, które mogą spotkać również...
Jak kraść miliony, czyli o błędach bezpieczeństwa, które mogą spotkać również...
 
Praktyczne code reviews - PHPConPl
Praktyczne code reviews - PHPConPlPraktyczne code reviews - PHPConPl
Praktyczne code reviews - PHPConPl
 
4Developers 2015: Frameworki jee vs cross-site scripting (xss) - Piotr Bucki
4Developers 2015: Frameworki jee vs cross-site scripting (xss) - Piotr Bucki4Developers 2015: Frameworki jee vs cross-site scripting (xss) - Piotr Bucki
4Developers 2015: Frameworki jee vs cross-site scripting (xss) - Piotr Bucki
 
[Quality Meetup #9] TestOps, QAOps - czy ktoś taki istnieje? - Aleksandra Kor...
[Quality Meetup #9] TestOps, QAOps - czy ktoś taki istnieje? - Aleksandra Kor...[Quality Meetup #9] TestOps, QAOps - czy ktoś taki istnieje? - Aleksandra Kor...
[Quality Meetup #9] TestOps, QAOps - czy ktoś taki istnieje? - Aleksandra Kor...
 
Jak zacząć, aby nie żałować - czyli 50 twarzy PHP
Jak zacząć, aby nie żałować - czyli 50 twarzy PHPJak zacząć, aby nie żałować - czyli 50 twarzy PHP
Jak zacząć, aby nie żałować - czyli 50 twarzy PHP
 
Pocałunek śmierci
Pocałunek śmierciPocałunek śmierci
Pocałunek śmierci
 
Testowanie na 101 sposobów
Testowanie na 101 sposobówTestowanie na 101 sposobów
Testowanie na 101 sposobów
 
CISSPDAY 2011 - 2 AM A Disaster just Began
CISSPDAY 2011 - 2 AM A Disaster just BeganCISSPDAY 2011 - 2 AM A Disaster just Began
CISSPDAY 2011 - 2 AM A Disaster just Began
 
Girls in It - Front-end & Back-end. Jak zacząć
Girls in It - Front-end & Back-end. Jak zacząćGirls in It - Front-end & Back-end. Jak zacząć
Girls in It - Front-end & Back-end. Jak zacząć
 
Tomasz Kopacz MTS 2012 Wind RT w Windows 8 i tzw aplikacje lob (line of busin...
Tomasz Kopacz MTS 2012 Wind RT w Windows 8 i tzw aplikacje lob (line of busin...Tomasz Kopacz MTS 2012 Wind RT w Windows 8 i tzw aplikacje lob (line of busin...
Tomasz Kopacz MTS 2012 Wind RT w Windows 8 i tzw aplikacje lob (line of busin...
 
Łebski Development czyli kiedy i dlaczego tworzyć oprogramowanie pod klucz i ...
Łebski Development czyli kiedy i dlaczego tworzyć oprogramowanie pod klucz i ...Łebski Development czyli kiedy i dlaczego tworzyć oprogramowanie pod klucz i ...
Łebski Development czyli kiedy i dlaczego tworzyć oprogramowanie pod klucz i ...
 
Zhakuj swojego Wordpressa, WordUP Trojmiasto
Zhakuj swojego Wordpressa, WordUP TrojmiastoZhakuj swojego Wordpressa, WordUP Trojmiasto
Zhakuj swojego Wordpressa, WordUP Trojmiasto
 
Produkcja aplikacji internetowych
Produkcja aplikacji internetowychProdukcja aplikacji internetowych
Produkcja aplikacji internetowych
 
DynamoDB – podstawy modelowania danych dla opornych
DynamoDB – podstawy modelowania danych dla opornychDynamoDB – podstawy modelowania danych dla opornych
DynamoDB – podstawy modelowania danych dla opornych
 
JDD 2017: Bezpieczny wypoczynek - czyli uwierzytelnianie RESTa (Krzysztof Be...
JDD 2017:  Bezpieczny wypoczynek - czyli uwierzytelnianie RESTa (Krzysztof Be...JDD 2017:  Bezpieczny wypoczynek - czyli uwierzytelnianie RESTa (Krzysztof Be...
JDD 2017: Bezpieczny wypoczynek - czyli uwierzytelnianie RESTa (Krzysztof Be...
 
REST API - teoria i praktyka - WordUp Trójmiasto
REST API - teoria i praktyka - WordUp TrójmiastoREST API - teoria i praktyka - WordUp Trójmiasto
REST API - teoria i praktyka - WordUp Trójmiasto
 
university day 1
university day 1university day 1
university day 1
 

More from SecuRing

Developer in a digital crosshair, 2023 edition - 4Developers
Developer in a digital crosshair, 2023 edition - 4DevelopersDeveloper in a digital crosshair, 2023 edition - 4Developers
Developer in a digital crosshair, 2023 edition - 4Developers
SecuRing
 
Developer in a digital crosshair, 2022 edition - Oh My H@ck!
Developer in a digital crosshair, 2022 edition - Oh My H@ck!Developer in a digital crosshair, 2022 edition - Oh My H@ck!
Developer in a digital crosshair, 2022 edition - Oh My H@ck!
SecuRing
 
Developer in a digital crosshair, 2022 edition - No cON Name
Developer in a digital crosshair, 2022 edition - No cON NameDeveloper in a digital crosshair, 2022 edition - No cON Name
Developer in a digital crosshair, 2022 edition - No cON Name
SecuRing
 
Is persistency on serverless even possible?!
Is persistency on serverless even possible?!Is persistency on serverless even possible?!
Is persistency on serverless even possible?!
SecuRing
 
What happens on your Mac, stays on Apple’s iCloud?!
What happens on your Mac, stays on Apple’s iCloud?!What happens on your Mac, stays on Apple’s iCloud?!
What happens on your Mac, stays on Apple’s iCloud?!
SecuRing
 
0-Day Up Your Sleeve - Attacking macOS Environments
0-Day Up Your Sleeve - Attacking macOS Environments0-Day Up Your Sleeve - Attacking macOS Environments
0-Day Up Your Sleeve - Attacking macOS Environments
SecuRing
 
Developer in a digital crosshair, 2022 edition
Developer in a digital crosshair, 2022 editionDeveloper in a digital crosshair, 2022 edition
Developer in a digital crosshair, 2022 edition
SecuRing
 
20+ Ways To Bypass Your Macos Privacy Mechanisms
20+ Ways To Bypass Your Macos Privacy Mechanisms20+ Ways To Bypass Your Macos Privacy Mechanisms
20+ Ways To Bypass Your Macos Privacy Mechanisms
SecuRing
 
How secure are webinar platforms?
How secure are webinar platforms?How secure are webinar platforms?
How secure are webinar platforms?
SecuRing
 
20+ Ways to Bypass Your macOS Privacy Mechanisms
20+ Ways to Bypass Your macOS Privacy Mechanisms20+ Ways to Bypass Your macOS Privacy Mechanisms
20+ Ways to Bypass Your macOS Privacy Mechanisms
SecuRing
 
Serverless security: attack & defense
 Serverless security: attack & defense Serverless security: attack & defense
Serverless security: attack & defense
SecuRing
 
Abusing & Securing XPC in macOS apps
Abusing & Securing XPC in macOS appsAbusing & Securing XPC in macOS apps
Abusing & Securing XPC in macOS apps
SecuRing
 
WebApps vs Blockchain dApps (SmartContracts): tools, vulns and standards
WebApps vs Blockchain dApps (SmartContracts): tools, vulns and standardsWebApps vs Blockchain dApps (SmartContracts): tools, vulns and standards
WebApps vs Blockchain dApps (SmartContracts): tools, vulns and standards
SecuRing
 
WebApps vs Blockchain dApps (SmartContracts): tools, vulns and standards
WebApps vs Blockchain dApps (SmartContracts): tools, vulns and standardsWebApps vs Blockchain dApps (SmartContracts): tools, vulns and standards
WebApps vs Blockchain dApps (SmartContracts): tools, vulns and standards
SecuRing
 
Let's get evil - threat modeling at scale
Let's get evil - threat modeling at scaleLet's get evil - threat modeling at scale
Let's get evil - threat modeling at scale
SecuRing
 
Attacking AWS: the full cyber kill chain
Attacking AWS: the full cyber kill chainAttacking AWS: the full cyber kill chain
Attacking AWS: the full cyber kill chain
SecuRing
 
Web Apps vs Blockchain dApps (Smart Contracts): tools, vulns and standards
Web Apps vs Blockchain dApps (Smart Contracts): tools, vulns and standardsWeb Apps vs Blockchain dApps (Smart Contracts): tools, vulns and standards
Web Apps vs Blockchain dApps (Smart Contracts): tools, vulns and standards
SecuRing
 
Budowanie i hakowanie nowoczesnych aplikacji iOS
Budowanie i hakowanie nowoczesnych aplikacji iOSBudowanie i hakowanie nowoczesnych aplikacji iOS
Budowanie i hakowanie nowoczesnych aplikacji iOS
SecuRing
 
We need t go deeper - Testing inception apps.
We need t go deeper - Testing inception apps.We need t go deeper - Testing inception apps.
We need t go deeper - Testing inception apps.
SecuRing
 
Building & Hacking Modern iOS Apps
Building & Hacking Modern iOS AppsBuilding & Hacking Modern iOS Apps
Building & Hacking Modern iOS Apps
SecuRing
 

More from SecuRing (20)

Developer in a digital crosshair, 2023 edition - 4Developers
Developer in a digital crosshair, 2023 edition - 4DevelopersDeveloper in a digital crosshair, 2023 edition - 4Developers
Developer in a digital crosshair, 2023 edition - 4Developers
 
Developer in a digital crosshair, 2022 edition - Oh My H@ck!
Developer in a digital crosshair, 2022 edition - Oh My H@ck!Developer in a digital crosshair, 2022 edition - Oh My H@ck!
Developer in a digital crosshair, 2022 edition - Oh My H@ck!
 
Developer in a digital crosshair, 2022 edition - No cON Name
Developer in a digital crosshair, 2022 edition - No cON NameDeveloper in a digital crosshair, 2022 edition - No cON Name
Developer in a digital crosshair, 2022 edition - No cON Name
 
Is persistency on serverless even possible?!
Is persistency on serverless even possible?!Is persistency on serverless even possible?!
Is persistency on serverless even possible?!
 
What happens on your Mac, stays on Apple’s iCloud?!
What happens on your Mac, stays on Apple’s iCloud?!What happens on your Mac, stays on Apple’s iCloud?!
What happens on your Mac, stays on Apple’s iCloud?!
 
0-Day Up Your Sleeve - Attacking macOS Environments
0-Day Up Your Sleeve - Attacking macOS Environments0-Day Up Your Sleeve - Attacking macOS Environments
0-Day Up Your Sleeve - Attacking macOS Environments
 
Developer in a digital crosshair, 2022 edition
Developer in a digital crosshair, 2022 editionDeveloper in a digital crosshair, 2022 edition
Developer in a digital crosshair, 2022 edition
 
20+ Ways To Bypass Your Macos Privacy Mechanisms
20+ Ways To Bypass Your Macos Privacy Mechanisms20+ Ways To Bypass Your Macos Privacy Mechanisms
20+ Ways To Bypass Your Macos Privacy Mechanisms
 
How secure are webinar platforms?
How secure are webinar platforms?How secure are webinar platforms?
How secure are webinar platforms?
 
20+ Ways to Bypass Your macOS Privacy Mechanisms
20+ Ways to Bypass Your macOS Privacy Mechanisms20+ Ways to Bypass Your macOS Privacy Mechanisms
20+ Ways to Bypass Your macOS Privacy Mechanisms
 
Serverless security: attack & defense
 Serverless security: attack & defense Serverless security: attack & defense
Serverless security: attack & defense
 
Abusing & Securing XPC in macOS apps
Abusing & Securing XPC in macOS appsAbusing & Securing XPC in macOS apps
Abusing & Securing XPC in macOS apps
 
WebApps vs Blockchain dApps (SmartContracts): tools, vulns and standards
WebApps vs Blockchain dApps (SmartContracts): tools, vulns and standardsWebApps vs Blockchain dApps (SmartContracts): tools, vulns and standards
WebApps vs Blockchain dApps (SmartContracts): tools, vulns and standards
 
WebApps vs Blockchain dApps (SmartContracts): tools, vulns and standards
WebApps vs Blockchain dApps (SmartContracts): tools, vulns and standardsWebApps vs Blockchain dApps (SmartContracts): tools, vulns and standards
WebApps vs Blockchain dApps (SmartContracts): tools, vulns and standards
 
Let's get evil - threat modeling at scale
Let's get evil - threat modeling at scaleLet's get evil - threat modeling at scale
Let's get evil - threat modeling at scale
 
Attacking AWS: the full cyber kill chain
Attacking AWS: the full cyber kill chainAttacking AWS: the full cyber kill chain
Attacking AWS: the full cyber kill chain
 
Web Apps vs Blockchain dApps (Smart Contracts): tools, vulns and standards
Web Apps vs Blockchain dApps (Smart Contracts): tools, vulns and standardsWeb Apps vs Blockchain dApps (Smart Contracts): tools, vulns and standards
Web Apps vs Blockchain dApps (Smart Contracts): tools, vulns and standards
 
Budowanie i hakowanie nowoczesnych aplikacji iOS
Budowanie i hakowanie nowoczesnych aplikacji iOSBudowanie i hakowanie nowoczesnych aplikacji iOS
Budowanie i hakowanie nowoczesnych aplikacji iOS
 
We need t go deeper - Testing inception apps.
We need t go deeper - Testing inception apps.We need t go deeper - Testing inception apps.
We need t go deeper - Testing inception apps.
 
Building & Hacking Modern iOS Apps
Building & Hacking Modern iOS AppsBuilding & Hacking Modern iOS Apps
Building & Hacking Modern iOS Apps
 

Testowanie bezpieczenstwa aplikacji mobilnych

  • 1. Testowanie bezpieczeństwa aplikacji mobilnych Sławomir Jasek
  • 2. Dzień dobry! Sławomir Jasek Pentester / konsultant bezpieczeństwa Od 2003 roku: Ocena bezpieczeństwa aplikacji, systemów, sieci... Najskuteczniej pomagamy już od etapu projektowania.
  • 3. Co będzie ● Spojrzenie pentestera (= intruza) na aplikacje mobilne ● Testowanie – na przykładach głównie Android – Analiza paczki i kodu – Dane zapisywane w urządzeniu i w logach – RPC – Transmisja – API ● Podsumowanie
  • 4. Aplikacja mobilna – spojrzenie intruza RPC UŻYTKOWNIK SIEĆ ZAPIS DANYCH OS
  • 5. Jak? Inna aplikacja na urządzeniu Podatności systemu Kradzież, zgubienie urządzenia, przypadkowy dostęp, inna aplikacja... Social engineering, słabości użytkowników np. słabe hasło, zbyt trudne mechanizmy Ataki na transmisję - podsłuch, słabości SSL API – błędy kontroli dostępu, logiczne, konfiguracji... Analiza paczki
  • 6. Kto? „grubszy cwaniak” „script-kiddie” Krzysztof Jarzyna ze Szczecina Dorwał się do narzędzi, wali na oślep, zwykle nie bardzo rozumiejąc co się dzieje. Coś mu się przypadkiem udało (lub nie), i afera gotowa. Ma motywację, zasoby oraz możliwości przeprowadzenia ataku nakierowanego
  • 7. Po co? ● Jak to po co? Bo może! ● Dla sławy! ● Dla satysfakcji ● Dla pieniędzy ● Dla innych korzyści ● ... https://www.flickr.com/photos/viirok/2498157861
  • 9. Paczka aplikacji ● Android – Aplikacje bez root np. „My App Sharer” – APK Leecher – Playdrone – masowe pobieranie do chmury – (nie wspominając root) ● iOS, inne – DRM nie jest problemem
  • 11. Analiza kodu ● Do ataku jakiegoś procesu przydaje się rozumieć jak on działa ● Własna kryptografia, błędy implementacji... ● Hasła, klucze, tokeny zaszyte w aplikacji Np. tokeny FB, Google, MS, Yahoo i Linkedin aplikacji Airb2b – 10 milionów użytkowników http://viennot.com/playdrone.pdf ● Tak, znaleźliśmy token FB w aplikacji ;)
  • 12. Przykład ● Przesyłanie mailem danych do „bazy” – support@pewnafirma.com ● Założenie : wysyłamy bezpośrednio przez nasz serwer pocztowy – mail.pewnafirma.com, nie angażujemy kont użytkownika ● Serwer oczywiście nie jest open-relayem, do wysłania maila wymaga uwierzytelnienia ● Hasło zaszyte w aplikacji ● Co możemy zrobić? (oprócz wysyłania spamu) To samo hasło do POP3 = dostęp do skrzynki!
  • 13. Wytęż wzrok i znajdź klucz „szyfrujący” w zaobfuskowanym kodzie public final class a implements b { private static final char[] a = { 67,72,65,82,84,79,83,67,72,76,85,68,78,73,69 }; private static void a(char[] paramArrayOfChar, char paramChar) { paramArrayOfChar[0] = paramChar; int i = 0; if (i < paramArrayOfChar.length) { if (i % 2 == 0) { paramArrayOfChar[i] = a[(i % a.length)]; } for (;;) { i++; break; paramArrayOfChar[0] = paramChar; } } }
  • 14. Wytęż wzrok i znajdź klucz „szyfrujący” w zaobfuskowanym kodzie public final class a implements b { private static final char[] a = { 67,72,65,82,84,79,83,67,72,76,85,68,78,73,69 }; private static void a(char[] paramArrayOfChar, char paramChar) { paramArrayOfChar[0] = paramChar; int i = 0; if (i < paramArrayOfChar.length) { if (i % 2 == 0) { paramArrayOfChar[i] = a[(i % a.length)]; } for (;;) { i++; break; paramArrayOfChar[0] = paramChar; } } } „CHARSCHLUDNIE”
  • 16. Dane zapisywane na urządzeniu Kradzież, zgubienie urządzenia, przypadkowy dostęp, inna aplikacja...
  • 17. Jak to sprawdzić ● Ręcznie: adb pull na różnych etapach pracy aplikacji • Automaty, skrypty – np. wrzucanie do svn
  • 19. Logi, cache... ● Dość często zawierają pełne żądania HTTP, wprowadzane klawisze – np. hasło użytkownika INSERT INTO "cfurl_cache_response" VALUES(2,0,1594297610,0,'http://dev/service/auth/createFirstSession?password=35 971831&sessionId=857006 &userId=24384344','1970-01-21 23:03:36');
  • 20. Logi, cache... ● Dość często zawierają pełne żądania HTTP, wprowadzane klawisze – np. hasło użytkownika I/System.out( 1098): BaseActivity calling: /login onResponseData: {"response":{"mask":"c794ffa2ffbdffc180ff41ff","phi":"/(...) D/InputEventConsistencyVerifier( 1098): 0: sent at 6529438000000, KeyEvent { action=ACTION_UP, keyCode=KEYCODE_3, scanCode=4, metaState=0, flags=0x8, repeatCount=0, eventTime=6529438, downTime=6529371, deviceId=0, source=0x301 } D/InputEventConsistencyVerifier( 1098): 0: sent at 6532144000000, KeyEvent { action=ACTION_UP, keyCode=KEYCODE_5, scanCode=6, metaState=0, flags=0x8, repeatCount=0, eventTime=6532144, downTime=6532032, deviceId=0, source=0x301 } D/InputEventConsistencyVerifier( 1098): 0: sent at 6534378000000, KeyEvent { action=ACTION_UP, keyCode=KEYCODE_7, scanCode=8, metaState=0, flags=0x8, repeatCount=0, eventTime=6534378, downTime=6534277, deviceId=0, source=0x301 } D/InputEventConsistencyVerifier( 1098): 0: sent at 6536876000000, KeyEvent { action=ACTION_UP, keyCode=KEYCODE_0, scanCode=11, metaState=0, flags=0x8, repeatCount=0, eventTime=6536876, downTime=6536811, deviceId=0, source=0x301 } I/System.out( 1098): BaseActivity calling: /login/maskedPassword onResponseData: {"response":{"state":"A","authenticated":true},"msgId":"1344674218830418930","errorCode":0,"time" :1351588394408,"errorDesc":""}
  • 21. Logi, cache – skutki ● Warunki wykorzystania trudne do spełnienia – Kto może te logi czytać? – Jak długo są przetrzymywane? – Czy problem dotyczy tylko jednego feralnego builda? – Czy problem występuje na wszystkich wersjach OS? – Jakie dodatkowe warunki muszą być spełnione? – ... ● Ale to może nie mieć żadnego znaczenia w obliczu klęski wizerunkowej – np. Starbucks, styczeń 2014
  • 22. Logi, cache – skutki ● Warunki wykorzystania trudne do spełnienia – Kto może te logi czytać? – Jak długo są przetrzymywane? – Czy problem dotyczy tylko jednego feralnego builda? – Czy problem występuje na wszystkich wersjach OS? – Jakie dodatkowe warunki muszą być spełnione? – ... ● Ale to może nie mieć żadnego znaczenia w obliczu klęski wizerunkowej – np. Starbucks, styczeń 2014
  • 23. Logi, cache – skutki ● Warunki wykorzystania trudne do spełnienia – Kto może te logi czytać? – Jak długo są przetrzymywane? – Czy problem dotyczy tylko jednego feralnego builda? – Czy problem występuje na wszystkich wersjach OS? – Jakie dodatkowe warunki muszą być spełnione? – ... ● Ale to może nie mieć żadnego znaczenia w obliczu klęski wizerunkowej – np. Starbucks, styczeń 2014
  • 24. Logi, cache – skutki ● Warunki wykorzystania trudne do spełnienia – Kto może te logi czytać? – Jak długo są przetrzymywane? – Czy problem dotyczy tylko jednego feralnego builda? – Czy problem występuje na wszystkich wersjach OS? – Jakie dodatkowe warunki muszą być spełnione? – ... ● Ale to może nie mieć żadnego znaczenia w obliczu klęski wizerunkowej – np. Starbucks, styczeń 2014
  • 25. Logi, cache – skutki ● Warunki wykorzystania trudne do spełnienia – Kto może te logi czytać? – Jak długo są przetrzymywane? – Czy problem dotyczy tylko jednego feralnego builda? – Czy problem występuje na wszystkich wersjach OS? – Jakie dodatkowe warunki muszą być spełnione? – ... ● Ale to może nie mieć żadnego znaczenia w obliczu klęski wizerunkowej – np. Starbucks, styczeń 2014
  • 26. Logi, cache – skutki ● Warunki wykorzystania trudne do spełnienia – Kto może te logi czytać? – Jak długo są przetrzymywane? – Czy problem dotyczy tylko jednego feralnego builda? – Czy problem występuje na wszystkich wersjach OS? – Jakie dodatkowe warunki muszą być spełnione? – ... ● Ale to może nie mieć żadnego znaczenia w obliczu klęski wizerunkowej – np. Starbucks, styczeń 2014
  • 27. Logi, cache – skutki ● Warunki wykorzystania trudne do spełnienia – Kto może te logi czytać? – Jak długo są przetrzymywane? – Czy problem dotyczy tylko jednego feralnego builda? – Czy problem występuje na wszystkich wersjach OS? – Jakie dodatkowe warunki muszą być spełnione? – ... ● Ale to może nie mieć żadnego znaczenia w obliczu klęski wizerunkowej – np. Starbucks, styczeń 2014
  • 28. RPC Inna aplikacja na urządzeniu
  • 29. BAD INTENTions <receiver android:name =“MojReceiver”> <intent -filter> <action android:name = "android.intent.action.PACKAGE_ADDED" String action = intent.getAction(); if (action...)
  • 30. BAD INTENTions <receiver android:name =“MojReceiver”> <intent -filter> <action android:name = "android.intent.action.PACKAGE_ADDED" String action = intent.getAction(); if (action...) Intent intent = new Intent(); intent.setComponent (“MojReceiver”); sendBroadcast(intent);
  • 31. BAD INTENTions <receiver android:name =“MojReceiver”> <intent -filter> <action android:name = "android.intent.action.PACKAGE_ADDED" String action = intent.getAction(); if (action...) Intent intent = new Intent(); intent.setComponent (“MojReceiver”); sendBroadcast(intent); Nullpointer exception CRASH
  • 32. BAD INTENTions <receiver android:name =“MojReceiver”> <intent -filter> <action android:name = "android.intent.action.PACKAGE_ADDED" String action = intent.getAction(); if (action action...) != null ){ if(action...) Intent intent = new Intent(); intent.setComponent (“MojReceiver”); sendBroadcast(intent); Nullpointer exception CRASH
  • 33. BAD INTENTions <receiver android:name =“MojReceiver”> <intent -filter> <action android:name = "android.intent.action.PACKAGE_ADDED" String action = intent.getAction(); if (action != null) ){ Uid = intent.getStringExtra(“android.intent.extra.UID”);
  • 34. BAD INTENTions <receiver android:name =“MojReceiver”> <intent -filter> <action android:name = "android.intent.action.PACKAGE_ADDED" String action = intent.getAction(); if (action != null) ){ Uid = intent.getStringExtra(“android.intent.extra.UID”); Intent intent = new Intent (“AKUKU”); intent.setComponent (“MojReceiver”); intent.putExtra (“android.intent.extra.UID”, attackerUID); sendBroadcast(intent);
  • 35. BAD INTENTions <receiver android:name =“MojReceiver”> <intent -filter> <action android:name = "android.intent.action.PACKAGE_ADDED" String action = intent.getAction(); if (action != null) ){ null && action.equals (“PACKAGE_ADDED”) ){ Uid = intent.getStringExtra(“android.intent.extra.UID”); Intent intent = new Intent (“AKUKU”); intent.setComponent (“MojReceiver”); intent.putExtra (“android.intent.extra.UID”, attackerUID); sendBroadcast(intent);
  • 36. BAD INTENTions <permission android:name ="com.dobreprogramy.permission" android:protectionLevel = "signature" ... <receiver android:name ="dobryReceiver" android:exported="true" android:permission="com.dobreprogramy.permission"> ... </receiver>
  • 37. BAD INTENTions <permission android:name ="com.dobreprogramy.permission" android:protectionLevel = "signature" ... <receiver android:name ="dobryReceiver" android:exported="true" android:permission="com.dobreprogramy.permission"> ... </receiver> Intruz może zarejestrować to samo wcześniej <permission android:name ="com.dobreprogramy.permission" android:protectionLevel="normal" ...> <uses-permission android:name ="com.dobreprogramy.permission"/>
  • 38. Analiza/atak RPC ● Mnóstwo narzędzi – Drozer https://www.mwrinfosecurity.com/products/drozer/ – Android Hooker, comdroid, chex, epicc, iSEC intent fuzzer/sniffer... ● Ręcznie am broadcast -n com.aplikacja/com.aplikacja.BroadcastReceiver am start -a android.intent.action.CALL -d tel://000-0000
  • 39. Transmisja Intruz musi mieć dostęp do transmisji – pasywny (podsłuch), lub aktywny – aby modyfikować ruch Ataki na transmisję - podsłuch, słabości SSL
  • 40. Przechwytywanie ruchu ● Local proxy – co się dzieje „na łączu” (np. żądania HTTP) – Burp: wersja darmowa na początek wystarczy portswigger.net/burp – Fiddler – MS www.telerik.com/fiddler – wiele innych ● Emulator przez proxy: www.telerik.com/fiddler/ emulator -avd emu -http-proxy 127.0.0.1:8080
  • 41. SSL – wróćmy do podstaw CA
  • 42. Co zrobi klient? ● Jeśli ten sam certyfikat byłby podpisany innym CA? [POWINIEN] wyświetlić ostrzeżenie, przerwać transmisję... Zaakceptuje bez mrugnięcia. CA nie jest w zaufanych CA w zaufanych
  • 43. Certyfikaty CA zaszyte w urządzeniach ● Ćwiczenie: sprawdź jakie CA masz w swoim telefonie ● Np. iOS8 ma m.in. certyfikaty rządów: Chin: China Internet Network Information Center Hong Kongu: Hongkong Post e-Cert. Japonii: 3 CA Holandii: 3 CA (PKIoverheid) Taiwanu: Government Root Certification Authority Turcji: Scientific and Technological Research Council of Turkey USA: 5 CA, Department of Defense
  • 44. SSL – „Man in the middle” CA ? Verisign www.pewnafirma.pl Verisign www.pewnafirma.pl
  • 45. Stosunkowo często... sslcontext = SSLContext.getInstance("TLS"); atrustmanager = new TrustManager[1]; atrustmanager[0] = new EasyX509TrustManager(null); sslcontext.init(null, atrustmanager, null); Pusty TrustManager – akceptuje wszystkie certyfikaty
  • 46. Przechwytywanie ruchu SSL ● Certyfikat CA Burp-a
  • 47. Instalujemy w urządzeniu ● Aplikacja używa domyślnego truststore urządzenia – Android > 4 – w interfejsie – Wrzucamy na kartę SD (plik .crt) adb push cacert.der /sdcard/cacert.crt – „Zainstaluj z karty SD” ● Certyfikat zaszyty w aplikacji (pinning) – Podmieniamy w paczce aplikacji
  • 48. API API – błędy kontroli dostępu, logiczne, konfiguracji...
  • 49. Mobile CAPTCHA ● Proces rejestracji, potwierdzanej SMS ● CAPTCHA w celu ograniczenia masowego nadużycia procesu (koszty SMS, przeciążenie systemu...) ● Należy kliknąć w odpowiedni obrazek (1 z 6)
  • 50.
  • 51. Mobile CAPTCHA ● Pomysł chybiony już w założeniach – Prawdopodobieństwo trafienia „na ślepo” bardzo wysokie ● W implementacji jeszcze gorzej – Każdy obrazek to inny statyczny plik, intruz może je zindeksować i ustalić w którym miejscu jest obrazek przedstawiający żądane słowo
  • 52. REST API fragment otrzymanej dokumentacji REST API
  • 54. Żądanie HTTP po przechwyceniu GET /services/history/account/85101022350445200448009906 45101022350445200448005388 HTTP/1.1 SA-DeviceId: 940109f08ba56a89 SA-SessionId: 826175 Accept: application/json Host: acc Connection: Keep-Alive User-Agent: Apache-HttpClient/UNAVAILABLE (java 1.4) Podmiana nr rachunku – uzyskujemy cudze dane
  • 55. Dane użytkownika Użytkownik 1 GET /services/user/profile HTTP/1.1 SA-DeviceId: d4c79a0fd994b1f8 SA-SessionId: 850071 Accept: application/json Host: acc Connection: Keep-Alive User-Agent: Apache-HttpClient/UNAVAILABLE (java 1.4)
  • 56. Dane użytkownika Użytkownik 1 2 GET /services/user/profile HTTP/1.1 SA-DeviceId: d4c79a0fd994b1f8 940109f08ba56a89 SA-SessionId: 850075 850071 Accept: application/json Host: acc Connection: Keep-Alive User-Agent: Apache-HttpClient/UNAVAILABLE (java 1.4) DeviceId jedynym zabezpieczeniem
  • 57. Historia pewnej aplikacji... ● Mnóstwo błędów kontroli dostępu ● Po zgłoszeniu dostawcy: „Kontrola dostępu w aplikacji jest, tylko na testowym środowisku wyłączona” ● Pomimo napiętych terminów włączyć się udało dopiero po kilku tygodniach ;)
  • 59. Prawdopodobnie powstrzyma przypadkowych... http://www.recreateweb.com.au/web-development/respond-2014-what-responsive-web-design-can-learn-from-accessibility-best-practice/
  • 60. ...oraz masowych intruzów http://www.recreateweb.com.au/web-development/respond-2014-what-responsive-web-design-can-learn-from-accessibility-best-practice/
  • 61. A Was? #1 – żeby coś zaatakować trzeba zrozumieć jak to działa https://www.flickr.com/photos/itspaulkelly/633298765
  • 62. Zaszyfrowany ruch KLUCZ PUBLICZNY Jak się dobrać do transmisji? LOSOWY KLUCZ SESJI SESYJNY DO SERWERA TRANSMISJA ZASZYFROWANA KLUCZEM SESJI
  • 63. Drobne usprawnienie aplikacji – stały klucz w SMALI new-array v8, v8, [B fill-array-data v8, :array_5a return-object v8 :array_5a .array-data 1 0x44t 0x2bt 0x72t (...)
  • 73. Niektóre schwytane problemy REST ● Błędy kontroli dostępu ● Nieprawidłowa obsługa sesji ● Błędy uwierzytelnienia i autoryzacji ● Błędy logiczne ● SQL injection ● Błędy architektury/konfiguracji ● ... https://www.flickr.com/photos/elycefeliz/6648603999
  • 74. Część z ryzyk do ogarnięcia
  • 76. Czekamy na Was! Darmowe konsultacje: www.securing.pl/konsultacje Pracuj z nami: http://www.securing.pl/pl/kariera.html slawomir.jasek@securing.pl