2017年6月8日下午,国际知名反病毒厂商卡巴斯基(Kaspersky)发布名为《Dvmap: the first Android malware with code injection》(《Dvmap:第一种具备代码注入能力的安卓恶意软件》)的分析报告。由于该报告所涉及恶意样本为第一种对Android系统平台运行库进行恶意代码注入的恶意软件,且在报告中提及该恶意软件所包含的“.root_sh”脚本文件中存在中文注释,这引起安天移动安全分析团队高度重视,当即组织专业人员对该报告中所涉及恶意软件样本进行紧急分析。
基于国际领先的恶意样本静态分析与动态养殖技术能力,以及强大的移动安全大数据能力,安天移动安全团队对卡巴斯基原报告的解读以及此次恶意软件时间的分析分成移动恶意样本分析与移动威胁情报分析两个方向同时进行。
恶意样本文件com.colourblock.flood.apk伪装为一个小游戏,运行界面如下图:
该apk本身并不显性表现恶意代码与行为,但会根据植入终端系统版本、cpu类型等信息解密其内嵌的恶意文件“Game*.res”。其代码如下:
这批内嵌恶意文件作用如下:
代码解密后会在/data/data/com.colourblock.flood/TestCache/路径释放恶意程序 ,其代码如下:
解密后分析恶意文件信息汇总如下:
com.qualcmm.timeservices.apk为最终被植入的远控恶意载荷apk,从命名上分析,该恶意载荷试图伪装为高通的时间服务程序,其主要作用为与远控服务器通信并执行远控任务。
通信服务器url通过拼接而成,访问url如下: http://d3pritf0m3bku5.cloudfront.net/android/event.php?id=%s&xc=%s&rtsid=%s&v=2&type=2&tm=%d TimeServices与服务器通信会执行远控任务、下载文件并执行,但服务器已失活无法获取到下载的文件。
与服务器通信后在/data/data/com.qualcmm.timeservices/shared_prefs/TaskList.xml生成任务列表。
“.root.sh”脚本用于执行提权,并最终植入远控恶意子包载荷,其中文部分主要位于脚本开头的注释,并不直接提供恶意软件功能。
脚本最后完成安装后,进一步执行恶意远控子包com.qualcmm.timeservices ,代码如下图:
另外,还应注意到在恶意样本的多个bin文件里均出现“kinguser.apk”信息,可以推测该恶意样本使用了中国开发者所开发的kingroot工具的exp程序用于提权。信息示例如下图所示:
入口程序start,获取设备信息,会根据不同系统版本选择植入恶意代码到系统/system/lib/libandroid_runtime.so的nativeForkAndSpecialize方法(Android>=5.0),或/system/lib/libdvm.so的_Z30dvmHeapSourceStartupBeforeForkv方法(Android>=4.4),均为与Dalvik和ART运行时环境相关的运行库。
同时会用myip替换原始的/system/bin/ip,并替换/system/build.pro文件。
要注意到,myip程序无原始ip文件功能,其作用主要用于修改恶意程序的策略等信息,设置com.qualcmm.timeservices.apk应用为设备管理器。
另外,还发现该恶意代码开发者有一定的反侦察自我保护能力,对恶意样本实施了部分保护措施,如隐匿apk生成时间, 在生成apk时修改系统本地时间,导致解包apk文件获取到的生成时间为1979年。
但通过解压toy这个gzip包,仍然可以获取到postroot.sh的真实制作时间为2017/4/18,进而为后续的移动威胁情报分析提供必要的真实数据依据。
根据卡巴斯基原报告所述,该恶意软件伪装成名为“colourblock”的解密游戏于Google Play进行发布下载。
恶意软件Google Play发布页面
由于该恶意软件colourblock自3月下旬起,采用了在同一天内交替上传该软件的恶意版本与无害版本、借以绕过Google Play对其进行安全性检查的方式,导致其一直利用Google Play市场进行分发。借由此种方法多次上传其恶意版本及对其恶意载荷的加密处理,自3月下旬起至被卡巴斯基公司举报下架为止,该恶意软件已被累积下载超过50000次。
安天移动安全团队利用其自有的AVL Insight 2.0移动威胁情报平台,通过移动安全大数据对该恶意软件进行软件包名、开发者证书及样本hash值等多维度查询分析,发现该恶意软件样本版本与种类远大于卡巴斯基原报告中所提供的2种,而多达49种之多,即说明该恶意软件交替上传恶意与无害版本至Google Play的行为时间跨度更大、频率更高。
部分恶意软件样本hash值
根据AVL Insight 2.0终端安全检测数据分析,该恶意软件自其开发者证书生效当日即开始传播,并在较集中时间内完成早期第一次植入活动。
部分恶意样本早期植入终端数据
如上图所示,可以看出在AVL Insight移动威胁情报数据来源范围内,该恶意样本的早期第一次植入终端所在地域主要分布于印度尼西亚与印度。
而从该恶意软件初次上传到Google Play起截至今日,AVL Insight移动威胁情报平台所捕获被成功植入恶意样本的965台终端中,分布于印度尼西亚与印度的数量分别为220台与128台,占比分别为22.79%与13.26%,排第三的为加拿大,其被植入恶意样本的终端数量仅为48台,印度尼西亚区域内被植入恶意样本的终端数量在统计范围中占明显优势。
根据对4种恶意样本的抽样静态与动态分析(分析报告见上节),发现该恶意样本的加密部分内含伪装成高通应用的远程控制程序com.qualcmm.timeservices,对该远程控制程序植入终端数据分析结果如下:
载荷植入终端早期数据
如上图所示,恶意样本载荷的样本数据初次采集时间为4月19日,植入终端所在位置为德国,但经深度分析后发现该样本运行环境为Remix OS For PC安卓模拟器,且其实际连入互联网方式为使用安全公司Avira的德国VPN服务器,因此具备较大的病毒测试设备嫌疑。由此可见,载荷植入终端早期数据中的第一台终端所在位置,有较大几率处于印度尼西亚。
同样对该载荷初次被捕获起截至今日的植入终端数据进行整体分析,AVL Insight移动威胁情报平台所捕获被成功植入恶意样本载荷的221台移动终端中,分布于印度尼西亚的数量为50台,印度的数量为20台排名第二,分别占22.62%与9.04%,印度尼西亚区域内被植入恶意载荷的比例显著最高。
根据对恶意样本colourblock的Google Play市场缓存及全球其他分发来源的页面留存信息,得到Retgumhoap Kanumep为该恶意样本声明的作者姓名,但通过全网搜索与大数据碰撞比对,并不存在以该姓名发布的其他软件与该姓名相关的任何网络信息。
通过对该姓名Retgumhoap Kanumep的解读分析,发现将其姓“Kanumep”各字母从右至左逆序排列则为Pemunak,即印度尼西亚语“软件”之意:
Google翻译截图
而对其名字“Retgumhoap”进行分词为“Retg-umhoap”,由于“retg-”前缀为“return(返回)”之意,故尝试将“umhoap”字母排列逆时针转动180度,得到如下结果:
对单词“deoywn”进行全网搜索可知,曾有机器人程序使用邮箱 [email protected]在大量互联网站留言板页面自动发布留言:
使用可疑邮箱填写的留言板搜索结果
对该邮箱ID “bkueunclpa”进行语言识别,得知其为印度尼西亚方言:
Google翻译截图
根据上节所述,恶意样本载荷向位于亚马逊云的页面接口回传数据,该页面接口(已被关闭)如下: http://d3pritf0m3bku5.cloudfront.net/android/event.php?tc=%s&rc=%s&xc=%s&rtsid=%s&v=2&type=1&tm=%d 根据域名“d3pritf0m3bku5”分析,即“de pritfomebkus”,尝试用Google翻译识别其语种,仍为印度尼西亚方言:
Google翻译截图
根据上节分析内容,可以初步认为在卡巴斯基原分析报告中专门提及的中文代码注释问题,应只是该恶意软件编写者直接使用了中国开发者编写的Kingroot脚本,而非直接与中国恶意软件开发者产生明显联系。
而通过恶意样本及开发者信息的语言特征判断,该恶意软件有较大几率与印度尼西亚开发者存在直接关系;另外,由于该恶意软件并没有在任何社交网站进行推广的网络记录,仅通过应用市场分发,因此其早期推广与分发行为,较大几率由恶意软件开发者就近在自身网络社交范围内通过其他手段进行,结合该恶意软件在早期植入的移动终端地域分布情况和整体总量植入移动终端地域分布情况,可以认为印度尼西亚有较大可能是该恶意软件的开发者所在地和主要受害者集中地域。
需要明确指出的是,由于远控服务器已被关停,恶意样本载荷不存在明显网络行为,开发者自我保护意识极强,以上现状都成为对恶意软件开发者溯源问题上的障碍,需要随着新的情报数据与样本信息的不断完善才能得到较为准确的结论。
但无论如何,这种在安卓平台上第一次出现的针对系统运行库进行恶意代码注入的恶意样本攻击方式,都值得高度重视。相信在可见的将来,会有更多利用类似系统漏洞进行木马植入的移动恶意样本出现,需要高度警惕和预防。