Promon发现了用于攻击银行的新安卓恶意软件:FjordPhantom
2023-12-8 12:1:11 Author: 嘶吼专业版(查看原文) 阅读量:9 收藏

Promon公司发现了一种新的安卓恶意软件,并命名为命名为FjordPhantom,它具有很强的隐蔽性和传播能力,本文将深入探讨FjordPhantom的性质及工作原理。

       背景

通过合作伙伴i-Sprint,Promon安全研究团队在9月初知道了一种新的安卓恶意软件在东南亚(主要在印尼、泰国和越南)传播的消息。它主要通过消息传递服务传播,将基于应用程序的恶意软件与社交工具相结合,以欺骗银行客户。Promon与该地区的银行交流后得知,在撰写本文时,一名客户被骗走了约28万美元。 

Promon已收到了从终端用户设备中提取的恶意软件样本。这个样本针对一家特定的银行,但含有的代码也可以针对其他银行应用程序。目前未能找到更多的恶意软件样本,也无法找到任何关于该恶意软件的公开信息,于是我们自行进行了技术分析。安卓银行恶意软件无处不在,而这个恶意软件的独特之处在于,使用虚拟化技术攻击应用程序,虚拟化通常用作逆向工程中的工具,这是我们此前从未见过的。

       FjordPhantom如何传播?

FjordPhantom主要通过电子邮件、短信和消息传递应用程序传播。用户被提示下载一个看起来像银行正规应用程序的应用程序,实际上,下载的应用程序包含银行真实的安卓应用程序,但它在虚拟环境中运行,额外组件可以对应用程序进行攻击。

下载后,用户会受到社会工程攻击。通常,这是由呼叫中心的攻击团队支持的。他们假装是银行的客户服务,指导客户完成运行应用程序的步骤。

恶意软件使攻击者能够跟踪用户的操作,从而引导用户执行交易或使用该过程窃取凭据,他们可以使用这些凭据发动另外的攻击。

       FjordPhantom如何使用虚拟化?

恶意软件使用可以在GitHub上找到的不同开源/免费项目组合而成。最重要的是,它嵌入了一个虚拟化解决方案和一个钩子框架来执行攻击。

虚拟化解决方案允许在虚拟容器中安装和运行应用程序,近年来,它们在安卓上变得非常流行。因为其中许多应用程序都可以从Google Play Store下载,所以谷歌也接受了这种解决方案。此外,使用这种解决方案的一个普遍原因是能够多次安装相同的应用程序,以便用不同的帐户登录。这在安卓上通常是不可能实现的。

在这种情况下,“虚拟容器”的确切含义因不同的虚拟化解决方案而异。

在FjordPhantom使用的解决方案中,虚拟化解决方案是一个可以托管不同应用程序的应用程序。托管的应用程序被安装到虚拟文件系统中,当托管的应用程序启动时,解决方案创建一个新进程,将应用程序加载到其中,然后启动该进程。

从安卓系统的角度来看,只有一个应用程序(主机)。这意味着当托管的应用程序启动时,它们也会看到自己在托管应用程序的上下文中运行,这将导致不同类型的应用程序出现许多问题,而它们期望在定义明确的环境中运行。此外,如前所述,托管的应用程序被安装到虚拟文件系统中。因此,为了使托管的应用程序正常执行,虚拟化解决方案严重依赖钩子、修改安卓运行时环境的不同属性,以及代理托管的应用程序所做的许多事情。

       虚拟化突破安卓沙盒

以这种方式将应用程序加载到虚拟容器中的危险之处在于它突破了安卓沙盒。

安卓上的每个应用通常在自己的沙盒中独立运行,在这样的虚拟化解决方案中,不同的应用程序都运行在同一个沙盒中。这使它们能够访问彼此的文件和内存,并调试对方。也意味着,对于攻击者来说,虚拟化解决方案可能是不错的选择。突破沙盒通常需要对设备拥有root访问权。然而,当应用程序安装到同一个沙盒中时,就不需要这样了。这就使得攻击变得更容易,因为不需要获得设备的root权限,而且它还阻止root检测(针对安全关键应用程序的一种流行检查)。因此,虚拟化解决方案在攻击者中变得非常流行。

到目前为止,我们所看到的所有涉及虚拟化解决方案的攻击都是由试图攻击其安装的应用程序的安卓设备用户进行。这适用于使用调试器(比如gdb或lldb)或钩子框架(比如Frida)分析应用程序,或使用GameGuardian等工具在没有root访问权的情况下在游戏中作弊。

除此之外,恶意软件使用的此类虚拟化解决方案还可以用来向应用程序注入代码,因为虚拟化解决方案首先将自己的代码(以及应用程序中发现的所有其他内容)加载到一个新进程中,然后加载托管应用程序的代码。传统上,最流行的代码注入方法一直是用附加代码重新包装应用程序。因此,许多安全攸关的应用程序执行重新包装检测,这使得攻击更难得逞。然而,使用虚拟化注入代码将绕过这些检测,因为原始应用程序并没有被修改。

       FjordPhantom如何工作?

图1

FjordPhantom使用上述的虚拟化解决方案。它嵌入它所攻击的特定银行应用程序的APK,当它启动时,就在虚拟容器中安装并启动嵌入的应用程序。对于用户来说,看起来银行应用程序启动,没有虚拟化解决方案的明显痕迹。FjordPhantom的独特之处在于:与我们之前看到的虚拟化攻击相比,不是设备用户调用了虚拟化,而是安卓恶意软件在用户不知情的情况下调用了虚拟化。

在虚拟容器中托管目标应用程序使恶意软件能够执行攻击。如上所述,它有许多攻击可能性。

以FjordPhantom为例,虚拟化主要用于将额外代码加载到托管应用程序的进程中,注入的代码是实际恶意软件本身的代码和恶意软件使用的钩子框架。

FjordPhantom本身以模块化的方式编写,以便攻击不同的银行应用程序。它将对这些应用程序执行各种攻击,具体取决于嵌入到恶意软件中的银行应用程序。

以恶意软件样本为例,有一个特定的银行应用被嵌入,并成为直接攻击的对象。但在恶意软件代码中,我们发现它还可以攻击另外7个银行应用程序。恶意软件对目标应用程序执行几种不同的攻击,如下所述。

       FjordPhantom如何使用钩子框架?

FjordPhantom使用它嵌入的挂钩框架来挂钩到应用程序通常使用的API,以确定是否打开了可访问性服务以及当前启用了哪些服务。这是应用程序用来检测恶意恶意屏幕阅读器的标准方法,通过挂钩这些API并返回错误信息,就可以绕过屏幕阅读器检测方法。这使得攻击者可以使用屏幕阅读器在应用程序不知道的情况下从应用程序的屏幕上抓取敏感信息。

类似地,安卓恶意软件使用它嵌入的钩子框架来挂钩到与GooglePlayServices相关的API,使其看起来不可用。GooglePlayServices由SafetyNet使用,通常用于检测root权限。通过假装GooglePlayServices不可用,试图检测root权限的应用程序可能上当受骗,跳过root权限检查的SafetyNet部分。

对于一些应用程序,恶意软件还挂钩到与对话框相关的UI功能,如果它们包含某些文本,它将自动关闭它们。我们调查了目标应用程序中的这些对话框,它们警告用户,在其设备上检测到了一些可能恶意的活动。大多数对话框不能关闭,防止用户在可能恶意的场景中使用应用程序。通过阻止用户看到这些对话框,并让用户可以正常使用应用程序,恶意软件就能在不引起怀疑的情况下对这些应用程序进行进一步攻击。

最后,我们还看到恶意软件放置了许多钩子,这些钩子记录目标应用程序所做的不同操作,而不修改它们的行为,这很可能是恶意软件中留下来的调试功能,用于开发针对不同应用程序的攻击。这表明FjordPhantom正在积极开发中,可能会完善或已经完善到攻击其他应用程序的程度。

参考及来源:https://promon.co/security-news/fjordphantom-android-malware/


文章来源: http://mp.weixin.qq.com/s?__biz=MzI0MDY1MDU4MQ==&mid=2247571924&idx=1&sn=6b6dad1e2c7b086f6e4552eb7a8ddd62&chksm=e91409eede6380f8649e0aa8d9839c385b6fedd73d3f92368449d78ab129d49629c7362fe6b6&scene=0&xtrack=1#rd
如有侵权请联系:admin#unsafe.sh