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

7.8 KiB
Raw Blame History

Android任务劫持

☁️ HackTricks云 ☁️ -🐦 推特 🐦 - 🎙️ Twitch 🎙️ - 🎥 YouTube 🎥

找到最重要的漏洞以便您可以更快地修复它们。Intruder跟踪您的攻击面运行主动威胁扫描发现整个技术堆栈中的问题从API到Web应用程序和云系统。立即免费试用

{% 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中任务导航的工作原理。

Android多任务 - 一个任务

一个任务由多个活动组成

Android多任务 - 多个任务

Android通常管理多个任务

任务控制开关

任务亲和性攻击

任务亲和性和启动模式

任务亲和性是在AndroidManifest.xml文件中的每个<activity>标签中定义的属性。它描述了一个活动首选加入的任务。
默认情况下,每个活动的亲和性与包名相同。

在创建我们的PoC应用程序时我们将使用这个属性。

<activity android:taskAffinity=""/>

启动模式允许您定义新的活动实例与当前任务的关联方式。launchMode属性指定了活动应该如何启动到任务中的指令。有四种不同的启动模式

  1. standard默认
  2. singleTop
  3. singleTask
  4. singleInstance

launchMode设置为singleTaskAndroid系统会评估三种可能性其中一种是我们攻击可能发生的原因。它们如下

  • 如果活动实例已经存在
    Android会恢复现有实例而不是创建新实例。这意味着在此模式下系统中最多只有一个活动实例。
  • 如果需要创建新的活动实例
    活动管理器服务AMS通过在所有现有任务中查找“匹配”任务来选择一个任务来托管新创建的实例。如果活动“匹配”任务,则它们具有相同的任务亲和性。这就是为什么我们可以在我们的恶意/攻击者应用中指定与易受攻击应用相同的任务亲和性,以便它在其任务中启动而不是创建自己的任务。
  • 未找到“匹配”任务
    AMS会创建一个新任务并将新的活动实例设置为新创建任务的根活动。

攻击

受害者需要在设备上安装恶意应用。然后,他需要在打开易受攻击的应用之前打开它**。然后,当易受攻击的应用打开时,恶意应用将被打开****代替。如果这个恶意应用程序呈现与易受攻击应用相同的登录界面,用户将无法知道他正在将凭据输入到恶意应用程序中

您可以在此处找到实施的攻击:https://github.com/az0mb13/Task_Hijacking_Strandhogg

防止任务劫持

设置**taskAffinity=""可以快速修复此问题。如果应用程序不希望其他活动加入属于它的任务,还可以将启动模式设置为singleInstance**。还可以添加自定义的**onBackPressed()**函数,以覆盖默认行为。

参考资料

找到最重要的漏洞以便您可以更快地修复它们。Intruder跟踪您的攻击面运行主动威胁扫描发现整个技术堆栈中的问题从API到Web应用程序和云系统。立即免费试用

{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥