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

74 lines
5.7 KiB
Markdown

# Android Task Hijacking
{% hint style="success" %}
Lerne & übe 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">\
Lerne & übe 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>
* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **Tritt der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folge** uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Teile Hacking-Tricks, indem du PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
</details>
{% endhint %}
## Task, Back Stack und Foreground Activities
In Android ist eine **Task** im Wesentlichen eine Gruppe von Aktivitäten, mit denen Benutzer interagieren, um eine bestimmte Aufgabe abzuschließen, organisiert innerhalb eines **Back Stacks**. Dieser Stack ordnet Aktivitäten basierend darauf, wann sie geöffnet wurden, wobei die aktuellste Aktivität oben als **Foreground Activity** angezeigt wird. Zu jedem Zeitpunkt ist nur diese Aktivität auf dem Bildschirm sichtbar, was sie Teil der **Foreground Task** macht.
Hier ist eine kurze Übersicht über Aktivitätsübergänge:
* **Aktivität 1** beginnt als einzige Aktivität im Vordergrund.
* Das Starten von **Aktivität 2** schiebt **Aktivität 1** in den Back Stack und bringt **Aktivität 2** in den Vordergrund.
* Das Starten von **Aktivität 3** verschiebt **Aktivität 1** und **Aktivität 2** weiter nach hinten im Stack, wobei **Aktivität 3** jetzt vorne ist.
* Das Schließen von **Aktivität 3** bringt **Aktivität 2** zurück in den Vordergrund und zeigt das optimierte Task-Navigationssystem von Android.
![https://developer.android.com/images/fundamentals/diagram\_backstack.png](<../../.gitbook/assets/image (698).png>)
## Task-Affinitätsangriff
### Übersicht über Task-Affinität und Startmodi
In Android-Anwendungen gibt die **Task-Affinität** die bevorzugte Task einer Aktivität an, die typischerweise mit dem Paketnamen der App übereinstimmt. Diese Einrichtung ist entscheidend für die Erstellung einer Proof-of-Concept (PoC) App zur Demonstration des Angriffs.
### Startmodi
Das Attribut `launchMode` steuert die Handhabung von Aktivitätsinstanzen innerhalb von Tasks. Der **singleTask**-Modus ist für diesen Angriff entscheidend, da er drei Szenarien basierend auf den vorhandenen Aktivitätsinstanzen und Übereinstimmungen der Task-Affinität diktiert. Der Exploit beruht auf der Fähigkeit der App des Angreifers, die Task-Affinität der Ziel-App nachzuahmen, wodurch das Android-System in die Irre geführt wird, die App des Angreifers anstelle der beabsichtigten Ziel-App zu starten.
### Detaillierte Angriffs Schritte
1. **Installation der bösartigen App**: Das Opfer installiert die App des Angreifers auf seinem Gerät.
2. **Erste Aktivierung**: Das Opfer öffnet zuerst die bösartige App und bereitet das Gerät für den Angriff vor.
3. **Versuch, die Ziel-App zu starten**: Das Opfer versucht, die Ziel-App zu öffnen.
4. **Ausführung der Hijack**: Aufgrund der übereinstimmenden Task-Affinität wird die bösartige App anstelle der Ziel-App gestartet.
5. **Täuschung**: Die bösartige App zeigt einen gefälschten Anmeldebildschirm, der der Ziel-App ähnelt, und täuscht den Benutzer, sensible Informationen einzugeben.
Für eine praktische Umsetzung dieses Angriffs siehe das Task Hijacking Strandhogg-Repository auf GitHub: [Task Hijacking Strandhogg](https://github.com/az0mb13/Task\_Hijacking\_Strandhogg).
### Präventionsmaßnahmen
Um solche Angriffe zu verhindern, können Entwickler `taskAffinity` auf einen leeren String setzen und den `singleInstance`-Startmodus wählen, um die Isolation ihrer App von anderen zu gewährleisten. Die Anpassung der Funktion `onBackPressed()` bietet zusätzlichen Schutz gegen Task-Hijacking.
## **Referenzen**
* [**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" %}
Lerne & übe 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">\
Lerne & übe 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>
* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **Tritt der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folge** uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Teile Hacking-Tricks, indem du PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
</details>
{% endhint %}