“黑暗潜伏者” -- 手机病毒新型攻击方式

最近百度安全实验室发现一款“黑暗潜伏者”新型手机病毒。该病毒附着在众多壁纸和游戏类应用中。截至眼下。已经发现感染该病毒的应用超过1万多款,感染用户超过3000万。


 
该病毒恶意行为例如以下:
1、 后台利用系统漏洞获取暂时Root权限。
2、 获取暂时Root权限后,安装SysPhones.apk恶意程序为系统软件,安装Root后门程序zy到/system/bin文件夹。
3、 SysPhones.apk依据server端指令静默下载、安装推广应用,并可以依据指令安装推广应用为系统软件,从而使其无法卸载。


4、 其他未知的潜在恶意行为。
 
 
一、利用系统漏洞获取暂时Root的方式
 
该手机病毒利用知名的Root工具FramaRoot的漏洞能力获取暂时Root权限。
(http://forum.xda-developers.com/apps/framaroot/root-framaroot-one-click-apk-to-root-t2130276)
FramaRoot集成了众多Android系统漏洞Root利用代码。眼下可以提供对近400款Android设备的Root能力,支持设备列表例如以下:
(http://forum.xda-developers.com/apps/framaroot/framaroot-supported-devices-t2722980)
FramaRoot关键功能都集成在libframalib.so库中。该so库提供了两个接口供JAVA层调用:
Check接口: 检測设备漏洞,返回漏洞列表。
Launch接口:依据传入的漏洞名称,运行对应漏洞利用代码获取Root。
Root成功后安装so库中附带的Superuser.apk和su文件到系统文件夹。
该手里病毒巧妙利用了FramaRoot的工作机制,通过重要数据替换的方式,构建了恶意的FakeFramaRoot。

例如以下图所看到的:
 

 

通过重要数据替换方式巧妙的利用了FramaRoot的Root能力,在获取暂时Root权限后。安装替换后的恶意SysPhones.apk为系统应用。安装zy到/system/bin文件夹,zy作为后门程序。提供SysPhones.apk以Root用户运行命令的能力。
 
 
二、躲避安全检測和逆向分析的方式
 
依据检測到的数据显示,附带该木马的应用2014年2月份首次出现,到被检測发现已默默潜伏9个月。该病毒採用了例如以下方式达到恶意行为隐蔽性:
1、 通过反调试技术、关键恶意代码native化、关键代码数据加密、网络通讯数据加密等方式阻碍逆向分析。
2、 关键恶意行为代码云端下载、动态载入。
3、 恶意行为云端动态触发,行为可控。
 
 
三、黑暗潜伏者工作原理
 
经过对代码的完整逆向分析。整个手机木马的工作原理例如以下图所看到的:
 

 
 
四、恶意代码分析
 
内嵌在应用中的恶意代码有两部分组成:
1、 com.android.luahc[Java]
主要上传设备信息到指令server,并依据指令server的返回的指令下载恶意代码FakeFramaRoot.so库。


2、 libluahc.so[Native]
调用FakeFramaRoot.so库。触发获取暂时Root权限,安装SysPhones.apk 和zy的恶意行为。


 
该手机木马安装后并不会马上触发。仅仅有在设备下次又一次启动后。才会触发恶意行为。

全部keyword符串如网址、路径等信息经过加密处理并以byte数组形式存放。这样可以躲避眼下杀毒软件的查杀。
 

 
全部的网络通讯数据都进行了加密处理,下面是com.android.luahc[Java]请求指令server获取FakeFramaRoot.so库下载地址的网络交互数据:
请求server获取FakeFramaRoot下载地址指令:
 

 
server返回数据例如以下:
 

 
解密后server返回数据内容例如以下:

http://106.187.44.144/qwe

 
com.android.luahc[Java]获取到下载地址后,下载文件并保存为libframalib.so1。libframalib.so1为压缩文件,解压后获取libframalib.so文件:
 

 
com.android.luahc[Java]通过调用libluahc.so间接载入FakeFramaroot.so库函数。


 
libluahc.so 以assets/tenatt文件附带在应用安装包中,运行时释放到文件文件夹并被com.android.luahc[Java]层载入。

功能例如以下:
1、在JNI_OnLoad中通过调用ptrace达到反调试目的:
 

 
2、载入fakeframaroot.so库并调用check接口获取漏洞列表
 

 
3、载入fakeframaroot.so库并调用launch接口进行Root
 

 
FakeFramaroot.so在获取暂时Root权限后。安装恶意SysPhones.apk为系统应用。安装zy到/system/bin文件夹。zy作为后门程序。提供SysPhones.apk以Root用户运行命令的能力。


 
SysPhones.apk恶意程序代码结构例如以下:
 

 
SysPhones.apk开机后自己主动启动,后台请求server获取指令,并依据server指令静默下载、安装推广应用。
请求数据例如以下:
 

 
解密server返回结果例如以下:
org.zxl.appstats 4.0 http://dl.appfreestore.com/1104/AppStats.apk 1 0
 
返回指令格式为:
[包名] [版本号] [下载地址] [是否安装为系统应用(1:系统应用)] [保留]
 
解密并解析返回结果代码例如以下:
 

 
依据指令构建命令脚本:
 

 
通过SysPhones.apk的libSysPhones.so获取调用zy可运行文件所需的password參数:
 

 
调用zy程序运行构建的命令脚本:
 

 
zy做为Root后门在系统文件夹,它接收外部转过来的指令,并以Root身份运行传入的shell命令。
调用格式为:
zy password command
password:通过SysPhones.apk中的libSysPhones.so获取,这样可以保证该后门仅供恶意开发人员使用。
 

原文地址:https://www.cnblogs.com/yjbjingcha/p/6944177.html