导语:FinSpy是由德国Gamma Group公司制造的间谍软件,通过其在英国的子公司Gamma Group International向全球的政府和执法机构出售,被用于在各类平台上收集用户的私人信息。
FinSpy是由德国Gamma Group公司制造的间谍软件,通过其在英国的子公司Gamma Group International向全球的政府和执法机构出售,被用于在各类平台上收集用户的私人信息。维基解密在2011年对用于桌面设备的FinSpy植入程序做了首次分析,次年分析了用于移动设备的FinSpy。从那时起,卡巴斯基开始不断检测到FinSpy在野新版本的出现。遥测数据显示,在过去的一年里,有几十种类型的移动设备都遭到过FinSpy的感染,而最近一次活动记录是在缅甸,于2019年6月发现。
2018年年末,卡巴斯基研究了最新版本的FinSpy植入程序(于2018年年中时创建),主要是iOS和Android版本,发现它们在功能上几乎是相同的,能够收集个人详细数据,如联系人、短信/彩信、电子邮件、日历、GPS定位、照片、内存中的文件、电话录音和当前一些流行的通讯软件的数据。
恶意软件特性
iOS版
iOS版的FinSpy能够监控设备上的几乎所有活动,包括Skype或WhatsApp等外部应用的网络通话记录,还有像Threema, Signal和Telegram等加密的通讯工具的数据。由于监控是通过利用Cydia Substrate的钩子功能来实现的,因此植入程序只能安装在iOS 11及更低版本的越狱设备(iPhone或iPad,iPod尚未确认)上(iOS 12之上的版本还未观察到)。
植入程序包含的二进制文件用于两种CPU构架:ARMv7和ARM64。考虑到iOS 11是首个不再支持ARMv7的iOS版本,我们猜想64位版本是为支持iOS 11以上的版本而制作的。
对于iOS用户,FinSpy没有利用漏洞感染,它似乎轻微调整过,能清除越狱工具的痕迹。因此,攻击者只有物理访问才能对设备越狱。对于已越狱设备,至少有三种感染途径:SMS短信、电子邮件和WAP推送,其中任何一个都可以从FinSpy代理运营商的终端发送。
安装应用程序的过程包括几个步骤:首先,shell脚本检查操作系统版本并执行相应的Mach-O二进制文件——“install64”(64位版本)用于iOS 11+,反之使用“install7”(32位版本)。启动时,安装程序二进制文件执行环境检查,包括Cydia Subtrate的可用性检查,如果它不可用,将从Cydia存储库下载所需的软件包,并使用“dpkg”工具进行安装。之后,安装程序执行一些路径准备和程序包解包,从硬编码列表中随机选择框架和应用程序的名称,在目标系统上部署组件并设置必要的权限。部署过程完成后,将启动守护程序并删除所有临时安装文件。
持久性是通过在/ Library / LaunchDaemons路径中添加带有启动指令的“plist”来实现的。
配置的所有敏感参数(例如C2服务器地址,C2电话号码等)都存储在文件“84C.dat”或“PkgConf”中,文件位于主模块的捆绑路径,可以使用操作命令重写它们。此文件名在以前的FinSpy版本中有用于包括Android在内的其它平台。
以下列表是分析的FinSpy版本的所有模块:
模块中的所有内部字符串,包括安装程序,都使用一个简单的基于xor的算法加密,使用以下字符串作为密钥:“NSString”、“NSArray”、“NSDictionary”、“ExtAudioFileRef”。
核心植入模块(“FilePrep”)包含7828个功能,它能控制其它所有模块,以及处理HTTP、SMS heartbeat和其他服务功能。组件之间的通信通过两种方式实现,第一个使用系统的CPDistributedMessagingCenter,第二个是接收数据请求的本地HTTP服务器。
模块“.hdutils”能掩盖设备上植入程序活动的痕迹,过程如下:首先,它负责所有SMS消息的处理工作,解析、查找特定内容的文本,并隐藏此类消息的通知;然后通过CPDistributedMessagingCenter(操作系统中现有消息传递工具的封装器,使用简单的消息和字典在不同进程之间提供服务端到客户端的通信)将它们发送到核心模块;还有一个隐藏特性是钩子“CLCopyAppsUsingLocation”函数,以从Settings的地理定位服务的应用程序列表中删除核心植入模块。
模块“.chext”以通讯应用程序为目标,通过挂钩其功能以泄露几乎所有可访问的数据,包括:消息内容、照片、地理位置、联系人、组名等等。主要针对以下应用程序:
· Facebook Messenger(com.facebook.Messenger);
· Wechat(com.tencent.xin);
· Skype(com.skype.skype/com.skype.SkypeForiPad);
· Threema(ch.threema.iapp / ch.threema.iapp.ThreemaShareExtension);
· InMessage(com.futurebits.instamessage.free);
· BlackBerry Messenger(com.blackberry.bbm1);
· Signal(org.whispersystems.signal)。
收集的数据将提交给主模块部署的本地服务器。
模块“keys”侧重于不同类型的键盘记录活动,有多个钩子拦截每个键入的符号,还有几个钩子可以拦截键入的解锁密码以及更改密码过程。截获的密码将提交到本地服务器上的“keys.html”页面,类似于“.chext”模块。
模块“MediaEnhancer”用于挂接与呼叫处理相关的“mediaserverd”守护进程中的系统功能,以记录呼叫。该模块初始化后在端口8889上启动本地HTTP服务器实例,将VoIPHTTPConnection实现为自定义连接类,该类包含一个处理程序,用于处理其他组件发出的对localhost/ ip.html的请求。
模块“.vpext”里有50多个用于外部通讯应用程序的钩子,用于处理VoIP呼叫,应用程序包括:
· WhatsApp;
· LINE;
· Skype (包括独立的Skype for iPad版);
· Viber;
· WeChat;
· KakaoTalk;
· BlackBerry Messenger;
· Signal。
这些钩子会对处理VoIP呼叫的函数作修改以进行记录。为了实现这一点,它们将带有呼叫元信息的post请求发送到HTTP服务器(先前由的MediaEnhancer组件部署)。
Android版
Android版具有与iOS版本类似的功能,且能够通过滥用植入程序中携带的DirtyCow漏洞获得unrooted设备的root权限。FinSpy Android样本已经存在好几年了,据其最新版本的证书显示,该样本于2018年6月部署。
Android版在功能上不太可能有太大的改变,因为新旧版本中的大多数配置参数都是相同的,而各式各样的可用设置也使得为每个受害者量身定制成为可能,例如操作人员可以选择首选通信渠道,或在受害者处于漫游模式时自动禁用数据传输。需要先把Android设备的所有配置数据(包括控制服务器的位置)都嵌入到FinSpy中,但操作人员也可以远程更改某些参数。配置数据以压缩格式存储,并在植入的apk的assets目录中分解为一组文件。在提取所有数据并构建完配置文件后,就可以获取所有配置值。配置文件中的每个值都存储在其大小的little-endian值之后,并且设置类型存储为散列。
在配置文件中可以找到以下设置:移动目标ID、代理IP地址、代理端口、用于远程SMS控制的电话号码,以及植入程序的唯一标识符。
与iOS一样,攻击者既可以物理访问设备,手动安装,也可以通过SMS消息、电子邮件和WAP推送之类的远程媒介感染。成功安装后,应用程序会通过检查是否存在已知的“生根”模块SuperSU和Magisk,如存在则运行借以获得root权限;如不存在,则会解密并执行位于恶意软件内部的DirtyCow漏洞。成功获得root访问权限后,应用程序会注册自定义SELinux策略以获得对设备的完全访问权限并维护root访问权限。如果应用程序使用的是SuperSU,则会修改SuperSU首选项以使其静音,禁用其期限,并将它配置为在引导期间自动运行,还会删除所有可能的日志,包括SuperSU日志。
应用程序提供了对联系人、短信/彩信、日历、GPS定位、图片、内存文件和通话记录等信息的访问。所有被窃取的数据都通过SMS消息或互联网传输给攻击者(C2服务器位置存储在配置文件中)。而像联系人、信息、音频和视频在内的个人数据可以从当前流行的一些通讯软件中窃取。每个目标消息传递器都有自己的统一处理模块,新的处理程序也很容易地添加。
完整的硬编码通讯软件列表如下所示:
应用程序首先会检查目标通讯软件是否安装在设备上(使用硬编码的包名),并授予根访问权,之后准备好通讯软件的数据库进行数据过滤,在必要情况下还可使用储存于私钥目录内的私钥解密,任何所需资料均可很简单地查询:
所有媒体文件和有关用户的信息也被过滤。
基础设施
FinSpy应用程序由FinSpy代理(操作终端)控制。默认情况下,所有植入程序都连接到Gamma Group提供的FinSpy匿名代理(也称为FinSpy Relays),这样做是为了隐藏FinSpy Master的真实位置。一旦受感染的目标系统在线显示,它就会向FinSpy代理发送心跳,FinSpy代理转发目标与主服务器之间的连接。FinSpy主服务器管理所有目标和代理并存储数据。基于解密的配置文件,我们能够找到受害者使用的不同中继及其地理位置。我们发现的大多数继电器集中在欧洲,还有一些在东南亚和美国。
结论
FinSpy移动程序是具有多种功能的高级恶意间谍工具,而Gamma Group在其产品中提供的各种配置功能,也使得FinSpy终端的操作人员能够针对特定受害者定制恶意行为并进行监视,还能清除自身的敏感数据,例如GPS位置、联系人、呼叫信息、通讯软件和设备间的数据等。
Android版本具有通过滥用已知漏洞在unrooted设备上获得root权限的功能;至于iOS版本,Gamma的解决方案似乎没有为其客户提供感染漏洞,因为他们的产品似乎经过了微调,能清除公开可用的越狱工具的痕迹。这可能意味着在设备尚未越狱的情况下,可以对受害者进行物理访问。同时,我们还观察到了之前没有发现过的多个功能。
自2014年FinSpy暴露在公众视野以来,Gamma Group已经重新创建了它的重要部分,还扩展了支持功能(例如,支持的即时通讯软件列表已经大大扩展),同时改进了加密和混淆,使之更难以分析检测。这些做法都稳固了FinSpy在市场中的地位。
总体而言,在研究期间,有近20个国家检测到FinSpy的在野最新版本。但是,假设Gamma的客户群规模很大,那么受害者的实际数量可能要高得多。
FinSpy开发人员正在不断研究其恶意软件的更新。发表这篇文章时,卡巴斯基的研究人员已经发现了另一种版本的威胁,目前正在调查此案。