Na podstawie ponad stu testów aplikacji mobilnych przedstawienie tego co robimy źle, a co jeszcze gorzej. Skupiając się głównie na platformach iOS oraz Android, przeanalizujemy garść typowych i nietypowych błędów. Przestudiujemy problemy, które można napotkać podczas testów bezpieczeństwa oraz pokażemy jak zaradny pentester może sobie z nimi poradzić, dobry programista unikać, a świadomy użytkownik zdawać sobie sprawę, że nosi dziurawy software w kieszeniach.
5. aplikacje mobilne są wszędzie
źródło: http://memegenerator.net/instance/55352888
1,6 mln aplikacji w Google Play, 1,5 mln aplikacji w AppStore,
300+ tysięcy w Marketplace...
...urządzenia mobilne są wszędzie...
...jak bezpieczne są aplikacje, których używamy?
zmiana modelu zagrożeń względem innych aplikacji, które
testujemy
6. ciężkie życie pentestera - sprzęt
aktualnie mamy w biurze:
kilkanaście telefonów i 5 tabletów
Android, iOS, Widows Phone, FirefoxOS, Symbian, ...
potrzeba posiadania różnych konfiguracji sprzętowych
potrzeba posiadania różnych wersji systemów
7. ciężkie życie pentestera - rootowanie/jailbreak
źródło: http://resources0.news.com.au/images/2011/03/29/1226029/777612-the-simpsons.jpg
po co mi jailbreak/unlock/root?
iOS/Windows Phone - problem z jailbreakami/unlock
Android, Firefox OS - rootowanie jest proste
8. 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
problemy z dostępnością JailBreaków
problem z upgrade/downgrade
problem z kompatybilnością narzędzi pomiędzy wersjami iOS
Objective-C (teraz Swift)
9. ciężkie życie pentestera - Android
źródło: http://www.shake-them-all.net/files/skins/69/preview.png
mnogość platform sprzętowych
Java
łatwiej się rootuje...
...ale część rzeczy łatwiej zrobić na iOS
12. server side - przykład - upload zdjęć
źródło: http://vignette3.wikia.nocookie.net/scribblenauts/images/2/25/Trojan Horse.png/revision/latest
aplikacja akceptowała zdjęcia od użytkownika celem
udostępnienia ich innym
...bezpośrednio zrobione przez ”aparat telefonu”, co może pójść
źle?
można zrobić zdjęcie .php
remote code execution
game over
13. server side - przykład - skrypty z lat 90.
źródło: https://deadhomersociety.files.wordpress.com/2012/08/theottoshow11.png
aplikacja zbierała informacje o błędach do pewnego katalogu
directory listing umożliwia przejrzenie zawartości katalogu
skrypty php (o rozszerzeniach .inc dołączane do głównego
skryptu)
w jednym ze skryptów eval() pobiera dane od użytkownika
remote code execution
game over
14. server side - przykład - CSRF
źródło: http://talks.php.net/presentations/slides/php-under-attack/csrf.png
API mobilne działa na jednym serwerze aplikacyjnym co API
webowe
współdzielą sesję
współdzielą adres URL
API webowe weryfikuje tokeny CSRF
API mobilne nie ma tokenów CSRF
CSRF - game over
15. server side - co zrobić lepiej
źródło: https://deadhomersociety.files.wordpress.com/2012/08/theottoshow11.png
korzystać z frameworków (statystyka pokazuje, że prawie na
pewno się gdzieś pomylisz)
zwracać szczególną uwagę na stronę serwerową
testować, testować, testować!
16. szyfrowanie transmisji
źródło: http://rysunki.me/wp-content/uploads/2015/10/kmwtw-og.gif
wiele aplikacji (wśród polskich aplikacji bankowych 60%) do
części transmisji nie wykorzystuje szyfrowania
jakie niesie to zagrożenia?
MitM
zachwianie integralności
naruszenie poufności
problemy z WebView mogą doprowadzić do RCE na systemie
Android - https://labs.mwrinfosecurity.com/blog/
webview-addjavascriptinterface-remote-code-execution/ - API
starsze od wersji 17
17. szyfrowanie transmisji - przykład - aplikacja bankowa
źródło: http://tmpolska.info/wp-content/uploads/2016/01/bank-transf.jpg
aplikacja pobiera z serwera dane protokołem http
dane to m.in. konfiguracja zawierająca URLe, na które wysyłane
są dane Klienta
jeżeli atakujący jest w stanie podmienić adresy, to może odebrać
dane od Klienta
game over
18. szyfrowanie transmisji - przykład - mały bazar aplikacji
źródło: http://m.natemat.pl/8af6a98a5f13620571e05ff04a40ae48,640,0,0,0.jpg
mały bazar z zew. aplikacjami (Google Play w Google Play)
aplikacje pobierane były protokołem HTTP
z tego samego serwera była pobierana suma kontrola (też
protokołem HTTP)
game over
19. szyfrowanie transmisji - przykład - reputacja adresów URL
źródło: http://img.photobucket.com/albums/v642/shakespeares sister/reusables/caesarbush.png
aplikacja wpinała się w przeglądarkę systemową
przy wejściu na dowolną stronę sprawdzano czy URL nie jest na
czarnych listach
...robiono to po HTTP...
...również jak użytkownik odwiedzał stronę używając HTTPS...
game over
20. szyfrowanie transmisji - jak żyć?
SZYFRUJ, BO INACZEJ CIĘ
ZNAJDZIEMY I NIE BĘDZIE
WESOŁO!
weryfikuj certyfikaty
szyfruj wszystko
certificate pinning
goto fail
23. przechowywanie danych - przykład - update
źródło: http://problogger.com/podcast/wp-content/uploads/2015/07/update-banner.png
aplikacja pobiera plik instalacyjny na kartę SD
game over
24. przechowywanie danych - przykład - możliwość ataku
offline
źródło: https://www.weblogzwolle.nl/images/stories/Nov 2013 B/offline.jpeg
aplikacja zapisuje hasło/login i szyfruje to pinem
kilkukrotne złe wpisanie pinu powoduje panikę (i usunięcie
zaszyfrowanych danych)
...ale przecież można te dane skopiować i wykonać atak offline
game over
26. zbędne zasoby - przykład
źródło: http://images.thetruthaboutcars.com/2012/08/Junk-Yard-Treasure-Picture-Courtesy-of-Walker-Canada.jpg
w aplikacji znajdujemy URL do API developerskiego
API developerskie ujawnia informacje o innych webserwisach
SQL injection w zbędnym API znalezionym przez zbędny wpis w
aplikacji...
28. mechanizmy IPC - przykład - iOS
źródło: http://ecx.images-amazon.com/images/I/31TsaGKbdKL.jpg
aplikacja wymienia się z drugą aplikacją tego samego producenta
”tokenami”
dowolna aplikacja może zawołać hej-masz-token://
jeżeli w odpowiednim (nieoczekiwanym) miejscu zawołamy, to
sprowokujemy use-after-free
29. mechanizmy IPC - przykłady - Android
źródło: http://www.salvagentemilano.it/media/19435/open.jpg
aplikacja udostepnia content provider, który pozwala odczytać
wszystko, wszystkim
udostępniony service, który umożliwia dowolnej aplikacji
uwierzytelnienie sesji...
często SMS jest uwierzytelniany na podstawie numeru nadawcy...
30. wykorzystanie wrażliwych danych
źródło: http://leadwithgiantscoaching.com/wp-content/uploads/2014/08/Can-you-keep-a-secret.jpeg
Android ID, UDID, MAC etc.
przesył danych wrażliwych bez wiedzy użytkownika
wykorzystanie UDID do uwierzytelniania
31. wykorzystanie wrażliwych danych - przykład
źródło: http://memegenerator.net/instance/65230946
aplikacja wysyłała informacje nt. plików multimedialnych do
chmury
twórca twierdzi, że to ”OK, bo trzymamy w zabezpieczonej
chmurze w technologii cewquoceqwo321 w kraju XYZ”
kraj XYZ, to kraj, któremu bym nie ufał :)
32. zbędne uprawnienia
źródło: http://crooksandliars.com/files/imagecache/node primary/primary image/14/12/respectcartman.jpg
w systemie Android plagą są zbędne uprawnienia nadawane
aplikacjom
...czasem jak dajemy dostęp aplikacji do np. aparatu, to inna
aplikacja może spróbować to wykorzystać!
w ekstremalnych przypadkach ponad połowa uprawnień jest
zbędna
34. zaciemnianie - przykład
źródło: http://i1.memy.pl/obrazki/d983905514 no nie.jpg
kiedyś dostaliśmy do testów aplikację, w której zmienne nazywały
się:
papieros
papieros2
pupa
...
37. The Mobile Application Hacker’s Handbook
wydana w kwietniu 2015
iOS, Android, Blackberry, Windows Phone, ...
autorzy opisują jak coś zepsuć oraz jak naprawić!
http://eu.wiley.com/WileyCDA/WileyTitle/productCd-1118958500.html
38. OWASP
OWASP Mobile TOP 10
OWASP Mobile Security Testing
OWASP Mobile Guide Developement Project
OWASP Threat Model Project
OWASP Mobile Apps Checklist 2016
https://www.owasp.org/index.php/OWASP˙Mobile˙Security˙Project