分享

手机中的权限安全,你了解多少?

 TF男孩 2022-12-01 发布于山东

在食品安全方面,辛吉飞可谓是掀起了一阵看食品配料表的风潮。我很震惊,原来我们吃了这么多年的食物,居然有这么多和“我以为”不相符的地方。但是,这一切在他们业内,却早已是习以为常的东西。

于是,我就在想,在我所处的IT界,有没有我习以为常,同时也会让你很震惊的事情。所以,我就选取了新闻和媒体经常提到的,关于手机隐私安全的问题,再做一个更细致的科普。借此也希望大家,在安装软件的时候,可以看一眼权限的“配料表”。

一、权限是什么?

你花了半辈子的钱,买了一套房子,是要结婚用的,肯定不允许别人随便用。于是,你给房门按上了锁,除了你,别人都没有钥匙。

后来,你媳妇搬进来了。你给她一把钥匙,于是她就能进出这套房子了。对于这套房子的操作,除了换房产证,媳妇几乎是可以代替你做决定的。

后来,你媳妇的姑妈来了,姑妈也可以在你家住,但是基本上都是你给开门,因为她住两天就走。

再后来,你妹妹要来你家里住一个暑假,兼职打工。为了方便,你给妹妹一把钥匙,方便她出入。等她开学了,你就会把钥匙收回来。

上面的例子中,不同的人对于房子的使用,体现出了不同的权限。你拥有所有权,媳妇拥有共有权,亲戚拥有临时使用权。

之所以要有这些权限,其实是为了方便管理和降低风险。你需要让送冰箱的工人进入你家,完成安装和调试,但是没有必要给他一把钥匙。

其实,你手里的手机也一样。“微信”、“支付宝”、“今日头条”、“抖音”这些App都住在手机这座大房子里。它们想要干什么,比如往手机里保存个文件,是需要权限的。而你就是手机的主人,负责对权限进行审核,是给它一把钥匙,还是只给它开一次门,这全看你怎么做。

但是,当软件申请权限的时候,或许你根本不看,或者看了也不明白,当时只顾着点击确定了。

下面,我就介绍其中一个权限,相信看完后,你再也不敢随便点击确定了。

二、通知使用权

为了更形象地介绍这个权限的威力,我做了一个小例子。这个例子是完全真实可以用的,也有源码可以运行,此例子可运行在安卓手机中。

我们就模拟3·15晚会的套路,从情景模式代入知识讲解。

2.1 场景还原

假设你安装了一个App软件,这个软件弹出了几个框,请求使用各种权限,其中有一个框提示你:请打开通知使用权的开关。你也照做了,很简单,就是滑一个按钮。

点开这个开关,这就相当于布下渔网了。

下面我们正常使用手机。不需要很长时间,我们来收网,看看都捉到了什么鱼。打开软件,给大家展示一下。

看看捕获到的信息,我给大家列一列:

权限名称一般操作
聊天类微信、QQ、钉钉的聊天信息,包含几点和谁聊,聊的具体内容,甚至整个群聊里每个人的发言
电话类已接来电信息、已拨号码信息、未接电话信息
短信类收到短信的信息,发件人、时间、短信内容(包含验证码)
操作类手机插上充电线、断开充电线、解锁屏幕、打开文件传输

就问你怕不怕,这些数据都能拿到,这要是上传到云端……

有朋友可能要夸我了,他说,哎呀,不得了,这个ITF男孩的技术真厉害,得到达黑客级别了。

我说,你别闹了,这个操作类比到武术领域,连个劈叉都算不上。

这个功能调用的是安卓系统官方的接口。也就是说,它并不是什么攻击或者入侵,是官方公开的一个正规的插口(业内叫接口)。就像插座一样,安卓系统提供一个凹槽,只要用户授权,任何一个App都可以插入,都可以读取到这些信息。而且提前问过了你,也说得很明白,我帮你回忆一下。

下面,我就介绍一下这个接口。

2.2 原理分析

Android(安卓)是一个系统。它能称为一个系统,说明它起码是一个小的闭环整体。比如消化系统,从吃到拉,都有器官或组织进行管理。

安卓系统也一样,有对各种模块的管理。比如,对通话的管理,对短信的管理,对相机的管理。其中,有一个服务是对通知栏进行管理。

通知栏大家都见过,但是你不一定这么叫。其实就是拿出你的手机,从上面往下划拉,就像卷帘门一样,自上而下垂出的一块幕布。这个界面,专业术语就叫“通知栏”。

通知栏里每一条都是一个通知消息,每当来一条消息,都会发出一声“不冷冷冷~”。

所以,Android系统需要对这个地方进行监听,以此来保证能发出“不冷冷冷”或者“等等等”。

Android系统里有一个类,名字叫NotificationListenerService。看名字就知道,它的作用就是专门监听通知栏。其实,只需要不到10行代码,就能获取到上面例子中的信息。

我们都知道(现在留意也不晚,立等可验),手机不管是来了短信,还是插上充电器,都会在通知栏上增加一条通知消息,以此达到提醒你的目的。而这些消息,又都会发送给拥有“通知栏使用权”这个权限的App。而这个权限,是你赋予给这个App的。

这就是我上面演示的程序,可以获取到那么多信息的原理分析。这个原理,像苯甲酸钠添加剂一样,并不是什么秘密,是官方允许的,也写在了申请提示框里,很多App都在用,电子市场一搜一大堆。

如果想要查看你的手机哪些应用,具有这个权限,可以去设置里搜素“通知使用权”。列表里有的,是要申请的。开关打开的,是你已经同意的了。

看我的手机里,电子秤也要这个权限。

但是,我只允许了华为官方的App,因为我需要它给我提供便利。

三、利弊分析

技术无罪,核能源既有污染也能提供巨大的能量。工具无罪,菜刀既可以切菜也可以伤人。

通知使用权,也一样。一旦你给一个App授予这个权限,它能让你享受它带来的便利。

最常见的一个正面应用就是智能手环。

你来电话了,手环会响。来微信了,手环也会响,还能看内容。它的实现原理也是使用了通知使用权。你手机里收到的所有通知都会经过手环绑定的App,然后App再做进一步筛选,决定是到此为止,还是发送到手环提醒你。你也因此享受到,不用碰手机,就可以看到手机上的内容。

那么,至于App厂商拿到这些消息,除了发送给手环之外,还有没有做其他操作,以我十多年的IT研发经验来说,无法判断。

对于我来说,因为我是内行,我一般不用外面的App,我都是自己开发App来用,反正成本也不高。比如我做了一个有意思功能:监听到老婆或者老板发来的微信消息,会发出巨响。其他人发的消息就正常响动。自己开发的,用着放心,另外联网权限我都给禁止了。另外,公司领导厌恶钉钉消息已读未回。那我从这个App上一样看消息,我既了解了消息,钉钉依然是未读状态。

这就像是大户人家的管家一样,主人越是少操心,管家入侵的就越多,主人一点也不用操心了,估计这家也该换主人了。齐国的“田氏代齐”就是这样一个例子。齐国原来是姜子牙“姜”家的,后来来了一个姓田的管家,他把齐国打理的井井有条,老姜还很开心,你看这个员工多卖力,加班都不要加班费。后来,齐国就改为田姓了。现在的电脑管家或者手机管家也一样,想要手机安全吗?把家里的钥匙交给我吧,给我,你就安全了。

总之,这都是个人的选择。但是,有个前提,前提就是做选择前,你一定要让别人了解,你的选择意味着什么。一方面App厂商不要故意遮掩风险点,另一方面用户也要为认真勾选条款为自己负责。

下面,我就给大家普及一下手机权限方面的知识(仅限安卓手机,因为我没钱买苹果手机,没有用过)。希望大家了解以后,再去做一次选择,考虑一下是把权限交给别人,还是握在自己手中。

四、排查方法和安全建议

自己当自己的手机管家,其实很累,不但要具备专业知识进行判断(是家人还是临时访客),而且还需要频繁授权和取消授权(给送货工开门和关门)。

刚刚有个读者朋友,给我的另一篇文章《终于,有人能讲明白傅里叶变换了》发表了一条评论,他说应该“让科学流行起来”。

是的,应该让科学流行起来,应当尽量活得明明白白。我可以把权限交给你管理,但是请先让我明白都有哪些权限,这些权限都会影响什么。不只是手机,我觉得保险、理财、食品等各个行业都应该是这样。如果你不说清楚,还故意隐藏什么,那我只能自己去学习了,只有自己才会关心自己利益。

方法我列在下面了,仅供大家参考。

4.1 权限汇总

安卓手机中记录在案的权限,或者说通过代码可以操纵的权限,大约有100多种。这也得看你手机的配置,比如你手机有NFC(可以代替刷门禁或者银行卡)的模块,那么就有对应管理NFC的权限。

下面是文字版的,你可以快速跳过,看不懂不要紧,后面我会拣重要的讲。贴出来的目的主要是体现它确实多,因为你只有看到了才会相信。

安卓权限名称:获取粗略位置、获取精确位置、访问定位额外命令、获取模拟定位信息、获取网络状态、获取WiFi状态、账户管理、验证账户、电量统计、使用蓝牙、蓝牙管理、收到短信时广播、连续广播、拨打电话、通话权限、拍照权限、改变组件状态、改变配置、改变网络状态、改变WiFi多播状态、改变WiFi状态、清除用户数据、底层访问权限、删除缓存文件、删除应用、电源管理、应用诊断、禁用键盘锁、转存系统信息、状态栏控制、工厂测试模式、使用闪光灯、强制后退、获取应用大小、获取任务信息、允许全局搜索、硬件测试、注射事件、安装定位提供、安装应用程序、内部系统窗口、访问网络、结束后台进程、管理账户、管理程序引用、高级权限、社区权限、软格式化、修改声音设置、修改电话状态、格式化文件系统、挂载文件系统、允许NFC通讯、处理拨出电话、读取日程提醒、读取联系人、屏幕截图、读取收藏夹和历史记录、读取输入状态、读取系统日志、读取电话状态、读取短信内容、读取同步设置、读取同步状态、重启设备、开机自动允许、接收彩信、接收短信、录音、排序系统任务、结束系统任务、发送短信、设置闹铃提醒、设置总是退出、设置动画缩放、设置调试程序、设置屏幕方向、设置应用参数、设置进程限制、设置系统时间、设置系统时区、设置桌面壁纸、设置壁纸建议、发送永久进程信号、状态栏控制、访问订阅内容、写入订阅内容、显示系统窗口、更新设备状态、使用证书、使用SIP视频、使用振动、唤醒锁定、写入GPRS接入点设置、写入日程提醒、写入联系人、写入外部存储、写入收藏夹和历史记录、读写系统敏感设置、读写系统设置、编写短信……

这么多权限,不同的人对它们的敏感程度不同。有的人感觉位置信息很重要,我在哪里不想被别人知道,尤其是我媳妇。有的人觉得位置无所谓,我的联系人很重要,那是我多年积累的客户,别人知道了就能取代我。还有的人,感觉联系人无所谓,手机震动这个权限很重要,我经常把手机放到马桶边上,一震动就掉下去了……

经过我个人统计,结合官方的标准,基本上有这么几类权限,算是敏感权限的红线。

4.1.1 电话短信类

通话和短信,是手机最基础的通信功能。

你自己打开通讯录,拨号打电话,当然没问题。但是,如果别的应用向你申请通讯录权限,你就需要注意了。

一旦你允许了这一类权限,App能做到什么呢?

权限名称一般操作风险
读取通讯录读取电话本里的姓名和号码,传到平台判断有没有朋友也使用这个软件,实现可能认识的人你所有的电话联系人被人家copy了一份
写入通讯录很少有App使用,有的话一般就是往通讯录里写入自己家的客服电话,方便用户拨打或逃避推销拦截(联系人不会被拦截)通讯录随便删除和修改
读写通话记录想象不到如何应用读取所有的通话记录信息,包括通话人员、时间、时长;随便修改、删除已接未接电话记录
拨号直接向任意号码打电话在你不知情的情况下随意打电话,挂断电话
短信读写平台读取短信验证码帮助用户回填到输入框所有短信内容泄露、私自发送确认短信



4.1.2 音视频采集类

手机从通讯设备转变为娱乐设备,其中一个最重要的助力,就是手机加入了一系列的多媒体模块。

我们可以丢掉录音机、收音机、电视机、照相机、录像机、GPS导航仪,仅仅用一个手机就可以实现他们全部的功能。但是,要录音录像,是需要权限的。

权限名称一般操作风险
相机实现拍照、录像,分享创作非正常录制,泄露隐私
麦克风录音实现发语音消息或打字非正常采集,泄露隐私
位置获取位置实现导航或附近服务非使用期间采集,泄露隐私

4.1.3 文件存储类

系统可以运行的基础就是文件。拍了照要存成图片文件,录了抖音也是存成视频文件,同事相互发送的办公文档是办公文件。

基本上,每个复杂一些App都需要文件存储的读写权限。所以,你会发现,就算是选个头像,App也会申请文件的读取权限,因为不允许,它无法拿到相册里的图片。但是,允许了,所有的图片,它都能拿到。

权限名称一般操作风险
读取存储选取文件发送给其他设备非用户操作,未选择文件被窃取
写入存储创作作品保存、修改、删除恶意操作,文件被删除或者清空

这个权限是最普遍的,看起来是无公害的。但是就怕细琢磨,还是管家的那个例子,需要享受它的便利和承担它的风险。

我使用的手机,有一个功能,可以在相册里搜需求。我搜了一个关键词:“银行卡”。

结果出现2张图片,一张是银行卡,另一张是文档截图,是当初我备忘的一张入职通知书,上面有一句话:入职请携带农商银行卡。

谈隐私,你往哪里跑,聊天截图也会给你分析的妥妥的。

4.1.4 其他权限

除了基础通讯类、多媒体采集类、文件存储类,其他也有一些我认为比较关键的权限,或者称为“设置”。

比如,开发者模式中的USB调试开关。这个调试模式是给我们这些写软件的人用的。一旦打开是很危险的。就相当于外科医生给你开膛破肚了,还没有缝上的那种状态。

我们看到,你打开时,手机也会提示你要谨慎。但是他们没有说到底有多危险。

下面是我亲自实践的一个功能,借助USB调试,利用无线网连接,使用自动化脚本,执行了一段无人操作。不用任何人操作,你的手机会根据我的指令自己动:让手机一直亮屏,不要锁屏。

这个也并非是什么黑客攻防。平台内容审核的朋友不要给我禁止发布了。这个在业内也是基础操作,叫做自动化测试。很多软件会测试性能,不是靠人一次次点击,很多就是靠这种自动化脚本自己去执行。有些鼠标号称可以点击多少万次,就是这么测出来的,结果真实有效。这个操作,在业内,迁移到武术领域可以算是一个后空翻,是基本功。掌握的人不是高手,是实习生水平。

USB调试开关,大家不用太担心。就算你想打开,非发烧友,你也找不到入口。你只需要检查一下,是否被别人打开过就可以了。去设置里搜“USB调试”,如果打开了就关闭它。搜不到,说明没开启过。

另外,还有一个需要注意的是录屏、截屏权限,这个权限加上文件存储写入,如果被别有用心的人使用,可以监控你的手机屏幕。相当于在你手机上,安装了可以录像的摄像头。

下面,我给大家说一下,如何去检查这些权限的开关状态。

4.2 排查方法

权限的管理不是一次性的,并不是一锤子买卖。随时可见,随时可改,随时可以后悔。

基本上,你有两种方式接触到它们。

4.2.1 使用软件时

如果有印象的话,每次安装新软件,或者使用某项权限时,手机会弹出一个弹框,一般像下面这样。

“ITF 男孩”是我自己写的App的名称,这个时候你拿谁家的App都不适合。我想要把一张图片保存到手机上,这时候就需要使用文件存储权限,它要访问我设备上的文件。我允许了之后,这个App就可以读取我手机上的文件,也可以往手机里写入文件。不允许的话,就没法保存图片,这个是合理的。

有时候你还会遇到下面这样,尤其面对录制类,这种敏感权限时。下面是请求使用相机的权限。

这个与第一个的不同点是,它是三个选项,除了“禁止”之外,其他两个分别是“仅使用期间允许”、“允许本次使用”。不同品牌的手机叫法不一样,但是意思都是一样的。“本次允许”就是这一次允许,下一次再进来还会向用户申请,就相当于你每次都去给客人开门。“使用时允许”指的是只要用这个软件时,允许了这一次,下一次再遇到,不用向用户申请,可以直接使用。相当于给了亲戚一把钥匙。有些旧版本的系统也叫“总是允许”。

软件卸载重装,所有权限都会失效,需要重新申请和授权。

你可以通过卸载重装,实现对权限的洗盘。

不重装也没事,可以通过列表查询来了解权限的使用情况,那里也能再次配置。

4.2.2 查询权限列表

我们可以从两个维度来查询权限的配置:应用维度,权限维度。

如果想要定向地了解某一个应用都有哪些权限,可以从设置里找到应用列表,然后选择这个应用查看其详情(下面是一个动态图,里面有步骤,如果不是,那说明此文被改成文档盈利了,请告诉我)。

如果想要定向地了解某一项权限都有哪些应用使用,可以从设置里找到权限管理(每家厂商的手机操作不一致,可以从设置里搜索“权限”,找到权限管理进入),然后查看这个权限的详情。

点击某一项具体的权限,就可以查看哪些应用想用或者正在用此项权限。拿“健身运动”的权限举例。

健身运动就是获取你的运动步数等信息。从上图可以看到,多数我都禁止了,QQ允许了。

因为QQ、微信、支付宝都有步数排行,所以我给了他们权限。虽然美团也有步数相关的应用,但是我不在意,所以就没有必要让它知道我走了多少步。

其实,看到这里,估计你已经知道该怎么管理权限了。

没错,就是按需配置。这就是下面我要说的。

4.3 安全建议

如果你想要管理权限,可以挨个点开权限查看一下。每个权限都有介绍。拿我的手机举例子,看看短信权限的配置。

我们看到,好多应用都想要读取短信的权限,包括反诈中心App。它是想获取你所有短信,然后分析是否收到了诈骗短信,然后提醒你。但是,我没有允许任何一个应用读取我手机上的短信。关于短信验证码,我会自己看完,然后手动输入。一键读取并回填验证码,确实很便利,但是风险也是有的。不好判断它是读了一条,还是所有。

下面是麦克风也就是话筒的权限,列表中我允许了QQ可以使用,因为有时候会同好友发一些语音,会用到话筒。但是,QQ的使用频率也不高了,可以考虑改为每次使用时都需要申请,或者直接禁止掉。而对于其他的应用,一律禁止掉,如果实在没法使用了,我会视情况再来开启。有时候,有些App会搞一些趣味小游戏,比如朝着话筒吹泡泡,这时候你就必须给它开启话筒权限了,不然真的没法用。

有些App对于权限的申请,从我看来根本没有必要。比如一个电子秤App,居然也申请录音权限。如果没有特定的场景,比如语音唤醒体重曲线图。否则,我们是不能给他授予录音权限的,这解释不通。

对于敏感权限,比如录音录像,如果非要给的话,只允许一次就好,毕竟对于短视频,你还是看得多录得少,一天偶尔录几次,临时授权也不麻烦。

我再教大家一个绝招,也算是一个四两拨千斤的招。此招至少值五毛钱,看完了你要备注秦始皇,V我五毛。这招就是,不管啥权限,你把文件存储给它禁止喽。这样,就算是有恶意App,那它录了音没地方存,获取了位置没地方写,拿着数据干着急(一般隐私数据是离线上传,实时上传容易被检测到)。当然,你App也没法用了。

五、总结

也可能有人会说我制造焦虑,在阻碍互联网的发展,尤其是那些互联网大佬们。

但实际上,最为焦虑的正式那些大佬。

上面这幅图是“全球首富”、“比尔盖茨第二”、“科技圈大佬”扎克伯格先生发的一个朋友圈。他晒出了他家的一款照片App,其用户图片数量突破了5亿张。我们都知道,他的Facebook一直以来都是通过收集用户数据进行盈利的。他对这个套路门清,所以他的电脑摄像头和麦克风都用胶带糊上了,不想让别人收集到数据。即便这个电脑不是他的,至少也是他身边人的。这就像是卖肉夹馍的摊主,一般不给自己的家人吃摊上做的肉夹馍。

对于我们,肯定没法和大佬们比。我和媳妇吃饭时在讨论买一个吹风机。吃完饭打开购物App,它就开始给我推送吹风机产品,连品牌都和刚刚对话里说的一样。我看了一眼智能音响、智能空调、智能手机……仿佛听见了它们在笑,就像上面扎克伯格笑的一样开心。

我们无法分辨,我们的隐私数据是不是被窥探了。我们也不知道,手机上的各种App在闲暇时都在做什么。这些App我们都是免费用的,但他们却是花了大钱做的。我们只能做到,不用地图App导航的时候,关掉定位权限。不录视频的App,关掉相机权限。一个天气预报App,无论如何我也不会授予它通讯录权限的。这样……起码能省不少电吧。

我从2009年开始接触智能手机编程,从Android 1.5观察到Android 13。其实从整个趋势来看,安全性是慢慢变好的。不管是行业规范,还是审查政策,乃至用户的自我意识,都是在慢慢地加强。一开始,权限不用申请,随便用。后来,权限需要列出来,那里为什么要用这个权限。再后来,权限需要让用户做一次选择。其实,这是所有用户推动的结果。所以,你我都是共建者,让我们一起维护行业的规范性。

我是ITF男孩,一个IT男。欢迎大家提供线索,我将从IT人的视角对问题进行分析并分享,不限于技术问题哦。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多