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

112 lines
7.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Android任务劫持
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks云 ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 推特 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 YouTube 🎥</strong></a></summary>
* 你在一家**网络安全公司**工作吗你想在HackTricks中看到你的**公司广告**吗?或者你想获得**PEASS的最新版本或下载PDF格式的HackTricks**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
* 发现我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)收藏品[**The PEASS Family**](https://opensea.io/collection/the-peass-family)
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
* **加入**[**💬**](https://emojipedia.org/speech-balloon/) [**Discord群组**](https://discord.gg/hRep4RUj7f)或[**电报群组**](https://t.me/peass),或者**关注**我在**Twitter**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
* **通过向**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **和**[**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **提交PR来分享你的黑客技巧。**
</details>
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
找到最重要的漏洞以便您可以更快地修复它们。Intruder跟踪您的攻击面运行主动威胁扫描发现整个技术堆栈中的问题从API到Web应用程序和云系统。[**立即免费试用**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks)。
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
***
## 任务、后台堆栈和前台活动
任务是用户在执行某个任务时与之交互的活动集合。这些活动按照打开每个活动的顺序排列在一个堆栈中,即**后台堆栈**。
在屏幕上**显示**的活动称为**前台活动**,其**任务**称为**前台任务**。一次只能**在屏幕上看到一个前台任务**。
这是一些简单的活动流程:
* 只有Activity 1在前台。
* 启动Activity 2将Activity 1推入后台堆栈。现在Activity 2在前台。
* 启动Activity 3将Activity 1和2都推入后台堆栈。
* 现在关闭Activity 3。之前的活动即2会自动带到前台。这就是Android中任务导航的工作原理。
![](<../../.gitbook/assets/image (548).png>)
### Android多任务 - 一个任务
一个任务由多个活动组成
![](<../../.gitbook/assets/image (549).png>)
### Android多任务 - 多个任务
Android通常管理多个任务
![](<../../.gitbook/assets/image (550).png>)
## 任务控制开关
![](<../../.gitbook/assets/image (551).png>)
## 任务亲和性攻击
### 任务亲和性和启动模式
**任务亲和性**是在`AndroidManifest.xml`文件中的每个`<activity>`标签中定义的属性。它描述了一个活动首选加入的任务。\
默认情况下,每个活动的亲和性与**包名**相同。
在创建我们的PoC应用程序时我们将使用这个属性。
```markup
<activity android:taskAffinity=""/>
```
**启动模式**允许您定义新的活动实例与当前任务的关联方式。[`launchMode`](https://developer.android.com/guide/topics/manifest/activity-element#lmode)属性指定了活动应该如何启动到任务中的指令。有四种不同的**启动模式**
1. standard默认
2. singleTop
3. **singleTask**
4. singleInstance
当`launchMode`设置为`singleTask`时Android系统会评估三种可能性其中一种是我们攻击可能发生的原因。它们如下
* **如果活动实例已经存在**\
Android会恢复现有实例而不是创建新实例。这意味着在此模式下系统中最多只有一个活动实例。
* **如果需要创建新的活动实例**\
活动管理器服务AMS通过在所有现有任务中查找“**匹配**”任务来选择一个任务来托管新创建的实例。**如果活动“匹配”任务,则它们具有相同的任务亲和性**。这就是为什么我们可以在我们的恶意/攻击者应用中指定与易受攻击应用相同的任务亲和性,以便它在其任务中启动而不是创建自己的任务。
* **未找到“匹配”任务**\
AMS会创建一个新任务并将新的活动实例设置为新创建任务的根活动。
### 攻击
受害者需要在设备上安装**恶意应用**。然后,他需要在打开**易受攻击的应用**之前**打开**它**。然后,当**易受攻击的应用**被**打开**时,**恶意应用**将被**打开****代替**。如果这个恶意应用程序呈现与易受攻击应用相同的登录界面,**用户将无法知道他正在将凭据输入到恶意应用程序中**。
**您可以在此处找到实施的攻击:**[**https://github.com/az0mb13/Task\_Hijacking\_Strandhogg**](https://github.com/az0mb13/Task\_Hijacking\_Strandhogg)
## 防止任务劫持
设置**`taskAffinity=""`**可以快速修复此问题。如果应用程序不希望其他活动加入属于它的任务,还可以将启动模式设置为**singleInstance**。还可以添加自定义的**onBackPressed()**函数,以覆盖默认行为。
## **参考资料**
* [**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)
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
找到最重要的漏洞以便您可以更快地修复它们。Intruder跟踪您的攻击面运行主动威胁扫描发现整个技术堆栈中的问题从API到Web应用程序和云系统。[**立即免费试用**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks)。
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
* 您在**网络安全公司**工作吗您想在HackTricks中看到您的公司广告吗或者您想获得PEASS的**最新版本或下载PDF格式的HackTricks**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
* 发现我们的独家[NFT](https://opensea.io/collection/the-peass-family)收藏品[**The PEASS Family**](https://opensea.io/collection/the-peass-family)
* 获得[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
* **加入**[**💬**](https://emojipedia.org/speech-balloon/) [**Discord群组**](https://discord.gg/hRep4RUj7f)或[**电报群组**](https://t.me/peass),或在**Twitter**上**关注**我[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
* **通过向**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **和**[**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **提交PR来分享您的黑客技巧。**
</details>