当前位置:安全客 >> 资讯详情

【国际资讯】源自中国公司的个信广告SDK染指安卓监控软件?

2017-08-23 11:56:40 阅读:16749次 收藏 来源: 安全客 作者:360代码卫士

http://p7.qhimg.com/t017ce32f016efad865.jpg

翻译:360代码卫士

投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿


最近进展,8月24日个信SDK官网针对此事回复如下:

http://www.igexin.com/news_details.html?uuid=20


前言


个信SDK能够以下载恶意插件的方式通过非恶意app监控受害者。谷歌应用商店中超过500款app都使用了个信广告SDK。虽然并非所有的app都下载了这种恶意监控功能,但个信SDK可能已为这些app引入该功能。包含受影响SDK的app下载量已超过1亿次。


个信SDK本质非恶意但其服务器有问题


越来越多的创新性恶意作者尝试通过向受信任应用商店提交无害app的方式逃避检测,随后从远程服务器下载恶意代码。而个信并非如此,因为开发人员并未创造恶意功能,也未控制甚至并未意识到这个恶意payload之后可能会执行。这个具有入侵性的功能起源于由个信控制的服务器。


受影响app


包含这个广告SDK的app包括:

针对青少年的多款游戏app(下载量为5000万至1亿次)

天气app(下载量为100万至500万次)

互联网广播(下载量为50万至100万次)

照片编辑器(下载量为100万至500万次)

教育、健康和健身、旅行、表情、家庭视频摄像机类app

Lookout公司将个信的该功能告知谷歌后,后者从应用商店中删除相关app或者将入侵功能删除后换以更新版本。


背景


一般来讲,移动app使用广告SDK的目的是便于app开发人员利用广告网络向用户推送广告。跟其它广告网络一样,个信服务也会利用所收集到的用户兴趣、职业、收入和位置信息推广目标广告服务。

http://p2.qhimg.com/t01c1590a5cf3e77424.png

研究人员在例行审查跟某些IP和此前推送恶意软件的服务器通信的app时,发现了可疑流量。个信SDK本身的流量并未出现异常,因为出于很多原因的考虑,很多恶意软件会为合法服务生成流量。

研究人员发现一款app在向http://sdk[.]open[.]phone[.]igexin.com/api.php 的一个REST API发送一系列初始请求后下载了大量的加密文件。而上述API正是个信广告SDK使用的一个端点。

这种流量通常是恶意软件首先安装“清洁的”app随后下载并执行代码的结果,目的是躲避检测。加密文件的下载以及将com.igexin namespace调用安卓的dalvik.system.DexClassLoader(用于从.jar或.apk文件加载类)这两点就足以说明需要深入分析payload中可能隐藏着恶意软件。

http://p7.qhimg.com/t017db5be373d0379fb.png

个人数据的收集取决于app的权限、移动安全解决方案和隐私策略,它们用来评估app所收集的个人数据是否合理。而app开发人员最终负责在app隐私策略中披露所有收集到的个人信息。开发人员也负责审查内嵌的第三方代码并将所有内嵌第三方代码中的数据收集能力披露在隐私策略中。

很多app开发人员可能并未意识到,因为个信广告SDK的嵌入,可能会从客户设备中提取到个人信息。而发现这一点需要对app和广告SDK进行深入分析。该功能不仅难以被发现,而且随时可从远程服务器中更改。


SDK功能


并非所有的个信广告SDK版本都传播恶意功能。恶意版本实现一个插件矿建,能让客户端加载任意代码,如向位于http://sdk[.]open[.]phone[.]igexin[.]com/api.php这个REST API端点发送请求得到的响应一样。

http://p8.qhimg.com/t016d358b38701bb9b7.png

向这个端点发送的请求和收到的响应都是编码的JSON数据。如下是从这个API收到的解码响应,它让客户端在两个加密JAR文件中下载并运行代码:

这些响应信息中的相关字段如下:

http://p7.qhimg.com/t0175a26fc408462d8c.png

从服务器接收了这种响应类型时,SDK会利用API调用提供的密钥解密一个或多个文件,并将其保存在设备上。随后它会利用安卓的dalvick.system.DexClassLoader和映像从JAR文件加载这个具体类:

http://p6.qhimg.com/t019ae2129ce88a20d7.png

所有的插件都包含实现com.igexin.push.extension.stub.IPushExtension界面的一个类。这个界面定义了被调用来初始化插件的一个boolean init(Context)方法。

要注意的是,所有的API流量都被编码(并非加密)并以明文文本形式发送或接收。

所下载类中包含的插件功能在运行时完全被外部控制,而且可随时更改并给予远程系统操作者所选择的因素变化。提出远程API请求后,用户和app开发人员无法控制设备上会执行什么代码。

对于可运行内容的唯一限制是由安卓权限系统规定的。也就是说从插件中观察到的最严重的行为是呼叫日志提取。

研究人员发现,如满足下列条件,则所下载的大量插件都会通过init方法注册一个PhoneStateListener:

1.启用了内部SQLite数据库中的设置。

2.这款app拥有 “android.permission.READ_PHONE_STATE” 权限。

这个PhoneStateListener会保存:

呼叫时间

呼叫号码

呼叫状态(空闲、响铃、占线)

http://p5.qhimg.com/t01cd83ed6454b0e329.png

通过一个HTTP请求中把数据发送给http://sdk[.]open[.]phone[.]igexin[.]com/api.php 端点。信息解码后格式如下:

如果以Base64解码BIData,就能看到通过PhoneStateListener收集到的数据格式是管道分隔记录:

第四个字段是呼叫时间,第六个字段是呼叫状态,第五个字段包含所呼叫的经Base64编码和RC4加密的电话号码。第二个字段包含用于XOR加密的部分密钥(另一部分较难,在应用程序中编码)。

有了这个密钥,我们就能把s6GYbkAUkOQPwK4P字符串解密成一个有效的电话号码。


本文由 安全客 翻译,转载请注明“转自安全客”,并附上链接。
原文链接:https://blog.lookout.com/igexin-malicious-sdk

参与讨论,请先 | 注册 | 匿名评论
发布
用户评论
HLZNJ 2017-08-23 14:02:04
回复 |  点赞

还是极光靠谱.

拿根针尖对麦芒 2017-08-23 14:02:04
回复 |  点赞

回复@HLZNJ:不!明明是友盟

你全家都是黑客 2017-08-23 12:26:21
回复 |  点赞

竟然收集用户信息!

拿根针尖对麦芒 2017-08-23 12:11:35
回复 |  点赞

这个就有点恶心了……

查看更多