Author:360移动安全团队

0x00 背景


今年央视3.15晚会曝光了道有道科技公司通过推送恶意程序,使手机用户被莫名扣费的问题,引起了广大手机用户的高度关注。

360移动安全团队对道有道广告SDK进行了分析与研究。截至2016年3月底,嵌入道有道广告SDK的应用软件累计达到80万个,从月增样本数量统计可以看出,在去年年中的一个月内就收录了近10万个。

p1

0x01 广告形式


在道有道的官网上,介绍了其广告SDK的展现形式包括插屏广告、Banner广告和应用推荐广告。

p2

其官网展示的插屏广告是在软件内的插屏,实际上在其广告SDK开发文档中,还支持在自身软件外弹插屏广告,这也正是3.15曝光的展现形式。

p3

这种外插屏的展现形式,侵犯了用户的知情权,用户不知道是哪个应用弹的广告,并且点击屏幕任何地方都会直接下载推广的应用,除非准确点击ⓧ才能关闭广告。这种匿名且在自身应用外推送的广告展现形式,不但容易造成用户手机流量损失,还影响用户手机正常使用,被我们定义为恶意广告。

0x02 推广


360移动安全团队发现,借助道有道广告SDK推广的软件,除了正常软件外,还存在大量的恶意软件,比如3.15曝光的色情视频类恶意软件。我们之前发布的“舞毒蛾”【1】和“百脑虫”【2】木马分析报告,都是借助色情视频类恶意软件传播、感染用户手机,并且难以清除干净。

p4

移动广告平台对推广的应用审核不严,助涨了恶意软件传播,成为了其帮凶,最终造成用户经济损失、隐私泄露。

0x03 对抗演变


360移动安全团队分析发现,道有道广告SDK利用静态和动态相结合的手段,与杀软特征进行持续性的对抗,从而躲避杀软的查杀。

1.静态对抗

1.1 组件名称随机化

从静态角度,通过对比嵌入其SDK的两个相似样本的AndroidManifest.xml文件内容,可以发现其声明的activity、service名称都是随机生成的,没有任何含义,这与一般正常软件的声明方式有明显的不同。

p5

1.2 方法及字符串变形

SDK中的方法及字符串也在不断的进行变化,来躲避杀软静态特征识别。下面以onKeyDown方法为例,来展示其不同版本的变化情况。

最初的版本,方法和字符串均未加密。

p6

升级的版本,方法中的字符串进行简单的Base64加密。

p7

再后续的版本中,隐藏方式又有所加深,将方法名称及字符串都保存在配置文件里。

p8

1.3 核心代码的隐藏

道有道广告SDK的核心功能都是依靠动态加载的dex文件来实现,这也是躲避杀软静态特征扫描的一种手段。其主要采用本地文件释放和代码运行释放两种手段隐藏其核心代码。

解析assets目录下的资源文件,得到加载的dex文件。

p9

将dex文件的二进制编码到代码中,在代码运行过程中解码释放。

p10

2.动态对抗

**2.1 URL变化***|

从动态角度,我们以时间轴和不同颜色的方式来展示其广告联网的URL变化情况。

p11

  • 红色部分:URL前面几乎都是以“api”开头,不同时间段后面分别是 “is”、“cp”、“info”;
  • 绿色部分:URL最后面都是以“jsp”结尾,并且从“init”、“in”和“i1n2i3t4”能够看出有明显的对抗变化;
  • 蓝色部分:URL中间部分从“is”变为“nis”,从“_b”变为“_tgb”;
  • 黄色部分:URL开头部分从“api”变为“ai”;
  • 紫色部分:URL结尾从“wa.*/bb”变为“ai.wa.*/ia”;

以上这些URL的变化,都是在对抗沙箱等动态检测技术。

0x04 讨论


移动广告市场的快速增长导致国内涌现出上百家移动广告平台,他们主要依靠在移动应用中集成广告SDK,收取广告主的展示费来盈利。3.15曝光的移动广告平台问题,仅仅是冰上一角,这些广告平台大小不一,良莠不齐,他们提供的广告SDK没有统一的行业标准,给移动安全带来了一定的风险和隐患。

360移动安全团队发现,开发者嵌入广告SDK需要的开发门槛极低,甚至有些广告厂商为了方便开发者嵌入自家平台的广告,提供了广告打包器,只要将开发的应用通过打包器,就可以制作出嵌有该平台广告的应用。

p12

极低的二次打包成本在一定程度上助涨了盗版软件的滋生。在360发布的《2015年Android手机应用盗版情况调研报告》【3】中指出,平均每款正版APP对应92.7个盗版。

广告厂商借助移动应用平台进行广告投放,有责任对自身推广的软件安全性进行严格审查,避免广告推广给手机用户带来的不必要话费、流量损失。

我们建议用户在选择应用下载途径时,应该尽量选择大型可信站点,如360手机助手、各软件官网等。同时,安装360手机卫士定期查杀。

0x05 参考文献