前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >看我如何发现Facebook注册用户手机号码

看我如何发现Facebook注册用户手机号码

作者头像
FB客服
发布2018-02-23 17:03:18
4.1K0
发布2018-02-23 17:03:18
举报
文章被收录于专栏:FreeBufFreeBuf

近期,曾通过链接重定向方法劫持川普Twitter的比利时黑客@securinti,发现了从Facebook查找注册用户手机号码的方法,我们一起来看看。以下是@securinti发表的博客:

上个月,我发现,通过Facebook可以轻而易举地获取到一些比利时名人和政治家的手机号码。目前,尽管这种方法貌似只对像比利时这样只有1120万人左右的小国家有效,但这种简单而有效的方法,却会让很多人的用户隐私受到影响。

当我把这个情况向Facebook的安全团队报告之后,却得到了一个失望的回复,他们竟然认为这根本不是一个安全问题。

但我觉得用户隐私至上,所以,在此我就公开来谈谈这个问题。

我认为的问题

如果在Facebook设置中,其隐私一栏,其“谁可以通过手机查找到我”(Who can look you up using the phone number you provided?)是everyone状态,那么可能就能通过我的方法查找出你的手机号码。

这里存在两方面的问题:

首先,该选项的everyone状态是默认设置; 其次,即使你在个人资料中将手机号码设置为“个人可见”(Only me),但只要“Who can look you up using the phone number you provided?”是“everyone”状态,一样存在手机号码泄露问题。

“通过手机查找到我”本质上来说,是想查找你的人已经知道你的手机号码,而他可以通过你的手机号码查看到你的Facebook账户,但在这里的选项中,根本没有“only me”。

为了方便登录和找回密码,Facebook会不断地提醒用户绑定手机号码,但如果你的Facebook账号绑定了手机号码,那么你的手机号码可能就存在泄露隐患。

测试实现

在这里我需要用到的是Faceook在2013年推出的搜索引擎Graph Search,当你在搜索框中输入一个手机号码之后,可能就会得到一个相关用户:

这样的方式,如果手工测试的话,费时又麻烦,而且在执行了1000次左右的搜索之后,Facebook就会作出查询限制;当然,即使是用botnet方式,估计Facebook也会有相应限制措施。

为了验证,我以查找比利时内政部长Jan Jambon的手机号码为例进行测试。

STEP 1:使用密码重置功能排除手机号码最后两位(1分钟)

基于此,我必须找到一种批量测试电话号码的方法,测试的位数越少,获取的手机号码可能就越多,查找到目标的可能性也就越大。所以,可以使用Facebook的密码重置功能排除掉手机号码最后两位:

STEP2:了解不同运营商手机号码格式(5-35分钟)

如04PPXXXX50,这就是一个典型的比利时手机号码,其中X为0-10的任意数字,PP为运营商代号号码。

而且,不同的电话运营商都有的固定的号段,如0468、047、048和049:

由于Proximus是比利时政府通讯业务的主要服务商,所以大部份政府部门雇员都使用047号段,所以我就专门写了个程序来枚举这个号段的目标号码,如有10000种号码组合的0479号段,以下是自动生成的号码表:

之后,向Facebook“好友查找”功能中导入以上生成的号码表进行查找,此时,找到了以”Jan”开头的大量用户,但他们都不是Jan Jambon。(在出现的Facebook反馈结果中,会提示说:You have 500 file_upload contacts on…,可以不用管)

之后,以这种方法,在继续尝试了0479号段之后,终于发现了目标账户使用的运营商代号和号段:0477,现在的号码为:0477XXXX50,目标范围逐渐缩小,目标号码就在这剩下的10000种组合中。

STEP3: 缩小范围(10-15分钟)

最后,需要解决的就是一些简单的数学问题了,我们先测试10000种可能中的一半号码,即0477 0000 50 — 0477 5000 50,可以看出目标账户出现在这个范围中:

这意味着目标账户手机号码的第5位只可能是0,1,2,3,4中的一位,所以再继续使用半分测试法进行,先对0477 0000 50 – 0477 2500 50进行测试,可以看到目标账户未出现在这个区间:

那么,最后就剩下0477 2500 50 – 0477 5000 50区间了,使用之前的方法,继续在1250、750、325、162和81区间进行半分测试,一直可以测试到40个号码,20个号码,10个号码到最终的5个号码,之后,发现目标。

STEP4:发现目标账户和与其匹配的手机号码(1分钟)

其实如果最后剩下40个可能的号码,我们都可以手动进行验证

后记

我尝试着将这个问题告知了比利时内政部长Jan Jambon,而他表示并不知道Facebook泄露了他的手机号码,只要不存在滥用情况,他自己也不介意。

另外,我们还与一家当地电台合作,在直播中拨打了一位比利时知名人士的手机,并告知他我们可以通过Facebook找出他的手机号码,我们就此聊得非常愉快,之后他便从Facebook上删除了绑定的手机号码。

有人指出,利用PayPal可以发现用户的后四位手机号码,所以如果目标用户把PayPal和手机绑定的话,利用以上我的方法,可以发现很多国家受影响的用户个人手机号码。有兴趣的话,可以自行尝试。

FAQ

这主要是什么问题?

由于Facebook隐私安全项“who can look me up by phone(通过手机号查找到我)”的默认设置为“everyone”,所以你的手机号码都会存在泄露风险。

对于一些小国家来说,由于移动运营商提供的手机号码段空间范围较小,所以通过Facebook来查找目标用户电话号码相对来说比较容易。

Facebook在个人资料中提供的将手机号码设置为“only me”(对自己可见)”其实并没有什么用。

哪些人会受到影响?

一些小国家绑定了手机号码的Facebook用户,如果没有修改默认的隐私设置,可能会受此问题影响。如果目标手机号码低于十位数,而通信运营商号段范围空间较小,以上测试方法就容易实现。

如何知道自己是否受到影响?

点击这里,检查“who can look me up by phone(通过手机号码查找到我)”查看设置,如果设置成了“Everyone”则受此影响。

如果受到影响应该如何设置?

这是一个很矛盾的问题,因为双因素身份验证功能需要用到手机号码,而目前这也算是一种比较安全的账户防护措施,所以可行的方法还是将“who can look me up by phone(通过手机号码查找到我)”设置为“only friends“(仅对好友可见)。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-03-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 我认为的问题
  • 测试实现
    • STEP 1:使用密码重置功能排除手机号码最后两位(1分钟)
      • STEP2:了解不同运营商手机号码格式(5-35分钟)
        • STEP3: 缩小范围(10-15分钟)
          • STEP4:发现目标账户和与其匹配的手机号码(1分钟)
          • 后记
          • FAQ
            • 这主要是什么问题?
              • 哪些人会受到影响?
                • 如何知道自己是否受到影响?
                  • 如果受到影响应该如何设置?
                  相关产品与服务
                  云直播
                  云直播(Cloud Streaming Services,CSS)为您提供极速、稳定、专业的云端直播处理服务,根据业务的不同直播场景需求,云直播提供了标准直播、快直播、云导播台三种服务,分别针对大规模实时观看、超低延时直播、便捷云端导播的场景,配合腾讯云视立方·直播 SDK,为您提供一站式的音视频直播解决方案。
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档