Nullify

Usługi

Testy penetracyjne Audyty bezpieczeństwa Bezpieczeństwo aplikacji Szkolenia dla firm Bezpłatny skan ekspozycji

Menu

Blog O nas Kontakt
Pentest / Android

Testy penetracyjne aplikacji Android

Rozkładamy APK na części, uruchamiamy aplikację na urządzeniu z pełnymi uprawnieniami i sprawdzamy, co mogą z nią zrobić inne aplikacje na telefonie, podsłuch w sieci i sam użytkownik.

PakietAPK / AAB
StandardOWASP MASVS i MASTG
Odpowiedźbezpłatna wycena w 24 h
Zakres

Co sprawdzamy na Androidzie

APK

Analiza pakietu

Dekompilacja kodu i zasobów, AndroidManifest, biblioteki natywne. Szukamy kluczy API, adresów środowisk testowych, ukrytych ekranów i flag takich jak debuggable czy allowBackup.

IPC

Komponenty i intenty

Wyeksportowane aktywności, serwisy, odbiorniki i dostawcy treści dostępni dla innych aplikacji na telefonie. Sprawdzamy, czy da się przez nie wywołać akcję albo odczytać dane bez uprawnień.

LINK

Deeplinki i App Links

Czy link z maila lub strony wykona akcję bez potwierdzenia, przekaże złośliwe parametry albo zostanie przechwycony przez inną aplikację podszywającą się pod Waszą.

WEB

WebView

Ładowanie obcych treści, mostki JavaScript (addJavascriptInterface), dostęp do plików lokalnych. Błąd w WebView daje napastnikowi uprawnienia samej aplikacji.

DATA

Dane na urządzeniu

SharedPreferences, bazy SQLite, pamięć zewnętrzna, logi i kopie zapasowe. Sprawdzamy, czy sekrety trafiają do Android Keystore i co zostaje po wylogowaniu.

NET

Komunikacja i backend

Konfiguracja Network Security Config, ruch nieszyfrowany, zaufanie do certyfikatów użytkownika, przypinanie certyfikatów. Potem API, bo tam zwykle jest najpoważniejsze ryzyko.

Kontekst

Android daje napastnikowi więcej punktów wejścia

Na Androidzie aplikacja nie jest zamkniętym pudełkiem. Rozmawia z innymi aplikacjami przez intenty, udostępnia im swoje komponenty, otwiera linki z dowolnego źródła i często wyświetla strony w WebView. Każdy z tych kanałów to droga, którą coś z zewnątrz może dostać się do środka.

Najczęstszy błąd specyficzny dla platformy to wyeksportowany komponent bez kontroli. Aktywność albo dostawca treści dostępny dla każdej aplikacji na telefonie, który pokazuje dane albo wykonuje akcję bez sprawdzenia, kto o to prosi. Złośliwa aplikacja zainstalowana obok nie potrzebuje wtedy żadnych uprawnień.

Druga grupa to dane zostawione na urządzeniu. Tokeny w SharedPreferences zamiast w Keystore, pliki na pamięci współdzielonej, logi z odpowiedziami serwera i kopie zapasowe, z których da się wyciągnąć dane aplikacji. Telefon z Androidem łatwo zrootować, więc wszystko, co nie jest szyfrowane kluczem ze sprzętowego magazynu, trzeba traktować jak jawne.

Jak w każdym teście mobilnym, najpoważniejsze znaleziska zwykle siedzą w backendzie. Dlatego zalecamy, żeby API było w zakresie. Szerzej o całym procesie piszemy we wpisie co sprawdzamy w teście aplikacji mobilnej.

Proces

Jak wygląda test

01

Ustalamy zakres

Definiujemy, co testujemy, w jakim trybie i w jakich godzinach. Doprecyzowujemy, co jest poza zakresem.

02

Podpisujemy NDA

Pełna poufność na każdym etapie. Znalezione podatności zostają między nami.

03

Przeprowadzamy testy

Testy manualne wsparte narzędziami. Krytyczne znaleziska zgłaszamy od razu, nie czekamy z nimi do raportu.

04

Raport i retest

Raport z oceną ryzyka, krokami reprodukcji i rekomendacjami. Po wdrożeniu poprawek sprawdzamy je ponownie.

FAQ

Najczęstsze pytania

Wystarczy Wam plik APK?

Tak, do podstawowego testu wystarczy APK albo dostęp przez kanał testowy w Google Play. Jeśli aplikacja jest wydawana jako AAB, wygenerujemy z niego instalowalne pakiety. Wersja bez zaciemniania kodu (R8/ProGuard) albo dostęp do kodu źródłowego pozwala zejść głębiej w tym samym czasie.

Czy testujecie na zrootowanym telefonie?

Tak, bo tak pracuje napastnik. Root pozwala zajrzeć do danych aplikacji i modyfikować jej działanie w trakcie pracy (Frida). Sprawdzamy też, czy wykrywanie roota i weryfikacja integralności działają i ile czasu zajmuje ich obejście.

Aplikacja jest we Flutterze albo React Native. To coś zmienia?

Zmienia narzędzia, nie zakres. Kod frameworka wymaga innej analizy niż natywna Java czy Kotlin, ale komponenty Androida, przechowywanie danych i komunikacja z serwerem działają tak samo i sprawdzamy je w ten sam sposób.

Testujecie od razu wersję na iOS?

Możemy, ale to osobny zakres - inne mechanizmy platformy i inne narzędzia. Wspólny backend testujemy raz, więc przy obu platformach ta część się nie dubluje. Zobacz też testy penetracyjne aplikacji iOS.

Przetestuj aplikację na Androida

Napisz, czy aplikacja jest już w Google Play i czy mamy sprawdzić także backend - odezwiemy się w 24 h z wyceną.

Zapytaj o wycenę