程序員冒死揭露黑產(chǎn)系列之:通道劫持與動(dòng)態(tài)注入
![](http://image.woshipm.com/wp-files/img/85.jpg)
360“又”被小米下架了,孰是孰非這里暫且不表,不過在看到小米的聲明中指控360“在用戶并不知情的情況下靜默執(zhí)行Root刷機(jī)行為,篡改MIUI系統(tǒng)簽名,植入非官方的系統(tǒng)應(yīng)用”后,不禁感慨,終于還是有人突破了底線。
說到Root,使用過安卓手機(jī)的朋友們一定是耳熟能詳,肯定也有不少應(yīng)用程序在大家的手中被賦予了Root權(quán)限。雖然我們使用Root權(quán)限的目的可能只是為了卸載內(nèi)置應(yīng)用、apk自動(dòng)安裝、管理后臺進(jìn)程或者限制后臺流量,然而你不知道的是,在你點(diǎn)擊“授權(quán)”的一瞬間,你可能已經(jīng)開啟了“裸奔”模式,下面請同學(xué)們繼續(xù)拿出小板凳坐好,聽我來簡單介紹下這個(gè)“裸奔”模式的開啟原理。
一個(gè)App,無論復(fù)雜如微信還是簡單如圖片查看器,他們都需要遵循系統(tǒng)對應(yīng)的“開發(fā)框架”,獲取系統(tǒng)提供的能力,來完成自己產(chǎn)品對應(yīng)的功能。如啟動(dòng),獲取用戶的操作,發(fā)送網(wǎng)絡(luò)數(shù)據(jù)等?!伴_發(fā)框架”定義了一些app獲取系統(tǒng)能力的“通道”,app通過這些“通道”就可以很方便的使用系統(tǒng)對應(yīng)的能力。在這里,應(yīng)用程序和操作系統(tǒng)之間的關(guān)系可以抽象成下圖:
我們發(fā)送的每一條信息,輸入的每一個(gè)密碼,分享的每一條說說,拍攝的每一張照片都需要經(jīng)過這個(gè)“通道”,由操作系統(tǒng)處理后才能完成。
很明顯,“通道”是實(shí)現(xiàn)功能的“必經(jīng)之路”,如果“通道”被劫持、篡改,我們的敏感信息就很有可能被暴露。然而很不幸的是,這種劫持、篡改通道的技術(shù)已經(jīng)很成熟了,一般我們都稱它為“動(dòng)態(tài)注入”。在被注入后,應(yīng)用程序與操作系統(tǒng)間的“通道”就會(huì)變成下圖:
也就是說所有的數(shù)據(jù)都會(huì)被某個(gè)“其他應(yīng)用”“窺視”一遍,然后才會(huì)到達(dá)系統(tǒng)。
如果你的手機(jī)可以獲得Root權(quán)限,并且手機(jī)上安裝了某個(gè)具有“動(dòng)態(tài)注入”能力的“其他應(yīng)用”A,那么,當(dāng)你使用應(yīng)用程序時(shí),應(yīng)用程序的啟動(dòng)和運(yùn)行可能會(huì)經(jīng)歷下面的過程:
- 應(yīng)用程序啟動(dòng)后,A會(huì)使用“動(dòng)態(tài)注入”技術(shù),將自己的“窺視”代碼注入到應(yīng)用程序的進(jìn)程中。
- “窺視”代碼被注入后,會(huì)針對性的攔截應(yīng)用程序到系統(tǒng)的“通道”。
- 當(dāng)應(yīng)用程序使用“通道”時(shí),數(shù)據(jù)會(huì)先被A應(yīng)用“窺視”后,才會(huì)交給操作系統(tǒng)。
監(jiān)控應(yīng)用程序的行為,只需如此“簡單”的三步,并不比“把大象放冰箱里”復(fù)雜。
最后,引用一下“技術(shù)本身并不可恥”的名言,“動(dòng)態(tài)注入”如果能夠合理利用,可以通過獲取用戶的使用習(xí)慣來做一些針對性的體驗(yàn)優(yōu)化,還可以控制一些軟件的自啟動(dòng)和流量使用。然而,相信在這個(gè)浮躁的社會(huì)里,并不是每個(gè)人都像我一樣單純、善良。
對了,再補(bǔ)充一句:該技術(shù)不僅僅適用于安卓系統(tǒng)。
#專欄作家#
給產(chǎn)品經(jīng)理講技術(shù),微信公眾號(pm_teacher),人人都是產(chǎn)品經(jīng)理專欄作家。資深程序猿,專注客戶端開發(fā)若干年,對前端、后臺技術(shù)略懂,熱衷于對新的科技領(lǐng)域的探索。
本文原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,不得轉(zhuǎn)載。
最后一句說得好有道理
沙發(fā)