SDK插件是由第三方服务商提供的,用来开发和实现软件产品某项功能的工具包。一般,软件工程师会用SDK插件来为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件。
在互联网开放的大环境下,一些功能性的SDK插件已经被当作一个产品来运营。开发者不需要再对产品的每个功能进行开发,只要选择合适稳定的SDK插件,就能花费很少的精力,在产品中集成某项功能。因此,SDK插件在手机软件中的应用十分广泛。
来自上海氪信信息技术有限公司、北京招彩旺旺信息技术有限公司两家公司的SDK插件都会在用户不知情的情况下,暗中窃取用户隐私。而这两个插件涉及的手机软件多达50多款,包括国美易卡、遥控器、最强手电、全能遥控器、91极速购、天天回收、闪到、萝卜商城、紫金普惠等。具体列表如下图:
检测人员表示,这些App的SDK插件会在未经用户同意的情况下,读取用户设备上的移动设备国际识别码(IMEI)、国际移动用户识别码(IMSI)、电话号码、短信内容 、通讯录、应用安装列表、运营商信息和传感器信息,甚至还会偷偷把数据传送到指定的服务器,存储起来。这就意味着有大量用户的敏感隐私数据可能遭到严重泄露。
并且,由于SDK插件能收集用户的短信记录,用户的网络交易验证码也很有可能被获取,造成用户严重的经济损失。
针对央视此次的曝光,我们有幸邀请到了看雪专家Lilang Wu吴东洋,从技术角度深度解剖SDK及手机App窃取用户隐私的话题。
Lilang Wu(吴东洋)
看雪安全专家,国内某安全厂商的安全专家,主要从事Mobile, Mac/Linux漏洞挖掘和恶意软件分析。曾参加过BlackHat USA 2018/2019, BlackHat EU/Aisa,HITB,CodeBlue等安全会议。
电影《来电狂响》以其丰富的故事情节展现手机对人的私密性。手机作为我们日常生活的一部分,在衣食住行方面给我们带来了无尽的便利。
图片来源自百度百科
然而,正是对于手机的依赖,使得手机上存储了我们绝大多数的隐私信息,包括一些身份信息、社交信息和财务信息等。从数学建模的角度来讲,这些信息基本可以构建一个特定的个体。
因此,出于一些灰产甚至黑产买卖等需求,很多厂商干脆冒大险来窃取用户的隐私信息。
下面我们从技术的角度来分析具体窃取用户隐私数据的方式,以及审计人员可以采用的检测方法,最后对普通用户提出一点自我防护建议。
●常见窃取用户隐私的方式●
常见的窃取用户隐私数据的方式主要有以下几种,不限315披露的方式:1) 利用预授权的个体作案
这种方式通用的手法是通过用户“正常”授权之后,在后台静默的收集用户的数据,并通过网络发送C&C(command and control server)。
特点是实施成本低,基本不会用到高深的漏洞利用,或者奇技淫巧的malware手段。并且由于静默的特点,该类窃取行为不会表现出任何异样,因此普通用户很难察觉。
2) 利用SDK的团体作案
这种方式需要窃取者开发一套用来窃取用户隐私信息的SDK,类似昨天3·15曝光的“北京招彩旺旺信息技术有限公司的SDK”。
特点是可以大规模,批量地生产一些App,以广撒网的手段窃取用户信息,基本的手段跟1)类似,利用预授权的能力,静默获取用户的敏感信息。
3) 利用操作系统特性的协同作案
这种方式利用了现代操作系统的一些特定,例如Android系统可以通过sharedUserId等方式允许APPs共享数据,因此这类窃取行为可由两个独立的APP协同完成。
其中一个APP负责获取数据,另外一个APP负责发送数据。这种窃取方式不仅用户无法察觉,对于安全审计方面也大大提高了检测的难度。而且,同一家厂商基本会发布不止两款APP。
4) 利用辅助功能特性等的恶意作案
Android系统提供了Accessibility功能,主要是面向动作,视力,听力等身体特殊的用户群体。
该功能可以通过自定义AccessibilityService服务使其基本能够模拟正常使用手机的各种行为(已经有很多文章描述,这里不再详细介绍,例如Freebuf上发表过《Android辅助类病毒研究报告》),因此也方便了窃取者对用户的各类隐私数据的获取。
然而,这类方式最大的特点是需要用户授权Accessibility能力,所以一般会以提供各种特殊功能,例如抢红包,游戏外挂等,诱惑用户开启相关功能。
5) 利用重打包等技术的中级作案
重打包一直是灰色或者黑色人员备受青睐的技术,他们能够在一款正常的APP中插入具有自己“想法”的代码,与正版APP的区别在于签名不同。
庆幸的是,这些APP在正规的应用市场难以上架,只能通过一些噱头来诱导用户安装,多发生在破解类软件中。
6) 利用漏洞提权的高级作案
现在操作系统对于APP运行的环境已经有了很好的保护机制,例如签名、沙盒隔离以及沙箱内部的各类访问控制。正常情况下,这些安全机制能够保护APP不被普通攻击者入侵。
然而,从2016年披露的“Pegasus”攻击套件到今年年初本人发现的《Operation Poisoned News: Hong Kong Users Targeted With Mobile Malware via Local News Links》攻击事件来看,APT或者Spyware的攻击目标有平民化转向的趋势。
攻击成功后都会收集用户社交软件、电话、地理位置甚至用户存储的秘钥信息等。如果遭受了这类攻击事件,用户的敏感信息基本暴露在攻击者的面前,也是用户最为可怕的一种攻击事件。
● 如何提高检测能力?●
那么基于这些获取用户隐私的手段。作为安全审计人员我们能通过哪些技术来提高检测能力:
1) 静态污染分析技术
对于隐私泄露检测来讲,静态审计最常用的方法是污染分析技术,目前学术界比较知名的检测工具有FlowDroid,Soot等。
这类方法通常将污染源APIs定义为Souce,将具有泄露能力的APIs定义为Sink,然后通过切片分析等程序分析的方法找到Souce点到Sink点的通路,从而发现隐私泄露的链路。
这种方法存在不少局限性,包括路径爆炸,不支持加壳APP和不支持JNI等问题,但是仍可作为普通APP的基础检测手段,并且对SDK的隐私泄露检测依然适用。
2) 动态污染分析技术
提到静态污染分析就不得不提动态污染分析技术,对于动态污染分析来讲,其采用的技术主要是在污染源点对敏感数据加上污染标签,通过对中间污染传播逻辑的实现,在泄漏点对发送数据进行监测,如果发现其具有污染标签,那么即可判定该次行为是隐私泄露行为。
这种方法虽然能够低误报地检测到泄露行为,但是由于开销问题,很难列出source点到sink点的完整路径信息。
因此,可通过动静结合的手段,在动态发现问题之后,利用静态分析方法获取完整路径信息。
3) 动态行为分析审计技术
相对于污染分析而言,动态行为分析只关注API的调用,以及HTTP、HTTPS等泄漏点未加密前数据的检测等,因此该方法的粒度比较粗,并且由于很多APP在拿到数据以后会对数据进行加密混淆等操作,隐私即使拿到了HTTPS未加密的数据也很难做到隐私数据的确认。因此也需要采用动静结合的手段,静态分析优先,行为分析验证。
● 我们如何应对?●
对于用户来讲,平时APP下载尽量选择正规的应用市场,在应用安装时Accessibility等敏感权限申请要谨慎授予。
另外,在应用的使用过程中,避免由于一些优惠等诱惑条件将自我的隐私信息输入或存储在App内部,当APP提示读取信息时,要确定相关业务场景是否需要这些信息。在发生资费情况下,谨慎付款。
如果遭受可疑扣费,应保存扣费证据并举报到响应部门。