Android Task Hijacking

Support HackTricks

Task, Back Stack and Foreground Activities

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

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

  • Aktywność 1 zaczyna jako jedyna aktywność na pierwszym planie.

  • Uruchomienie Aktywności 2 przesuwa Aktywność 1 do stogu, przynosząc Aktywność 2 na pierwszy plan.

  • Rozpoczęcie Aktywności 3 przesuwa Aktywność 1 i Aktywność 2 dalej w stogu, 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.

Task affinity attack

Overview of Task Affinity and Launch Modes

W aplikacjach Android, powiązanie z zadaniem określa preferowane zadanie aktywności, zazwyczaj zgodne z nazwą pakietu aplikacji. Ta konfiguracja jest kluczowa w tworzeniu aplikacji dowodowej (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 powiązania z zadaniem. Wykorzystanie opiera się na zdolności aplikacji atakującego do naśladowania powiązania z zadaniem aplikacji docelowej, wprowadzając system Android w błąd, aby uruchomił aplikację atakującego zamiast zamierzonego celu.

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 powiązania z zadaniem, 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

Support HackTricks

Last updated