Author:360移动安全团队
0x00 背景
今年央视3.15晚会曝光了道有道科技公司通过推送恶意程序,使手机用户被莫名扣费的问题,引起了广大手机用户的高度关注。
360移动安全团队对道有道广告SDK进行了分析与研究。截至2016年3月底,嵌入道有道广告SDK的应用软件累计达到80万个,从月增样本数量统计可以看出,在去年年中的一个月内就收录了近10万个。
0x01 广告形式
在道有道的官网上,介绍了其广告SDK的展现形式包括插屏广告、Banner广告和应用推荐广告。
其官网展示的插屏广告是在软件内的插屏,实际上在其广告SDK开发文档中,还支持在自身软件外弹插屏广告,这也正是3.15曝光的展现形式。
这种外插屏的展现形式,侵犯了用户的知情权,用户不知道是哪个应用弹的广告,并且点击屏幕任何地方都会直接下载推广的应用,除非准确点击ⓧ才能关闭广告。这种匿名且在自身应用外推送的广告展现形式,不但容易造成用户手机流量损失,还影响用户手机正常使用,被我们定义为恶意广告。
0x02 推广
360移动安全团队发现,借助道有道广告SDK推广的软件,除了正常软件外,还存在大量的恶意软件,比如3.15曝光的色情视频类恶意软件。我们之前发布的“舞毒蛾”【1】和“百脑虫”【2】木马分析报告,都是借助色情视频类恶意软件传播、感染用户手机,并且难以清除干净。
移动广告平台对推广的应用审核不严,助涨了恶意软件传播,成为了其帮凶,最终造成用户经济损失、隐私泄露。
0x03 对抗演变
360移动安全团队分析发现,道有道广告SDK利用静态和动态相结合的手段,与杀软特征进行持续性的对抗,从而躲避杀软的查杀。
1.静态对抗
1.1 组件名称随机化
从静态角度,通过对比嵌入其SDK的两个相似样本的AndroidManifest.xml文件内容,可以发现其声明的activity、service名称都是随机生成的,没有任何含义,这与一般正常软件的声明方式有明显的不同。
1.2 方法及字符串变形
SDK中的方法及字符串也在不断的进行变化,来躲避杀软静态特征识别。下面以onKeyDown方法为例,来展示其不同版本的变化情况。
最初的版本,方法和字符串均未加密。
升级的版本,方法中的字符串进行简单的Base64加密。
再后续的版本中,隐藏方式又有所加深,将方法名称及字符串都保存在配置文件里。
1.3 核心代码的隐藏
道有道广告SDK的核心功能都是依靠动态加载的dex文件来实现,这也是躲避杀软静态特征扫描的一种手段。其主要采用本地文件释放和代码运行释放两种手段隐藏其核心代码。
解析assets目录下的资源文件,得到加载的dex文件。
将dex文件的二进制编码到代码中,在代码运行过程中解码释放。
2.动态对抗
2.1 URL变化*|
从动态角度,我们以时间轴和不同颜色的方式来展示其广告联网的URL变化情况。
- 红色部分: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需要的开发门槛极低,甚至有些广告厂商为了方便开发者嵌入自家平台的广告,提供了广告打包器,只要将开发的应用通过打包器,就可以制作出嵌有该平台广告的应用。
极低的二次打包成本在一定程度上助涨了盗版软件的滋生。在360发布的《2015年Android手机应用盗版情况调研报告》【3】中指出,平均每款正版APP对应92.7个盗版。
广告厂商借助移动应用平台进行广告投放,有责任对自身推广的软件安全性进行严格审查,避免广告推广给手机用户带来的不必要话费、流量损失。
我们建议用户在选择应用下载途径时,应该尽量选择大型可信站点,如360手机助手、各软件官网等。同时,安装360手机卫士定期查杀。
0x05 参考文献
- 【1】:"舞毒蛾"木马演变报告
- 【2】:"百脑虫"手机病毒分析报告
- 【3】:2015年Android手机应用盗版情况调研报告