安卓爆影响所有版本的StrandHogg漏洞
2019-12-04 18:42:28 Author: www.secpulse.com(查看原文) 阅读量:484 收藏

Promon安全研究人员发现了一个危险的安卓漏洞——StrandHogg。攻击者利用该漏洞可以将恶意软件伪装成合法的APP,而且用户并不会意识到自己被攻击了。该漏洞影响所有的安卓版本,包括最新的安卓 10,研究人员同时发现有36个恶意app正在利用该漏洞,同时top 500的app都处于危险中。

漏洞

StrandHogg是一种唯一且独特的攻击方式,可以在无需设备root权限的情况下对设备发起复杂的攻击。该漏洞利用安卓多任务系统中的弱点来使恶意app可以伪装成设备中的其他app来发起攻击。该漏洞利用是基于taskAffinity的,该安卓控制设备允许任意app(包括恶意app)在多任务系统中自由显示为任意身份。恶意app通过在一个或多个活动中设置taskAffinity来匹配第三方app的packageName。然后在manifest中设置allowTaskReparenting=”true”或启动intent-flagIntent.FLAG_ACTIVITY_NEW_TASK的活动,恶意活动就会位于目标任务的前面。

这样,恶意活动就可以劫持目标的任务。下次目标app从Launcher启动时,劫持的任务就会出现在前端,恶意活动就可见了。因此,恶意用户只需要看着像目标app来成功启动针对用户的复杂攻击就可以了,因此在目标app安装前就劫持这样的任务也是可行的。

伪装攻击

StrandHogg是以安卓多任务处理系统中的任务之间的活动和移动为中心的。用android.app.Activity#startActivities(android.content.Intent[])同时启动2个以上的活动时,就可以启动同时启动用于攻击的活动。

在后台,攻击者在用户看到屏幕上的内容之前就可以劫持目标。除了特定设备上的一些小的闪动,但用户只会看到哪些善意的活动,并且不知道恶意活动已经发生了。

查看adb shell dumpsys activity的结果发现攻击活动已经有了,只等app下次启动。下次受害者app启动后,就会看到攻击者的恶意app。

allowTaskReparenting

有一个特殊的属性allowTaskReparenting,不会马上将攻击者活动转移到目标。当目标任务下次启动时,安卓操作系统就会评估所有的任务和活动,寻找标记了该属性的活动,并在启动相关任务前移动这些活动。

同时,每个活动都有关于自己任务的信息,以及所属那个taskID。攻击活动可以用该信息来理解所在的任务,然后在屏幕上显示对应的善意或恶意内容。

任务监控

攻击者通过融合Intent#FLAG_ACTIVITY_NEW_TASK 和Intent#FLAG_ACTIVITY_CLEAR_TASK,可以首先清除目标任务,然后启动。
活动可以用android.app.Activity#finishAndRemoveTask结束目标任务,并用Intent#FLAG_ACTIVITY_NEW_TASKIntent#FLAG_ACTIVITY_MULTIPLE_TASK来启动新的任务,这样可以创建新的目标任务来确保由攻击者控制。之后,攻击者可以启动受害者真实的启动器活动,让受害者app在其中运行。

由于攻击者仍然控制着受害者的任务,因此有很多关于目标状态的信息。攻击者可以拦截并注入调用活动到目标应用流程中。

该漏洞影响所有的安卓版本(安卓6——安卓10),包括最新的安卓 10,Lookout研究人员发现有36个恶意app正在利用该漏洞,同时Promon 研究人员测试发现top 500的app几乎都受到该漏洞的影响。虽然Google已经从Google play中删除了这些恶意app,但是该漏洞目前还没有被修复。

https://promon.co/security-news/strandhogg/

本文作者:ang010ela

本文为安全脉搏专栏作者发布,转载请注明:https://www.secpulse.com/archives/120013.html


文章来源: https://www.secpulse.com/archives/120013.html
如有侵权请联系:admin#unsafe.sh