Promon安全研究人员发现了一个危险的安卓漏洞——StrandHogg。攻击者利用该漏洞可以将恶意软件伪装成合法的APP,而且用户并不会意识到自己被攻击了。该漏洞影响所有的安卓版本,包括最新的安卓 10,研究人员同时发现有36个恶意app正在利用该漏洞,同时top 500的app都处于危险中。
StrandHogg是一种唯一且独特的攻击方式,可以在无需设备root权限的情况下对设备发起复杂的攻击。该漏洞利用安卓多任务系统中的弱点来使恶意app可以伪装成设备中的其他app来发起攻击。该漏洞利用是基于taskAffinity的,该安卓控制设备允许任意app(包括恶意app)在多任务系统中自由显示为任意身份。恶意app通过在一个或多个活动中设置taskAffinity
来匹配第三方app的packageName
。然后在manifest
中设置allowTaskReparenting=”true”
或启动intent-flag
为Intent.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,不会马上将攻击者活动转移到目标。当目标任务下次启动时,安卓操作系统就会评估所有的任务和活动,寻找标记了该属性的活动,并在启动相关任务前移动这些活动。
同时,每个活动都有关于自己任务的信息,以及所属那个taskID。攻击活动可以用该信息来理解所在的任务,然后在屏幕上显示对应的善意或恶意内容。
攻击者通过融合Intent#FLAG_ACTIVITY_NEW_TASK
和Intent#FLAG_ACTIVITY_CLEAR_TASK
,可以首先清除目标任务,然后启动。
活动可以用android.app.Activity#finishAndRemoveTask
结束目标任务,并用Intent#FLAG_ACTIVITY_NEW_TASK
和Intent#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