可是,當(dāng)我們主動(dòng)使用這些資源,比如攝像頭的時(shí)候,我們可能想要干一些重要的事情(比如用QQ掃描紅包二維碼),這個(gè)時(shí)候攝像頭對(duì)準(zhǔn)有用的東西的概率也會(huì)大大提高。因此,如果一個(gè)惡意程序在這個(gè)時(shí)候競(jìng)爭(zhēng)攝像頭(我們的標(biāo)題的來源!),并且拍照,那么惡意程序更有可能會(huì)獲得有用的資源(比如紅包二維碼!然后和你一起分享紅包里的錢!)。這篇文章當(dāng)中著重研究了針對(duì)攝像頭以及觸控屏的攻擊。
我們將攻擊分為三類,即在正常應(yīng)用使用資源前、使用時(shí)、使用后攻擊。先討論攝像頭吧!安卓規(guī)定,當(dāng)一個(gè)程序擁有最高用戶優(yōu)先級(jí)時(shí),它可以打開攝像頭。一個(gè)程序如果想要使用攝像頭,它必須被授權(quán)。因此,我們可以把我們的惡意程序給弄成一個(gè)美顏相機(jī)之類的,讓它名正言順地獲得相機(jī)授權(quán)。在正常程序準(zhǔn)備拍照(或者正在拍照)的時(shí)候,我們的程序搞一個(gè)透明窗口出現(xiàn)在屏幕上,然后快速拍10張照片,然后關(guān)閉透明窗口。用戶基本上發(fā)現(xiàn)不了什么異常。經(jīng)過實(shí)驗(yàn),發(fā)現(xiàn)這樣的搞法是很有效的,在經(jīng)過平均1秒多的拍攝后,我們可以獲得清晰的照片了(也可能會(huì)拍到模糊的照片)。
這樣的攻擊是有現(xiàn)實(shí)意義的。比如紅包二維碼。當(dāng)你使用微信或者QQ掃描紅包二維碼的時(shí)候,惡意程序插手,也拍到了紅包二維碼。這樣,惡意程序的所有者也能跟你分享紅包了!研究者真的對(duì)微信和QQ進(jìn)行了研究,發(fā)現(xiàn)這樣的攻擊居然是行之有效的(除了微信的動(dòng)態(tài)二維碼紅包)。
再來說一說觸控屏的事情吧!面對(duì)觸控屏,一個(gè)問題是我們不知道用戶到底什么時(shí)候在看B站、刷知乎,什么時(shí)候在輸入密碼。這很好解決,靠讀取加速度計(jì)等傳感器的數(shù)據(jù)就可以了,這些不屬于這篇文章的重點(diǎn)。另一個(gè)問題是,怎么攻擊呢?在安卓里面,一般來說,我們?nèi)绻孬@了用戶的輸入,那么正常程序就得不到用戶輸入了。不要緊!我們可以一次截獲一個(gè)字母。
舉個(gè)例子吧!如果密碼是osprey,我們的第一次攻擊只需要截獲o,然后攻擊停止(要不然,用戶發(fā)現(xiàn)自己啥都沒輸進(jìn)去,大概會(huì)起疑心)。此時(shí),用戶發(fā)現(xiàn)o沒輸進(jìn)去,大概會(huì)大罵手機(jī)質(zhì)量不佳,然后重新輸入osprey。事實(shí)上,只截獲一個(gè)o不太夠,我們可以在用戶輸入密碼時(shí)多截獲幾次。比如,你獲得了o和p,那么你就知道密碼中o在p前面。你需要更耐心一些,多搞幾次,然后通過一些手段,可以還原密碼。研究表明,這樣的手段是很有效的,特別是那些六位數(shù)密碼(你在生活中設(shè)置過多少個(gè)六位數(shù)密碼?)。
如何防止此類攻擊呢?對(duì)于相機(jī)來說,比較好的方式是檢查自己到底有沒有獲得相機(jī)權(quán)限。如果沒有就要直接提示,而不能在嘗試幾次后再提示。對(duì)于觸控屏來說,程序需要檢查有沒有什么東西擋住了自己(比如透明的窗口),當(dāng)一個(gè)程序莫名其妙地?fù)踝×藙e的程序的時(shí)候,操作系統(tǒng)也需要給出提示(這就回答了開頭的問題!)。
所以,下次手機(jī)再次提醒你,微信在別的應(yīng)用程序前面顯示時(shí),不要責(zé)怪自己的手機(jī)了。(而且據(jù)說你可以關(guān)掉這個(gè)提示!)
來源:網(wǎng)絡(luò)整理 免責(zé)聲明:本文僅限學(xué)習(xí)分享,如產(chǎn)生版權(quán)問題,請(qǐng)聯(lián)系我們及時(shí)刪除。