Android Task Hijacking
Reading time: 5 minutes
tip
学习和实践 AWS 黑客技术:HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE)
学习和实践 Azure 黑客技术:
HackTricks Training Azure Red Team Expert (AzRTE)
支持 HackTricks
- 查看 订阅计划!
- 加入 💬 Discord 群组 或 Telegram 群组 或 在 Twitter 🐦 上关注我们 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud GitHub 仓库提交 PR 来分享黑客技巧。
任务、后栈和前台活动
在 Android 中,任务 本质上是一组用户交互以完成特定工作的活动,组织在 后栈 中。这个栈根据活动打开的时间对活动进行排序,最近的活动显示在顶部,称为 前台活动。在任何时刻,只有这个活动在屏幕上可见,使其成为 前台任务 的一部分。
以下是活动转换的快速概述:
- 活动 1 开始时是前台的唯一活动。
- 启动 活动 2 将 活动 1 推入后栈,使 活动 2 进入前台。
- 启动 活动 3 将 活动 1 和 活动 2 进一步推入栈中,活动 3 现在在前面。
- 关闭 活动 3 将 活动 2 重新带回前台,展示了 Android 的简化任务导航机制。
任务亲和力攻击
任务亲和力和启动模式概述
在 Android 应用中,任务亲和力 指定活动的首选任务,通常与应用的包名对齐。这个设置在制作证明概念 (PoC) 应用以演示攻击时至关重要。
启动模式
launchMode
属性指导活动实例在任务中的处理。singleTask 模式对该攻击至关重要,根据现有活动实例和任务亲和力匹配情况,规定了三种场景。该漏洞利用攻击者的应用模仿目标应用的任务亲和力,误导 Android 系统启动攻击者的应用而不是预期的目标。
详细攻击步骤
- 恶意应用安装:受害者在其设备上安装攻击者的应用。
- 初始激活:受害者首次打开恶意应用,为攻击做好准备。
- 目标应用启动尝试:受害者尝试打开目标应用。
- 劫持执行:在某个时刻,应用尝试打开 singleTask 视图。由于任务亲和力匹配,恶意应用被启动,取代目标应用。
- 欺骗:恶意应用展示一个假登录界面,类似于目标应用,欺骗用户输入敏感信息。
tip
请注意,为了使此攻击有效,易受攻击的视图 不需要将 exported 设置为 true,也不需要是主活动。
有关此攻击的实际实现,请参阅 GitHub 上的 Task Hijacking Strandhogg 存储库:Task Hijacking Strandhogg。
预防措施
为了防止此类攻击,开发人员可以:
- 将
**taskAffinity
的 singleTask 视图设置为空字符串 (android:taskAffinity=""
) - 选择
singleInstance
启动模式,确保其应用与其他应用隔离。 - 自定义
onBackPressed()
函数,提供额外的保护以防止任务劫持。
参考文献
- https://blog.dixitaditya.com/android-task-hijacking/
- https://blog.takemyhand.xyz/2021/02/android-task-hijacking-with.html
tip
学习和实践 AWS 黑客技术:HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE)
学习和实践 Azure 黑客技术:
HackTricks Training Azure Red Team Expert (AzRTE)
支持 HackTricks
- 查看 订阅计划!
- 加入 💬 Discord 群组 或 Telegram 群组 或 在 Twitter 🐦 上关注我们 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud GitHub 仓库提交 PR 来分享黑客技巧。