劉惠明 騰訊玄武實(shí)驗(yàn)室安全研究員
首先做沙箱方面的簡介,,之后介紹我們研究的動機(jī),,在此基礎(chǔ)上我們會實(shí)現(xiàn)三步對沙箱的攻擊,首先是實(shí)現(xiàn)關(guān)掉瀏覽器頁面之后仍然能夠存在的,。第二個即使重啟設(shè)備攻擊仍然是有效的,第三個甚至重裝系統(tǒng)攻擊仍然是有效的,。
大家都用過瀏覽器,,在瀏覽器上面打開一個頁面那個頁面和瀏覽器主進(jìn)程之間是不一樣的,,如果它一樣,我只要攻擊了一個頁面,,其他瀏覽器的很多內(nèi)容都能被我獲取到,,為了規(guī)避這樣的情況,現(xiàn)在主流瀏覽器全部加上了一個(英),,一個沙箱的機(jī)制,,一個沙箱就是一個獨(dú)立的進(jìn)程,當(dāng)(英)沒有渲染和GS執(zhí)行的時候會在一個獨(dú)立的進(jìn)程里面進(jìn)行渲染,,如果出現(xiàn)問題也不會影響其他的情況,,它有幾個不同的限制,這邊列出的就是資源方面的限制,,它本身獲取到的資源有限,,IBC和內(nèi)核交互也有限制,在此之外,,現(xiàn)在也有一些新的瀏覽器也加上了一個(英),,一個頁面上可能有不同站點(diǎn)的頁面元素,每個站點(diǎn)元素在不同的進(jìn)程中存在,,就算攻陷了其中一個頁面的進(jìn)程你也無法去把整個頁面其他來源的(英)拿到,,它已經(jīng)在2018年5月份在(英)上面已經(jīng)生效了,而且是默認(rèn)開啟,。
除此之我們要知道的是沙箱逃逸是非常困難的事情,,現(xiàn)在想象一下手機(jī)上打開一個惡意頁面,可能你覺得是正常頁面,,你連到了一個會場wifi中,,隨便打開一個頁面它可能就在攻擊你,然后拿到你瀏覽器的執(zhí)行權(quán)限之后,,僅僅能干的事情把自己本身的頁面能偷到,,但是不能干其他的事情,就是因?yàn)樯诚涞南拗?,如果想做更多的事情,,需要把沙箱給突破,突破沙箱是非常困難的,,因?yàn)樯诚溆泻芏嘈绿匦詴押芏鄸|西都限制起來,,一般情況下大家能夠開發(fā)的特性越多,那么你的漏洞會越多,,沙箱不是這樣,,沙箱特性越多,限制越多,攻擊越困難,,越加越多的限制之后沙箱越來越攻擊困難,,大家也可以了解從一個側(cè)面跟大家描述一下,因?yàn)榇蠹叶贾酪粋€東西的難度跟它的價值是有正關(guān)系的,,可以清楚的看到(英),,(英)上突破沙箱要50萬美元,一個漏洞是50萬美元,,如果沒有沙箱逃逸只給7500美元,,這就體現(xiàn)了沙箱逃逸本身漏洞的難度和價值所在,每年也會有沙箱逃逸漏洞存在,,但是比較困難,,我們能不能改變思路,在沙箱內(nèi)部攻擊而不直接打倒它,,是不是也能獲取很多攻擊的結(jié)果,?我們投入需要性價比,我拿一個50萬美元的漏洞去打一個受害者投入產(chǎn)出比是非常低的,,如果沒有突破沙箱直接突破7500美元就可以達(dá)到,,不打破沙箱可以做什么事情,這就是我們研究的東西,,有很多之前的工作,,在沙箱中不突破,可以干一些(英)橫向移動,,端口掃描,,做攻擊的人比較清楚,但是它本身也干不了更多的事情,,只能在這個頁面當(dāng)中進(jìn)行,,一旦關(guān)掉了惡意頁面所有攻擊全都失效,在頁面打開的情況下,,我們可以通過一些頁面上展示的方法,就不一一展開了,,當(dāng)(英)打開的時候保持攻擊持久化是可行的,,但是完掉這個頁面之后,攻擊代碼是否還在手機(jī)或者是電腦里,,一般情況下是不在了,,之后我們的研究思路是什么?首先第一點(diǎn)想到的是就算關(guān)掉了瀏覽器頁面,,發(fā)現(xiàn)這個頁面你把它關(guān)掉,,關(guān)掉之后是不是惡意代碼能不能不讓它消失?這就是我們的目標(biāo),我們的目標(biāo)是把惡意代碼攻擊的思路站在攻擊者的角度,,他們就想把惡意代碼保持的越久越好,, 可以通過渲染器進(jìn)程的(英)拿到當(dāng)你關(guān)閉這個頁面之后,惡意代碼仍然在的攻擊方式,,之后我們再使用(英)污染機(jī)制,,即使打開一個惡意頁面把手機(jī)重啟了,惡意頁面還在,,之后我們就提出了一個新的攻擊思路叫做(英),,通過這樣的方式即使升級了瀏覽器,把這樣的方式裝上仍然能夠控制你的賬戶,,相關(guān)細(xì)節(jié)就一筆帶過,,會把主要思路給大家講一下。
渲染器進(jìn)程,,我們的目標(biāo)就是關(guān)掉這個頁面之后依然存在,,方式就是把退出的方式給(英)掉,我現(xiàn)在能夠在你的頁面中執(zhí)行任意代碼,,這是我們的攻擊思路,,試想一下這樣的場景,打開手機(jī)頁面,,關(guān)掉,,那個瀏覽器頁面還在,瀏覽器只是認(rèn)為我把它關(guān)掉之后這個頁面就不應(yīng)該顯示了,,不顯示之后頁面還在后臺,,是不是會被瀏覽器殺掉,如果不殺掉是不是就存在在你的后臺,?關(guān)閉頁面有兩種方式,,第一種是我告訴這個頁面我要關(guān)掉你了,你把自己殺掉,。第二種當(dāng)我發(fā)現(xiàn)你沒殺掉自己之后,,我會強(qiáng)制把你給做掉,如果沒有用第二種思路,,僅僅告訴它自己關(guān)掉,,豈不是就是一種攻擊思路,我們測試了一下發(fā)現(xiàn)在windows上(英)和安卓上的(英)都可以實(shí)現(xiàn)這樣的攻擊,,現(xiàn)在安卓手機(jī)打開一個頁面,,現(xiàn)在關(guān)掉頁面,那個頁面一直在后臺運(yùn)行著,,這都是可以存在的,,我們成功的在IE和Firefox,就是告訴這個頁面自己關(guān)掉,chrome如何關(guān)閉tab,,我們研究一下chrome,,chrome是通過兩種方式,首先會讓它自己殺自己,,會返回我正在跑的狀態(tài),,發(fā)現(xiàn)你還在運(yùn)行的時候,我們在第二個進(jìn)程里面會調(diào)(英),,調(diào)到最后是(英),,在(英)上面是要去殺它,在這樣的情況下,,chrome在mac是不可以實(shí)現(xiàn)這樣的攻擊,,在安卓上面是可以的,在安卓上面有一個特殊的機(jī)制,,一般情況下大家理解打開一個頁面,,本身這個頁面應(yīng)該是瀏覽器進(jìn)程產(chǎn)生的,但是在安卓上卻不是這樣的,,安卓有一個特殊的機(jī)制叫做(英),,發(fā)現(xiàn)沙箱進(jìn)程負(fù)進(jìn)程其實(shí)不是(英),負(fù)進(jìn)程是在(英)這個特殊的進(jìn)程,,特殊進(jìn)程是(英)tab頁面,,瀏覽器想殺它是殺不掉的,他們兩個權(quán)限是在一個層級,,都是在應(yīng)用權(quán)限,,其次他們倆也沒有上下級,這里是殺不掉,,殺不掉當(dāng)然就出現(xiàn)了問題,,(英)進(jìn)程無法把(英)進(jìn)程正確的殺掉,谷歌現(xiàn)在已經(jīng)修了,,通過(英)的方式,,把它給修掉了,也是一個相關(guān)的漏洞CVE,,大家有興趣可以看一下,,在整體的實(shí)現(xiàn)思路就是(英)API,API只要我自己不關(guān)閉就不殺掉,,別人不殺我我就一直在,我的惡意頁面一直在我的后臺運(yùn)行,。
我們就實(shí)現(xiàn)了第一種攻擊思路,,在我關(guān)閉了頁面之后惡意代碼仍然存在,不僅關(guān)掉頁面,又把瀏覽器關(guān)掉了,,甚至把我的設(shè)備都關(guān)掉了,,是不是我惡意攻擊還能存在?我們繼續(xù)往下研究,,發(fā)現(xiàn)通過cache是可以實(shí)現(xiàn)的,,為什么使用cache,本身瀏覽器它是經(jīng)常會使用的,,大家覺得我打開瀏覽器不多,,但是你打開微信,打開支付寶上面點(diǎn)的每一個按鈕,,每一個鏈接都是用瀏覽器渲染后臺的,,現(xiàn)在相關(guān)的特性和速度大家覺得非常重要,cache是提升速度非常重要的方式,,我把常用的方式cache到本地,,就不用隨時到本地下載,現(xiàn)在cache用的非常多,,每個瀏覽器都會把常用的資源和代碼cache,,而這些cache會帶來一定的問題,首先它廣泛用于各大瀏覽器,。其次可以保存很長的時間,,最后它可以被污染,cache污染也是我在拿到瀏覽器tab頁面可以做的事情,,研究之后針對HTTPcache,,這只是其中的一個cache,為了方便講述,,我們需要通過污染HTTPcache拿到一個持久權(quán),,我們成功在windows,MAC都做了實(shí)驗(yàn),,但安卓和其他限于時間,,就沒有都做這個實(shí)驗(yàn),完全都是可以的,。
這是我們的攻擊思路,,攻擊者可以控制受害者打開一個頁面,或者是受害者打開攻擊頁面,,會把這個頁面相關(guān)的cache污染代碼給注入進(jìn)去,,之后我需要把這個頁面設(shè)計它跳轉(zhuǎn)到一個我要的頁面上,比如說谷歌的(英),,之后用受害者打開這個頁面之后就會有cache的出發(fā),,它為了速度快肯定要先看一下本地有沒有,,發(fā)現(xiàn)本地有,我就不會在網(wǎng)上下載,,就會加載污染cache,,打開之后我就可以把我相關(guān)的代碼給觸發(fā)掉,好像聽起來很簡單,,因?yàn)橛衏ache的存在,,只要把它污染,之后每次打開瀏覽器,,打開頁面都會產(chǎn)生這樣的結(jié)果,,而我們攻擊的方式是污染新頁面的tab,每次打開新頁面就會觸發(fā)代碼,,所有人都會打開一個新頁面有這個操作,,我是能夠一直在你的瀏覽器當(dāng)中存在的。
我們看一下我們是怎么實(shí)現(xiàn)的,,這是第一步,,首先我要獲取你的遠(yuǎn)程代碼執(zhí)行權(quán)限,因?yàn)闉g覽器越來越重視性能,,可能加很多提升方式,,它漏洞的數(shù)量就不是特別少,幾乎每個月都有一個非常好的控制你手機(jī)瀏覽器的漏洞出現(xiàn),,而這些漏洞能夠非常輕易的被攻擊者拿到,,拿到你手機(jī)瀏覽器tab控制權(quán),拿到你瀏覽器頁面控制權(quán)之后,,把相關(guān)cache的代碼給放進(jìn)去,,我現(xiàn)在放到頁面上是一個測試的,轉(zhuǎn)入目標(biāo)頁面注入payload,,我們注入的是(英)頁面,,大家都要打開,每次打開都會觸發(fā),,每次它打的時候我們就會(英)一下,,受害者打開目標(biāo)頁面,每次打開瀏覽器,,打開新頁面的時候,,都會受害,手機(jī)重啟或者是瀏覽器重啟都是可以的,,它還是一直存在,,每次(英)能注意到,如果注入的是密碼GS,,就完全注意不到了,。
我們能存活多久,?是有幾個字段控制存活長度,,控制的方式比較方式,,這邊不再具體講,我們測試了之后在有限的測試環(huán)境下兩天時間是完全可以的,。
如何獲取更久的存活,?因?yàn)檫@個cache是會過期的,根據(jù)每個頁面的屬性都不一樣,,可能存儲幾天可能這個cache就該更新了,,如何活的更久?如何讓我的惡意代碼,,攻擊者,,怎么讓更久的存活?像(英)存活更久的本地cache,,(英)是一個網(wǎng)站為了提升訪問速度的思路,,把常用的GS代碼,拉下來以后直接存到本地,,下一次直接用,,是沒有過期時間的,分析了前一萬個域名,,發(fā)現(xiàn)四千個網(wǎng)站把(英)存在本地,,只要把這個(英)里面的GS代碼污染,每次打開這些頁面都會觸發(fā)惡意代碼,,這是在國內(nèi)講,,不方便放國內(nèi)的廠商,一萬多個四千多個都有大家可以想象到,,它不是一個漏洞,,本身僅僅是為攻擊者打開一個持久化大門,能讓廠商說你不要用(英)嗎,,也不行,,是為了提升速度,為了提升速度帶來的麻煩我們要了解的,。
在此之外,,新的瀏覽器特性也注意到這些點(diǎn),也開了更多的特性,,像Site Isolation在我們的攻擊當(dāng)中,,過不了Site Isolation,有了Site Isolation之后,,每一個頁面上的站點(diǎn)都會是一個進(jìn)程,,互相之間是沒法污染的,,一個攻擊者,比如說叫(英),,它的GS是沒法污染到(英)GS的,,即使你們在一個頁面中用(英)連接進(jìn)來也是沒辦法污染的,但是我們也把它給突破了,,我們是怎么突破的,,首先先看一下Site Isolation是在(英),去年上去的,,它當(dāng)時是為了緩解(英)攻擊,,當(dāng)時是一個幽靈漏洞,正好把我們的攻擊思路也給修掉了,,它不同的頁面會在不同的進(jìn)程里,,如何繞過它,我們在此基礎(chǔ)上研究了其他的cache,,發(fā)現(xiàn)其中有一個特殊的cache叫做V8代碼cache,,而這個代碼也是cache的一種,但是并不受(英)的影響,,我們可以用它實(shí)現(xiàn)長久的攻擊,,(英)它的核心函數(shù)在(英)里面,相關(guān)的攻擊策略跟剛才的有點(diǎn)類似,,受害者打開頁面,,攻擊者可以獲取頁面控制權(quán),之后打開一個被污染的頁面之后可以觸發(fā)代碼,,其中會有很多比較多的(英)在里面,,我們需要把其中的(英)給匹配上,因?yàn)楸旧磉@個(英)并不是說你給他任何一個東西都可以,,他需要看的是正常(英),,我們可以分析一下在第一次check的時候會有這么多的流程,在其中最主要的是標(biāo)黃這一點(diǎn),,(英)它是一個比較重要的參數(shù),,我們需要把這個東西給模擬出來,怎么拿到相關(guān)的參數(shù)模擬出來正確的check,?渲染進(jìn)程通過自身獲?。ㄓⅲ笸ㄟ^這樣的思路,,同樣的方式去(英)請求我們需要的(英),,獲取之后就可以把其中的(英)找出來構(gòu)建出來正常的(英),過了這個check就會有額外的check,,剛才是部署時候的check,,也是跟剛才一樣,,也會檢查一些參數(shù)是否匹配,而這些參數(shù)恰好我們也能拿到,,比如說(英)我們可以看到是通過這樣的計算方式拿到的,,這就不展開講,計算方法包括(英)我們都在tab的權(quán)限下獲取到的,,之后我們可以通過比較公開的特征把它給繞過,,check C也是一樣,這邊就不展開講,,之后我們成功的在(英)兩個月前的最新版本實(shí)現(xiàn)了cache持久化,即使打開了(英)最新的特性,,我仍然可以在你的頁面中長久的存在,,打開惡意頁面重啟瀏覽器、手機(jī)都沒用,,這是我們相關(guān)的攻擊思路,,首先(英)它的函數(shù),構(gòu)建payload,,構(gòu)建相關(guān)的payload,,可以把這個cache寫進(jìn)去,通過一個(英)也是一樣的(英),,讓大家清楚的看到我們攻擊成功了,,注入進(jìn)去,V8的code cache是不受跨域污染,,這個code cache是執(zhí)行權(quán)限的cache,,是在頁面當(dāng)中需要執(zhí)行的片段,在cache持久化的防御方面,,我們會發(fā)現(xiàn)它有很多的cache,,檢查了很多次,我們一一把它突破,,這是為什么,?是因?yàn)楹诵哪軌蛟谖易约旱臋?quán)限當(dāng)中獲取所有的cache相關(guān)的知識,仍然能夠把cache過掉,,我們現(xiàn)在就需要提出一些思路,,本身是有(英)進(jìn)程來限制,而不是由你自己來限制,,而(英)不能修改其他(英)的限制,,同時跟剛才的思路一樣,我們在(英)進(jìn)程那邊得設(shè)置一些我tab不知道的東西去cache才能真正防御,,否則加上之后在下面仍然能把你過掉,,(英)加上(英),,大家也不用擔(dān)心這是我們之前的例子,這是它的評估,,在V8 cache這一方面可以實(shí)現(xiàn)在重啟手機(jī)之后仍然存在,,如果重啟(英)到一個新的(英),直接升級了(英),,重裝了(英)一個新的版本是可以的,,是能夠突破攻擊的條件,目標(biāo)的URL把(英)給改了也可以繼續(xù)突破,,在這樣的防御方案都是可以通過精巧的攻擊把它繞過的,。
重裝瀏覽器把原來的刪掉再裝一個新的進(jìn)去,這樣是可以防范我們的攻擊,,我們怎么能把這個攻擊也給做了,?即使你把設(shè)備重啟,即使把瀏覽器重裝,,還能攻擊呢,,我就提出了一個克隆攻擊的思路,我們知道安卓webView本身是非常重要的組件,,這個瀏覽器并不是獨(dú)立的瀏覽器,,如果打開朋友圈的鏈接,一點(diǎn),,并沒有跳到瀏覽器,,直接在微信里打開,就是因?yàn)槲⑿胖苯佑昧讼到y(tǒng)webview,,就可以在任何應(yīng)用當(dāng)中打開界面,,而且能夠微信打開頁面之后被微信所配置,可以配置它各種方面的屬性,,(英)它的安全機(jī)制首先在安卓7或者是7.1之前,,都是和主app是共享一個進(jìn)程,微信打開一個惡意頁面,,那個惡意頁面本身所在的進(jìn)程和你微信的進(jìn)程是一樣的,,是不是覺得很危險?但是安卓8.0之后打開一個頁面之后,,那個頁面和你本身微信,、支付寶本身的APP是隔離開的,通過(英)來緩解這樣的攻擊思路,。
我們再說一下克隆攻擊是什么,,如何在(英)得到一個持久化攻擊?首先我們需要從webView拿到應(yīng)用本身的東西,我就是想知道支付寶的數(shù)據(jù),,其次還要保持控制,,其次最好是遠(yuǎn)程的,隱蔽的,,(英)是滿足了所有的條件,,什么是克隆攻擊?說克隆大家都會覺得是生物學(xué)上的克隆,,我通過一個細(xì)胞核就可以把一個生物完整的拷貝過來,,對移動設(shè)備,移動設(shè)備最重要的是移動應(yīng)用,,怎么能夠克隆到所有的信息,?本身是我們需要梳理的東西,現(xiàn)在說一下移動應(yīng)用什么是它的細(xì)胞核,,最關(guān)鍵的一點(diǎn)怎么把它拿過來,,現(xiàn)在的應(yīng)用,大家現(xiàn)在用的微信,、微博都是基于云端去考慮設(shè)備的,很多東西并不是存本地,,肯定是存在云端,,想要的就拉下來。
第二個長時間保持在線狀態(tài),,每次登微博都上一次賬號,,輸入一下賬戶密碼才行這肯定是不接受的,保持登錄狀態(tài)長久,。第三點(diǎn)也是比較重要的,,跟PC端為什么不一樣,因?yàn)橛檬謾C(jī)IP和位置經(jīng)常會變的,,云端并不知道你到底是不是你自己了,,馬上出差到美國,現(xiàn)在就在美國登錄了,,異地登錄也是很容易之前PC端異地登錄了,,在另外一個地方下線,現(xiàn)在下線大家的用戶體驗(yàn)非常差,,稍微移動一下或者是拿著手機(jī)跑到其他的地方就下線了,。
首先我們在移動應(yīng)用上需要的是長久存活的,我們就有這樣的想法,,能不能通過某種方式把你的這些核心(英)給偷過來,,這里面跟(英)有一些區(qū)別,左邊是受害者,右邊是攻擊者,,受害者用了最新款的三星手機(jī),,F(xiàn)acebook用也是最新款,受害者需要做的就是隨便掃一個二維碼,,之后我們會發(fā)現(xiàn)攻擊者這邊有一些反應(yīng),,攻擊者這邊是把受害者整個APP信息全部都拿過來了,是一模一樣的東西,,而且受害者根本不知道,,他覺得自己的賬戶很正常,實(shí)際上有一個遠(yuǎn)處的人在盯著你,,當(dāng)我想發(fā)一個東西的時候,,可以隨時在攻擊者的手機(jī)上發(fā)出去,他已經(jīng)把狀態(tài)直接發(fā)到他的賬戶上了,,攻擊者可以拿到受害者應(yīng)用上面的所有東西,,基于云端,只要拿到(英),,云端申請,,所有東西都在我這里,我想發(fā)什么都沒有問題,。
怎么才能達(dá)到這樣的攻擊效果,?首先怎么偷到?之前在安卓7.1之前,,(英)和(英)是共享一個進(jìn)程,,現(xiàn)在我們都知道我直接通過一類或者是N類的漏洞,而這個漏洞是(英),,而webview并不是app自帶的,,裝一個微信或者是支付寶并不自帶的瀏覽器,這個瀏覽器是你手機(jī)里面的,,而手機(jī)里面瀏覽器的更新webview更新會非常慢,,根據(jù)我們的調(diào)查,絕大數(shù)的手機(jī)webview都會有,,拿到它的(英)是非常簡單的,,在安卓7.1之前他們倆又是在同一個進(jìn)程里,訪問一個惡意鏈接,,拿到你的控制權(quán),,把你的(英)全部偷過來,剛才那個并不是Facebook的問題,,是手機(jī)上webview組件的問題,,它的組件更新到最新版本但還是有這樣的漏洞,,導(dǎo)致我可以拿到那個手機(jī)上面所有跟Facebook這樣所有APP,并不是Facebook的問題,。
在安卓8.0之后,,大家用安卓覺得7.1之前也只占用戶量的一半左右,大多數(shù)人已經(jīng)升級到了8.0,,甚至9.0,,那么安卓O之后怎么攻擊?安卓O之后每一個webview的進(jìn)程都是獨(dú)立的,,我獲取到頁面之后我是沒法獲取到應(yīng)用的(英),,之后怎么辦?把這個APP和webview是有相關(guān)的墻在那兒擋著,,自己不能訪問網(wǎng)絡(luò),、讀寫硬盤,我們可以通過一個誤配置的webview來實(shí)現(xiàn)克隆攻擊,,手機(jī)瀏覽器頁面是有需求跟手機(jī)APP通信,,現(xiàn)在在微信支付寶打開一個他們自身的鏈接,他們總不能讓你再登錄一次,,他們倆之間肯定需要有信息交互,,很多時候需要打開相關(guān)的配置,開關(guān),,而這其中有兩個配置開關(guān)叫(英),,這兩個開關(guān)能夠打開會怎么樣,會發(fā)現(xiàn)打開之后如果他們倆任何一個打開了,,(英)都能夠允許通過(英)的方式獲取到這個APP中所有的文件,當(dāng)一個應(yīng)用打開開關(guān)之后,,我們可以通過webview來實(shí)現(xiàn)同樣的攻擊效果,,通過SD卡放一個(英)存到SD卡之后,之后再通過get的方式把它(英)給傳到云端,,就直接獲取手機(jī)APP中的文件,,如何讓一個APPwebview去漏的一個file,這個有點(diǎn)繞,,對安卓不太熟悉會不太理解,,我們今天講的內(nèi)容是沙箱,沙箱APP也有沙箱,,不僅APP有沙箱,,而且不同瀏覽器不同域之間也有相關(guān)的限制,我們從APP打開的頁面是APP的,,是無法跨域到(英)域,,無法通過(英)去獲取到(英),怎么才能能夠從APP域到(英)域,用一個UXSS漏洞也是不太合理的,,最后我們發(fā)現(xiàn)可以使用(英),,這個是每個APP自定義的鏈接形式,比如說打開了一個淘寶:/線,,打開它,,瀏覽器就會跳轉(zhuǎn)到淘寶,打開瀏覽器的頁面會跳轉(zhuǎn)到APP上,,就是這樣的思路,,本身我們在webview會有這樣的攻擊入口,通過(英)這個就不詳細(xì)展開了,,這邊的效果,,我點(diǎn)一個頁面,下載到SD卡之后,,我再通過(英)讓它再加載SD卡的惡意文件,,我需要一個跳板,首先下載下來一個文件,,這個文件有惡意代碼,,再通過(英)的方式把它給加載進(jìn)來,加載的方式是通過(英)加載的,,現(xiàn)在就不存在(英)和APP之間的跨域關(guān)系,,現(xiàn)在直接拿到應(yīng)用里面的(英),這個是我們攻擊的思路,,受害者打開一個釣魚鏈接,,是能夠直接把文件下載到SD卡,相關(guān)的(英)會不會觸發(fā),,就會把英)發(fā)送到攻擊者服務(wù)器上,,之后通過(英)去拿到所有的賬戶信息,任何沙箱都沒突破,,任何沙箱也都沒有阻擋,,但是已經(jīng)拿到了他的賬戶永久控制權(quán),現(xiàn)在他的APP(英)是不過期的,,file,,URL,并不是我想加載一個什么就可以加載,,應(yīng)用也會想著去防御攻擊,,大部分應(yīng)用防御是比較困難的,前面的防御幾乎是不可能的,,可以通過(英)或者是(英)的方式把它繞過去,,之后就可以實(shí)現(xiàn)在很多應(yīng)用上實(shí)現(xiàn)攻擊思路,,這都是我們攻擊的流程中需要繞過的方法,通過這樣的方法幾乎能繞過幾乎所有的APP都可以繞過,。
繞過防御,,還有另外一點(diǎn)防御,有一些應(yīng)用會想到會不會把我的(英)給偷走在其他地方就可以登錄,?那我需要跟你的設(shè)備綁定一下,,我要綁定到設(shè)備的(英),只有你的設(shè)備(英)跟我登錄過的設(shè)備一樣,,才能認(rèn)為你可以登錄上去,,否則就是把你的(英)偷過來,這樣他們想到了防御,,但是沒有想到是不是可以簡單的繞過,,雖然有一些應(yīng)用會有防御措施,但是他把獲取到的(英)綁定信息也當(dāng)成文件存到了本地,,之后仍然可以通過剛才提出的攻擊方式把這些文件也拷貝到,,這就繞過了相關(guān)的防御,這是相關(guān)的攻擊思路,。
這是我們對于漏洞的緩解和防御,,我們可以通過把(英),不要接受任何的外部鏈接,,把(英)安全的放在(英)來防御,。
這是舉的國內(nèi)廠商的例子,200家有27個是可以非常簡單的獲取到,,一些財經(jīng)應(yīng)用,,購物應(yīng)用都會有這樣的問題,最后我們可以在不突破沙箱的情況下獲取到很多攻擊的方式,,之前提到的能夠達(dá)到最終的(英),,一直保持登錄。
這是我們的結(jié)論,,很多攻擊仍然能夠在不突破沙箱的情況下完成,攻擊者可以偷掉很多受害者相關(guān)的賬號,,克隆他們的賬戶實(shí)現(xiàn)非常長時間的攻擊,,這句話跟瀏覽器安全或者是沙箱開發(fā)者說的,很多廠商也有這樣的疑惑,,沙箱已經(jīng)嚴(yán)謹(jǐn)了,,很好了,但是它是現(xiàn)在最好的選擇,,肯定要加,,不是說加上就完全沒事,,仍然可以做很多事情,現(xiàn)在研究很多的沙箱機(jī)制能夠?qū)崿F(xiàn)更長的攻擊,,這是我們今天實(shí)現(xiàn)的三種攻擊,,都報給了廠商,也全部修補(bǔ)了,,大家不用擔(dān)心,。