Aplikacja mobilna działa na urządzeniu, którego jej twórca nie kontroluje. Wszystko, co trafia do pakietu, można odczytać, każde zabezpieczenie działające na urządzeniu można obejść, a każdy sekret zaszyty w kodzie staje się jawny w dniu wydania aplikacji.
Analizujemy aplikację statycznie i na urządzeniach z instrumentacją, przechwytujemy jej ruch i testujemy backend, z którym się komunikuje. Pytanie jest zawsze to samo: co może zrobić ktoś, kto jest właścicielem urządzenia albo korzysta z tej samej sieci.
01Zakres
Co testujemy
Pamięć lokalna: bazy danych, ustawienia, Keychain i Keystore, logi, kopie zapasowe
Sieć: konfiguracja TLS, przypinanie certyfikatów, ruch nieszyfrowany
Uwierzytelnianie: biometria, tokeny, obsługa sesji, powiązanie z urządzeniem
Interakcja z platformą: deep linki, intencje, schematy URL, WebView, schowek
Jakość kodu i ustawienia kompilacji: flagi debugowania, eksportowane komponenty, uprawnienia
Odporność: wykrywanie roota i jailbreaku, ochrona przed modyfikacją, zaciemnianie kodu
API backendu używane przez aplikację
02Podejście
Jak przebiega praca
01
Analiza statyczna
Rozpakowujemy i dekompilujemy pakiet. Czytamy konfigurację, szukamy sekretów i badamy, jak aplikacja przechowuje i chroni dane.
02
Analiza dynamiczna
Aplikacja działa na urządzeniach z instrumentacją. Przechwytujemy wywołania jej funkcji, obchodzimy jej zabezpieczenia i obserwujemy, co zapisuje i wysyła.
03
Analiza ruchu
Przechwytujemy ruch przy wyłączonym przypinaniu certyfikatów. Następnie testujemy backend bezpośrednio, bez ograniczeń, które narzuca aplikacja kliencka.
04
Nadużycie platformy
Wywołujemy aplikację z innych aplikacji na urządzeniu przez jej linki, intencje i eksportowane komponenty.
Klasa słabości leżącej u podstaw każdego znaleziska.
The MITRE Corporation
06Pytania
Pytania o tę usługę
Czy musimy udostępnić kod źródłowy?
Nie. Testujemy aplikację w takiej postaci, w jakiej jest dystrybuowana. Kod źródłowy przyspiesza pracę i zwiększa precyzję znalezisk; można go dodać w ramach przeglądu bezpieczeństwa kodu.
Czy backend jest objęty testem?
Tak. Test aplikacji mobilnej bez backendu obejmuje połowę powierzchni ataku. API testujemy przez interfejs, którego używa aplikacja.
Nasza aplikacja stosuje przypinanie certyfikatów i wykrywanie roota. Czy to uniemożliwia testy?
Spowalnia atakującego i spowalnia nas. Obchodzimy te zabezpieczenia i podajemy w raporcie, ile wysiłku to wymagało, co pokazuje, ile są warte.