序幕
近日,笔者闲暇时光下载了一个小游戏进行玩耍,游戏结束后没再管它,当下次点亮手机时,惊奇的发现在手机主界面中心有一应用推荐轮播的悬浮窗。对于移动端技术人员来说,手机就像自己的GF,这种匿名的流氓行为是决不能忍的。对其进行了解剖,发现其核心源码竟然只有一个APP类,经调查,此应用是一款盗版应用,运用多dex动态加载,反射,NDK开发,数据加密,代码混淆等多种技术手段,这让我联想起了我们耳熟能详的真假美猴王中的六耳猕猴,与正版应用相比,也算是神通广大了。
谛听察听
如何判定这款游戏是盗版应用呢,我们要像西游记中的谛听一样伏地聆听。Android 开发中每个应用都有自己唯一的签名,为了辨别应用的真伪,我们来到正规的应用商店进行了下载,对其应用的签名信息和证书信息进行了比对,比对的结果如图1-1所示:
图1-1 签名和证书信息比对
就是这样的一款盗版应用,它都不能默默的带有羞耻心的低调行事。在对其行为进行研判时,发现它申请了二十多项权限,这种行为增大了技术人员对它的疑心。经技术人员研判发现,此应用安装之后,会发送大量的短信,其中很多是服务订购短信,会给用户造成恶意扣费其次,此应用还会在多处地方设置监听和内容观察者,会监听用户的短信信息,获取用户的手机号等隐私信息,给用户的隐私安全带来威胁;之后,就是“默默奉献”、“不辞辛劳”的频繁给用户推广各种应用,经研判多数为病毒应用,在用户碰触到广告悬浮窗时,直接下载推广的应用,给用户带来流量损失和精神折磨。
猕猴之七十二变
上文已经介绍过,此款盗版软件在运用技术(其中包含病毒反检测技术)上具有多样化,在病毒行为上更是疯狂,如同六耳猕猴同样具有美猴王的七十二般变化一样。下面我们就其技术和恶意行为进行简单的分析和介绍。
2.1 猕猴之虚空其身
为了搞清楚这款软件的行为,首先必须是对其进行反编译,直接查看其源码,对比正版应用,看其做了哪些改变,想要实现哪些目的。打开其源码的一刹那,有些吃惊,应用并未进行加固,代码却少的可怜,只有一个启动的APP类,为了防止安全应用检测,也算是煞费苦心,我们称之为“虚空其身”。正版软件的代码结构我们不方便贴出,盗版病毒软件的代码结构如图2-1所示:
图2-1 软件源码结构
那么如此一个应用肯定不是一个连Activity类都没有的源码实现的,我们就猜想它的源码或许是动态下载或者本地资源文件进行加载的。我们对其assets文件进行查看,得到的结果让人想哭,未标明文件后缀的文件近达300个,后经研究很多还是加密文件,如图2-2所示:
图2-2 assets文件
为了找到其真正的源码文件,还是需要对其APP类进行分析,根据DexClassLoader对其进行追踪和解密之后得到了下面这个字符串“assets/data/A816C5F3A07165F0D794BAE018C2D0C330734421”,由此我们可以知道,它是采用本地资源文件进行了dex动态加载,之后我们找到资源目录下的A816C5F3A07165F0D794BAE018C2D0C330734421文件,添加dex文件后缀,进行反编译查看,得到了它的源码如图2-3所示:
图2-3 dex反编译源码
如果我们以为A816C5F3A07165F0D794BAE018C2D0C330734421文件就包含了其全部源码,就有点小看此“猕猴”了,在进一步的分析中,我们会发现它很多地方都在动态加载dex文件或通过反射技术调用apk文件,这些代码文件都具有某一项单独的功能,我们使用ROOT权限的ROM,从它本地文件files目录中可以看到,files目录文件如图2-4所示:
图2-4 files目录文件
2.2 猕猴之偷金窃银
作为技术人员,在6.0之前的Android系统上运行安卓应用,是不可能给你无关使用的权限的,所以第一次试玩还是比较友好的操作,但是如果用户在安装了此病毒应用之后,授权了短信操作的一系列权限之后,那就别想好好的玩游戏了,因为你会不断的被发送信息的提示和短信授权提醒所烦扰。订购短信会一直持续的发送,直到你把此软件卸载,如果你的手机未修改短信发送的服务中心号码,最好不要轻易的尝试,发到你“倾家荡产”。这种恶意扣费行为,如图六耳猕猴使出“偷金窃银”的手段,让你防不胜防。
下面我们对其源码进行分析,直接切入其短信发送的地方,发现发送短信的位置有很多,这里寻找一个发送短信,并注册短信监听的地方作为示例。在深入研究中,发现在本地文件files中一个k9ls.dex的dex文件也为注册监听,操作短信的动态加载文件,操作短信的代码都一样,这里不再做阐述,发送短信的源码如图2-5所示:
图2-5 发送短信代码
根据手机发送的订购短信,数量和种类如此之多,数据可能是从网络动态获取或者本地加密文件中存储,上面我们知道它的加密文件是很多的,经过深入分析,我们追踪到其是用SQLiteDatabase进行了存储,但是对数据库的操作地方均使用了代码混淆技术,操作SQLiteDatabase的混淆代码如图2-6所示:
图2-6 短信相关数据库操作混淆代码
经过对混淆代码的处理,最终我们在应用本地文件中找到了短信信息相关的两个数据库,分别是076311815970064文件和msg_com.yf.y.f.init.plugin.dao.DBOpenHelper.db数据库文件,两个数据库中相关表的内容如图2-7和图2-8所示:
图2-7 076311815970064数据库相关表数据
图2-8 DBOpenHelper数据库相关表数据
最后,通过对本地本地文件和数据库的分析,我们知道它是通过网络获取短信port和cmd,存储到本地数据库进行使用和记录。确定是网络动态获取之后,我们抓取协议包进行分析,最终在地址http://p*.*****.cc/index.php/MC/RP中获取短信内容的信息列表,共有22条业务短信内容。经常分析此类病毒的安全人员都知道,此病毒是使用了此域名所有者公司的电信业务,在此不再对齐进行溯源分析。短信内容获取的协议包,如图2-9所示:
图2-9 业务短信内容获取协议包
2.3 猕猴之“火眼金睛”
西游记中孙悟空的“火眼金睛” 是用来识别妖魔鬼怪的,而这里说的“火眼金睛”是用来窥探用户隐私的,此病毒在其运行期间,注册多个监听,监听和操作用户的短信,获取用户运行的task,并获取用户电话号码和设备信息。Android中获取这些信息都有其流程和相应API,这里不过多说明,只是把相应代码作为示例列举。监听短信、获取电话号码和获取sim卡信息(其他设备信息不再列举)分别如图2-10、图2-11和图2-12所示:
图2-10 监听用户短信接收
图2-11 获取用户电话号码
图2-12 获取用户sim卡信息
2.4 猕猴之召唤妖孽
此病毒安装之后会在手机上,匿名频繁弹出悬浮窗,推广多个病毒软件和部分正常应用,当用户不小心触摸到悬浮窗时,直接进行推广应用下载。其推广的软件经过研判,多数为病毒应用,如同更多的“妖孽”一般。匿名悬浮窗轮播图运行界面如图2-13所示:
图2-13 匿名弹窗推广软件
我们对其悬浮窗推广的应用列表信息进行追踪,发现源码中并不能方便的获取到,因为其加密文件的数量和代码混淆以及数据加密做的防护措施,想要获取其推广列表并不是一件轻松的工作。关于是本地解密或联网加密文件获取还是联网直接数据获取,我们从最简单的联网直接获取进行入手,还好我们有强大的协议包获取分析工具,利用Charles发现其使用HTTPS协议进行动态的获取推广列表,获得的推广数据及其服务器地址https://q***.******.top/zutlkWrCr,如图2-14所示:
图2-14 推广软件获取协议包
从上面我们可以看到它的推广软件下载服务器和备用服务器地址分别为http://cdn.***.******.top/upload/和http://cdn.***.******.top/upload。为了大家直观的感受它的推广状态,如广告的id和type等,我们找到它本地存储的数据库qgg.db进行数据展示,如图2-15所示:
图2-15 推广软件本地数据库数据展示
3 猕猴身世之谜
躲避安全软件病毒检测,做到动态加载dex,代码混淆和数据加密等多重技术为了推广应用和业务订购谋取暴利的到底是何方神圣呢?就像那个永远讨论的话题“六耳猕猴的身世之谜”。我们通过研究得到的三个服务器地址,分别是https://q***.m*****.top/zutlkWrCr、http://cdn.a**.w*****.top/upload/和http://cdn.***.f****.top/upload,对其域名进行溯源追踪,能够获得相应的一些信息,如联系电话和邮箱,但是是否是创造者或者传播者都需要更多的证据支持。对域名的whois反查的结果如图3-1、图3-2和图3-3所示:
图3-1 m*****.top域名反查结果
图3-2 w******.top域名反查结果
图3-3 f****.top域名反查结果
4 如来护体金光
盗版病毒应用,不仅侵害了开发商的利益,也给我们用户带来重大影响,针对这个问题我们相应的也从开发商和用户两个方面给出安全防护建议。
开发商在开发应用时可以从以下几个方面做出安全防护:
Ø 对应用进行安全加固,采用现在主流的安全加固厂商的企业加固方案。
Ø 对应用进行严格的签名保护,采用应用重打包防护检测。
Ø 对源码采用高级混淆机制,禁止别人二次使用。
Ø 对应用数据和协议包数据进行加密。
Ø 增加维权意识,坚决维护自身利益。
用户在使用应用时,可以从以下几个方面避免此类应用:
Ø 建议用户提高警觉性,使用软件请到官网下载。到应用商店进行下载正版软件,避免从论坛等下载软件,可以有效的减少该类病毒的侵害。
Ø 关注”暗影安全实验室”公众号,获取最新实时移动安全状态,避免给您造成损失和危害。
Ø 安全需要做到防患于未然,可以使用恒安嘉新公司的APP威胁检测与态势分析平台进行分析对Android样本提取信息并进行关联分析和检测。
Ø 用户发现感染手机病毒软件之后,可以向“12321网络不良与垃圾信息举报受理中心”或“中国反网络病毒联盟”进行举报,使病毒软件能够第一时间被查杀和拦截。
*本文作者:暗影安全实验室,转载请注明来自FreeBuf.COM