Co z bezpieczeństwem aplikacji mobilnych?
Mateusz [email protected]
LogicalTrust
KrakWhiteHatKraków, 31 marca 2016 r.
$ whoami
I pentester w LogicalTrustI blog: http://akat1.pl/, twitter: @akat1 plI open source:
I PHP - bug fixingI NetBSD - libsaslc(3), bozohttpd(8), losowe rzeczy & członek
security-team@I bezpieczeństwo:
I PHP - CVE-2010-1868, CVE-2010-1917, CVE-2010-4150,CVE-2010-4156, CVE-2011-1938, ...
I stunnel - CVE-2013-1762I OpenSSH - CVE-2011-0539I Apache - CVE-2014-0117, CVE-2014-0226I FreeBSD - CVE-2015-1414
źródło: http://blog.jedzok.com/2010/09/13/monday-wtf-gallery-36-retro-wtf/
Co z bezpieczeństwem aplikacjimobilnych?- studium przypadków
aplikacje mobilne są wszędzie
źródło: http://memegenerator.net/instance/55352888
I 1,6 mln aplikacji w Google Play, 1,5 mln aplikacji w AppStore,300+ tysięcy w Marketplace...
I ...urządzenia mobilne są wszędzie...I ...jak bezpieczne są aplikacje, których używamy?I zmiana modelu zagrożeń względem innych aplikacji, które
testujemy
ciężkie życie pentestera - sprzęt
I aktualnie mamy w biurze:I kilkanaście telefonów i 5 tabletówI Android, iOS, Widows Phone, FirefoxOS, Symbian, ...
I potrzeba posiadania różnych konfiguracji sprzętowychI potrzeba posiadania różnych wersji systemów
ciężkie życie pentestera - rootowanie/jailbreak
źródło: http://resources0.news.com.au/images/2011/03/29/1226029/777612-the-simpsons.jpg
I po co mi jailbreak/unlock/root?I iOS/Windows Phone - problem z jailbreakami/unlockI Android, Firefox OS - rootowanie jest proste
ciężkie życie pentestera - iOS
źródło:http://i-cdn.phonearena.com/images/article/58671-image/Homer-lets-you-find-out-which-apps-your-friends-are-using.jpg
I problemy z dostępnością JailBreakówI problem z upgrade/downgradeI problem z kompatybilnością narzędzi pomiędzy wersjami iOSI Objective-C (teraz Swift)
ciężkie życie pentestera - Android
źródło: http://www.shake-them-all.net/files/skins/69/preview.png
I mnogość platform sprzętowychI JavaI łatwiej się rootuje...I ...ale część rzeczy łatwiej zrobić na iOS
Mobile OWASP TOP 10
server side
źródło: http://lockjaw.brentcopeland.com/wp-content/uploads/2015/08/server-rack-disaster-400x280.jpg
I skrypty a’la PHP z zeszłej dekady!I problemy z OWASP TOP 10
server side - przykład - upload zdjęć
źródło: http://vignette3.wikia.nocookie.net/scribblenauts/images/2/25/Trojan Horse.png/revision/latest
I aplikacja akceptowała zdjęcia od użytkownika celemudostępnienia ich innym
I ...bezpośrednio zrobione przez ”aparat telefonu”, co może pójśćźle?
I można zrobić zdjęcie .phpI remote code executionI game over
server side - przykład - skrypty z lat 90.
źródło: https://deadhomersociety.files.wordpress.com/2012/08/theottoshow11.png
I aplikacja zbierała informacje o błędach do pewnego kataloguI directory listing umożliwia przejrzenie zawartości kataloguI skrypty php (o rozszerzeniach .inc dołączane do głównego
skryptu)I w jednym ze skryptów eval() pobiera dane od użytkownikaI remote code executionI game over
server side - przykład - CSRF
źródło: http://talks.php.net/presentations/slides/php-under-attack/csrf.png
I API mobilne działa na jednym serwerze aplikacyjnym co APIwebowe
I współdzielą sesjęI współdzielą adres URLI API webowe weryfikuje tokeny CSRFI API mobilne nie ma tokenów CSRFI CSRF - game over
server side - co zrobić lepiej
źródło: https://deadhomersociety.files.wordpress.com/2012/08/theottoshow11.png
I korzystać z frameworków (statystyka pokazuje, że prawie napewno się gdzieś pomylisz)
I zwracać szczególną uwagę na stronę serwerowąI testować, testować, testować!
szyfrowanie transmisji
źródło: http://rysunki.me/wp-content/uploads/2015/10/kmwtw-og.gif
I wiele aplikacji (wśród polskich aplikacji bankowych 60%) doczęści transmisji nie wykorzystuje szyfrowania
I jakie niesie to zagrożenia?I MitMI zachwianie integralnościI naruszenie poufności
I problemy z WebView mogą doprowadzić do RCE na systemieAndroid - https://labs.mwrinfosecurity.com/blog/webview-addjavascriptinterface-remote-code-execution/ - APIstarsze od wersji 17
szyfrowanie transmisji - przykład - aplikacja bankowa
źródło: http://tmpolska.info/wp-content/uploads/2016/01/bank-transf.jpg
I aplikacja pobiera z serwera dane protokołem httpI dane to m.in. konfiguracja zawierająca URLe, na które wysyłane
są dane KlientaI jeżeli atakujący jest w stanie podmienić adresy, to może odebrać
dane od KlientaI game over
szyfrowanie transmisji - przykład - mały bazar aplikacji
źródło: http://m.natemat.pl/8af6a98a5f13620571e05ff04a40ae48,640,0,0,0.jpg
I mały bazar z zew. aplikacjami (Google Play w Google Play)I aplikacje pobierane były protokołem HTTPI z tego samego serwera była pobierana suma kontrola (też
protokołem HTTP)I game over
szyfrowanie transmisji - przykład - reputacja adresów URL
źródło: http://img.photobucket.com/albums/v642/shakespeares sister/reusables/caesarbush.png
I aplikacja wpinała się w przeglądarkę systemowąI przy wejściu na dowolną stronę sprawdzano czy URL nie jest na
czarnych listachI ...robiono to po HTTP...I ...również jak użytkownik odwiedzał stronę używając HTTPS...I game over
szyfrowanie transmisji - jak żyć?
SZYFRUJ, BO INACZEJ CIĘZNAJDZIEMY I NIE BĘDZIE
WESOŁO!I weryfikuj certyfikatyI szyfruj wszystkoI certificate pinningI goto fail
koszmar pentestera - szyfrowanie transmisji
źródło: http://r-scale-c3.dcs.redcdn.pl/scale/o2/tvn/web-content/m/i/7c9d0b1f96aebd7b5eca8c3edaa19ebb/3e54b934-ce56-11e0-a64b-0025b511229e.jpg
I iOS - dodanie CA, ssl kill switch, cydia, ...I Android - dodanie CA, rekompilacja, ...
przechowywanie danych
źródło: https://d21ii91i3y6o6h.cloudfront.net/gallery images/from proof/3442/large/1418280711/die-cut-stickers.png
I logi systemoweI zewnętrzne nośniki danychI pamięć cacheI dane poufne - hasła
przechowywanie danych - przykład - update
źródło: http://problogger.com/podcast/wp-content/uploads/2015/07/update-banner.png
I aplikacja pobiera plik instalacyjny na kartę SDI game over
przechowywanie danych - przykład - możliwość atakuoffline
źródło: https://www.weblogzwolle.nl/images/stories/Nov 2013 B/offline.jpeg
I aplikacja zapisuje hasło/login i szyfruje to pinemI kilkukrotne złe wpisanie pinu powoduje panikę (i usunięcie
zaszyfrowanych danych)I ...ale przecież można te dane skopiować i wykonać atak offlineI game over
zbędne zasoby
źródło: http://shredworks.com/wp-content/uploads/2012/03/Website-Junk.jpg
I jeżeli czegoś nie musi być w aplikacji...I ...to nie musi tego być w aplikacjiI symbole do debugówI pliki tymczasoweI w ekstremalnym przypadku kod źródłowyI inne zasoby developerskie (SVN, GIT)
zbędne zasoby - przykład
źródło: http://images.thetruthaboutcars.com/2012/08/Junk-Yard-Treasure-Picture-Courtesy-of-Walker-Canada.jpg
I w aplikacji znajdujemy URL do API developerskiegoI API developerskie ujawnia informacje o innych webserwisachI SQL injection w zbędnym API znalezionym przez zbędny wpis w
aplikacji...
mechanizmy IPC
I AndroidI Wyeksportowane Activities, BroadcastReceivers, Services, Content
Providers, ...I uprawnienia do mechanizmów IPC - https://github.com/
commonsguy/cwac-security/blob/master/PERMS.mdI iOS
I handleOpenURL → openURL:sourceApplication:I PasteBoard API
mechanizmy IPC - przykład - iOS
źródło: http://ecx.images-amazon.com/images/I/31TsaGKbdKL.jpg
I aplikacja wymienia się z drugą aplikacją tego samego producenta”tokenami”
I dowolna aplikacja może zawołać hej-masz-token://I jeżeli w odpowiednim (nieoczekiwanym) miejscu zawołamy, to
sprowokujemy use-after-free
mechanizmy IPC - przykłady - Android
źródło: http://www.salvagentemilano.it/media/19435/open.jpg
I aplikacja udostepnia content provider, który pozwala odczytaćwszystko, wszystkim
I udostępniony service, który umożliwia dowolnej aplikacjiuwierzytelnienie sesji...
I często SMS jest uwierzytelniany na podstawie numeru nadawcy...
wykorzystanie wrażliwych danych
źródło: http://leadwithgiantscoaching.com/wp-content/uploads/2014/08/Can-you-keep-a-secret.jpeg
I Android ID, UDID, MAC etc.I przesył danych wrażliwych bez wiedzy użytkownikaI wykorzystanie UDID do uwierzytelniania
wykorzystanie wrażliwych danych - przykład
źródło: http://memegenerator.net/instance/65230946
I aplikacja wysyłała informacje nt. plików multimedialnych dochmury
I twórca twierdzi, że to ”OK, bo trzymamy w zabezpieczonejchmurze w technologii cewquoceqwo321 w kraju XYZ”
I kraj XYZ, to kraj, któremu bym nie ufał :)
zbędne uprawnienia
źródło: http://crooksandliars.com/files/imagecache/node primary/primary image/14/12/respectcartman.jpg
I w systemie Android plagą są zbędne uprawnienia nadawaneaplikacjom
I ...czasem jak dajemy dostęp aplikacji do np. aparatu, to innaaplikacja może spróbować to wykorzystać!
I w ekstremalnych przypadkach ponad połowa uprawnień jestzbędna
zaciemnianie/hardening
źródło: http://authorityflame.com/Assets/2111-SpinGearHardening.jpg
I praktycznie żadna aplikacja nie weryfikuje czy działa na telefoniez rootem/jailbreakiem
I aplikacje na Androida świetnie się dekompilują!I iOS oferuje: PIE, SSP, ARC, ...; warto z tego skorzystać
zaciemnianie - przykład
źródło: http://i1.memy.pl/obrazki/d983905514 no nie.jpg
I kiedyś dostaliśmy do testów aplikację, w której zmienne nazywałysię:
I papierosI papieros2I pupaI ...
inne
źródło: http://www.jesus-is-savior.com/Basics/iceberg.jpg
I aplikacje hybrydoweI memory corruptionsI nieaktualne komponenty
jak żyć?
źródło: https://upload.wikimedia.org/wikipedia/commons/thumb/b/b9/What should I do%3F.png/435px-What should I do%3F.png
I użytkowniku - nie ufaj, aktualizujI programisto - weź sobie do serca bezpieczeństwoI pentesterze - zostaw te web aplikacje
The Mobile Application Hacker’s Handbook
I wydana w kwietniu 2015I iOS, Android, Blackberry, Windows Phone, ...I autorzy opisują jak coś zepsuć oraz jak naprawić!
http://eu.wiley.com/WileyCDA/WileyTitle/productCd-1118958500.html
OWASP
I OWASP Mobile TOP 10I OWASP Mobile Security TestingI OWASP Mobile Guide Developement ProjectI OWASP Threat Model ProjectI OWASP Mobile Apps Checklist 2016
https://www.owasp.org/index.php/OWASP˙Mobile˙Security˙Project
Garść linków
I https://source.android.com/devices/tech/security/
I https://www.apple.com/business/docs/iOS˙Security˙Guide.pdf
I http://sekurak.pl/analiza-komunikacji-http-na-platformie-android/
I http://sekurak.pl/testy-aplikacji-android-rekompilacja/
I http://sekurak.pl/drozer-narzedzie-do-analizy-aplikacji-mobilnych-android/
I http://developer.android.com/training/articles/security-tips.html
I http://www.slideshare.net/jserv/android-ipc-mechanism
I http://www.mcafee.com/us/resources/white-papers/foundstone/wp-pen-testing-android-apps.pdf
I https://www.securecoding.cert.org/confluence/display/android/2+Rules
I https://www.mdsec.co.uk/wp-content/uploads/2015/04/iOS˙Application˙Insecurity˙wp˙v1.0˙final.pdf
I http://www.slideshare.net/logicaltrust/owasp-mobile-top-10-na-przykadzie-aplikacji-bankowych-semafor-2016-mateusz-kocielski
Czas na pytania (i odpowiedzi)
tel: +48 71 738 24 35http://akat1.pl/ @akat1 pl
Top Related