Android Task Hijacking

Reading time: 3 minutes

tip

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

Wsparcie HackTricks

Task, Back Stack and Foreground Activities

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

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

  • Activity 1 zaczyna jako jedyna aktywność w foreground.
  • Uruchomienie Activity 2 przesuwa Activity 1 do back stack, przynosząc Activity 2 na foreground.
  • Rozpoczęcie Activity 3 przesuwa Activity 1 i Activity 2 dalej w stosie, z Activity 3 teraz na przodzie.
  • Zamknięcie Activity 3 przywraca Activity 2 na foreground, pokazując uproszczony mechanizm nawigacji zadań w Androidzie.

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

Task affinity attack

Overview of Task Affinity and Launch Modes

W aplikacjach Android, task affinity określa preferowany task dla aktywności, zazwyczaj zgodny z nazwą pakietu aplikacji. Ta konfiguracja jest kluczowa w tworzeniu aplikacji proof-of-concept (PoC) do demonstrowania ataku.

Launch Modes

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

Detailed Attack Steps

  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: Z powodu dopasowania task affinity, 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.

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

Prevention Measures

Aby zapobiec takim atakom, deweloperzy mogą ustawić taskAffinity na pusty ciąg i wybrać tryb uruchamiania singleInstance, zapewniając izolację ich aplikacji od innych. Dostosowanie funkcji onBackPressed() oferuje dodatkową ochronę przed przejęciem zadań.

References

tip

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

Wsparcie HackTricks