Arid Viper是一个带有极强网络间谍特征的威胁组织,Arid Viper的工具集涵盖多种操作系统平台,自2017年出现以来,该组织一直都在持续开发和使用各种移动端间谍软件。
到2022年和2023年,该威胁组织开始通过伪装成Telegram和Skipped(一款约会App)这两款应用程序来传播SpyC23(一款Android间谍软件)。最近的SpyC23版本与其2017年的前代版本之间存在重叠,并且可以跟几个Arid Viper的Android恶意软件家族联系起来。
目前,安全社区中越来越多的研究人员开始关注Arid Viper,在这篇文章中,我们将对Arid Viper在传播SpyC23并对Android设备执行大规模攻击时所使用的技术进行详细分析,以供社区其他研究人员学习、分析和研究。
2022年和2023年初,Arid Viper开发了几个新的SpyC23版本,其中有两个App伪装成了Telegram,另一个则伪装成了一个名为Skipped Messenger的约会App。
SentinelLabs的研究人员将这些新版本的SpyC23与2020年早期版本以及与Arid Viper相关的几个旧的Android间谍软件家族进行了比较,即GnatSpy、FrozenCell和VAMP。研究发现,SpyC23的开发过程中发生了许多变化,且与旧版本恶意软件家族的代码有明显的重叠和复用。
Arid Viper经常使用社会工程学技术来传播恶意软件,并通过各种其他方式去尽可能地接近他们的目标用户。社工技术对于恶意软件的传播来说是一种有效途径,因为在目标用户成功安装恶意App之前,威胁行为者需要克服许多障碍。而相比让目标用户在没有提示的情况下成功安装间谍软件,通过社工技术来实现该目标则更简单也更有效。
Skipped Messenger有一个非武器化版本(SHA-1: 6e1867bd841f4dc16bef21b5a958eec7a6497c4e),这个版本跟恶意版本共享相同的Firebase服务主机名skippedtestinapp[.]firebaseio[.]com。正如Talos的报告所指出的,Skipped最初是一款合法的约会App,而Google Play商店的版本最后一次更新是在2021年8月。
跟大多数Android恶意软件一样,这些应用程序会要求目标用户给植入的App提供更多权限,这样便能够为间谍软件的活动提供便利。
恶意软件会尝试要求获取下列权限:
1、获取手机地理位置信息;
2、在没有用户交互的情况下拨打电话;
3、监控用户的通话;
4、使用麦克风录制,捕获音频输出;
5、对存储器的读写权限;
6、读写联系人列表;
7、修改网络状态;
8、收集设备上使用的帐户列表;
9、无需用户交互即可将文件下载到手机;
10、以服务的形式启动JAR文件;
11、阅读设备以及任何连接的可穿戴设备上收到的通知信息;
Arid Viper的开发人员采用了反逆向编译和反虚拟化技术提升了研究人员的分析难度,这些APK代码都经过了混淆处理,而且在Android模拟器中,即使请求的权限被授予后,应用程序也会闪屏并反复循环提示。
研究人员将将这些新版本与旧的SpyC23变种进行比较后发现,包名也有明显的重复,这也表明了新版与旧版之间的紧密联系。在下图中,左边的旧版本在update.bbm包中包含恶意代码,而右边的版本在apps.sklite.pacJava包中也包含了类似的子包:
重复的情况也出现在了类名身上,开发人员经常以任命的形式来命名类,例如下图所示的rc_cola/tas_ran_rc_col包中的内容:
这些应用程序规模非常大,因此想要对每个类都进行分析就有些不切实际。因此,我们就主要关注几个有意思的类和方法即可。
这个类负责处理跟C2的通信,并且包含了与用户卸载应用程序的相关代码。SendToServerTask子类在用户进入“dangerous”菜单时进行日志记录,并解析包含英语单词“apps”或“applications”以及阿拉伯语单词“applications”的活动菜单名称:
这个类负责应用程序的大部分上传请求处理,充当应用程序和C2服务器之间的接口。Brodie包含一个名为isProbablyArabic的方法,这也表明这些应用程序针对的是讲阿拉伯语的目标用户。
该服务会启用间谍软件的呼叫记录功能。这个类是从外部库libcallrecfix.so导入,并作为服务运行。Unix库基于至少两个开源的Android呼叫记录项目实现其功能,不过这两个项目都没有得到积极维护,并且从2020年开始一直都是SpyC23迭代的主要内容。
这个音频上传服务具有许多与Arid Viper的Android工具集中旧版本相同的状态日志字符串和媒体记录参数:
这些录音代码中有一部分托管在GitHub库中,虽然有可能是威胁行为者根据开源项目移植,但SpyC23 APK之间的相似之处是一致的,并且外部版本没有相同的变量或日志信息。
这个类之所以吸引到了我们的注意力,是因为它包含的代码可以追溯到Arid Viper的Android间谍软件的早期版本。我们从趋势科技的Arid Viper报告中发现了一个2017年的GnatSpy样本,该样本可以通过一个名为JsDirService的子类共享相同的文件上传功能。
这个类可以从外部类libRoams.so和lib-uoil.so加载函数方法,代码将导入特定制造商相关的函数代码。
Panda类不仅可以从开源的Gotev Android Upload Service导入方法(旧版本的SpyC23也使用该服务),而且Panda还可以从OKhttp库导入方法来处理HTTP请求。当OnCreate方法运行时,它会初始化Gotev服务,解析C2配置值,并注册GarciaReceiver(一个监控连接状态变化的接收器),这种情况在旧版本样本中也存在。
与旧版本的SpyC23一样,这个类也可以从存储在lib-uoil.so库中解析和解码字符串并获取C2服务器详情。字符串部分使用了Base64编码,可以通过解析获取真实的C2服务器URI。
1、luis-dubuque[.]in – Skipped Messenger APK更新所使用的C2域名
2、danny-cartwright[.]firm[.]in – com.teleram.app APK所使用的C2域名
3、conner-margie[.]com – com.alied.santafi所使用的C2域名