Android Task Hijacking

Reading time: 4 minutes

tip

Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Ucz się i ćwicz Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Wsparcie dla HackTricks

Zadania, Stos Wsteczny i Aktywności w Pierwszym Planie

W Androidzie, zadanie to zasadniczo zestaw aktywności, z którymi użytkownicy wchodzą w interakcję, aby wykonać określone zadanie, zorganizowane w stos wsteczny. Stos ten porządkuje aktywności na podstawie momentu ich otwarcia, z najnowszą aktywnością wyświetlaną na górze jako aktywność w pierwszym planie. W każdej chwili tylko ta aktywność jest widoczna na ekranie, co czyni ją częścią zadania w pierwszym planie.

Oto szybkie podsumowanie przejść między aktywnościami:

  • Aktywność 1 zaczyna jako jedyna aktywność w pierwszym planie.
  • Uruchomienie Aktywności 2 przesuwa Aktywność 1 do stosu wstecznego, przynosząc Aktywność 2 na pierwszy plan.
  • Rozpoczęcie Aktywności 3 przesuwa Aktywność 1 i Aktywność 2 dalej w stosie, z Aktywnością 3 teraz na przodzie.
  • Zamknięcie Aktywności 3 przywraca Aktywność 2 na pierwszy plan, pokazując uproszczony mechanizm nawigacji zadań w Androidzie.

https://developer.android.com/images/fundamentals/diagram_backstack.png

Atak na afinity zadania

Przegląd afinity zadania i trybów uruchamiania

W aplikacjach Android, afinity zadania określa preferowane zadanie aktywności, zazwyczaj zgodne z nazwą pakietu aplikacji. Ta konfiguracja jest kluczowa w tworzeniu aplikacji proof-of-concept (PoC) do demonstrowania ataku.

Tryby uruchamiania

Atrybut launchMode kieruje obsługą instancji aktywności w zadaniach. Tryb singleTask jest kluczowy dla tego ataku, dyktując trzy scenariusze w oparciu o istniejące instancje aktywności i dopasowania afinity zadania. Wykorzystanie polega na zdolności aplikacji atakującego do naśladowania afinity zadania aplikacji docelowej, wprowadzając system Android w błąd, aby uruchomił aplikację atakującego zamiast zamierzonej ofiary.

Szczegółowe kroki ataku

  1. Instalacja złośliwej aplikacji: Ofiara instaluje aplikację atakującego na swoim urządzeniu.
  2. Początkowa aktywacja: Ofiara najpierw otwiera złośliwą aplikację, przygotowując urządzenie do ataku.
  3. Próba uruchomienia aplikacji docelowej: Ofiara próbuje otworzyć aplikację docelową.
  4. Wykonanie przejęcia: W pewnym momencie aplikacja próbuje otworzyć widok singleTask. Z powodu dopasowania afinity zadania, złośliwa aplikacja jest uruchamiana zamiast aplikacji docelowej.
  5. Oszustwo: Złośliwa aplikacja wyświetla fałszywy ekran logowania przypominający aplikację docelową, oszukując użytkownika, aby wprowadził wrażliwe informacje.

tip

Zauważ, że aby ten atak zadziałał, wrażliwy widok nie musi mieć eksportu ustawionego na true ani nie musi być główną aktywnością.

Aby uzyskać praktyczną implementację tego ataku, zapoznaj się z repozytorium Task Hijacking Strandhogg na GitHubie: Task Hijacking Strandhogg.

Środki zapobiegawcze

Aby zapobiec takim atakom, deweloperzy mogą:

  • Ustawić taskAffinity widoku singleTask na pusty ciąg (android:taskAffinity="")
  • Wybrać tryb uruchamiania singleInstance, zapewniając izolację ich aplikacji od innych.
  • Dostosować funkcję onBackPressed(), co oferuje dodatkową ochronę przed przejęciem zadań.

Referencje

tip

Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Ucz się i ćwicz Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Wsparcie dla HackTricks