最近,研究人员对一款名为SpyNote的恶意软件进行了跟踪和分析。SpyNote是一款间谍软件,它可以通过Smishing短信诈骗(例如恶意SMS消息)的形式来传播,并敦促目标用户使用短信提供的链接来下载和安装该应用程序。毫无疑问,恶意软件的托管和下载都不会在官方的Play Store上完成。
在这篇文章中,我们将对SpyNote间谍软件进行深入分析,并描述SpyNote中的一些突出功能和间谍软件的一些典型特征。
bad77dca600dc7569db4de97806a66fa969b55b77c24e3a7eb2c49e009c1f216
包名如下:
Glasgow.pl.dimensional
下一步就是要确定这个可疑的间谍软件的入口点,并找到SpyNote为此所使用的方法。在第一次检查时,我们发现AndroidManifest.xml中使用的几种方法可以作为“入口点”。为了深入观察其行为,我们在测试Android设备上安装了SpyNote并观察其行为,这有助于将手机上观察到的行为与代码关联起来。
一般来说,我们有下列几种方法来为应用程序创建入口点:
1、通过处理MAIN和LAUNCHER类型Intent的启动器Activity;
2、后台运行的服务;
3、广播接收器,当系统发送应用程序期望的广播时被调用;
4、应用程序中定义的attachBaseContext方法声明;
间谍软件因为要尽可能久地安装在目标设备中,因此一般会使用下列几种方法来实现隐藏以避免检测:
1、使用setComponentEnabledSetting在运行时隐藏App;
2、在AndroidManifest.xml中不指定启动器Activity Intent(CATEGORY_LAUNCHER);
如下图所示,SpyNote的启动器Activity并没有CATEGORY_LAUNCHE,这样就可以达到隐藏的目的了,而且下图还显示了MAIN Activity的类名称:
除了隐藏安装之外,SpyNote还会将其从Android设备的“最近使用的应用”页面中隐藏自己的活动,这一点可以通过在AndroidManifest.xml中将android:excludeFromRecents属性设置为true来实现。
恶意软件一般可以通过下列几种方法来启动隐藏的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通过注册一个名为“RestartSensor”的广播接收器(一个允许我们注册系统或应用程序事件的Android组件)来实现此功能。此广播接收器是唯一的,因为系统上没有其他接收器能够处理SpyNote在即将关闭时生成的特定广播。
每当SpyNote服务即将关闭时,就会调用该服务的onDestroy方法。onDestroy方法本身生成一个“RestartSensor”广播。这是特定于此应用程序的广播,系统上的任何其他应用程序都无法生成。在接收到该广播后,广播处理程序(它是先前注册的唯一接收器)将重新启动服务:
下图是上述流程的代码实现部分,SpyNote首先在AndroidManifest.xml文件中声明了一个广播接收器。每当试图关闭以销毁恶意服务时,onDestroy方法都会生成“RestartSensor”广播,广播接收器然后便会重新启动服务:
当目标用户接到来电时,电话状态会发生变化,广播接收器也会被触发。广播接收器中的代码会检查目标用户是否接听了电话,一旦确认,就会开始录制音频:
MediaProjection API允许应用程序捕获设备内容,这些内容可以录制或投射到电视等其他设备。然后,这些捕获的内容被呈现到中间的“虚拟显示器”,这是媒体投影的核心。最后,Surface会从“虚拟显示器”中获取这些图像并渲染这些图像。
为了实现图片捕捉或屏幕截图,SpyNote注册了一个onImageAvailableListener,只要有新的图像可用,就会调用该侦听器,并将捕捉到的图像存储为JPG文件并发送至C2服务器:
击键记录是SpyNote的另一个核心功能,它会在自己的日志文件中以Base64字符串的形式记录目标用户按下的所有击键信息,其中包括用户数据和密码凭证等内容:
而且目标用户也无法通过开发者选项停止SpyNote的服务,用户唯一的选择就是执行出厂设置。
SpyNote是一种典型的Android端间谍软件,它能够记录和窃取各种信息,包括按键、通话日志、已安装应用程序的信息等。它隐藏在目标用户的设备上,很难被注意到,这也使得卸载变得极其棘手。目前,目标用户唯一的选择是执行设备出厂重置以删除恶意软件。
bad77dca600dc7569db4de97806a66fa969b55b77c24e3a7eb2c49e009c1f216
37[.]120[.]141[.]140:7775