Trustlook深度揭露插件化技术在新黑产生态中的滥用

[摘要] 4月初,Trustlook安全研究人员在使用App Insight对国内某商店进行常规审核时,截获了一个名为 换机精灵 的样本,该应用作为一款换机工具,

4月初,Trustlook安全研究人员在使用App Insight对国内某商店进行常规审核时,截获了一个名为“换机精灵”的样本,该应用作为一款换机工具,实则为恶意刷量木马,截止我们发现样本的当日,该应用在国内各大软件市场拥有高达上亿次下载,以下为样本的存档信息:

?

该恶意软件具备极高的威胁:

● 具备远程控制的安装任意应用/插件并执行的后门;

● 利用沙盘技术并主动检测各类杀毒软件逃避检测;

● 脚本模拟点击、恶意创建桌面快捷方式等;

● 申请大量权限,收集设备隐私数据并传输到 ky.5rob.com 和 au.goyihu.com 等;

● 恶意刷量,发送大量网络请求,消耗网络资源

该应用包含了4个静态库以及其作用分别为:

● Libiohook.so

Virtual App核心库,包含SubstrateHook框架,该库暴露了大量接口给jni层用于运行时hook。

● libHuanJi.so

SSDP协议库,用于wlan局域网查找发现设备

● Libjpush174.so

极光推送

● libTmsdk-2.0.6-mfr.so

腾讯御安全sdk

此外该应用在Android Manifest中不正常的申请了大量的权限:

包括联系人、读写收发短息、通话记录、拍照、录音、位置、账号、日历、储存、安装列表等。

尽管换机类应用需要大量的系统权限,但有些权限的申请实属勉强,并存在一定的安全威胁,实际上这些权限的目的是为了保障沙盘中的恶意应用能够顺利运行。

该应用运行时,用户并不会察觉到应用有明显的恶意行为,但通过流量监控我们会发现几个比较有意思的网络行为:

http://ky.5rob.com/active/security/

通过该链接,会从服务器获取主流杀毒软件的列表:

这些请求返回了预安装app列表:

通过返回数据,我们截获了这些应用:

但是这些安装包被下载之后,并没有调用安卓系统自带的包安装管理器询问用户是否进行安装,那么这些应用是怎么被安装的呢?经过逆向工具对函数签名的还原,我们鉴别出了该应用使用了APP插件化框架——VirtualApp,也正是libhuanji.so所对应的java层代码,通过InstallPackage函数,上述的恶意软件将被静默安装到应用沙盘中并执行,而这一切用户却浑然不知。

我们可以发现它根据服务器返回的参数security_check的配置,预先检测了列表中的杀毒软件是否被安装,如果发现了杀毒软件便不会安装恶意插件,这极大的提高了自身的存活率。

这些恶意应用在沙盘中运行了以后,开始频繁的进行网络请求,以下为部分请求:

此外,我们在代码中发现了更多隐藏的恶意代码:

如果服务器下发了模拟操作的脚本,在com.hj.scripter.execute.a中,会模拟操作沙盘中的应用:

并且,在特定的条件下,使用一些功能,App将不经用户同意,私自下载第三方APP并安装在沙盘中,在用户的桌面上创建快捷方式。

其实,这已经不是换机精灵第一次被人发现有恶意行为,传信官网曾于2018年4月就已经发布过声明:

该声明声称打包的sdk并非自己编写,未来将严格管控这些问题,但事实上真的如其所说吗?为何相似的恶意行为不到一年又卷土重来?

我们接下来对“换机精灵“预安装app列表中下载的三款恶意插件进行分析,找出“第三方sdk”的幕后黑手。

通过分析发现,com.cx.photo2与com.cx.photo6基本为同一APP,代码相似度极高,在MainReceiver中,此APP启动时便会检查安全软件,如果用户未安装相关的安全软件,便开始周期执行恶意功能并启动InvisibleService2服务。

在InvisibleService2 onCreate中,一个不可见的透明窗口被创建,覆盖在所有应用的最上层,系统任务栏的下层,并创建了一个webview用于加载网页。

这样不寻常的创建方式并不会被用户察觉,在用户使用app时,所有的屏幕触摸,滑动事件会同时响应到隐藏的webview上,模拟成用户对webview网页中的操作,这样的目的是,通过真实的用户网页浏览行为,欺骗广告运营商的流量统计反作弊算法,来变相进行刷量的目的。

然后该应用发送请求到:

http://d.bjsdknet.com/index.php?r=api/dynamic

获取了更多的刷量插件:

"http://down.dd799aa.com//upload/sdk3/cjmob20190301.jar"

"http://down.dd799aa.com//upload/sdk2/SDK31dex20190220.jar"

"http://down.dd799aa.com/upload/plog/mfgz.jar"

"http://down.dd799aa.com//upload/sdk2/sdk04dex20190218.jar"

"http://down.dd799aa.com/upload/plog/N38de2018 1225.jar"

这些插件将被下载并运行,每轮任务执行完成后又会去请求新的刷量sdk来下载执行,我们对截获的样本进行了逆向分析,发现这些插件被用来进行广告刷量,视频刷量,电商产品推广等不法牟利的行为。而这些行为都是在用户不知情的情况下运行的。

通过搜索引擎的搜寻,我们发现早在几年前传信科技就已经因投放恶意软件而多次被曝光过:

而另外一款被下载到沙盘中,名为pgy sdk就显得更加专业了,我们没能找到其与传信科技的联系,但通过对代码的分析,发现大部分由pgy所下载的jar恶意插件包,均包含一个用于统计感染量的链接,网页最终指向cnzz统计:

通过自增id的方式,在dandelionmob.com域名上,我们最终从其网站上找出200余个用于统计感染量的网址,这意味着恶意sdk插件包可能拥有上百个,该sdk不仅可以藏身于Virtual App沙盘中,一些正常应用中也包含该sdk的身影,而为了避免被查杀,开发者展现了自己娴熟的免杀技巧,逃避杀毒软件的扫描,字符串是静态扫描的重要特征之一,对字符串的处理方式在样本中也多种多样,其中包括但是不限于各种字符串拆分,编码,加密等混淆方式。而且,为了避免被使用固定的包名查杀,同样的代码在几份sdk中使用了不同且无规律的包名。

今年4月份,Trustlook团队向该应用商店通告了换机精灵的恶意行为,传信科技在刷量行为败露后,发布了新版的换机精灵应用,清除了相关代码并关闭了服务器接口。他们对原有的恶意代码进行删减后,开发了一款新的基于VirtualApp多开工具—小隐大师,同时使用了360加固安全服务,尽管目前为止,我们暂未发现其有明确的恶意行为,但该应用保留了之前“换机精灵”的大部分代码,为了掩人耳目,具备极高的安全风险。而且考虑到传信科技之前的行为,他们极有可能在风头过后又卷土重来。

VirtualApp作为一款应用沙盘框架,本身没有恶意代码,对于运行在沙盘中的应用,VirtualApp模拟成了Android系统的Framework层,提供了一个APP运行时所需要的环境,因此使用了沙盘技术的应用无法避免要申请大量的系统权限,同时也具备了Hook沙盘中的应用的能力,多被用于应用多开、正规应用修改/插件版、马甲包等,因此可以修改原应用的正常执行流程,盗取包括且不限于用户的账号密码及各类隐私等。

Java语言作为一门动态语言,具备完善的代码反射机制, Android平台得益于这项技术,可以在线上期通过热更新的方式修改现有的程序,在改善了用户体验的同时,也带来了大量的安全隐患,恶意软件作者同样利用了这项技术威胁到了用户的安全,通过类加载器DexClassLoader可以在运行时加载并解释运行dex文件,达到隐藏恶意代码的目的。即便用作热更新,使用这项技术时,要对dex文件的完整性做校验,被加以利用后,很可能会导致恶意代码的注入。

本文通过逆向分析换机精灵样本,却无意中发现了一个庞大的黑产集团,在对相应的SDK使用统计的链接中,Trustlook团队发现了将近300个恶意插件,实际上这还只是其冰山一角,这些插件都编写的非常专业,而且其中运用了各种免杀手段,由此可见黑产对怎样使用多开工具已经有了很多年的积累。在上期的热更新一文中,我们公布了最热门的应用中热更新的使用比例,而在这些应用中使用了Virtual App等多开工具也并不罕见,因此应用商店很难完全禁止这些技术在App中的使用,这就给予了黑产极大的便利,而普通的代码审核也很难检测到动态设定的恶意行为。

单纯的静态审核或动态沙箱都很难有效的检测到这些恶意行为,准对这种状况,Trustlook团队独立研发移动样本深度分析审核平台App Insight。用户可上传Android APK文件,并在几分钟内收到详细的安全分析报告。 App Insight使用了真实设备沙箱系统,通过静态和动态结合的分析方法发现各类隐藏的恶意和敏感行为,帮助安全人员和应用商店高效的审核移动样本,确保移动端用户的隐私和数据安全。




免责声明:

本站系本网编辑转载,会尽可能注明出处,但不排除无法注明来源的情况,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与本网联系, 来信: liujun@soft6.com 我们将在收到邮件后第一时间删除内容!

[声明]本站文章版权归原作者所有,内容为作者个人观点,不代表本网站的观点和对其真实性负责,本站拥有对此声明的最终解释权。