mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-26 14:40:37 +00:00
112 lines
7.8 KiB
Markdown
112 lines
7.8 KiB
Markdown
# 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>
|