警惕!国内某广告SDK内置“后门”功能,Google Play商店已强制下架

简介: 本文讲的是警惕!国内某广告SDK内置“后门”功能,Google Play商店已强制下架,Lookout安全团队近日发现了个信的广告软件开发工具包(SDK),可以通过下载恶意插件,借助其他合法app对用户实施监控。
本文讲的是 警惕!国内某广告SDK内置“后门”功能,Google Play商店已强制下架

警惕!国内某广告SDK内置后门功能,Google Play商店已强制下架

新闻摘要

Lookout安全团队近日发现了个信的广告软件开发工具包(SDK),可以通过下载恶意插件,借助其他合法app对用户实施监控。 目前Google Play上有500多种app使用了个信广告SDK。虽然目前还不敢确认这500多种app都受到了感染,但有一点可以确认,只要个信愿意,随时就可以把它们变为监控软件,目前受影响的app下载量已超过1亿。

监控行为分析

目前许多新出现的恶意软件开发者都会选择通过向官方应用商店提交无害的app来尝试逃避检测,等成功上传之后,然后通过远程服务器下载恶意代码。 

不过通过Lookout安全团队地分析,个信广告SDK的开发人员本身并没有进行创建恶意功能的意图,也没有预料到目前会发生恶意有效载荷的执行。目前可以确定,这个恶意有效载荷执行功能来自于由个信控制的服务器。

受影响的app:

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

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

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

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

除此之外,还有教育,健康和健身,旅游,表情符号,家庭摄像机app等都受到了影响。

目前,Lookout用户已经对此威胁进行了预防,并向Google通报了该威胁。目前, Google以将这些app从商店中删除或将其进行了更新。

恶意执行过程还原

通常,移动app都会使用广告SDK,以便app开发人员轻松利用广告网络宣传自己产品。像许多广告网络一样,个信的广告服务服务非常具有针对性,但要做到这一点,就要收集用户的兴趣,职业,收入和位置数据。

警惕!国内某广告SDK内置后门功能,Google Play商店已强制下架

至于Lookout研究人员为什么会发现其中的问题,这还要从他们日常进行的可疑流量调查说起,作为与以前提供恶意软件的某些IP和服务器通信的app的常规审查的一部分。个信SDK本身的流量并未出现异常,因为许多恶意软件由于各种原因会生成合法服务的流量。

在http://sdk[.]open[.]phone[.]igexin.com/api.php(它是一个使用的端点)对REST API进行一系列初始请求后,研究人员观察到一个app下载了大量的加密文件。

这种流量通常是恶意软件在安装最初的合法app后下载并执行代码的结果,目的就是为了避免被检测到。加密的文件下载和com.igexin namespace中的调用会存储到Android的dalvik.system.DexClassLoader(用于从.jar或.apk文件加载类),这就保证了恶意软件的隐藏是多么深入,只有通过有效载荷才能发现隐藏的痕迹。

警惕!国内某广告SDK内置后门功能,Google Play商店已强制下架

以前在Google Play上受感染的应用示例,目前已无法使用。

收集个人数据用户依赖于app的权限;移动安全解决方案和隐私政策,安全公司会这些条件来评估app收集的个人数据是否合理。例如,社交app的位置分享肯定是合法的,但如果在其它不需要使用位置信息的应用中使用位置消息,就要进行商榷了。

应用开发者最终负责在应用隐私政策中披露应用收集的所有个人信息。开发人员还负责审查嵌入式第三方代码,并披露隐私政策中所有嵌入式第三方代码的数据收集功能。

但许多app开发人员不知道嵌入个信的广告SDK可能会从客户的设备中泄露个人信息。而发现这一漏洞,就需要对app和广告SDK进行深入分析。否则,该功能不仅难以被发现,而且随时可从远程服务器中被更改。。

SDK功能

其实,并非所有版本的个信广告SDK都提供恶意功能。恶意版本要实现一个插件框架,就必须允许客户端加载任意代码,如针对托管在http://sdk[.]open[.]phone[.]igexin.com/api.php上的REST API端点发送请求得到的响应。

对这个端点的请求和响应都是编码的JSON数据,以下是该API的解码响应,会指示客户端在两个加密的JAR文件中下载并运行代码:

警惕!国内某广告SDK内置后门功能,Google Play商店已强制下架

这些响应消息中的相关字段是:

警惕!国内某广告SDK内置后门功能,Google Play商店已强制下架

在从服务器接收到响应后,SDK将使用API调用提供的密钥对文件进行解密,并将其保存在设备上。然后它利用Android的dalvik.system.DexClassLoader和映像来从JAR文件加载指定的类:

警惕!国内某广告SDK内置后门功能,Google Play商店已强制下架

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

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

插件功能下载的类中包含的功能在运行时完全处于远程服务器控制之下,并且可以根据攻击需要随时进行功能更新。远程API请求发出后,用户和app开发人员就无法控制在设备上执行的操作了。

Android权限系统会对运行的内容进行限制,也就是说,研究人员从这些插件中观察到的最严重的行为是通过通信记录得到。

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

1.存储在内部SQLite数据库中的设置将被启用;

2.该app具有“android.permission.READ_PHONE_STATE”权限。

满足以上条件,PhoneStateListener将保存:

1.通话时间

2.电话号码

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

警惕!国内某广告SDK内置后门功能,Google Play商店已强制下架

该数据定期被发送到HTTP请求体中的http://sdk[.]open[.]phone[.]igexin[.]com/api.php端点,消息在解码时将采用以下格式:

警惕!国内某广告SDK内置后门功能,Google Play商店已强制下架

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

警惕!国内某广告SDK内置后门功能,Google Play商店已强制下架

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

使用该密钥,研究人员可以将s6GYbkAUkOQPwK4P字符串解密为实际的电话号码。




原文发布时间为:2017年8月24日
本文作者:xiaohui
本文来自云栖社区合作伙伴嘶吼,了解相关信息可以关注嘶吼网站。
目录
相关文章
|
3月前
|
监控 API 开发工具
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK获取每张图像的微秒时间和FrameID功能(C#)
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK获取每张图像的微秒时间和FrameID功能(C#)
48 0
|
3月前
|
数据采集 API 开发工具
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用Force IP强制修改网口IP功能(C++)
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用Force IP强制修改网口IP功能(C++)
29 0
|
3月前
|
数据采集 API 开发工具
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用ForceIP强制修改网口IP功能(C#)
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用ForceIP强制修改网口IP功能(C#)
26 0
|
3月前
|
安全 API 开发工具
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用短曝光功能(C++)
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用短曝光功能(C++)
40 0
|
3月前
|
安全 API 开发工具
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用短曝光功能(C#)
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用短曝光功能(C#)
35 0
|
3月前
|
编解码 监控 开发工具
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK设置相机的图像剪切(ROI)功能(C++)
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK设置相机的图像剪切(ROI)功能(C++)
29 1
|
3月前
|
编解码 监控 开发工具
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用Binning像素合并功能(C#)
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用Binning像素合并功能(C#)
19 0
|
3月前
|
存储 数据管理 开发工具
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK设置相机本身的数据保存(CustomData)功能(C++)
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK设置相机本身的数据保存(CustomData)功能(C++)
46 0
|
3月前
|
存储 编解码 开发工具
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用UserSet功能保存和载入相机的各类参数(C#)
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用UserSet功能保存和载入相机的各类参数(C#)
37 0
|
3月前
|
编解码 监控 开发工具
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用Binning像素合并功能(C++)
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用Binning像素合并功能(C++)
49 0

热门文章

最新文章