通過實(shí)現(xiàn)所有用戶間的E2E加密,Whatsapp已經(jīng)改變了它的形象,從一個(gè)令人震驚的安全的通信應(yīng)用程序到被許多人尊重的應(yīng)用程序的轉(zhuǎn)變。
-簡介-
Whatsapp帳號(hào)基于手機(jī)號(hào)碼。這意味著手機(jī)號(hào)碼就是你的用戶名,它也被用來認(rèn)證。盡管從隱私的角度看這不是完美的,讓用戶不必再記住另一個(gè)密碼,他們可能會(huì)被重復(fù)使用,甚至更糟,通過釣魚攻擊泄漏。
登陸過程的簡略描述:
當(dāng)每次用戶啟動(dòng)應(yīng)用后用戶不得不輸入他們的手機(jī)號(hào)。一個(gè)驗(yàn)證令牌通過SMS或者電話發(fā)送到這個(gè)號(hào)碼。在驗(yàn)證碼輸入到這個(gè)應(yīng)用后,認(rèn)證令牌保存在設(shè)備中,用戶成功登錄。
當(dāng)用戶在新設(shè)備登錄時(shí),需要重復(fù)上述過程,并且老設(shè)備的授權(quán)被取消。
Whatsapp不會(huì)在他們的服務(wù)器上保存老的消息,因此之前的消息不能轉(zhuǎn)移到新的設(shè)備上。
當(dāng)然這個(gè)過程是更加復(fù)雜的但是這種簡化在本文中是適合的。
這種便利伴隨著被網(wǎng)絡(luò)黑客攻擊的代價(jià),能夠訪問電話號(hào)碼。用戶信任移動(dòng)供應(yīng)商也是需要的,因?yàn)樗麄儗?duì)該號(hào)碼有完全訪問權(quán)限并且能接管帳號(hào)。
-攻擊者的角度-
從低級(jí)的攻擊者的角度來看,它很難被繞過。有兩個(gè)問題:
1.以一些方式訪問受害者的手機(jī)號(hào)碼。正如上面所述,這個(gè)能夠通過網(wǎng)絡(luò)攻擊或者移動(dòng)服務(wù)供應(yīng)商實(shí)現(xiàn)。盡管能訪問到手機(jī)號(hào)碼,但是不能獲得任何老的消息或者聊天歷史記錄,而且受害者會(huì)立即意識(shí)到一些事發(fā)生了,因?yàn)樗麄兊氖謾C(jī)會(huì)注銷賬戶。
2.進(jìn)入操作系統(tǒng),訪問磁盤分區(qū)等。盡管這能實(shí)現(xiàn),但是代價(jià)非常大。
-新角色的加入-
在2015年,Whatsapp啟用了Whatsapp網(wǎng)絡(luò)服務(wù),能在電腦上面收發(fā)消息的網(wǎng)站。為了使用它,瀏覽器與與手機(jī)對(duì)等并且手機(jī)保持命令。下面是這個(gè)過程的簡述:
通過用手機(jī)應(yīng)用掃描網(wǎng)頁上的二維碼來授權(quán)登錄。然后用戶可以在瀏覽器中使用Whatsapp,只需要手機(jī)是打開的并且能被計(jì)算機(jī)訪問。
這個(gè)給攻擊者提供了一個(gè)方便的腳手架。欺騙用戶掃描二維碼,將得到將來和過去通信的全部訪問權(quán)限。
-一個(gè)正式的攻擊-
它非常簡單:攻擊者只需要欺騙用戶掃描惡意的二維碼來授權(quán)攻擊者的瀏覽器。這個(gè)將給他們對(duì)于受害者賬戶的完全訪問權(quán)限。一個(gè)簡單的在線抽獎(jiǎng)可以作為誘惑,受害者需要掃描二維碼進(jìn)入。
攻擊過程描述:
為了更加復(fù)雜,Whatsapp不會(huì)在他們的注冊(cè)頁面展示靜態(tài)的二維碼,會(huì)幾秒鐘生成一個(gè)新的二維碼。這個(gè)阻止了攻擊者簡單的復(fù)制并發(fā)布大另一個(gè)網(wǎng)站上。
在我的演示中我繞過這個(gè)障礙,通過使用腳本持續(xù)抓取二維碼,并使用websocket連接發(fā)送給“受害者”。
缺陷:
用戶能看到他們授權(quán)的瀏覽器設(shè)備列表
如果過另一個(gè)瀏覽器登入了受害者會(huì)收到一個(gè)警告
這是個(gè)社工攻擊:受害者必須參與給予權(quán)限
但是,對(duì)于粗心的人來說這還是個(gè)有效的手段。
-演示-
我開發(fā)的工具使用selenium獲取QR代碼并使用express.js+socket.io在單獨(dú)的頁面上顯示它們。如果受害者使用他們的手機(jī)掃描這個(gè)二維碼,則document.cookie和selenium瀏覽器的本地存儲(chǔ)將被轉(zhuǎn)儲(chǔ)到攻擊者計(jì)算機(jī)上的文件中。然后可以使用獲取的數(shù)據(jù)使用任何瀏覽器登錄受害者的帳戶。
-修復(fù)手段-
沒有修復(fù)手段避免這種攻擊,除了改進(jìn)認(rèn)證過程。我認(rèn)為當(dāng)他們開發(fā)網(wǎng)絡(luò)客戶端時(shí)就已經(jīng)意識(shí)到了這種可能性,但是他們不認(rèn)為這是個(gè)大問題。