【看!】我如何發現Facebook註冊使用者手機號碼

ADVERTISEMENT

參考來源:hackernoon

轉自:FreeBuf

編譯:clouds

近期,曾通過連結重定向方法劫持川普Twitter的比利時黑客@securinti,發現了從Facebook查詢註冊使用者手機號碼的方法,[email protected]

上個月,我發現,通過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,當你在搜尋框中輸入一個手機號碼之後,可能就會得到一個相關使用者:

ADVERTISEMENT

這樣的方式,如果手工測試的話,費時又麻煩,而且在執行了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分鐘)

ADVERTISEMENT

最後,需要解決的就是一些簡單的數學問題了,我們先測試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“(僅對好友可見)。

ADVERTISEMENT
ADVERTISEMENT