今年的 3·15 晚会相信大家应该都有关注,晚会上曝光了许多关乎我们消费者切身利益的问题。其中关于骚扰电话的部分引起了激烈的讨论,原来骚扰电话早就已经脱离人工呼叫,进入人工智能时代;只需要用一个看似神奇的探针盒子,就能轻松获取周围所有用户的电话号码;看似官方的查询渠道,竟会让第三方获取到隐私数据。
但是 3·15 晚会对此探究的并不深入,晚会时长有限,它的目的只是为了引起人们对相关领域问题的重视。那么:
- 人工智能已经能够代替人来打骚扰电话了吗?
- 我们没有主动连接,探针盒子究竟如何能获取到我们的电话号码?
- 如何防止自己的隐私数据被第三方获取?
- 面对这些新型的、防不胜防的技术,我们如何去防范?
这篇文章将给大家一一解答这些问题。
并不智能的人工智能骚扰电话
说起「人工智能骚扰电话」大家可能会觉得很高大上,但如果把它其中的技术拆分开来,可能你就不会这么觉得了。
淘宝客服的自动回复大家应该体验过,骚扰电话其实就是语音版的「自动回复」。当你接到一个非人工骚扰电话的时候,流程差不多是这样:
这里面唯二的难点就是:
- 如何处理方言的语音识别,毕竟不是所有人都能说一口标准的普通话;
- 如何让声音听起来更像真人,像运营商语音提示那种级别肯定成不了生意。
第一点现在已经有很成熟的解决方案了,比如我们采用的讯飞输入法就支持多达几十种方言的语音识别,而科大讯飞股份有限公司同时也持有 3·15 曝光的璧合科技股份有限公司的股份。
第二点各家公司的解决方法同样非常粗暴,那就是直接真人录音。这样子别说让声音听起来更像真人,其实就是真正的人声。
但是目前来讲这种骚扰电话也仅仅止于自动回复级别的复杂度,只能用关键词识别固定的模式与回答(因为每一家公司的需求都不同,所以只能做关键词识别方便客户添加)。大部分非真人骚扰电话都是起意向甄别的作用,如果你真的表达了对推销内容感兴趣,最后还是会转到人工。
从另一个侧面来看,这其实对普通用户反倒还是有好处,因为如果你明确表达了自己不感兴趣,人工智能一般会挂断得非常果断。
探针盒子真的是找人利器吗?
无论人工智能拨打骚扰电话多么高效多么智能,如果找不到足够的用户让它去拨打,那也只能是「巧妇难为无米之炊」,这个时候就轮到探针盒子出场了。
相信大家也看过了它的简单介绍 —— 利用周围搜索到的 MAC 地址拿到 IMEI,然后转换成电话号码。
但具体是怎么拿的,又是怎么转换成电话号码的?大部分人可能就不太懂了,这里就给大家由浅入深地说说探针盒子获取手机号码的原理。
MAC 地址是什么
这里的 MAC 地址(Media Access Control Address)可不是我们经常见到的苹果电脑的操作系统,它指的是硬件设备的物理地址,相当于物理设备的「身份证」。
无论蓝牙、Wi-Fi 还是有线网络的网卡,在搜索网络中其他设备的时候都会广播自己的 MAC 地址。以 Wi-Fi 连接为例,广播相当于路由器向周围大喊:「我是路由器(路由器也有 MAC 地址),快来连接我吧」,用户手机的无线模块收到之后就会说:「我是( MAC 地址),我可以连接你吗?」如果是之前已经连接过的 Wi-Fi,此处还会有 Wi-Fi 密码,路由器会同意连接请求;如果是首次连接,路由器就会返回说需要输入密码。
这些情况并不是在用户主动点击某个 Wi-Fi 连接的时候才会出现的,而是手机上的无线模块每扫描到一个新的 Wi-Fi 连接就会发生这样的对话,以便手机能够迅速地自动连上与切换无线网络。即使连接之后这种对话也会不断地进行,以保证设备稳定持续地连接。
大部分无线设备间的连接都是这种方式,正常的路由器虽然保存会保存连接过的 MAC 地址,但却不保存扫描到的 MAC 地址。
而探针盒子是一个恶意的移动路由器。它会建立一个热点,不断向周围发射 Wi-Fi 信号,吸引周围的设备来咨询连接,这个时候它就能获得大把大把周围移动设备的 MAC 地址并保存起来。
拿到了 MAC 地址之后,接下来就是要转换成 IMEI 了,那么 IMEI 码又是什么?为什么探针盒子不直接使用 MAC 地址而用 IMEI 来转换电话号码呢?
IMEI 是什么
IMEI 是国际移动设备识别码(International Mobile Equipment Identity)的缩写,也就是我们常说的手机序列号、串号。既然 MAC 地址是物理设备的「身份证」,那么 IMEI 就是移动设备的「身份证」。
为什么手机等移动设备要单独用一个自己的识别码呢?这就是个历史遗留问题了,因为移动设备(主要是手机)出现的时候还没有这么多的功能(2/3/4G 上网、Wi-Fi 、蓝牙之类的),所以创造了 IMEI 来识别不同的移动设备。我们只需要在电话拨号处输入 *#06#,就能看到自己手机的 IMEI 码。
之所以使用 IMEI 而不是 MAC 地址来转换用户电话号码,是因为一台手机可以有不只一个 MAC 地址,比如移动上网模块有 MAC 地址,Wi-Fi 模块又是另一个 MAC 地址,并且 MAC 地址可以比较容易地修改(很多系统都会自动修改,下文会提到)。
而 IMEI 与设备主板是绑定的,一般情况下无法修改(当然用户也可以对应用伪造,不过比较麻烦),这使得 IMEI 能够更加准确地标识用户身份。但 IMEI 不能远程直接获取到,所以需要多一步从 MAC 地址拿到设备的 IMEI。
MAC 地址到手机号码的转换过程
这里所说的「转换」,其实并不是类似数据加解密那种转换,更像是拿着一个数据去「查询」另一个数据。
我们平常使用手机的时候,第一次打开应用都会提醒你应用需要的各种权限,是否允许。其中应用获取 WLAN 连接情况,要的就是 MAC 地址;获取手机状态和身份,要的就是 IMEI 码。
应用获取我们的 MAC 地址和 IMEI 码,很多时候都是使用统计平台的统计 SDK(代码包)来管理这些信息的。如果统计平台不妥善保管这些数据,随意拿出去倒卖或者被黑客偷走,营销公司拿到手就能通过 MAC 地址查询到相应的 IMEI 了。
那 IMEI 又是如何进一步转换成手机号码这一看似不相关的数据呢?
答案就是实名制。
基本上国内所有的平台注册账号都需要绑定手机号码。如果恰好你注册了请求上面两个数据的应用的账号,而这个应用背后的公司对数据管理不当造成泄露或者干脆就是监守自盗的话,那么恭喜你,你的个人身份信息已经成功地暴露在了无数双不怀好意的眼睛之下。因为现在这个应用已经同时获取到了你的三个重要信息:MAC 地址、IMEI 号、手机号码。
所以你知道探针盒子通过 MAC 地址来转换成手机号码这一神奇操作背后的原理了吧。如果营销公司再用这三个信息去查询不同平台收集到的不同数据,那么拿到这一手机号码机主的姓名、身份信息、收入、人际关系网,甚至最近的位置做了什么活动都是有可能的。
现在整个流程都已经清晰说明,我们再来简单回顾一下现在骚扰电话行业的工作流程:
- 商家拿着探针盒子到处走,或者放置在人群密集的位置,收集周围的 MAC 地址,并上传到数据库服务器。
- 服务器用这些 MAC 地址去匹配之前从各个地方购买收集的 IMEI 数据,再通过 IMEI 数据去匹配到电话号码。
- 匹配到的电话号码和其他信息会分配给机器人。
- 机器人开始自动拨打骚扰电话,困扰无数人后开始甄别出有意向的客户。
- 这些客户信息交给人工客服,人工客服继续骚扰。
小知识:Wi-Fi 定位的原理
有时候我们发现即使没有打开 GPS,也没有打开移动网络,只连接 Wi-Fi 的时候,应用也能获取到相对精准的位置,而且定位速度往往非常快。这就是 Wi-Fi 定位,背后则是上面提到的原理:MAC 地址记录,不过这次记录的不是手机 MAC 地址,而是发送信号设备的 MAC 地址。
手机经常移动,而路由器等发射信号设备位置则通常是长时间固定的,手机系统里面的位置服务商们(比如 Google,百度等)会在 GPS 或者移动网络打开(基站定位)的时候记录手机扫描到的路由器的 MAC 地址。位置服务商们也会从运营商那里通过 IP 确定不同设备的地址。
这些地址会被存储到服务器上,下一次有用户提交定位请求时,如果用户周围恰好有三个已知位置的路由器 MAC 地址,就形成了传统的三点定位,用户的位置就这样不需要 GPS 与移动网络也能确定出来了。那些所谓能够「手机定位」,「手机跟踪」的私家侦探和黑产们大多就是利用这个原理。
我们能够做些什么?
上面的情况听起来好像很惊人且无处可躲的样子,那么现实情况真就这么糟糕吗?我们就真的只能坐以待毙了吗?其实不是的。
随机 MAC 地址
这么明显的灰色产业早就已经被苹果和谷歌公司所知悉,并在自家的系统上做出了相应的防御行为:
- 苹果公司自从 iOS 8 之后,就全面采用随机 MAC 地址来防止扫描 Wi-Fi 过程中 MAC 地址被记录。不过,连接之后用的仍是真实 MAC 地址,所以仍旧可以通过建立钓鱼无密码的 Wi-Fi 热点,来拿到相关数据。另外,自从 iOS 7 之后,手机里面的应用也获取不到手机真实 MAC 地址了(虽然还是有各种奇技淫巧可以拿到……)。
- 谷歌家的 Android 这边类似,从 Android 6.0 以后加入了扫描时提供随机 MAC 地址的特性。Android 8.0 之后更是在开发者选项里面提供了连接时也随机 MAC 的选项,连接不同的 Wi-Fi 会使用不同的 MAC 地址。
看来只要尽快升级到最新系统就可以避免这些情况了,听起来还挺安全是不是?
但现实中这个也很难做到,首先骚扰电话的目标客户本身就不是那种会自己主动寻找最新系统升级的手机用户。比如大爷大妈们手机可能到手后永远都不会升级系统。
另外,Android 这边还存在着国产定制系统把连接时随机 MAC 地址甚至扫描时随机 MAC 地址给阉割了(搞不懂为啥要阉割……)的问题。比如 MIUI 就在 3·15 后把阉割的这个功能给加了回来,华为也在 3·15 之后特地宣传了这个功能作为卖点。
至于手机应用随意获取 MAC 地址和其他权限,不给权限不给用这些点一直是 Android 比较让人诟病的地方。但是也有很多方法可以避免这些问题:
- 不 Root 的情况:我们可以使用像是 App Ops 这样的应用来轻松地管理所有应用的权限。它比起系统自带的权限管理更加地详细和直观,还能禁用许多系统权限管理没有的权限。并且 App Ops 与系统的权限控制是独立的,你可以在应用里面同意任何权限,只要在 App Ops 里面禁用了相关权限应用就只能获得空数据。详细的使用方法可以参考我的文章:真正解决你的痛点,那些良心的 Android 独占应用:隐私工具篇App Ops 设置
- Root 后的情况:Root 手机后我们的选择就更加多了,比如我在文章《在 2019 年,Root 是否还有必要? | 观点》中提到 Root 的好处之一就是,可以随意修改系统的配置还有文件。这样我就可以借助应用变量这类工具,来实现给不同应用不同的自定义的系统参数,甚至直接随机伪造全套系统参数出来,每天都换「新手机」,让应用永远无法追踪你。应用变量设置
确认连接时使用随机 MAC 地址是否开启
FING(Android 版)是一个非常好用的局域网设备查询应用,它可以清楚地看到有哪些设备连接了当前的无线网络,能查看每一个设备的品牌型号操作系统等。最重要的它还能列出每一个设备的 MAC 地址,通过切换不同的 Wi-Fi 再在 FING 里查看本机的 MAC 地址就可以知道这台手机是否实际开启了连接时随机 MAC 地址。
Windows 电脑也可以在「设置 – 网络与 Internet」里面查看与开启随机 MAC 地址的功能(需要网卡硬件及驱动支持)。
开通高频骚扰信息拦截功能
如果你是中国移动用户,同时身处广东、江苏、北京、上海、山东、四川、河南、福建、天津、重庆、浙江这 11 个省之一,那么可以尝试发送短信 ktfsr 到 10086 开通高频骚扰电话拦截业务,这个业务可以云拦截骚扰电话。
关注相关公众号「绿盾防护试点」可以设置接到骚扰电话的提醒类型(不提醒、短信提醒、微信提醒)、查看拦截记录、手动添加黑名单等。
亲自动手确认第三方应用安全性
3·15 晚会还通过实际测试「社保掌上通」这款应用揭露了一个互联网行业内比较普遍的规则,那就是用户查询第三方信息要在自己服务器过一遍。
无论是我们平时通过第三方应用买火车票、飞机票等各种票,还是通过第三方应用查违章、查社保等各种信息,都需要填写很多身份验证数据。虽然每次填写后,它们都能返回正确的你想要的官方信息,但实际上你填的身份数据却不是直接被用于官方页面查询,如果你像 3·15 晚会那样抓包,会发现部分应用的查询请求地址是应用自己的服务器。
我们不能说应用这样处理数据就一定是做一些不可告人的事情,但是这些数据在它们服务器上有没有储存,储存了有没有泄露(或者主动泄露)都是我们无法确定的事情。如果这些信息泄露的话,一段时间后就有可能成为我们接听到骚扰电话里面内容的一部分。
如果你不知道应用是否有「挂羊头卖狗肉」的行为,也可以亲自动手抓包你感兴趣的应用。Android 手机上使用 Packet Capture(iOS 上可以使用 Surge 等带有抓包功能的应用)可以实现无 Root 抓取 HTTP 与大部分 HTTPS 数据,还能针对单个应用进行抓包。重点是使用起来非常简单直观,开箱即用。
以查询火车票信息为例,我们可以在点击查询按钮前打开 Packet Capture 开始抓包,然后按下查询按钮查到交税信息后返回 Packet Capture 停止抓包。如果你看不懂抓到的数据完全没问题,我们只需要确认抓到的请求是不是发往官方的网站就可以了:
主要看圈起来的网址是不是官方的网站域名
自己动手确认起来并不困难,也能给自己一个安心。
结语
任何事情都有两面性,我们每时每刻享受着科技带来的便利,也要承受着科技带来的新问题。正确的技术也可以用在不正确的方面,人工智能骚扰电话与探针盒子所反映的问题,正是用户和灰产黑产间极大的信息不对称,让自身在不知情的情况下成为待宰的羔羊。
除了期待技术方面的改进,国家方面严加治理,我们普通用户也要了解更多相关知识,主动出击,给自己带来一片清静。