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

5.3 KiB

Android 任务劫持

{% hint style="success" %} 学习与实践 AWS 黑客技术:HackTricks 培训 AWS 红队专家 (ARTE)
学习与实践 GCP 黑客技术:HackTricks 培训 GCP 红队专家 (GRTE)

支持 HackTricks
{% endhint %}

Try Hard Security Group

{% embed url="https://discord.gg/tryhardsecurity" %}


任务、后栈和前台活动

在 Android 中,任务 本质上是一组用户交互以完成特定工作的活动,组织在 后栈 中。这个栈根据活动打开的时间对活动进行排序,最近的活动显示在顶部,作为 前台活动。在任何时刻,只有这个活动在屏幕上可见,使其成为 前台任务 的一部分。

以下是活动转换的快速概述:

  • 活动 1 作为唯一的前台活动开始。
  • 启动 活动 2活动 1 推入后栈,使 活动 2 进入前台。
  • 启动 活动 3活动 1活动 2 进一步推入栈中,活动 3 现在在前面。
  • 关闭 活动 3活动 2 重新带回前台,展示了 Android 的简化任务导航机制。

https://developer.android.com/images/fundamentals/diagram_backstack.png

任务亲和力攻击

任务亲和力和启动模式概述

在 Android 应用程序中,任务亲和力 指定活动的首选任务,通常与应用的包名对齐。这个设置在制作用于演示攻击的概念验证 (PoC) 应用时至关重要。

启动模式

launchMode 属性指导活动实例在任务中的处理。singleTask 模式对该攻击至关重要,根据现有活动实例和任务亲和力匹配情况,规定了三种场景。该漏洞依赖于攻击者的应用能够模仿目标应用的任务亲和力,误导 Android 系统启动攻击者的应用而不是预期的目标。

详细攻击步骤

  1. 恶意应用安装:受害者在其设备上安装攻击者的应用。
  2. 初始激活:受害者首次打开恶意应用,为攻击做好准备。
  3. 目标应用启动尝试:受害者尝试打开目标应用。
  4. 劫持执行:由于任务亲和力匹配,恶意应用被启动,取代目标应用。
  5. 欺骗:恶意应用展示一个假登录界面,类似于目标应用,欺骗用户输入敏感信息。

有关此攻击的实际实施,请参考 GitHub 上的任务劫持 Strandhogg 仓库:Task Hijacking Strandhogg

预防措施

为了防止此类攻击,开发人员可以将 taskAffinity 设置为空字符串,并选择 singleInstance 启动模式,确保其应用与其他应用隔离。自定义 onBackPressed() 函数提供了额外的保护,以防止任务劫持。

参考文献

Try Hard Security Group

{% embed url="https://discord.gg/tryhardsecurity" %}

{% hint style="success" %} 学习与实践 AWS 黑客技术:HackTricks 培训 AWS 红队专家 (ARTE)
学习与实践 GCP 黑客技术:HackTricks 培训 GCP 红队专家 (GRTE)

支持 HackTricks
{% endhint %}