freeBuf
主站

分类

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

特色

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

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

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

FreeBuf+小程序

FreeBuf+小程序

Android端SpyNote恶意软件技术层面深度剖析
2023-11-09 11:35:14

写在前面的话

当前的Android生态环境中充斥着各种类型的恶意软件,每一款恶意软件都有其自己独特的一面。在大多数情况下,它们的目标都是窃取用户数据,然后将其出售以换取金钱。但某些恶意软件则可以被归类为间谍软件,因为它们的唯一目的就是通过窃取尽可能多的用户数据来监控用户,并尽可能地在目标设备上隐藏更久的时间。

最近,研究人员对一款名为SpyNote的恶意软件进行了跟踪和分析。SpyNote是一款间谍软件,它可以通过Smishing短信诈骗(例如恶意SMS消息)的形式来传播,并敦促目标用户使用短信提供的链接来下载和安装该应用程序。毫无疑问,恶意软件的托管和下载都不会在官方的Play Store上完成。

在这篇文章中,我们将对SpyNote间谍软件进行深入分析,并描述SpyNote中的一些突出功能和间谍软件的一些典型特征。

SpyNote样本

我们分析的SpyNote样本SHA256如下:

bad77dca600dc7569db4de97806a66fa969b55b77c24e3a7eb2c49e009c1f216

包名如下:

Glasgow.pl.dimensional

Manifest文件

跟平时分析Android恶意软件一样,我们首先会分析其AndroidManifest.xml文件,如下图所示,虽然SpyNote求的权限列表不是很全面,但我们确实看到它请求了一些可疑的权限。其中包括READ_SMS、PROCESS_OUTGOING_CALLS、CAMERA、RECORD_AUDIO、WRITE_EEXTERNAL_STORAGE和BIND_ACCESSILITY_SERVICE等。尽管对这些权限的请求并不总是表示恶意行为,但这些是间谍软件请求的典型权限。

入口点

下一步就是要确定这个可疑的间谍软件的入口点,并找到SpyNote为此所使用的方法。在第一次检查时,我们发现AndroidManifest.xml中使用的几种方法可以作为“入口点”。为了深入观察其行为,我们在测试Android设备上安装了SpyNote并观察其行为,这有助于将手机上观察到的行为与代码关联起来。

一般来说,我们有下列几种方法来为应用程序创建入口点:

1、通过处理MAIN和LAUNCHER类型Intent的启动器Activity;

2、后台运行的服务;

3、广播接收器,当系统发送应用程序期望的广播时被调用;

4、应用程序中定义的attachBaseContext方法声明;

App隐藏

安装后,我们注发现在应用程序启动器中是看不到该应用程序的。不过,在“手机设置”->“应用程序”菜单中进行简单检查,即可显示该应用程序已成功安装。因此,我们可以推断SpyNote应该使用了隐藏技术以避免其被发现安装在了目标用户的设备上。

间谍软件因为要尽可能久地安装在目标设备中,因此一般会使用下列几种方法来实现隐藏以避免检测:

1、使用setComponentEnabledSetting在运行时隐藏App;

2、在AndroidManifest.xml中不指定启动器Activity Intent(CATEGORY_LAUNCHER);

如下图所示,SpyNote的启动器Activity并没有CATEGORY_LAUNCHE,这样就可以达到隐藏的目的了,而且下图还显示了MAIN Activity的类名称:

从“最近使用的应用”中隐藏

根据Android文档的描述,“最近使用的应用”页面是一个系统级UI,可以列出最近访问的活动和任务。用户可以在列表中导航,选择要继续的任务,或者通过滑动将任务从列表中删除。

除了隐藏安装之外,SpyNote还会将其从Android设备的“最近使用的应用”页面中隐藏自己的活动,这一点可以通过在AndroidManifest.xml中将android:excludeFromRecents属性设置为true来实现。

启动隐藏的App

对于间谍软件来说,保持隐藏是至关重要的。然而,这就提出了一个问题:“目标设备如何启动间谍软件应用程序,从而窃取数据”?

恶意软件一般可以通过下列几种方法来启动隐藏的App:

1、通过SMS短信发送命令,恶意软件接收到了“新短信”的广播之后,则显示隐藏的App图标;

2、收到外部触发条件后启动App(例如拨打电话广播、在Manifest文件中为指定URL添加intent过滤器等);

3、使用一个单独的启动器App,这个App只会向恶意软件发送intent,恶意软件接收到intent后便会启动;

分析后发现,SpyNote恶意软件应用程序可以通过外部触发器启动。为此,我们创建了一个“Hello World” Android应用程序,具体如下图所示。它只发送必要的intent,收到intent之后,恶意软件App便会启动:

权限

启动之后,SpyNote便会请求BIND_ACCESSILITY_SERVICE权限,一旦目标用户授予该权限,SpyNote就会利用该权限来自行授予自己多个其他所需权限,包括android.permission.PROCESS_OUTGOING_CALLS、android.pPermission.RECORD_AUDIO和android.permission.WRITE_EXTRENAL等:

SpyNote首先会依次请求Manifest文件中定义的所有权限,它不会等待目标用户授权这些权限,而是生成一个“点击”事件来复制用户的“点击”行为,从而自行授予所有请求的权限。

顽固的服务

SpyNote启动后,我们发现它会运行两个名称经过模糊处理的服务,根据AndroidManifest.xml,我们可以确认这些是在两个名为C71和C38的类中实现的。对代码的进一步调查表明,这些服务就是我们所说的“顽固服务”,而这种服务的主要目标是让关闭恶意软件应用程序变得非常困难。

SpyNote通过注册一个名为“RestartSensor”的广播接收器(一个允许我们注册系统或应用程序事件的Android组件)来实现此功能。此广播接收器是唯一的,因为系统上没有其他接收器能够处理SpyNote在即将关闭时生成的特定广播。

每当SpyNote服务即将关闭时,就会调用该服务的onDestroy方法。onDestroy方法本身生成一个“RestartSensor”广播。这是特定于此应用程序的广播,系统上的任何其他应用程序都无法生成。在接收到该广播后,广播处理程序(它是先前注册的唯一接收器)将重新启动服务:

下图是上述流程的代码实现部分,SpyNote首先在AndroidManifest.xml文件中声明了一个广播接收器。每当试图关闭以销毁恶意服务时,onDestroy方法都会生成“RestartSensor”广播,广播接收器然后便会重新启动服务:

C2网络通信

SpyNote在窃取到目标用户数据之后,需要将其发送给威胁行为者。在我们正在分析的SpyNote示例中,C2通信是作为间谍软件服务初始化的一部分立即建立的。SpyNote的C2所使用的IP地址和端口使用了Base64编码:

电话录音

SpyNote甚至还会将目标用户的来电记录为.wav文件,并将文件发送到C2服务器。它首先授予自己“READ_CALL_LOG”权限,而这个权限则要“归功”与之前拿到的ACCESSILITY_SERVICE权限,它还会为系统广播intent “PHONE_STATE”额外定义一个广播接收器。

当目标用户接到来电时,电话状态会发生变化,广播接收器也会被触发。广播接收器中的代码会检查目标用户是否接听了电话,一旦确认,就会开始录制音频:

图像捕捉/截图

SpyNote使用了MediaProjectionAPI来捕捉目标用户Android设备上的图像信息。

MediaProjection API允许应用程序捕获设备内容,这些内容可以录制或投射到电视等其他设备。然后,这些捕获的内容被呈现到中间的“虚拟显示器”,这是媒体投影的核心。最后,Surface会从“虚拟显示器”中获取这些图像并渲染这些图像。

为了实现图片捕捉或屏幕截图,SpyNote注册了一个onImageAvailableListener,只要有新的图像可用,就会调用该侦听器,并将捕捉到的图像存储为JPG文件并发送至C2服务器:

记录和窃取数据

间谍软件的一些核心功能是监视、记录和提取用户数据,SpyNote也不例外。SpyNote成功启动后,它会创建一个新的日志文件,并开始记录目标用户执行的各种操作。

击键记录是SpyNote的另一个核心功能,它会在自己的日志文件中以Base64字符串的形式记录目标用户按下的所有击键信息,其中包括用户数据和密码凭证等内容:

难以卸载

由于SpyNote是是隐藏的,用户无法“长按”应用程序图标并将其卸载。然而,每当用户通过“设置”导航到应用程序时,SpyNote都会关闭菜单屏幕,从而防止其被卸载,这可能是因为SpyNote获取了BIND_ACCESSILITY_SERVICE权限。

而且目标用户也无法通过开发者选项停止SpyNote的服务,用户唯一的选择就是执行出厂设置。

总结

SpyNote是一种典型的Android端间谍软件,它能够记录和窃取各种信息,包括按键、通话日志、已安装应用程序的信息等。它隐藏在目标用户的设备上,很难被注意到,这也使得卸载变得极其棘手。目前,目标用户唯一的选择是执行设备出厂重置以删除恶意软件。

入侵威胁指标IoC

bad77dca600dc7569db4de97806a66fa969b55b77c24e3a7eb2c49e009c1f216

37[.]120[.]141[.]140:7775

参考文献

https://blog.f-secure.com/take-a-note-of-spynote/

# android安全 # Android恶意软件 # 恶意软件分析 # 间谍软件 # SpyNote
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录