任务劫持StrandHogg(第1 部分)

cipher

版主

cipher Rep
0
0
0
Rep
0
cipher Vouches
Vouches
0
8 MONTHS
8 8 MONTHS OF SERVICE
cipher 获得
0
0
0
获得
0
cipher 凭证
0
0
0
凭证
0
主题
18
点赞
0
HakB
8
在社区成长 8 月
LEVEL 50 100 XP
 
StrandHogg 是一个严重的Android 漏洞,可利用操作系统的多任务系统。它允许恶意应用程序劫持合法应用程序任务并呈现伪造屏幕,诱骗用户泄露登录凭据等敏感信息。

攻击场景:​

用户打开银行应用程序。恶意应用程序可以拦截此操作并显示与银行应用程序中的内容相同的虚假登录屏幕。用户在不知不觉中输入了凭据,然后将其传输给攻击者。

理解基本概念:​

什么是“活动”?
活动代表用户可以与之交互的单个、集中的UI 组件。应用程序中的每个屏幕通常都是一个活动。
活动示例:
1. 登录屏幕是一项活动。 2. 仪表板屏幕是另一项活动。 3. 设置页面是第三个活动。
什么是“任务”?
任务被定义为用户为执行操作或工作流程而参与的任何活动集。
任务示例:
每次用户完成登录、仪表板和设置页面等活动时,他们都在执行一项操作并完成一项任务。
Android 任务是旨在完成一项特定操作或工作流程的活动的集合。
什么是“后栈”?
返回堆栈是任务中已启动的活动的堆栈(后进先出)。
返回堆栈示例:
1) 用户正在执行一项任务,他导航到“activity1: Loginpage” BackStack: Loginpage
2) 用户经过身份验证并被重定向到另一个活动“activity2: Dashboard” BackStack: 登录页面– 仪表板
3) 用户点击设置按钮并被重定向到第三个活动“activity3: 设置” BackStack: 登录页面– 仪表板– 设置
4) 用户按下后退按钮并被重定向到上一个活动“activity2: Dashboard” BackStack: 登录页面– 仪表板
5) 用户按下后退按钮并被重定向到上一个活动“activity1: Loginpage” BackStack: Loginpage
task hijacking

通过示例了解基本概念 (AndroidManifest.xml):​

task hijacking
说明:
Activity: 应用程序中有四个Activity MainActivity 作为根Activity,以及LoginActivity、DashboardActivity 和SettingsActivity 作为其他Activity。
Task: 这些活动一起形成一个任务,当用户浏览它们时,
返回堆栈: 返回堆栈存储这些活动的历史记录,允许用户向后导航任务。

了解重要术语:​

什么是任务亲和力?
Android中的TaskAffinity用于确定一个Activity属于哪个任务。通过设置自定义taskAffinity,可以将活动放置在单独的任务中。活动android:taskAffinity=””/
示例任务Affinity:
task hijacking
Explanation:1) LoginActivity 使用taskAffinity=”com.example.loginTask” 2) MainActivity 使用taskAffinity=”com.example.mainTask”
这证实了两者都有单独的任务
此设置可确保当用户从MainActivity 注销并按回时,他们不会自动登录,因为登录过程在单独的任务中运行

启动模式有哪些类型?​

启动模式用于启动和管理Android 应用程序中的活动
四种发射模式:
1) Standard: 每次启动都会创建一个新的Activity 实例2) SingleTop: 如果该Activity 已位于任务堆栈顶部,则重用它,否则创建新实例3) Single Task: 将登录Activity 设置为singleTask,以确保任务中一次只有一个实例运行4) Single Instance: 该Activity 在新任务中启动,并且是该任务中唯一的Activity,防止其他活动不被添加到其中。

如何识别应用程序是否容易受到任务劫持?​

1) Launch Mode: 使用ApkTool 或jadx-gui 等工具反编译应用程序。找到AndroidManifest.xml 文件并使用android:launchMode=”singleTask” 检查活动
2) 最低SDK 版本: 在同一个AndroidManifest.xml 文件中,检查android:minSdkVersion。如果小于30,应用程序可能没有针对任务劫持漏洞的保护

已识别漏洞的证明​

在您的系统上启动Jadx-GUI 工具。如果未安装,请从Jadx GitHub 存储库下载并安装它。
task hijacking
2。将目标APK文件拖放到Jadx-GUI界面中
task hijacking
3。在左侧导航窗格中,展开资源文件夹。单击AndroidManifest.xml 文件以查看其内容。
klutcya0x3t49.webp
4。查找uses-sdk标签并检查android:minSdkVersion属性。确认其值是否小于30。下一步找到activity标签,检查android:launchMode属性是否设置为singleTask
23qqwwitmyd50.webp

利用:​

要更深入地了解如何利用此漏洞,请查看此博客: 任务劫持(StrandHogg) 漏洞第2 部分

影响​

攻击者利用taskAffinity 将恶意活动注入合法的应用程序任务中。这些欺骗活动模仿真实的界面,从而导致凭证盗窃和未经授权的访问。
影响包括:
登录拦截会话劫持未经授权的数据访问这种形式的StrandHogg 恶意软件滥用了Android 的灵活性,但牺牲了安全性。

预防:​

Android 开发者最佳实践:
设置taskAffinity=“”防止外部应用程序将活动注入您的应用程序的任务。使用单实例启动模式确保您的活动在单独的安全任务中运行。覆盖onBackPressed()自定义导航以防止意外行为。目标Android SDK 30+使用更新的SDK进行内置操作系统级保护。

参考:​

https://developer.android.com/privacy-and-security/risks/strandhogg https://developer.android.com/guide/components/activities/tasks-and-back-stac https://www.geeksforgeeks.org/task-hijacking-in-android/
Redfox Security 是一个由专家安全顾问组成的多元化网络,具有全球思维和协作文化。如果您希望改善组织的安全状况,请立即联系我们讨论您的安全测试需求。我们的安全专业人员团队可以帮助您识别系统中的漏洞和弱点,并提供修复建议。
报名参加我们的综合课程,加入我们的成长和发展之旅。
 
顶部