hacktricks/mobile-pentesting/android-app-pentesting/android-task-hijacking.md

74 lines
5.5 KiB
Markdown

# Android Task Hijacking
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## 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.
![https://developer.android.com/images/fundamentals/diagram\_backstack.png](<../../.gitbook/assets/image (698).png>)
## 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](https://github.com/az0mb13/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**
* [**https://blog.dixitaditya.com/android-task-hijacking/**](https://blog.dixitaditya.com/android-task-hijacking/)
* [**https://blog.takemyhand.xyz/2021/02/android-task-hijacking-with.html**](https://blog.takemyhand.xyz/2021/02/android-task-hijacking-with.html)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}