WiFi萬能鑰匙是怎么知道你家(別人家)WiFi密碼的?
WiFi萬能鑰匙的基礎(chǔ)功能并不是采用某些答案所述“密碼庫窮舉(逐個(gè)嘗試)暴力破解”的方式獲得正確密碼,而是通過用戶上傳分享的熱點(diǎn)(主動(dòng)或“被動(dòng)”)到后臺(tái)服務(wù)器的方式收集、積累數(shù)據(jù)。后臺(tái)服務(wù)器維護(hù)者一份熱點(diǎn)數(shù)據(jù)庫,其中包含著熱點(diǎn)名稱(或者用來唯一標(biāo)識(shí)的MAC地址)以及與其對(duì)應(yīng)的密碼字符串。查詢密碼時(shí),用戶將周圍掃描到的陌生熱點(diǎn)信息上傳,服務(wù)器后臺(tái)查詢到相對(duì)應(yīng)的密碼(如果分享過的話)后返回給APP供用戶選擇使用。不過WiFi共享鑰匙有一個(gè)“深度解鎖”的功能與“暴力破解”沾點(diǎn)邊,但它也僅僅是使用幾個(gè)常見的較為簡單的密碼來嘗試連接熱點(diǎn),不能稱得上算“密碼庫窮舉”。
現(xiàn)在WiFi萬能鑰匙充實(shí)密碼庫的方式主要是用戶主動(dòng)分享,畢竟用戶基數(shù)變大了,但在以前可不是這樣。早期的WiFi萬能鑰匙得到熱點(diǎn)密碼數(shù)據(jù)的手段并不高明,甚至可以說是不光彩的。
我們知道Android系統(tǒng)中有個(gè)文件是用來存儲(chǔ)WiFi密碼的,那就是/data/misc/wifi/wpa_supplicant.conf
此文件只有當(dāng)獲得root權(quán)限后才能訪問。
圖上顯示有兩個(gè)WiFi熱點(diǎn)“network”,ssid是熱點(diǎn)名稱,psk是密碼。上面那個(gè)是我的私人熱點(diǎn),另一個(gè)“Bjume”則是某商家提供的免費(fèi)熱點(diǎn)。請(qǐng)注意,其中的密碼是明文顯示的“bjume2013”。
得到了這個(gè)文件,或者能看到這個(gè)文件的內(nèi)容,就意味著能得到這臺(tái)手機(jī)登錄過的所有WiFi熱點(diǎn),以及它們的明文密碼!
早期版本的WiFi萬能鑰匙會(huì)向用戶申請(qǐng)root權(quán)限:
雖然我不是專職的Android開發(fā)者,但我畢竟也開發(fā)過一些自用的小工具,對(duì)系統(tǒng)提供的接口和權(quán)限還是略知一二的。WiFi萬能鑰匙的所有業(yè)務(wù)功能,包括掃描周邊的WiFi信號(hào)、通過網(wǎng)絡(luò)查詢對(duì)應(yīng)WiFi信號(hào)的密碼、輸入密碼登錄WiFi、通過網(wǎng)絡(luò)將用戶在應(yīng)用中輸入的密碼上傳到服務(wù)器,這些都可以使用基本的系統(tǒng)API實(shí)現(xiàn),不知道它為甚麼要申請(qǐng)root權(quán)限。難道是為了訪問wpa_supplicant.conf文件?單從這一點(diǎn)上作惡意揣測(cè)似乎不太妥當(dāng),畢竟在Android上很多別的行為也需要root(雖然我實(shí)在不知道WiFi萬能鑰匙哪個(gè)功能有這個(gè)需求),那么接下來的證據(jù)就無法回避了。
通過對(duì)com.snda.wifilocating.apk文件(WiFi萬能鑰匙)進(jìn)行反編譯之后,得到的很多smali腳本,有這么一個(gè)很有意思:
1051行,WiFi萬能鑰匙不僅訪問了wpa_supplicant.conf這個(gè)文件,還把其中的內(nèi)容復(fù)制了出來,放到了自己的緩存文件夾里。
上面的數(shù)據(jù)表示W(wǎng)iFi萬能鑰匙有一項(xiàng)功能會(huì)默認(rèn)上傳所有用戶登錄過的所有熱點(diǎn)密碼(注意1.0這個(gè)版本還沒有熱點(diǎn)備份功能),因此唯一合理的推測(cè)便產(chǎn)生了!當(dāng)然這種推測(cè)仍然沒有十足的依據(jù)~
以上內(nèi)容便是關(guān)于WiFi萬能鑰匙是怎么知道你家(別人家)WiFi密碼的一些分析,只是一個(gè)論證,并沒有十足的依據(jù),但筆者依然想告訴各位,在享受免費(fèi)午餐的時(shí)候,請(qǐng)多多在意自身的信息安全,避免使用WiFi熱點(diǎn)支付。
留言與評(píng)論(共有 條評(píng)論) |