Course Code: mobileappsec
Duration: 35 hours
Prerequisites:

Podstawowa wiedza z zakresu bezpieczeństwa.

Wiedza na temat systemu Android.

Overview:

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.
Course Outline:

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
Sites Published:

Polska - Bezpieczeństwo aplikacji mobilnych (Android, cross platform, API)