Podstawowa wiedza z zakresu bezpieczeństwa.
Wiedza na temat systemu Android.
Wraz z wzrostem popularności urządzeń mobilnych, coraz ważniejsze staje się zapewnienie odpowiedniego poziomu bezpieczeństwa przeznaczonych na nie aplikacji. Jakie wyzwania stawia przed twórcami aplikacji system Android? Jak skutecznie analizować aplikacje Androidowe w poszukiwaniu podatności?
W tym szkoleniu pokażemy uczestnikom jak przeprowadzać testy penetracyjne aplikacji mobilnych oparte o metodykę OWASP MSTG i standard MASVS.
Pod koniec tego kursu uczestnicy będą mogli:
- Przeprowadzić dekompilację badanej aplikacji
- Pracować z kodem poddanym obfuskacji
- Rozpoznać i wykorzystać podatności w komponentach komunikacji międzyprocesowej
- Ominąć certificate pinning i przeanalizować ruch sieciowy
- Zbadać bezpieczeństwo komponentów WebView
- Przeanalizować kod bibliotek natywnych i aplikacji cross-platform
- Testować zdalne API wykorzystywane przez aplikację
Z naciskiem na praktyczne podatności aplikacji mobilnych i metody ich wykrywania, szkolenie wprowadzi programistów i badaczy bezpieczeństwa w zagadnienia związane z bezpieczeństwem systemu Android.
Format kursu
- Teoretyczne wprowadzenie do architektury i modelu bezpieczeństwa aplikacji Androidowych
- Omówienie technik badania bezpieczeństwa aplikacji w modelu black box wraz z ćwiczeniami praktycznymi
- Analiza przykładów podatnego kodu wraz ze sposobami ich wykorzystania przez atakujących.
Dzień 1: Wprowadzenie do bezpieczeństwa systemu Android
- wprowadzenie do systemu Android
- model bezpieczeństwa Androida: izolacja aplikacji, system uprawnień
- Android z punktu widzenia programisty: Java, Kotlin, manifest, zasoby, komponenty IPC, web API
- aplikacje od środka: formaty plików dex i apk
- Android a Linux: z punktu widzenia programisty i z punktu widzenia badacza bezpieczeństwa
- bezpieczeństwo Androida od środka: DAC, SELinux, montowanie partycji, dm-verity
- rootowanie
- podstawowe narzędzia: Android Studio, ADB, logcat
- bezpieczeństwo aplikacji Androidowych w teorii: CVSS, MASVS, MSTG
Dzień 2: Inżynieria wsteczna aplikacji Androidowych, analiza statyczna i bezpieczeństwo IPC
- co to jest inżynieria wsteczna (rewersowanie)
- inżynieria wsteczna przy pomocy programu apktool: dekodowanie zasobów, deasemblacja kodu
- maszyna wirtualna Dalvik, bajtkod dex i język Smali
- dekompilacja kodu do języka Java: Bytecode Viewer
- praca ze zdekompilowanym kodem w Android Studio
- analiza manifestu pod kątem IPC
- automatyczna analiza statyczna przy pomocy MobSF
- dynamiczna analiza powierzchni ataku IPC przy pomocy Drozera
- podatności w IPC
- przygotowywanie proof of concept: am, Drozer, Java/Kotlin
Dzień 3: Analiza dynamiczna, repacking i instrumentacja
- analiza logów aplikacji
- analiza zawartości systemu plików
- debugowalne i backupowalne aplikacje
- praca z debuggerem
- analiza ruchu sieciowego: tcpdump, Burp Proxy
- zaufane certyfikaty i certificate pinning
- repacking: modyfikowanie kodu lub manifestu aplikacji, ziapligner, jarsigner
- instrumentacja: Frida i Objection
Dzień 4: WebView, aplikacje cross-platform, biblioteki natywne
- WebView: HTML i JavaScript w aplikacjach Androidowych
- interakcje między WebView a Javą: dostęp do filesystemu i JavascriptInterface
- podatności w WebView: uzyskanie dostępu przez ucieczkę, XSS lub debugowalne WebView
- podatności w WebView: eskalacja przez JavascriptInterface
- aplikacje cross-platform: teoria
- inżynieria wsteczna aplikacji C# (Xamarin) przy pomocy dotPeek i ILSpy
- inżynieria wsteczna aplikacji JavaScript (React Native) przy pomocy react-native-decompiler
- pozostałe frameworki cross-platform: Flutter (Dart), Ionic/Angular (JavaScript) i inne
- biblioteki natywne: C, C++ i kod maszynowy w aplikacjach Androidowych
- JNI: System.loadLibrary() i metody ze słowem kluczowym native
- inżynieria wsteczna bibliotek natywnych przy pomocy narzędzia Ghidra
Dzień 5: Bezpieczeństwo API webowego
- API webowe w aplikacjach Androidowych
- protokoły do API webowego: SOAP, REST, JSON-RPC, GraphQL i inne
- OWASP API Top 10
- przechwytywanie komunikacji z API przy użyciu Burp Proxy
- Burp Repeater: modyfikacja zapytań do API
- podatności związane z uwierzytelnianiem: credential stuffing, login SQL injection, podatności w JWT
- podatności związane z kontrolą dostępu: IDOR, mass assignment, dostęp do funkcji administracyjnych i debugowych
- inne podatności: SSRF, injection, nadmiarowe dane w wiadomościach o błędach, podatności serwera
- odkrywanie dodatkowych funkcji API w plikach definicji: WSDL, Swagger/OpenAPI, GraphQL SDL itp.
- automatyczne generowanie zapytań API: SoapUI, Postman
Polska - Bezpieczeństwo aplikacji mobilnych (Android, cross platform, API)