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
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów na githubie.
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.
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
- Instalacja złośliwej aplikacji: Ofiara instaluje aplikację atakującego na swoim urządzeniu.
- Początkowa aktywacja: Ofiara najpierw otwiera złośliwą aplikację, przygotowując urządzenie do ataku.
- Próba uruchomienia aplikacji docelowej: Ofiara próbuje otworzyć aplikację docelową.
- 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.
- 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
- https://blog.dixitaditya.com/android-task-hijacking/
- https://blog.takemyhand.xyz/2021/02/android-task-hijacking-with.html
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
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów na githubie.