报告修订记录
修订日期
|
内容
|
2011年11月29日 |
完成1.0版 |
2011年12月2日 |
发布1.0版 |
2011年12月4日 |
更新1.1版,增加第七部分“事件最新进展”,更新第八部分“总结。 |
一、事件概述 1.背景 近日,Android开发者Trevor Eckhart发现Carrier IQ公司与移动运营商合作预装入手机系统中的软件存在严重的隐私搜集行为[1] 。 该公司的官方介绍称[2] : “Carrier IQ是移动服务智能解决方案的市场领导者,为移动运营商和设备制造商搜集和管理终端用户信息的途径做出了革命性的突破。” 美国移动运营商Sprint的发言人Jason Gertzen在邮件中称: “它(Carrier IQ公司的产品)搜集足够的信息,从而了解我们网络中移动设备的用户体验,并为使用和网络连接的问题提出解决方案。我们没有、也无法通过这一工具查看用户的短信内容、照片、视频等。” 然而,根据该公司公开的产品专利和产品培训资料,该产品搜集与网络相关的信息,包括语音和数据服务;还搜集与网络无关的信息,包括设备类 型、可用内存和电池电量、设备中软件的类型、设备的地理位置信息、设备用户的按键信息、设备的使用历史等。这些信息被传回至Carrier IQ公司的服务器进行统计分析。其提供的后台产品可以根据IMEI或IMSI对任何一个设备进行详细的历史记录查询,即用户的隐私被完全暴露给该公司及其 产品用户。 运营商Verizon和Sprint在其多款手机中预装了这一软件,涉及Android、Symbian和BlackBerry三个平台。 相关报道称受影响设备数量达1.41亿[4] 。多个著名的第三方定制ROM提供商,例如CyanogenMod,也曾采用这一软件。 事件曝光后,Carrier IQ公司向Trevor Eckhart送抵了措辞强烈的侵略性停止和终止函,称其使用和备份该公司培训资料构成侵权。有律师指出Eckhart的行为受到美国著作权法豁免保护。 11月24日,Carrier IQ公司撤销控诉,并再次强调其软件“并不监视用户数据,记录键击,或提供跟踪信息,只是识别掉线,电池问题,并且预测移动网络可能出现的问题,同时帮助 运营商使顾客服务更有效。”[5] 2.本报告概述 安天实验室对上述事件及其相关样本进行了深入分析。主要结论包括:
- 在Sprint公司官方ROM中、多个第三方定制ROM中发现该样本
- 有国内用户的手机上含有该样本
- 样本由多个预装入ROM的模块组成
- 样本搜集当前移动运营网络相关信息
- 样本中包含搜集预装入手机的多个软件隐私信息的代码
- 样本中包含将搜集到的隐私信息回传至指定服务器的代码
- 样本运行后,将开启一个本地服务
- 样本运行后,能触发调用回传代码的本地行为
- 当样本收到特定格式的短信内容或WAP推送内容后,会将搜集到的隐私信息回传至服务器
- 该样本存在Android、Symbian、BlackBerry三个平台的试用版软件
- 该样本比其试用版软件在用户行为表现上具有更高的隐蔽性
- CarrierIQ公司的产品培训资料可以从另一个角度说明其产品搜集用户隐私
- CarrireIQ公司提供的后台服务支持对指定手机和用户的单独查询,并能获取所有回传隐私的详细数据
二、样本传播渠道 在Carrier IQ公司的培训资料中,有该软件在Android、Symbian S60、BlackBerry 4.7.0三个平台的试用版本。其中,就Android系统,目前已知以下刷机ROM中存在该软件(图1 ):
- Sprint公司为HTC G3 Hero手机提供的官方ROM
- Sprint公司为HTC EVO 3D Shooter手机提供的官方ROM
- OMJ为HTC EVO 4G手机定制的Android 2.2第三方ROM
- Villain为HTC G3 Hero手机定制的第三方ROM,5.4和5.5版
- Synergy为HTC EVO, INCredible, MyTouch 4G手机定制的第三方ROM
图1 在刷机ROM中发现该软件 此外,从今年下半年开始,国外多个第三方定制ROM提供商开始有计划地从提供的所有ROM中移除Carrier IQ软件相关的组件。目前在部分ROM中还可以看到一些没有彻底清理干净的残留组件(图2)。 图2 第三方ROM中残留的软件组件 上述官方ROM和第三方ROM绝大部分为国外运营商或定制商提供,其中一般不含中文资源。但是从搜索结果来看,有一部分国内用户的手机中确实存在这个软件,并且在手机中长期运行(图3)。 图3 国内用户的手机中存在该软件 三、样本静态分析 1.样本的模块组成 在为HTC手机提供的Android ROM中,该软件由以下文件组成:
- /system/app/HtcIQAgent.apk
- /system/app/HtcIQAgent.odex
- /system/app/IQRD.apk
- /system/app/IQRD.odex
- /system/lib/libhtciqagent.so
- /system/lib/libciq_htc.so
- /system/lib/libciq_client.so
- /system/etc/iqprofile.pro
- /system/bin/iqfd
- /system/bin/iqd
其中包含两个APK安装文件,三个SO动态链接库,两个ELF可执行文件,以及一个配置文件iqprofile.pro。这些文件分布在ROM中四个不同的目录下。下面对这些文件逐一分析。 2.APK安装文件 1)IQRD.apk IQRD.apk由一个服务com.htc.android.iqrd.IqService,一个接收器 com.htc.android.iqrd.StateReceiver和一个活动com.htc.android.iqrd.IqActivity组 成,没有启动菜单图标。在运行时,其还会注册两个接收器(图4 ),其中一个接收器的触发行为包括:
- com.android.phone.HtcCdmaPhoneApp.WAKE_CIQ
- com.android.internal.policy.impl.SHUTDOWN_CIQ
- com.android.phone.HtcCdmaPhoneApp.DISABLE_CIQ
- com.android.phone.HtcCdmaPhoneApp.NAI_INFO
另一个的触发行为为:
- com.android.phone.MESSAGE_SENT
目前仍不知道这些行为由哪个程序触发。 图4 IQRD.apk注册接收器 IQRD.apk需要的额外权限如下:
- CALL_PHONE:允许应用程序在您不介入的情况下拨打电话。
- READ_PHONE_STATE:允许应用程序访问设备的手机功能。有此权限的应用程序可确定此手机的号码和序列号,是否正在通话,以及对方的号码等。
- SEND_SMS:允许应用程序发送短信。
- CHANGE_NETWORK_STATE:允许应用程序更改网络连接的状态。
IQRD.apk使用了一个特殊的属性:android:sharedUserId="android.uid.phone",设置该 属性要求其与系统中负责通话的应用程序Phone.apk具有相同的签名。设置了该属性后,IQRD.apk与Phone.apk将以相同的UID运行, 因此双方的数据可以完全为对方获得。 在该样本的CDMA版本中,会读取网络的ESN、MEID、MDN、MSID、PRL、SPN、MIP、NAI等信息,包括NAI的用户名和密码(图5 )。对GDM网络,则读取其网络相应的信息,如MCC、MNC、APN等。 图5 IQRD.apk读取NAI密码 2)HtcIQAgent.apk 该样本只有一个服务com.htc.android.iqagent.AgentService,其触发条件包括25个类似于com.htc.android.iqagent.action.ss1c的行为。这些行为实际上与手机中预装的软件关联。 进一步分析代码可以看到,Carrier IQ将这些触发行为的对象称之为metric,这与其官方培训资料和专利中的命名是一致的。具体而言,该样本为系统预装的多款软件设置一个整数用于标识 (图6 ),再使用byteToHexString函数和hexStringToByte将这些整数与一个metric进行对应,从而将类似于 com.htc.android.iqagent.action.ss1c的服务触发行为关联到不同的软件。 图6 HtcIQAgent.apk为大量预装软件设置映射关系 该样本中关联的预装软件包括:
- com.htc.android.htcime
- com.android.phone
- com.htc.calendar、com.android.calendar
- com.telenav.app.android
- com.htc.soundrecorder
- com.android.vending
- com.htc.android.omadm、com.smithmicro.DM
- com.htc.android.mail
- com.android.browser
- com.android.calculator2
- com.android.calculator
- com.google.android.youtube
- com.htc.pdfreader
- com.htc.music
- com.google.android.gm
- com.android.ft
- com.android.googleserarch
- com.android.mms
- com.android.launcher
- com.android.packageinstalller
- com.android.settings
- com.android.updater
- com.google.android.apps.gtalkservice
- com.google.android.apps.maps
- com.google.android.talk
- com.htc.streamplayer
- com.android.camera
- com.google.android.googleappps
- com.htc.dcs
- com.htc.album
- com.amazon.mp3
- com.handson.h2o.nfl
- com.handson.h2o.nascar09
- com.mobitv.client.sprinttv
- com.htc.android.teeter
- com.telenav.app.android.sprint
根据触发服务的不同行为,该样本经过上述对应得到行为对应的应用程序,进一步搜集相应的隐私信息,例如具体的GPS地理位置信息等(图7 )。 进一步地,当HtcIQAgent.apk搜集到这些信息后,调用本地htciqagent.so库文件提供的相应JNI接口,将这些隐私数据向服务器提交。 图7 HtcIQAgent.apk搜集GPS信息 3.SO动态链接库文件 HtcIQAgent.apk调用了htciqagent.so提供的JNI接口。后者实际上也只是一个封装层,它包含两类函数(图8 ),一类形如Java_com_htc_android_iqagent_Controller_submitAL16,是提供给APK的JNI接口,这 些函数会调用内部实现的形如actionAL16的函数。APK获得的隐私数据数量不同,这些action函数分别获取这些数据,将其拼接在一起,最后调 用IQ_SubmitMetric来提交这些数据,并将信息来源类型作为参数传给它。 图8 htciqagent.so中的部分函数 IQ_SubmitMetric实现于libciq_client.so中。它首先调用iq_metric_might_be_interesting函数判断是否感兴趣的数据,如果是,获取当前时间戳,然后调用iq_submit_metric提交数据。 4.配置文件 文件iqprofile.pro被预装入ROM的/system/etc目录。该文件被加密,但其中包含一个部分明文的URL如下: https://collector.iota.spcsdns.net:10003/collector/c 其子域名collector的含义为“搜集者”。 iqprofile.pro被iqd这个可执行文件调用。 5.ELF可执行文件 在可执行文件iqd中,包含以下URL: http://collector.sky.carrieriq.com:7001/collector/c?cm_sl=5 四、样本动态分析 在包含样本的手机中,“所有应用程序”列表里包含名为HTC IQAgent和IQRD的程序(图9 )。其中,IQRD需要的权限如图10 所示。 需要指出的是,预装入ROM的IQRD所需权限比其在AndroidManifest.xml中要多,多出的部分包括:
- 允许读取和改写联系人信息
- 编辑、读取、接收短信与彩信
- 根据网络获取粗略的地理位置
- 创建蓝牙连接,Internet访问
- 改变声音设置
- 蓝牙管理、改变Wi-Fi状态、改变UI设置、修改系统全局设置、设置时区、修改APN设置
这些权限超出了其在AndroidManifest.xml中申明的权限,是因为该程序使用了共享UID:android.uid.phone,从而可以使用系统程序com.android.phone中的权限。 图9 样本对应的应用程序 图10 IQRD所需权限 样本会启动服务AgentService(图11 )。 图11 HtcIQAgent开启的服务 当用户访问互联网网页,或者启动Google搜索时,该样本将输出调试信息(图12 )。这些调试信息是htciqagent.so文件中没有清理干净的调试代码输出的,位于其JNI接口 Java_com_htc_android_iqagent_Controller_submitAL15的实现里(图13 )。而该JNI接口是在HtcIQAgent.apk搜集了与Web访问相关的隐私数据后调用的。 但是在整个样本运行期间,没有捕获到与回传隐私行为相关的网络数据。 图12 IQAgent输出的调试信息 图13 htciqagent.so中残留的调试代码 五、试用版软件分析 在Carrier IQ公司的培训资料中,有该软件在Android、Symbian、BlackBerry三个平台的试用版本:
- 用于Android系统的IQAgent.apk
- 用于Symbian S60系统的IQ_AgentVM_S603rdMRd.sisx
- 用于BlackBerry 4.7.0系统的IQAgent.cod等
需要特别强调的是,目前网络上已有的对该样本的分析[1] ,主要是对该试用版软件的分析,虽然它与真正装入到ROM的软件在代码上有非常多相似之处,但在表现给用户的行为上有较大差异。这一点将会在后面详细说明。 下面是对其Android版本的分析。 1.静态分析 该样本需要较多的运行权限,包括:
- INTERNET:允许应用程序创建网络套接字。
- READ_PHONE_STATE:允许应用程序访问设备的手机功能。有此权限的应用程序可确定此手机的号码和序列号,是否正在通话,以及对方的号码等。
- RECEIVE_BOOT_COMPLETED:允许应用程序在系统完成启动后即自行启动。
- RECEIVE_SMS:允许应用程序接收和处理短信。
- MODIFY_PHONE_STATE:允许应用程序控制设备的电话功能。拥有此权限的应用程序可自行切换网络、打开和关闭无线通信等,而不会通知您。
- CHANGE_NETWORK_STATE:允许应用程序更改网络连接的状态。
- GET_TASKS:允许应用程序检索有关当前和最近运行的任务的信息。恶意应用程序可借此发现有关其他应用程序的保密信息。
- ACCESS_NETWORK_STATE:允许应用程序查看所有网络的状态。
- ACCESS_COARSE_LOCATION:访问粗略的位置源以确定手机的大体位置。
- ACCESS_FINE_LOCATION:访问精准的位置源,例如手机上的全球定位系统。
- ACCESS_WIFI_STATE:允许应用程序查看有关 Wi-Fi 状态的信息。
- READ_LOGS:允许应用程序从系统的各个日志文件中读取信息。这样,应用程序就可以发现关于您手机使用情况的一般信息,其中可能包含个人信息或私密信息。
- RECEIVE_WAP_PUSH:允许应用程序接收和处理WAP信息。
- PERSISTENT_ACTIVITY:允许应用程序部分持续运行,这样系统便不能将其用于其他应用程序。
- PROCESS_OUTGOING_CALLS:允许应用程序处理外拨电话或更改要拨打的号码。恶意应用程序可能会借此监视、另行转接甚至阻止外拨电话。
- WAKE_LOCK:允许应用程序防止手机进入休眠状态。
- BATTERY_STATS:允许修改收集的电池使用情况统计信息。普通应用程序不能使用此权限。
当手机的屏幕开启或关闭、系统启动完成、电池状态改变等时,将触发其接收器 com.carrieriq.trial.service.receivers.BootCompletedReceiver,该接受器启动服务 com.carrieriq.trial.service.IQService。 IQService根据系统版本,调用释放的两个本地库文件libiq_service_trial_1.6.so、libiq_service_trial_2.2.so之一。 图14 libiq_service_trial_2.2.so中实现了HTTP上传 该样本检测拨出的电话,当发现号码为“#*47234#”时,禁止这次呼叫。该号码是移动运营商的USSD代码。 图15 IQAgent.apk禁止拨打特定电话号码 此外,该样本在运行后创建两个接收器,分别接收android.provider.Telephony.SMS_RECEIVED 和android.provider.Telephony.WAP_PUSH_RECEIVED广播,在接收到短信或WAP推送信息后,取出其内容,调用 checkSMS和checkWAPPush方法进行检查。如果是特定的内容,则不显示该信息。 图16 IQAgent.apk接收短信和WAP推送信息 checkSMS和checkWAPPush实际上通过JNI接口调用本地代码实现。其JNI代码分别调用了 libiq_service_trial_x.x.so中的IQ_CheckSMS和IQ_CheckWAPPush函数,这两个函数检查短信和WAP推 送信息的内容,例如以“//CM”开头的短信将被屏蔽,而满足进一步条件的信息将引发该软件将搜集到的隐私信息传回服务器。 图17 满足特定条件的短信将引起隐私回传 在真正植入ROM的样本中,我们也发现了类似的代码。HtcIQAgent.apk中申明的服务接收两个特殊的行为 com.htc.android.iqagent.action.smsnotify和 com.htc.android.iqagent.action.wapnotify,分别对应短信通知和WAP推送通知。这两个行为将调用 htciqagent.so中对应的JNI接口,最终这些JNI实现还是调用了libciq_client.so中的IQ_CheckSMS和 IQ_CheckWAPPush函数。 2.动态分析 试用版软件与正式版在动态行为上有一些区别。 安装后,其软件名为Device Health Application(图18 ),有不同的图标,且所需权限也不同。 图18 安装到手机中的试用版软件 该软件启动的服务名为Device Health Service(图19 )。 图19 试用版软件启动的服务 当用户或手机中的一些行为触发了该软件运行后,会在通知栏发出“DeviceHealth Monitor”的通知,点击进入后,出现一个几乎空白的界面(图20 )。 图20 试用版软件的提示通知和界面 而根据相关分析24,该软件实际上包含一个隐藏的界面(图20 ),从其配置文件看,属于名为IQ Agent Settings的活动,且用于开发人员的调试。从界面可以看出,它包含了多种行为的记录能力。 图21 试用版软件用于开发调试的隐藏界面 六、CarrierIQ公司资料分析 在Carrier IQ公司提供的后台服务产品培训资料中,可以看到以下内容: 有多种原因可以导致样本回传隐私信息(图22 ),至少有:
- SMS_PullRequest_CS:特定SMS短信驱使,这一点与前面对代码的分析一致
- Scheduled:被调度的,猜测为定期的行为
- ArchiveFull:猜测为手机中软件为隐私信息提供的缓存已满
- PackageCreation:猜测为该软件第一次安装
图22 多种原因导致样本回传隐私信息 后台服务支持对特定IMEI、IMSI的查询(图23 ): 图23 后台产品支持IMEI/IMSI查询 根据这些记录,可以看到对应手机中搜集到的metrics,即用户行为和隐私信息记录: 图24 后台产品可以查询到具体的回传记录 对搜集到的每条记录,可以查看其具体内容: 图25 后台产品可以查看记录具体内容 对不同类型的记录,提供了其每个不同字段的含义解释: 图26 后台产品提供了记录字段的解释 因此,通过CarrierIQ公司提供的后台产品,其用户可以查看到该公司客户端软件从手机中搜集到的具体隐私信息,包括针对任何特定手机的用户行为和相关隐私。 七、事件后续进展 11月29日我们发布本报告第一版至今,国内外多方对该事件做出了不同的反应。 11月29日,Trevor Eckhart公布一段视频,展示了Carrier IQ产品在用户手机中运行并获取隐私信息的过程[6] 。 11月30日,研究人员发现Carrier IQ的软件存在于苹果公司的iPhone手机中,包括iOS 3.1.3、iOS 4和最新推出的iOS 5[7] 12月1日,Lookout公司发表博客称其已经收到客户希望了解Carrier IQ真实情况的请求,称据其分析CarrierIQ相关软件不是恶意代码(malware)[8] 。 同日,RIM公司工作人员回答用户提问时称BlackBerry手机从未预装Carrier IQ公司产品,也没有允许运营商合作伙伴安装。如果用户在BlackBerry手机上发现Carrier IQ软件,或者是用户自己后来装的,或者是用户所在黑莓企业服务器的管理员安装并授权的[9] 。 诺基亚公司发表声明称,在任何诺基亚出货设备中均无Carrier IQ[10] 。 随后,苹果也发布声明,称公司曾使用CarrierIQ网络诊断软件,最近已经停止支持,并会在未来软件升级时删除软件。苹果宣称:“我们从未有计划去记录用户的使用按键,信息以及其他个人信息。”[11] 还是在12月1日,AT&T、Sprint、T-Mobile等运营商证实其手机中安装有Carrier IQ。AT&T和Sprint称其主要目的是为了改善无线网络表现。T-Mobile称其没有使用这个工具来收集用户的短信、Email等。另一 个移动运营商Verizon否认了其设备中含有Carrier IQ,并表示最初关于该公司订制手机预装Carrier IQ的传闻不实[12] 。 同日,HTC和三星也证实其手机预装了Carrier IQ,称它们是受运营商要求安装该应用的[12] 。 最后,Carrier IQ公司再次发表申明称其软件忽略了所有的个人信息[13] 。 12月2日,德国巴伐利亚州数据保护部门就Carrier IQ问题向苹果发起质询[14] 。 同日,美国众议员Edward Markey要求联邦贸易委员会(FTC)对Carrier IQ公司是否侵犯用户隐私展开调查[15] 。 12月3日,Carrier IQ、HTC和三星这三家公司在美国密苏里州、伊利诺伊州等多个地区遭到用户集体诉讼[16] 。到目前为止,没有运营商遭到诉讼。 八、总结 从上述分析,已经可以基本确定Carrier IQ公司的相关手机产品存在过度的隐私搜集行为,主要体现在:
- 在不通知用户的情况下,搜集预装在ROM多款常用软件的使用记录和详细信息
- 在不通知用户的情况下,将这些信息回传至该公司的后台服务器
- 将这些数据本身作为产品服务提供给其企业用户
该公司的用户可以通过其后台服务,有针对性地获得具体的手机或个人的地理位置、软件使用情况等,给个人用户带来极大地潜在威胁。 该事件中另一个值得注意的是,有大型移动运营商参与到软件的传播中。一般用户认为官方预装的ROM是安全的,而此次样本正是被 Carrier IQ公司与移动运营商合作预装入手机,从而具有了极大的覆盖面。运营商也许并不十分清楚这一软件的真实情况,但也应承担其应有的软件审核责任,尤其是对预 装软件安全问题的审核。 参考文献
- Android Security Test. CarrierIQ. http://androidsecuritytest.com/features/logs-and-services/loggers/carrieriq/
- Carrier IQ Corp. http://carrieriq.com/
- Todd Haselton. HTC Sensation and EVO 3D revealed to be spying on users. http://www.bgr.com/2011/09/01/htc-sensation-and-evo-3d-revealed-to-be-spying-on-users/
- Mathew J. Schwartz. Smartphone Invader Tracks Your Every Move. http://www.informationweek.com/news/security/mobile/231903096
- Carrier IQ Retracts Their C&D, Apologizes To The Android Researcher They Hassled. http://techcrunch.com/2011/11/23/carrier-iq-retracts-their-cd-apologizes-to-the-android-researcher/
- Russell Holly. Security researcher responds to CarrierIQ with video proof. http://www.geek.com/articles/mobile/security-researcher-responds-to-carrieriq-with-video-proof-20111129/
- Dieter Bohn. Carrier IQ references discovered in Apple's iOS. http://www.theverge.com/2011/11/30/2601875/carrier-iq-references-discovered-apple-ios-iphone
- Lookout. Our Take on Carrier IQ. http://blog.mylookout.com/2011/12/our-take-on-carrier-iq/
- MSohm. Re: Does CarrierIQ run on BlackBerry devices?. http://supportforums.blackberry.com/t5/Java-Development/Does-CarrierIQ-run-on-BlackBerry-devices/m-p/1439275#M183840
- Vlad Savov. Nokia: none of our devices have ever used Carrier IQ. http://www.theverge.com/2011/12/1/2602502/nokia-none-of-our-devices-have-ever-used-carrier-iq/in/2365736
- John Paczkowski. Apple: We Stopped Supporting Carrier IQ With iOS 5. http://allthingsd.com/20111201/apple-we-stopped-supporting-carrieriq-with-ios-5/
- Jaikumar Vijayan. AT&T, Sprint confirm use of Carrier IQ software on handsets. http://www.computerworld.com/s/article/print/9222319/AT_T_Sprint_confirm_use_of_Carrier_IQ_software_on_handsets
- John Paczkowski. Carrier IQ Speaks: Our Software Ignores Your Personal Info. http://allthingsd.com/20111201/carrier-iq-speaks-our-software-monitors-service-messages-ignores-other-data/?reflink=ATD_yahoo_ticker
- Bavaria asks Apple to answer questions on Carrier IQ. http://www.electronista.com/articles/11/12/02/state.may.accept.apple.promise.to.drop.software/
- Congressman asks FTC to investigate Carrier IQ. http://www.electronista.com/articles/11/12/02/ftc.asked.to.see.what.carrier.iq.knows/
- HTC三星 Carrier IQ违反窃听法遭集体诉讼. http://it.sohu.com/20111203/n327792995.shtml
- Lookout. Carrier IQ Detector Released. http://blog.mylookout.com/2011/12/carrier-iq-detector-released/
- Ryan Singel. Dropbox Lied to Users About Data Security, Complaint to FTC Alleges. http://www.wired.com/threatlevel/2011/05/dropbox-ftc/
|