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

2017-07-16 209411人围观 ,发现 4 个不明物体 系统安全资讯

spydealer-恶意软件-.jpg

随着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、Telegram、新浪微博、腾讯微博、安卓原生内置浏览器、火狐浏览器、欧朋浏览器、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月,就已有受感染用户对该恶意软件发起了一些讨论。下图左右示例分别为英文和中文社区讨论截图:

Spydealer_社区讨论.png

以下为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/<package_name>/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,如下图所示:

Baidu Easy Root2.8.3的root提权exploit

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

SpyDealer滥用的全部exploit漏洞

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

1、从自身安装目录中向手机中释放sux、getroot、logo.png和busybox_g1文件;

2、拷贝以上释放的sux、logo.png和busybox_g1到/data/data/ <package_name>/app_bin目录下;

3、生成内容如下图所示的shell运行脚本/data/data/<package_name>/app_bin/toor.sh

4、执行png和toor.sh获得root权限,之后,自动删除logo.png和toor.sh。

Spydealer_root提权

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

释放一个名为powermanager的原生可执行程序

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

代码和实现

代码和实现 2

C&C控制

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

短信(SMS)方式C2控制

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

指令详解

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

SpyDealer调用百度地图接口代码

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

收到的短信指令序列长度大于4,此时,其指令序列实际上就是远程C2服务器IP

收到的短信内容以字符串“L112”开头,远程C2服务器IP跟随在后

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

TCP 服务方式

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

C2服务器与受控手机的交流指令

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

{0×35, 0×31, 0×64, 0×11, 0×09, <length of data>, 0×09, <data>}

由于对接收的短信指令无校验机制,这意味着只要知晓受控手机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加密算法代码:

SpyDealer中的TEA加密算法代码

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

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

MulPacket\n<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应用所有受影响APP应用所有受影响APP应用

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

配置文件和其它特殊文件配置文件和其它特殊文件配置文件和其它特殊文件配置文件和其它特殊文件

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

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

安卓辅助功能滥用

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

辅助服务功能在目标APP包名中的相关配置

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

Spydealer_14.png

开启该功能后,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控制服务器。

数据发回远程C2控制服务器

实时监控

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

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

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

/sdcard/.tmp/audio/<current_time_in_yyyyMMddHHmmss>_<phone_call_num><phone_call_ date>.zip

之后,将会向C2端发送形如“audio\n<IMSI>\n<IMEI>\n<zip_file_path>”的消息。

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

/sdcard/.tmp/environmentaudioaudio/<current_time_in_yyyyMMddHHmmss>.zip

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

视频录摄

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

Spydealer_16.png

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

/data/data/<package_name>/files/cameravideo/<current_time_in_yyyyMMddHHmmss>.zip

录摄完成后,如果有可用的网络连接,SpyDealer将向远程C2端发送形如“cameravideo\n<IMSI>\n<IMEI> \n<zip_file_path>”格式的消息。

隐蔽拍照

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

/data/data/<package_name>/files/camerapic/camera_<current_time_in_millseconds >.jpg

成功拍照之后,将会向远程C2端发送形如“camerapic\n<IMSI>\n<IMEI>\n<picture_path>”的消息。

地埋位置信息获取

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

LGPS\n<IMEI>\n<IMSI>\n<longitude>\n<latitude>\n<current_time_in_yyyy-MM-dd hh:mm:ss>

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

其它功能

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

Spydealer_17.png

总结

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

*参考来源:paloaltonetworks报告 ,freebuf小编clouds编译,转载请注明来自FreeBuf.COM

这些评论亮了

  • daichvu2581 (1级) 这家伙太懒了,还未填写个人描述! 回复
    录像拍照监控录音这是不是支付宝的标配功能么
    )9( 亮了
发表评论

已有 4 条评论

取消
Loading...
css.php