程序員冒死揭露黑產系列之:通道劫持與動態注入

2 評論 16783 瀏覽 35 收藏 5 分鐘

360“又”被小米下架了,孰是孰非這里暫且不表,不過在看到小米的聲明中指控360“在用戶并不知情的情況下靜默執行Root刷機行為,篡改MIUI系統簽名,植入非官方的系統應用”后,不禁感慨,終于還是有人突破了底線。

說到Root,使用過安卓手機的朋友們一定是耳熟能詳,肯定也有不少應用程序在大家的手中被賦予了Root權限。雖然我們使用Root權限的目的可能只是為了卸載內置應用、apk自動安裝、管理后臺進程或者限制后臺流量,然而你不知道的是,在你點擊“授權”的一瞬間,你可能已經開啟了“裸奔”模式,下面請同學們繼續拿出小板凳坐好,聽我來簡單介紹下這個“裸奔”模式的開啟原理。

一個App,無論復雜如微信還是簡單如圖片查看器,他們都需要遵循系統對應的“開發框架”,獲取系統提供的能力,來完成自己產品對應的功能。如啟動,獲取用戶的操作,發送網絡數據等?!伴_發框架”定義了一些app獲取系統能力的“通道”,app通過這些“通道”就可以很方便的使用系統對應的能力。在這里,應用程序和操作系統之間的關系可以抽象成下圖:

2016-01-10-root-1

我們發送的每一條信息,輸入的每一個密碼,分享的每一條說說,拍攝的每一張照片都需要經過這個“通道”,由操作系統處理后才能完成。

很明顯,“通道”是實現功能的“必經之路”,如果“通道”被劫持、篡改,我們的敏感信息就很有可能被暴露。然而很不幸的是,這種劫持、篡改通道的技術已經很成熟了,一般我們都稱它為“動態注入”。在被注入后,應用程序與操作系統間的“通道”就會變成下圖:

2016-01-10-root-2

也就是說所有的數據都會被某個“其他應用”“窺視”一遍,然后才會到達系統。

如果你的手機可以獲得Root權限,并且手機上安裝了某個具有“動態注入”能力的“其他應用”A,那么,當你使用應用程序時,應用程序的啟動和運行可能會經歷下面的過程:

  1. 應用程序啟動后,A會使用“動態注入”技術,將自己的“窺視”代碼注入到應用程序的進程中。
  2. “窺視”代碼被注入后,會針對性的攔截應用程序到系統的“通道”。
  3. 當應用程序使用“通道”時,數據會先被A應用“窺視”后,才會交給操作系統。

監控應用程序的行為,只需如此“簡單”的三步,并不比“把大象放冰箱里”復雜。

最后,引用一下“技術本身并不可恥”的名言,“動態注入”如果能夠合理利用,可以通過獲取用戶的使用習慣來做一些針對性的體驗優化,還可以控制一些軟件的自啟動和流量使用。然而,相信在這個浮躁的社會里,并不是每個人都像我一樣單純、善良。

對了,再補充一句:該技術不僅僅適用于安卓系統。

#專欄作家#

給產品經理講技術,微信公眾號(pm_teacher),人人都是產品經理專欄作家。資深程序猿,專注客戶端開發若干年,對前端、后臺技術略懂,熱衷于對新的科技領域的探索。

本文原創發布于人人都是產品經理,未經許可,不得轉載。

更多精彩內容,請關注人人都是產品經理微信公眾號或下載App
評論
評論請登錄
  1. 最后一句說得好有道理

    回復
  2. 沙發

    來自上海 回復