SpyDealer深度剖析:一个广泛针对中国手机APP进行信息窃取的恶意软件

时间:2022-04-29
本文章向大家介绍SpyDealer深度剖析:一个广泛针对中国手机APP进行信息窃取的恶意软件,主要内容包括SpyDealer简介、发现时间线、服务启动和配置、Root和持久化驻留感染、C&C控制、TCP 服务方式、UDP/TCP客户端、个人隐私数据收集、安卓辅助功能滥用、实时监控、通话监录和周围环境音频监听、视频录摄、隐蔽拍照、地埋位置信息获取、其它功能、总结、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。

随着Android智能手机的普及和各种功能APP的流行,人们已越来越多地依赖智能手机存储处理个人和商务信息,而这也成为了犯罪份子进行信息窃取的隐蔽途径。近日,Palo Alto Networks公司研究人员发现了一种高级Android平台木马恶意软件 SpyDealer<点击阅读原文查看链接>,它能从40多个流行APP中收集个人隐私信息,并可通过滥用安卓辅助功能实现对多种通信APP敏感信息窃取。此外,SpyDealer会利用一款商业root软件获取手机root权限,以此进行更深入的隐私数据窃取。目前,该恶意软件针对大量中国手机端流行APP开发了信息窃取功能。

SpyDealer简介

SpyDealer具备多种信息窃取功能:

从40多种流行APP中收集个人隐私信息,这些APP包括:微信、Facebook、WhatsApp、 Skype、Line、Viber、QQ、Tango、新浪微博、腾讯微博、安卓原生内置浏览器、火狐浏览器、欧朋浏览器、QQ邮箱、网易邮箱、淘宝、人人、飞信、遇见、百度网盘等; 利用安卓辅助服务功能对流行通信和社交APP进行敏感消息窃取,包括微信、 Skype, Viber、QQ等; 利用商业root软件“Baidu Easy Root”root目标手机,实现持久驻留和感染控制; 收集大量详细个人隐私信息,包括:电话号码、IMEI、IMSI、MMS、短信、通讯录、账户、通话记录、地理信息、连接的WIFI信息等; 以其他特定号码自动接收呼入电话; 实现对目标手机的UDP、TCP和短信信道远程控制; 全方位对受控手机用户进行监控: 对电话通话和周围环境进行录音录像 利用手机前置后置摄像头进行隐蔽拍照 监控受控手机实时地理位置 截屏

目前,据我们所知,SpyDealer还未在谷歌应用商店出现过,也还不清楚其具体的感染方式,但有证据显示SpyDealer通过被入侵的无线网络热点对中国用户发起攻击感染。由于SpyDealer受所利用的root工具限制,其完全有效的感染设备只涵盖了Android2.2至4.4版本手机系统(全球1/4安卓使用量),针对之后的安卓版本,虽然SpyDealer能窃取大量信息,但不能提权进行更进一步的入侵控制。

发现时间线

2017年6月,我们捕获到了1046例SpyDealer样本,分析显示SpyDealer正处于活跃期,在野生网络环境中它有1.9.1、1.9.2和1.9.3三个版本。从1.9.3版本开始,SpyDealer中的配置文件内容和字符串常量都被加密和编码,同时加入了一个窃取通信APP消息的辅助功能。据分析发现,这些样本都以app名称“GoogleService”或“GoogleUpdate”进行伪装,其样本演变时间从2015年10月至2017年5月。另外,我们还发现早在2015年10月和2016年2月,就已有受感染用户对该恶意软件发起了一些讨论。下图左右示例分别为英文和中文社区讨论截图:

以下为Palo Alto Networks对该恶意软件的技术分析:

服务启动和配置

SpyDealer感染设备之后,不会在桌面上出现任何icon图标。但其实,它已经注册了两个广播接收器(Broadcast Receivers)对设备的启动事件和网络连接进行监听。只要一有此类广播消息,就会触发SpyDealer关键服务AaTService启动,之后,开始从恶意软件中一个名为readme.txt的本地资源文件中检索配置运行信息。

从该文件第一行为一个远程C2控制服务器,第二行为移动网络中的恶意行为配置参数,第三行为无线网络中的恶意行为配置参数,这些配置参数也可以由攻击者通过远程C2信道进行更改操作。完整C2服务器列表参见附件B。下表描述了部分操作行为:

Root和持久化驻留感染

SpyDealer利用两种不同的root方法进行提权。其1.9.1和1.9.2版本使用商业root软件Baidu Easy Root进行提权,具体操作如下:

在恶意程序自身的数据目录中释放一个名为sux的su文件 检查手机设备root状态,如果已是root权限,则无需进行root提权操作 检查是否存在/data/data//broot/raw.zip路径文件,该文件包含所有root提权所需exploit。如果不存在,则恶意软件从http[:]//yangxiu2014.0323.utnvg[.]com/apk/raw.zip下载,并从http[:]//yangxiu2014.0323.utnvg[.]com/apk/md5.txt执行一个md5文件完整性校验检查 把下载的zip文件解压释放到恶意程序目录,依次执行所有内含exploit尝试进行手机root提权 安装busybox并重装系统分析,以备以读写权限执行后续的一系列shell命令

下载文件raw.zip中包含Baidu Easy Root2.8.3的root提权exploit,如下图所示:

下表列出了SpyDealer滥用的全部exploit漏洞。像在raw.zip中名为022d251cf509c2f0的可执行文件exploit,在Baidu Easy Root中为gzip格式且名为fb_mem_root。

除此之外,SpyDealer还利用了另外一种root提权方法,这种方法仅对Andriod4.0到4.3有效,且所利用exploit未知:

1、从自身安装目录中向手机中释放sux、getroot、logo.png和busybox_g1文件; 2、拷贝以上释放的sux、logo.png和busybox_g1到/data/data//app_bin目录下; 3、生成内容如下图所示的shell运行脚本/data/data//app_bin/toor.sh 4、执行png和toor.sh获得root权限,之后,自动删除logo.png和toor.sh。

root提权之后,SpyDealer开始实现持久化驻留操作。首先,向自身目录下释放一个名为powermanager的原生可执行程序:

该程序负责创建一个恶意软件备份文件/system/bin/update_1.apk,即使SpyDealer被卸载清除,powermanager将会把/system/bin/update_1.apk拷贝为/system/app/Update.apk,继续以系统root权限启动恶意木马进程,同时,SpyDealer核心服务AaTService也将重启执行恶意行为。代码和实现如下图所示:

C&C控制

SpyDealer能以多种信道与C2服务器进行通信和指令接收,这些信道包括短信(SMS)、UDP和TCP连接。我们一一来分析:

短信(SMS)方式C2控制

SpyDealer注册了一个在默认消息应用程序之上更高优先级的广播接收器,以对目标手机短信接收指令进行监听,之后,对这些短信指令进行解析处理。每个短信指令都包含了一个指令序列和各种换行符分隔的参数引用。短信指令序列范围从1到5,指令详解如下表所示:

为了获得基于GSM cell的地理位置信息,SpyDealer利用了百度地图接口来进行位置获取。SpyDealer收集GSM cell id、地区码和网络运营商,并把这些编码信息发送至百度地图服务获取准确地理位置。利用这种方法,即使被控手机没开启GPS,但一样可以被攻击者进行定位。以下为SpyDealer调用百度地图接口代码:

除利用以上列出的短信指令外,在以下两种条件下,SpyDealer还可以对远程C2服务器IP进行更改:

收到的短信指令序列长度大于4,此时,其指令序列实际上就是远程C2服务器IP 收到的短信内容以字符串“L112”开头,远程C2服务器IP跟随在后

在与C2服务器的通讯中,如果SpyDealer收到1或2序列的短信指令,它将不会作出回应。但当它收到 3、4或5序列的指令,它将会向远程C2服务器作出回应。如收到指令序列5,它将会以格式“msg:repcall|”向远程C2服务器发送一条消息。由于所有接收短信都包含了短信指令,也就是说,攻击者可以丢弃这些短信,或设置黑名单进行阻塞拦截。

TCP 服务方式

SpyDealer通过在受控手机中创建一个监听39568端口的TCP服务端,等待远程C2服务器指令。这些C2服务器与受控手机的交流指令如下表所示:

而SpyDealer的响应数据将按以下字节格式发出:

{0x35, 0x31, 0x64, 0x11, 0x09,, 0x09,}

由于对接收的短信指令无校验机制,这意味着只要知晓受控手机IP地址,任何人都可以向其发起连接请求。

UDP/TCP客户端

除了以上TCP服务端被动方式的C2通讯外,SpyDealer还会通过UDP/TCP信道主动向远程C2服务器请求命令。首先,它从本地配置文件readme.txt中读取C2 IP,利用另一个名为socket的本地配置文件进行UDP/TCP协议通信,该socket文件中包含了90多个不同IP域名的C2服务器(列表详见附件B)。

C2服务器向恶意软件端发送的指令数据使用微型加密算法TEA进行加密,恶意软件端收到指令后将会解密指令数据,执行深入解析处理。SpyDealer中的TEA加密算法代码:

通过这种UDP/TCP协议信道,攻击者可以对感染手机执行多达45种操作指令(详见报告),指令行为涵盖个人信息收集、监听监视和远程代码执行等。

恶意软件端向C2回送的数据也经TEA加密,另外,由于UDP的不可靠会话性质,为了解决通讯过程中数据丢失问题,SpyDealer在UDP顶层创建了一个有效会话层,并把所有原始数据分组,每组大小不超过1000字节,这些分组数据最终将会轮流重复三次发出。为了让C2服务端能识别恢复数据,这些分组数据在开头都添加了一个特殊识别码。各组数据格式如下:

MulPacketn<IMEI>n<UUID>n<#TotalGroups >n<CurrentGroupId>n<Dat

IMEI: 受控手机IMEI码 UUID: 包含两部分,第一部分为起始是0,每次加1的传输次数累加,当至10000000时重置为0重新开始。第三部分为当前的毫秒时间 TotalGroups: 分组数据数 CurrentGroupId: 从1开始的当前分组数据序列 Data: 实际传输数据

个人隐私数据收集

如前所述,SpyDealer结合root提权,使用多种方式收集数据,这些数据信息涉及40多个流行APP中所含的社交通信信息、通讯数据、浏览器信息、移动邮件客户端数据等。以下列出了所有受影响APP应用,其中大部分为中国地区移动互联网应用APP:

为了从以上APP中收集隐私数据,SpyDealer首先向目标APP目录中释放一个名为dealapp 的可执行程序,并利用root权限拷贝为/system/bin/dealapp文件,之后,该文件就负责在目标APP中进行各类信息数据收集。其所收集数据信息,不只限于数据库文件,还包括配置文件和其它特殊文件。具体如下:

C2服务器可以远程对dealapp程序配置信息进行实时更新或修改:

安卓辅助功能滥用

为了保护用户数据信息,越来越多的APP,尤其是流行的社交类APP,在数据存储前都会进行加密操作。为了突破这个屏障,SpyDealer自1.9.3版本开始,便加入了一个额外的辅助服务功能,可以直接从手机系统界面获取明文数据。下图为该功能在目标APP包名中的相关配置:

本来,该辅助功能一般由用户手动开启,但在root提权之后,SpyDealer可以实现不与用户交互的隐蔽开启。下图为SpyDealer的开启命令:

开启该功能后,SpyDealer主要对TYPE_NOTIFICATION _STATE_CHANGED和CONTENT_CHANGE_TYPE_SUBTREE两个事件行为进行监听,当有接收消息时,手机将会发布一个通知,而这也将触发TYPE_NOTIFICATION _STATE_CHANGED事件。通常,人们会点击通知查看消息,这将触发CONTENT_CHANGE_TYPE_SUBTREE事件行为。当有CONTENT_CHANGE_TYPE_SUBTREE事件行为时,SpyDealer将利用当前屏幕获取明文消息。尽管手机界面有消息数限制,但SpyDealer持续的监控行为将会获取完整的消息信息。收集动作完成后,SpyDealer会把这些消息连同受害者手机IMEI、IMSI、包名和APP名等数据一起发回远程C2控制服务器。

实时监控

针对受控手机,SpyDealer具备多种手段进行实时监控,包括通话监录、周围环境监听录摄、隐蔽拍照、屏幕截图和地埋位置获取。它从C2端接收上述描述的各种C&C操作指令执行动作。

通话监录和周围环境音频监听

SpyDealer注册了一个PhoneStateListener程序进行通话状态监控,一旦通话处于激活状态,便会触发录音功能。最终,通话录音数据被压缩成zip格式存储于为以下路径文件:

/sdcard/.tmp/audio/<phone_call date>.zip

之后,将会向C2端发送形如“audionnn”的消息。

除电话监录外, SpyDealer还具备对周围环境进行特定时间段的音频监听,监听数据最终会被存储为以下路径文件:

/sdcard/.tmp/environmentaudioaudio/.zip

超过7天以上的监听监录数据会被自动从/sdcard/.tmp/environmentaudioaudio目录下删除。

视频录摄

安卓系统中,当用户进行视频录摄时就会进入预览视图模式,为了避免这种情况,SpyDealer故意设置了一个3.0dip * 3.0dip尺寸的非常小的预览视图,不易被用户发现,如下代码实现:

开始录摄后,每段视频录摄时间为10秒,最终数据被存储为以下路径文件:

/data/data//files/cameravideo/.zip

录摄完成后,如果有可用的网络连接,SpyDealer将向远程C2端发送形如“cameravideonnn”格式的消息。

隐蔽拍照

为了像视频录摄一样不引起用户察觉,SpyDealer设置了一个0.100000024dip * 0.100000024dip尺寸的极小预览视图进行隐蔽拍照,攻击者可以远程设置前置摄像头进行拍照。拍照文件最终被存储为以下路径文件:

/data/data//files/camerapic/camera_.jpg

成功拍照之后,将会向远程C2端发送形如“camerapicnnn”的消息。

地埋位置信息获取

SpyDealer动态注册了一个广播接收器以监视受害者手机屏幕状态,一旦屏幕处于锁屏状态,SpyDealer便开始通过GPS尝试获取手机地理位置信息。另外,SpyDealer还注册了一个位置监听进程以跟踪设备位置,为了获取移动设备后的实时准确位置,该监听进程每隔10秒或100米的移动距离就进行一次位置信息获取更新。如果有可用的网络连接,这些位置文件数据会被以如下格式消息发送到远程C2端。

LGPSnnnnn

如果网络连接不可用,它们将存储在本地设备中以待后续利用可用网络进行传输发送。由于GPS状态开启时会在手机屏幕上显示一个提示图标,所以,为了避免用户怀疑,SpyDealer只会在锁屏状态下利用GPS。

其它功能

除了上述强大的功能之外,SpyDealer还具备自动接听来电和自动加载从远程C2服务器中下载的插件。针对电话来电,SpyDealer能进程远程配置接听,模拟耳机插入状态自动接听来电,让用户无意识错过一些重要来电。其实现代码如下图所示:

总结

SpyDealer利用恶意业root软件进行系统提权并实现持久化驻留感染,它采用多种机制来窃取移动设备中的大量个人隐私信息,并对40多个APP造成信息泄露影响。另外,其通过三种C2信道和50多种操作指令对受害手机形成远程控制,危害巨大。