6 KiB
Android Task Hijacking
{% hint style="success" %}
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.
Try Hard Security Group
{% embed url="https://discord.gg/tryhardsecurity" %}
Zadanie, Stos Wsteczny i Aktywności na 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 stosie wstecznym. Stos ten 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 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 dla aktywności, zazwyczaj zgodne z nazwą pakietu aplikacji. Ta konfiguracja jest kluczowa w tworzeniu aplikacji dowodowej (PoC) do demonstrowania ataku.
Tryby uruchamiania
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 afinity zadania. Wykorzystanie opiera się 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 aplikacji docelowej.
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: Z powodu dopasowanej 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.
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
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ń.
Referencje
- https://blog.dixitaditya.com/android-task-hijacking/
- https://blog.takemyhand.xyz/2021/02/android-task-hijacking-with.html
Try Hard Security Group
{% embed url="https://discord.gg/tryhardsecurity" %}
{% hint style="success" %}
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.