通过限制物理交互,新冠疫情大流行明显加快了银行业的数字化进程。为了应对需求,改善金融服务的获取和意识,银行和政府正在开发新的基础设施、协议和工具。在新冠疫情期间推出的此类举措最成功的例子之一是 Pix,PIX 是由巴西中央银行控制的巴西即时支付系统, 已于 2020 年 11 月正式启用,专供巴西消费者在本地交易中使用。如今,在 EBANX 的帮助下,跨国公司可提供 PIX 支付解决方案。。与其他支付方式相比,PIX 的包容性更强、速度更快,目前,Pix 每天的交易量已经达到4000万笔,每周总交易额为 47 亿美元。
当然,随着技术的发展,黑客技术也在不断发展。消费者使用移动应用程序和网站进行银行交易的显着增加自然无法逃脱攻击的注意,尤其是那些针对手机银行的攻击者。
Check Point Research 最近发现了新一波针对 Pix 支付系统和巴西银行应用程序的恶意 Android 应用程序。这些曾经在 Google Store中发布的恶意应用程序似乎是安全研究人员在 4 月份分析的一个未分类的巴西银行家家族的演变,并被发现已经更新了新技术和功能。研究人员发现的其中一个版本包含前所未见的使用 Pix 交易窃取受害者钱财的功能。由于其独特的功能和实现,研究人员将此版本命名为 PixStealer。
PixStealer 是一个非常简约的恶意程序,它不会执行任何传统意义的恶意银行程序操作流程,比如从目标银行应用程序中窃取证书,并与C&C通信。相比之下,它的“老大哥”MalRhino包含了各种高级功能,并引入了使用开源的Rhino JavaScript引擎来处理可访问性事件。
在本文中,研究人员提供了对这些恶意程序变体的技术分析,并讨论了它们用于避免检测、最大化攻击者的收益,并滥用非常具体的数字银行功能,如Pix系统。
8月下旬巴西中央银行宣布了一系列措施,加强即时付款系统Pix的安全性,比如个人之间在夜间转账的金额上限为1000雷亚尔。
Pix安全规则的变化有:
1.个人以及个体微型企业家(MEI)在夜间(晚20点到早6点)录入的转账交易总额上限为1000雷亚尔。适用于同银行内转账、Pix、借记卡支付以及TED结算。
2.客户可以分别指定增加或减少在白天和晚上的限额。减少限额的要求将立即生效,增加限额需要24至48小时才能生效。
3.金融机构需要提供一项功能,允许用户预注册一些账户,用户向这些账户转账的话可以超出既定Pix限额。
4.通过数字渠道预注册的账户,至少需要24小时后才能生效,以防止用户在有攻击风险的场景中直接注册。
5.通过数字渠道进行的支付方式提额申请,最短需要24小时、最长需48小时才能批准。适用于TED、DOC、同银行内转账、Pix、付款单和借记卡。
6.对于疑似风险的Pix交易,银行可以在到账前进行风险审核,白天为30分钟、晚上为60分钟。
7.要求记录行为和信用记录,以便金融机构可以预计当天的应收款项。
8.此外,央行还强制要求Pix用户与执法部门分享涉嫌参与犯罪活动的交易信息,并要求金融机构加强对欺诈行为的额外控制。
PixStealer技术分析
PixStealer 恶意程序的内部名称是“Pag Cashback 1.4″。它作为虚假的 PagBank Cashback 服务在 Google Play 上发布,并且仅针对巴西的 PagBank。
数据包名称 com.pagcashback.beta 表明应用程序可能处于测试阶段。
PixStealer 使用了一种“少即是多”的技术:作为一个具有最低权限且与 C&C 没有连接的非常小的应用程序,它只有一个功能:将受害者的所有资金转账到一个攻击者控制的账户。
通过这种方法,恶意程序无法通过与 C&C 通信来进行自我更新,也不能窃取和上传受害者的任何信息,但可以实现非常重要的目标:保持不被检测。
PixStealer 样本的病毒总检测量
与过去几年出现的许多银行木马(Evenbot、Gustaff、Medusa 等)一样,PixStealer 滥用 Android 的辅助功能服务。 AAS 的主要目的是帮助残障用户使用 Android 设备和应用程序。但是,当受害者被银行恶意程序诱骗启用此服务时,可访问性服务就变成了一种武器,使应用程序能够读取普通用户可以访问的任何内容并执行用户可以在 Android 设备上执行的任何操作。
当应用程序被启动时,恶意程序会向受害者显示一个消息框,要求激活辅助功能服务以获得所谓的“现金返还”功能:
PixStealer恶意软件请求访问Android辅助服务
与之前版本的恶意程序类似,该服务名为 com.gservice.autobot.Acessibilidade。
恶意软件在获得可访问性服务许可后,会显示一条文本信息,并要求打开 PagBank 应用程序进行同步。值得一提的是,一旦它拥有可访问性服务访问权限,恶意程序就可以自行打开应用程序。最有可能的是,它等待用户打开应用程序以避免显示典型的“恶意程序行为”,这有助于它不被检测到。
在受害者打开银行账户并输入凭据后,恶意程序会使用辅助功能点击“显示”按钮来检索受害者的当前余额。
恶意程序将点击“eye” 图标以检索帐户余额
这个数字被保存到 SharedPrefences 下的项“valor”(葡萄牙语中的“value”)中:
恶意程序将帐户余额保存到项“valor”下的 SharedPreferences
接下来,恶意程序会显示一个虚假的覆盖视图,要求用户等待同步完成:
屏幕上显示的“同步你的访问……不要关闭移动屏幕”
这个覆盖整个屏幕的信息起着非常重要的作用:它隐藏了这样一个事实:在后台,恶意软件正在将所有资金转账到参与者控制的账户。
要执行资金转账,恶意软件首先需要搜索到转账按钮:
恶意软件搜索转账按钮
恶意程序通过使用以下辅助功能操作来点击它:
恶意程序“点击按钮”功能
转账金额是在应用程序启动时检索到的值——存储在 SharedPreferences 中“valor”项中的全部余额:
恶意程序搜索带有字符串“Informe o valor da transf”(“提供交易价值”)的文本,并将整个余额值输入到转账金额字段中。
剩下的最后一个操作是输入付款受益人,恶意程序搜索 CPF/CNPJ(巴西纳税人识别号)字段来实现:
恶意程序搜索巴西 ID 字段
然后通过可访问性功能输入攻击者的“CPF”(巴西ID号码)。
恶意程序输入攻击者控制的 ID 以使用 Pix 进行转账
这个短视频展示了完整的恶意流程。
PixStealer 所针对的 PagBank 应用程序在允许用户执行 Pix 交易之前实施身份验证过程。该过程确保设备属于银行账户的所有者,并要求用户在每个移动设备执行以下步骤:
双因素身份验证(凭证和短信);
上传确认帐户所有权的文件;
用手机的摄像头拍一张自拍照;
只有当文件和自拍通过银行手动检查时,设备才启用Pix转账。这些措施保证了被盗的凭据甚至 SIM卡交换都不足以执行 Pix 交易。像 PixStealer 这样的恶意程序的危险在于,它实际上绕过了所有这些检查,因为它在已经通过身份验证阶段的受害者设备上运行。
MalRhino——PixStealer 的“老大哥”
一个不需要C&C连接的独立银行窃取程序是非常简洁的,几乎无法被检测到,但缺乏动态调整的能力。通过寻找类似的应用程序,研究人员发现了同一系列的另一个版本,它与 PixStealer 有多个代码相似之处:清单、日志消息、服务和方法名称。
MalRhino(顶部)和PixStealer样本中的类似日志功能示例
该恶意应用程序是一个假冒的巴西国际银行iToken应用程序,数据包名称为 com.gnservice.beta,也是通过 Google Play 商店发布的。
MalRhino 变体通过 Mozilla 的 Rhino 框架使用 JavaScript 来动态处理可访问性事件,这取决于正在运行的应用程序,以向攻击者远程提供代码执行访问权限。这种技术并不常用于移动恶意程序,它展示了恶意攻击者如何变得更具创新性,以避免检测并进入 Google Play。研究人员最后一次发现 RhinoJS 用于恶意操作是在 2016 年被 Xbot银行恶意程序所利用。
就像在以前的版本中一样,恶意程序向受害者显示一条消息,试图说服他们授予可访问性权限:
“继续,激活由Inter Digital Development开发的token的可访问性服务”
当它获得可访问性访问权限时,恶意程序会执行此恶意程序的典型操作,并以与以前版本相同的方式实现它们:
收集已安装的应用程序并将列表与受害者的设备信息一起发送到 C&C 服务器;
1.运行银行应用程序;
2.从 Nubank 应用程序中检索 pin;
目标应用程序
为了检查系统中运行最频繁的应用程序是否是受支持的银行应用程序,恶意程序会使用了一个包名。为了避免在应用程序中检测到银行包名称字符串,恶意程序会读取包名称,计算 MD5 校验和,然后将其与预定义列表进行比较:
恶意程序使用 MD5 哈希检查包名称
MalRhino 变体针对的银行应用程序列表
RhinoJS 动态代码执行
Rhino 是一个完全用 Java 编写的 JavaScript 引擎,由 Mozilla 基金会作为开源程序进行管理。恶意程序开发人员使用了一个开源的 rhino-android 库,该库允许在桥接Java代码的同时执行JavaScript代码。
如果正在运行的应用程序是恶意程序支持的应用程序,它会向 C&C 服务器执行请求以获取带有 Rhino JS“宏”的 JavaScript 代码:
恶意程序运行 GetMacroForPackage 函数(顶部),该函数根据顶部运行的应用程序向服务器请求JS代码
来自 C&C 服务器的响应包含要使用 Rhino 引擎执行的 JavaScript 代码:
恶意程序在目标应用程序中执行 JavaScript 代码
使用 Rhino JS 引擎,恶意程序能够在需要的应用程序启动时执行远程代码。 AccessibilityService 代码包含各种实用方法,这些方法不是在 Java 代码中使用的,而且很可能是由恶意程序从 C&C 服务器获取的 JavaScript 代码触发的。这些实用方法包括创建带有 PIN 请求的伪造窗口、点击某物、做手势、输入文本等。
使用辅助服务执行不同操作的实用程序方法
总结
在本文中,研究人员分析了银行恶意程序的两个截然不同的版本。他们都引入了新的创新技术来对受害者的移动银行账户执行不同的操作。 PixStealer 版本使用 Pix 即时支付系统,通过在毫无戒心的用户手机上滥用辅助服务,将受害者帐户中的所有资金转账到一个由攻击者控制的帐户中。 MalRhino 版本使用基于 JavaScript 的框架在银行应用程序中运行命令。随着移动银行恶意程序对无障碍服务的滥用越来越多,即使在通过 Google Play 等已知应用程序商店发布的应用程序中,用户也应警惕启用相关权限。
本文翻译自:https://research.checkpoint.com/2021/pixstealer-a-new-wave-of-android-banking-trojans-abusing-accessibility-services/如若转载,请注明原文地址