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

113 lines
7.8 KiB
Markdown
Raw Normal View History

# Android任务劫持
2022-04-28 16:01:33 +00:00
<details>
2022-04-28 16:01:33 +00:00
<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>
2022-04-28 16:01:33 +00:00
* 你在一家**网络安全公司**工作吗你想在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来分享你的黑客技巧。**
2022-04-28 16:01:33 +00:00
</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" %}
***
## 任务、后台堆栈和前台活动
2022-04-28 16:01:33 +00:00
任务是用户在执行某个任务时与之交互的活动集合。这些活动按照打开每个活动的顺序排列在一个堆栈中,即**后台堆栈**。
在屏幕上**显示**的活动称为**前台活动**,其**任务**称为**前台任务**。一次只能**在屏幕上看到一个前台任务**。
这是一些简单的活动流程:
* 只有Activity 1在前台。
* 启动Activity 2将Activity 1推入后台堆栈。现在Activity 2在前台。
* 启动Activity 3将Activity 1和2都推入后台堆栈。
* 现在关闭Activity 3。之前的活动即2会自动带到前台。这就是Android中任务导航的工作原理。
![](<../../.gitbook/assets/image (548).png>)
### Android多任务 - 一个任务
2023-08-03 19:12:22 +00:00
一个任务由多个活动组成
![](<../../.gitbook/assets/image (549).png>)
### Android多任务 - 多个任务
2023-08-03 19:12:22 +00:00
Android通常管理多个任务
![](<../../.gitbook/assets/image (550).png>)
## 任务控制开关
![](<../../.gitbook/assets/image (551).png>)
## 任务亲和性攻击
### 任务亲和性和启动模式
**任务亲和性**是在`AndroidManifest.xml`文件中的每个`<activity>`标签中定义的属性。它描述了一个活动首选加入的任务。\
2023-08-03 19:12:22 +00:00
默认情况下,每个活动的亲和性与**包名**相同。
2023-08-03 19:12:22 +00:00
在创建我们的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系统会评估三种可能性其中一种是我们攻击可能发生的原因。它们如下
* **如果活动实例已经存在**\
2023-08-03 19:12:22 +00:00
Android会恢复现有实例而不是创建新实例。这意味着在此模式下系统中最多只有一个活动实例。
* **如果需要创建新的活动实例**\
活动管理器服务AMS通过在所有现有任务中查找“**匹配**”任务来选择一个任务来托管新创建的实例。**如果活动“匹配”任务,则它们具有相同的任务亲和性**。这就是为什么我们可以在我们的恶意/攻击者应用中指定与易受攻击应用相同的任务亲和性,以便它在其任务中启动而不是创建自己的任务。
2023-08-03 19:12:22 +00:00
* **未找到“匹配”任务**\
AMS会创建一个新任务并将新的活动实例设置为新创建任务的根活动。
### 攻击
受害者需要在设备上安装**恶意应用**。然后,他需要在打开**易受攻击的应用**之前**打开**它**。然后,当**易受攻击的应用**被**打开**时,**恶意应用**将被**打开****代替**。如果这个恶意应用程序呈现与易受攻击应用相同的登录界面,**用户将无法知道他正在将凭据输入到恶意应用程序中**。
**您可以在此处找到实施的攻击:**[**https://github.com/az0mb13/Task\_Hijacking\_Strandhogg**](https://github.com/az0mb13/Task\_Hijacking\_Strandhogg)
## 防止任务劫持
设置**`taskAffinity=""`**可以快速修复此问题。如果应用程序不希望其他活动加入属于它的任务,还可以将启动模式设置为**singleInstance**。还可以添加自定义的**onBackPressed()**函数,以覆盖默认行为。
## **参考资料**
2022-04-05 22:24:52 +00:00
* [**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)
2022-04-28 16:01:33 +00:00
<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" %}
2022-04-28 16:01:33 +00:00
<details>
2023-04-25 18:35:28 +00:00
<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>
2022-04-28 16:01:33 +00:00
* 您在**网络安全公司**工作吗您想在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来分享您的黑客技巧。**
2022-04-28 16:01:33 +00:00
</details>