【技术分享】Dvmap:第一款使用代码注入的Android恶意软件

https://p2.ssl.qhimg.com/t010172fe8fefeacc3f.jpg

译者:nstlBlueSky

预估稿费:180RMB

投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿


前言

2017年4月,我们开始调查通过Google Play应用商店发布的新的系统级恶意软件-Dvmap

Dvmap木马程序与其他系统级恶意软件不同,该木马软件不仅将其恶意软件模块安装到系统中,还将恶意代码注入到系统运行时库中。卡巴斯基实验室产品检测到了这款木马,并将其命名为Trojan.AndroidOS.Dvmap.a

其实,通过Google Play应用商店发布系统级恶意软件不是一件什么新鲜事了。例如,自从2016年9月以来,Ztorg Trojan这块恶意软件已经上传到Google Play应用商店几乎多达100次。但是Dvmap是非常特别的系统级恶意软件。它使用各种新技术,其中最有趣的是它将恶意代码注入到系统库libdmv.solibandroid_runtime.so中。这使得Dvmap成为第一个在运行时将恶意代码注入系统库中的Android恶意软件,该恶意软件已从Google Play商店下载超过50,000次。卡巴斯基实验室向Google报告了该恶意软件,现在该恶意软件已经从Google Play应用商店中删除。

 http://p6.qhimg.com/t01a9a4ec74ac034137.png

为了绕过Google Play应用商店的安全检查,恶意软件创建者使用了一个非常有趣的方法:他们在2017年3月底之前将一个干净的应用程序上传到Google Play应用商店,然后会在短时间内更新软件,更新后的软件将包含具有恶意功能的模块,一般他们都会同一天在Google Play应用商店上传一个干净的版本。调查发现他们在4月18日至5月15日期间至少进行了5次这样的操作。

一般情况下,所有的类似于Dvmap这样的恶意应用程序都具有相同的功能。他们都会从安装包的assets文件夹中解密多个归档文件,并从解密后的文件中执行以“start.”开头的可执行程序。

 http://p6.qhimg.com/t018a51557a688fb006.png

有趣的是,从下图可以看出Dvmap木马软件甚至支持64位版本的Android系统,这种情况是非常少见的。

 http://p0.qhimg.com/t01c1aa138ef9d89358.png

所有加密的文件可以分为两组:第一组包括Game321.res,Game322.res,Game323.res和Game642.res,这些都是在感染的初期阶段使用的,而第二组则是Game324.res和Game644 .res,这些文件用于主要阶段的感染。


初期阶段

在初期阶段,特洛伊木马程序尝试在Android设备上获得root权限并安装一些功能模块。来自此阶段的所有档案都包含相同的文件,除了一个名为“common”的文件。这是一个本地系统漏洞利用工具包,木马程序中使用了4个不同的漏洞利用工具包文件,3个32位系统的和1个64位系统的。如果这些文件成功获得root权限,该木马程序将在系统中安装多个工具,它还将安装恶意应用程序“com.qualcmm.timeservices”。在这些档案文件中,我们发现了一个名为“.root.sh”的文件,这个文件中包含了一些中文注释。

http://p0.qhimg.com/t016523ff7a626327e6.png 


主要阶段

在这个阶段,特洛伊木马从Game324.res或Game644.res启动以“star.”开头的文件。它将检查安装的Android系统的版本,通过Android系统的版本来并决定哪个库应该被“注入”恶意代码片段。对于Android 4.4.4及更高版本,该木马将修改libdvm.so中的_Z30dvmHeapSourceStartupBeforeForkv函数,对于Android 5或者更新版本,它将修改libandroid_runtime.so库中的nativeForkAndSpecialize函数。这两个库都是与Dalvik和ART运行时环境相关的运行时库。在“注入”之前,木马将以名称bak_ {original name}的方式备份原始库。

http://p0.qhimg.com/t018ebcf8ac720d77b1.png

在代码“注入”期间,木马程序将使用恶意代码覆盖现有的代码,使得木马程序的所有模块可以执行系统模块/system/bin/ip。这种操作将是非常危险的,原因是模块代码被修改之后,设备上现有的需要使用该模块的应用程序将无法正常运行。成功“注入”代码之后,木马程序会将打过“补丁”的库放回系统目录中去。之后,木马将从文件(Game324.res或Game644.res)中使用恶意程序代替原始的/system/bin/ip。他们这样做的目的是:木马软件可以确保其恶意模块将以系统权限被执行。但由于恶意ip文件模块不包含原始ip文件中的任何方法,这意味着所有正在使用此文件的应用程序将无法再正常使用该模块,甚至会开始运行崩溃。


恶意模块“ip”

该文件将由被修改的系统库执行,它可以关闭“VerifyApps”,并可以通过更改系统设置去操作安装任何来自第三方应用市场的应用程序。此外,它还可以授予“com.qualcmm.timeservices”应用程序设备管理员权限,而无需与用户进行任何交互,只需运行命令即可,这种获取设备管理员权限是非常不正常的一种操作方式,在一定程度上这种操作应该引起安全研究人员的足够重视。


恶意应用程序com.qualcmm.timeservices

如前所述,在“初始阶段”中,木马将安装“com.qualcmm.timeservices”应用程序。其主要目的是下载恶意程序并从中执行以“start.”开头的二进制文件。在调查过程中,该应用程序能够成功连接到控制服务器,但由于没有截获到与命令传输相关的网络流量,所以我们不清楚要它将会执行什么样的命令,但可以确定的是它们是一些恶意的程序。


结论

Dvmap木马软件通过Google Play应用商店发布,并使用了一些非常危险的技术,包括修改系统库等操作。它将具有不同功能的恶意模块安装到系统中。它的主要目的是进入Android系统,下载一些二进制程序,并以root权限来执行这些二进制程序。但是,目前为止我们还没有从他们与控制服务器交互的过程中收到过这样的文件,这个也是我们需要进一步调查的工作。

这些恶意模块向攻击者报告他们将要做的每一步操作,所以我认为恶意软件作者仍然在测试这个恶意软件,因为他们使用了一些新兴的技术去感染Android终端设备,这些技术可能还不是很稳定。到目前为止,已经有很多的用户终端感染了他们的恶意软件。我们希望通过早起阶段发现和充分的研究这种恶意软件,以至于当攻击者准备好大规模发起网络攻击的时候,我们将能够有能力防止这种大规模和危险的攻击。

(完)