一种新的安卓恶意软件活动伪装成“银行 KYC”验证应用程序,并通过 WhatsApp 消息传播,目标是印度的银行用户。
该恶意软件以 APK 文件的形式通过 WhatsApp 分享,伪装成紧急的银行 KYC 或账户验证更新,类似于之前报道的印度银行诈骗活动。
受害者被告知,除非他们安装附带的“银行 KYC”应用程序并完成验证,否则他们的银行账户可能会被冻结,这与现实世界中的欺诈模式类似,即通过消息平台推送虚假的 KYC 警报。
安装完成后,该应用程序会打开一个全屏的“需要更新”提示,其中包含一个“安装更新”按钮,从而造成强制应用内更新的假象,而不是全新安装恶意软件。
报告称,该行动利用虚假的 KYC 紧迫性、多阶段投放器和原生代码混淆技术,悄无声息地部署二级有效载荷,该载荷可以拦截短信、控制通话、运行 USSD 代码并窃取高度敏感的金融数据。
点击“安装更新”会触发一系列提示:该应用首先请求创建 VPN 连接,然后请求安装未知应用的权限,以便静默部署隐藏的辅助 APK。
次要有效载荷不会出现在启动器中,因此用户看不到新图标,而恶意软件则继续在后台运行并具有扩展功能。
多阶段投放器和原生混淆
主应用程序打包为 com.***appad.andr,它充当加载器而不是主要的信息窃取者。
一个未导出的接收器 InstallReceiver,用于监听安装事件(例如 PACKAGE_ADDED)和自定义安装状态操作。
它嵌入了一个加密的 APK 资源,从自己的包名派生出一个 32 字节的 XOR 密钥,并在运行时解密有效载荷,然后将其写入其私有存储中的临时混淆文件名。
然后,基于会话的 PackageInstaller 流程会静默地安装解密的有效载荷 (com.am5maw3.android),使用受控会话和待处理的意图来最大限度地减少用户交互,并绕过较新 Android 版本上典型的安装摩擦。
静态分析表明,关键配置值已从 Java/Kotlin 层移至本地库 libnative-lib。
本地代码公开了在运行时返回 C2 URL、加密密钥和代理标识符的函数,将主要后端端点组装为 https[:]//jsonapi[.]biz 和硬编码的代理 ID XGEKKWB3,并逐个字符地进行组装。
这种设计大大增加了静态分析的复杂性,因为字符串在反编译的 Java 中是不可见的,并且关键逻辑隐藏在对本地 .so 模块的 JNI 调用之后。
该恶意软件注册了一个自定义的 SecureVpnService,该服务配置了一个使用本地地址 (10.0.0.2) 和 Google DNS (8.8.8.8) 的全隧道 VPN,强制所有设备流量通过应用程序控制的接口。
持续的数据包处理循环将此隧道变成一个实时监视和操纵层,使恶意软件能够检查、过滤或中断出站连接,包括向安全服务和基于云的保护措施发送的遥测数据。
这种网络劫持会降低 Google Play Protect和其他信誉服务的性能,帮助恶意软件及其 C2 流量逃避检测。
传入的 FCM 消息被路由到 AgentCore.ProcessCommand,该命令支持 SET_SMS_FORWARD、GET_SMS_LOGS、MAKE_CALL、RUN_USSD、SEND_SMS 和 SYNC_STATUS 等操作,从而有效地将受感染的设备变成远程控制的欺诈平台。

对于命令和控制,辅助有效负载集成了 Firebase云消息传递,并将 AgentService 注册为 com.google.firebase.MESSAGING_EVENT 的处理程序。
该恶意软件还请求 WAKE_LOCK 和电池优化豁免,以便即使在投放器关闭或移除后,也能保持长时间的后台执行并继续与 C2 通信。
短信、电话滥用和数据泄露
一旦获得权限,次要有效载荷就会滥用电话和短信 API 来获得对通信的深度控制。
文件名使用了基于 Unicode 的混淆,可能是为了降低静态检查或手动分析期间的可见性。
夜雨聆风