一、前言
想知道自己为啥话费总是不够用吗?
想知道自己手机为啥莫名的卡顿的吗?
想知道自己手机里面为啥总有那么些不请自来的APP天天见吗?
这一切的难言之隐的背后绝大多数都来自于 “小电影”的诱惑,近期腾讯反诈骗实验室及移动安全实验室的鉴黄师又发现了一波以心动、裸色等名义进行传播的恶意应用。这款由X影科技开发的虚假色x应用(不要失望,现在要找个良心的真■小电影是非常不容易的,需要丰富的阅历和技巧)仅仅只借这个名义来完成它的发财梦。根据腾讯反诈骗实验室/移动安全实验室/手机管家安全团队的分析,该科技有三个发财套路:
1、快捞一比(先赚一笔保底):本身通过色情内容诱导用户付费,快速捞取一波收入;
2、再推一把(推广费也是必须拿到手的):通过恶意安装推广一批应用来赚取响应的分层收入(比如给你弄个游戏恶意扣费应用,玩把手机分分钟被套路扣钱);
3、最后留一手(持续性牟利):通过ROOT用户手机将自营后门植入用户手机底层(通常具备防卸载功能,篡改系统文件的行为),如此病毒开发商就能持续的通过这个恶意后门给用户推广各种应用达到持续性牟利。
二、病毒简介
1、母包本身多包含恶意行为,如短信扣费、诱导扣费、恶意推广;
2、下载安装的子包申请设备管理器权限防卸载;
3 子包潜藏在系统后台,高频率推广安装各类应用(有大牌正规应用,也有众多急于发家的不良应用);
4 包含Root行为,成功后可静默安装推广应用;
5 检测安全软件并退出。
下面以该家族病毒中用户量较大的一个应用为主展开分析:
应用名:心动影院
包名:com.txy.wzd
证书MD5:96C81FBBA5E*******67E4F587CA9C4
主要推广流程:
主要加载流程:
近三十天影响趋势:
三、详细分析
2.1 动态行为及分析
启动之后发现检查更新,并且必须进行更新,抓包获取到了更新的地址为:
http://videoapk.ycd****.com/20170802/837c24b8-d9e0-4150-a1fd-5b59034c594d-ishow_v5.3.15_3e360e2_plugin_patch_full.apk
更新之后启动的界面如上图右所示,很明显的一个色播类病毒。
上方送流量点击后跳转至http://liliang.yc****.com/liuliang/index.html#/produce
通过抓包可以发现应用除了更新、上传信息、下载图片、获取扣费信息等“正常行为”外,还下载了几个可疑的文件:
http://apk.chao****.cn/e13e432513914cdf9aa75ddb3eaa7adb.apk
——包名为com.cime.kige
http://dws.enh.i-bigda***.net:8080/appstore/pri/5403ddd6ecda4977b0ac92526095b12a.apk
——包名为com.kert.porn
http://cdn0127.868***.com:8080/edt6_r.apk
——加密文件
接下来发现应用执行了这样的命令:
chmod 777 /data/data/com.txy.wzd/files/arte /data/data/com.txy.wzd/files/arte "0" "/storage/emulated/0/.0ff7ed298509a28/com.kert.porn/abc/com.kert.porn_r1.app" "1800" "com.txy.wzd" "com.kert.porn" "com.auu.aoc.action" "/storage/emulated/0/.fd.lk" "sy" "sy" "p3005" "0" "2" "4"
里面包含了一个包名com.kert.porn,也就是之前下载下来的apk。
命令执行的文件arte是个elf文件,使用IDA进行分析:
主函数处无数的局部变量,对应是打乱了顺序的字串,还原顺序之后就可以发现一些有趣的东西:
am startservice –-user %s -a %s
am start –user %s -a android.intent.action.INSTALL_PACKAGE -d file://%s
主函数:
com.kert.porn(无图标应用):
申请设备管理器权限及安装同类应用(com.moxy.held)。
应用以一个极高的频率(1分钟以内1次,1次5条消息两个应用安装)推广以及弹出安装界面,以及安装桌面图标,同时在运行其他应用时弹出底部弹窗,同时申请了设备管理器权限防止从手机端卸载和停止服务,并且在取消激活设备管理器处弹出恐吓类提示:
上面的各种操作里面中抓到的下载相关的包。
http://dws.enh.i-big****.net:8080/appstore/pri/1727d8d50a5a42dc9af5edd1325864da.apk
——熟悉的域名,和前面下载com.kert.porn的相同,包名com.moxy.held,应用名Sys safe
http://cdn0127.86***.com:8080/edt6_r.apk
——与之前相同
http://adsoz.syinxxxx.com/appstore/apk/7f23b78694f94347b76723e3cb6549a9.apk
——推广的应用
并且动态分析中也发现com.kert.porn执行了如下命令:
chmod 777 /data/data/com.kert.porn/files/part /data/data/com.kert.porn/files/part "0" "/storage/emulated/0/。86a0497029/com.moxy.held/abc/com.moxy.held_r1.app" "1800" "com.kert.porn" "com.moxy.held" "com.buu.boc.action" "/storage/emulated/0/.fd.lk" "default_hou" "default_hou" "p0000" "0" "1" "1500982411"
这与前文的命令结构参数相似。
于是可以有理由地猜测com.kert.porn与com.txy。wzd具有相似的功能,将part这个elf文件拿到IDA里面看了之后也发现与前面分析的arte功能完全相同。
最后动态把com.moxy.held跑起来,得到了与com.kert.porn同样的效果,包括下载的文件。
同时从流量角度也可以分析出广告推送和可疑文件下载的大致流程:
动态方面的分析到此结束,下面将会从静态展开更详细的分析,由于模拟器架构问题,其实导致不只一处的功能执行出现问题,这些遗憾将由静态分析来补全。
2.2 静态详细分析
静态分析主要关注以下两个个方面:
1、 子包的加载流程
2、 各个包的功能
2.2.1 子包加载流程分析
对apk解包之后的文件粗略浏览之后没有发现未加密可以直接加载的文件,那么多半是从服务器获取或者解密本地文件的了,本地文件里面有且仅有一个文件可疑度较高(如下图),同时动态分析中抓到的下载的edt6_r.apk也是一个疑似加密后的文件。
字串搜索可以直接搜索到stdata.db,同时定位到具体方法为com.st.m.u.o.b.
简单分析可以得到解密算法如下:
编写脚本将文件解密还原,得到一个apk文件,其包名为mf。ck,同时解包后可以发现其assert文件夹中的一个zip文件解压后正包含arte和liblive.so两个之前发现过的文件。
对子包进行进一步分析时发现了与母包相似的文件处理:
简单观察可以发现用于解密的字串为edt6g,于是猜测是用来解密edt6_r.apk的,改改脚本成功跑出来还原后的apk,包名为com.a.a.a.
回到stdata中继续分析,assert中两个elf文件中的一个:arte的功能前文已经验证过是安装com.kert.porn的了,另一个liblive.so则是一个native库。
直接IDA分析,套路和之前arte中见到的一样,打乱字符顺序降低可读性,还原之后在几个函数中发现了一些值得注意的东西:
1、 Host: so.i-bigdatas.net
2、 POST / HTTP/1.1
3、 /files/ensfd/
可知其通过HTTP请求获取了一个zip文件。
从平台上的数据可以看到在POST了so.i-bigdatas。net之后不远处就出现了一个zip文件,并且在加载的子包处也有了ensfd的踪迹:
这个子包并没有加密,其包名也为mf.ck.
至此com.txy.wzd的子包加载流程结束,整理为下图:
对com.kert.porn进行分析可以得到基本完全一样的结果,仅仅是第一步解密加载的不是stdata.db而是jdta.db,第二步中启动的应用是com.moxy.held这两个区别,其余部分可以说是完全相同;同样的com.moxy.held与com.cime.kige也表现出了同样的特征,后三者的内部结构可以说是完全一样的。
jdta.db与stdata.db这两者有着不小的区别,具体将在下文分析到,然而在子包的加载这个流程中,表现出的行为是完全相同的。
下一小节将详细分析各部分都具体做了些什么动作。
2.2,2 各个母包/子包的功能分析
先将这一小节将分析的母包/子包进行分类列举:
1、 com.txy.wzd以及com.kert.porn类(包含com.moxy.held/com.cime.kige)
2、 mf.ck(stdata.db/jdta.db)
3、 com.a.a.a(edt6_r.apk)
4、 mf.ck(mount_x_x.zip)
Part1
首先从母包开始分析,com.txy.wzd作为一个最初的传播个体,也是唯一一个有图标的应用,比较尽职尽责地发挥了自己作为一个色播类应用的功能,诱导扣费、短信暗扣、隐私获取等常规功能一个不落;除此之外就是加载子包了。
接着是com.kert.porn,应用启动之后第一件事就是检查自己有没有设备管理器权限,如果没有就申请权限,并且设置恐吓提示防止用户取消设备管理器权限,起到对小白用户的防卸载功能。
(a.Q解密后为“取消激活会引起系统问题,请慎重!”,与动态中一致)
除此与子包加载的代码之外静态分析发现了一些HTTP下载的代码,不过都没有被执行到,源头处不存在显示调用,同时log中也没有相关记录,初步推测推广行为产生于其子包中。
Part2
这部分将对stdata.db和jdta.db分别进行分析。
stdata.db的功能相对简单,主要用于HTTP请求获取edt6_r.apk和com.kert.porn这两个后续加载的包了。
设置下载的com.kert.porn的存储位置以及移动后的文件名(com.kert.porn_r1。tmp[app]);
请求并下载com.kert.porn
edt6g的文件解密以及加载(v2.a()为解密文件),加载的方法为com.z.x.actor.ASMn.init
除此之外还带有安全软件的检测功能,这部份数据被传送到云端,并根据送回的数据进行操作,这里检测到之后会直接退出应用。
而jdta.db的功能则比stdata.db要丰富许多,在其母包com.kert.porn仅有一个防卸载功能的情况下,作者将剩余的操作全部放进了这个子包当中,同时还具备了stdata.db的所有功能(下载的应用为com.moxy.held),这也直接导致了这样的情况:
下面我们对jdta.db中除开stdata.db已有的具体的恶意行为进行分析,从之前的动态结果来看,主要是恶意推广的行为、安装行为以及一个浮动窗,浮动窗在点击之后会弹出类似一个应用商店一样的窗口,那么下面将依次进行分析。
一切动作都避不开apk的安装(最终目的),那么首先定位到了安装apk的代码如下:
然后由此一步步向上回溯便将恶意行为的流程挖掘地差不多了,可以发现有以下几处位置最终调用了这个函数:
1、 下载com.moxy.held之后
2、 浮动窗应用商店之中的下载按钮点击后
3、 shortcut创建时
(上图onCreate()函数将安装shortcut,com.be.h.a.a()函数内含具体操作,函数结尾处为下图,下图中的类a即为安装行为所在的类)
通知栏推送以及底部弹窗的相关代码:
Part3
edt6_r.apk这个子包在被加载时调用的是其com.z.x.actor.ASMn的init()方法,这个方法内部如下:
k.b()与j.a()最终都是去打log了,内部有一定的格式处理,关键点应该在下面的ADSUninstallRulesManager。adsRulesGet(arg3)函数中,此处的arg3参数在之前调用的位置可以看到是:
b.a(aka.l)也就是com.z.x.actor.ASMn
这个函数内部是类似添加白名单的机制;然而由于该子包在我的机器以及虚拟机上都无法正常运行,于是无法完全确定其功能,从静态来看,edt6_r.apk整体是一个独立的apk,其功能同样是广告的推送:
此外未发现其他异常操作。
Part4
最后是mount_x_x.zip这个包,这个包来自于jdta.db/stdata.db中liblive.so的下载,其包结构中值得注意的部分如下:
代码中多处出现可疑命令操作:
解密出来的一些字串:
非常明显的一个Root工具包,同时它还从以下地址下载了Root所需要的文件:
http://dws.enh.**********.net:8080/tot/dev_tot2
http://dws.enh.**********.net:8080/tot/sul18
http://dws.enh.**********.net:8080/tot/base
然后以调用elf文件Matrix开始,进行root。
四、信息分析
从上述的分析中,我们可以提炼出一些信息如下:
1、 QQ:5424**237、33778**378
2、 银行信息
3.1 溯源
QQ号未能发现任何有价值的信息,银行的信息可以定位到如下内容:
URL中,信息相对有效的如下:
信息指向杭州*影科技有限公司。
此家族的恶意软件可基本认为为该公司开发制作。
3.2 apk推广分析
推广的apk全部下载自以下两个网址:
http://adsoz.*******.com/appstore/apk/
其中前者下载的apk多为灰色应用,且具有高度的不规则性(色播、游戏暗扣、盗号类,种类繁多),同时网址下还包含一部分常规应用。
推广的恶意应用中用户量top10:
后者为com.txy.wzd内置的广告点击后下载apk的域名,这部分域名下数据较少。
这些apk同样大部分为灰色/病毒应用,值得注意的是其中还包含了一些同家族的应用(具有相同的结构,如stdata.db的存在)。
对com.txy.wzd所涉及到的域名下的apk进行收集整理:
1、 zqbs.*******keji.com:
样本量较少,但高度统一,分析后确认全为com.txy.wzd的同家族应用。
2、 m.***apps.net:
对同包名和同应用名去重后,其中大部分应用为com.txy.wzd同家族应用,包名mf。ck应用名enh的为之前分析过的mount_x_x.zip即为Root子包;且包含一些行为相似的应用(疑似另一家族)以及shopapp这个行为均不同的应用。
3、 air.*****datas.com
该域名下绝大部分与***apps.net一致,多出的少数应用中的大部分与***apps.net的另一家族应用同样具有恶意行为,个别应用具有其他恶意行为。
新发现的疑似同家族应用有:
(gtc init及其包名应为随机生成,上面各图中类似的英文名应用均表现一致)
shopapps这个应用表现出的特征与下列几个应用一致,这几个是与com.kert.porn同证书且表现不同的子包。
五、清理方案
目前,腾讯手机管家安全专家针对该病毒提供了以下卸载方案:
1、 卸载相关应用(如有设备管理器权限先取消)
2、 清理下载的各类应用以及创建的文件
相关文件夹如下:
/storage/emulated/0/sy开头的所有文件夹
/storage/emulated/0/SAdAssertsAX
/storage/emulated/0/。s_d_p
/storage/emulated/0/。[字母数字乱码](com.kert.porn下载apk全部位于此处)
3、 清理系统中被替换的的恶意文件
debuggerd
pidof