Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android中利用5.0系統屏幕錄制UI漏洞騙取應用錄制屏幕授權

Android中利用5.0系統屏幕錄制UI漏洞騙取應用錄制屏幕授權

編輯:關於Android編程

一、漏洞分析

今天我們來看一下Android中的屏幕錄制功能帶來的一個漏洞問題,在之前的一篇文章中介紹了關於Android5.0新增的Api來進行錄制屏幕視頻,不了解的同學,可以點擊這裡。當時記得我們在使用這個api的時候,系統會給一個授權提示:

\

這個對話框是系統彈出來的提示消息,主要由兩部分組成,應用的名稱+提示文案,看似是一個很平常的授權對話框,但是這背後卻有這個一個很大的UI漏洞,而且在之前的一篇文章中了解到,這個錄制屏幕功能的危險性還是很大的。那麼這個UI漏洞是啥呢?

其實很簡單,就是Android系統中在彈出對話框的時候,如果內容過多,會采用滾動樣式,來展示全部消息,而不是使用字符省略的方式。那麼這裡就存在一個問題了,如果把應用的名稱故意弄的很長,導致後面一段提示文案:“將開始截取您的屏幕上顯示的所有內容”給抵到底部,只有滑動的時候才能看到,這樣來騙取用戶點擊立即開始。同時再把應用的名稱改成一些銀行或者是社交賬號,支付應用的提示文案,比如:“xx寶新增了特性...點擊立即開始,即可體驗!”,而用戶相信就開始點擊了,當然這裡還需要一個功能,就是監聽系統的TopActivity,當監聽到用戶打開了銀行app或者是社交app的時候,就去申請權限,彈出對話框!

下面通過MediaProjectionManager的源碼來分析一下,授權提示流程:

在使用錄制屏幕功能的時候,去授權頁面調用的是createScreenCaptureIntent方法,獲取授權Intent:

\

源碼了解到了,這裡調用的是MediaProjectionPermissionActivity來進行授權:

\

這裡直接用系統對話框展示了。

 

那麼下面就來演示一個例子,比如現在惡意軟件在後台監聽到了用戶啟動了某某應用app,然後就啟動授權界面:

\

惡意app的名稱為:

\

這就看到了,這些提示信息,對於用戶打開銀行app的時候給與提示感覺還是很正常的,而且一般彈出的提示對話框,用戶不會去滑動看到底部的,而關鍵提示信息就在底部:

\

所以,這裡就是一個UI漏洞,Google在處理這個對話框的時候,沒有使用省略號來做處理,而用滾動方式,但是最重要的提示信息卻被搞到底部了,用戶很難發現,很多用戶就認為很正常按照提示點擊立即開始了,一旦授權了,那麼惡意app就在後台偷偷的錄制你的屏幕,當你輸入賬號和密碼的時候也都是可以被記錄了。在把錄制app發到服務端進行分析。賬號就會被盜取!


二、漏洞產生的原因

上面分析完了這個漏洞,其實理解還是很簡單,就是一個UI漏洞,在關鍵中的提示信息展示的時候,沒有做省略處理,從而把最重要的提示文案給隱藏了。導致用戶被騙取了授權。

該漏洞實際上是由於Google沒有制定合理的Android應用名稱規范導致,綜合表現為如下兩點:
1) 沒有規范應用名稱長度,使得應用名稱可為任意長度;
2) 沒有規范應用名稱字符集,如應用名稱可包含換行符和制表符。

 

三、漏洞修復

那麼關於這個漏洞我們該怎麼修復了呢?

當然Google在後續的6.0系統中進行修復了這個問題,修復之後的效果:

\

采用了省略號代替了,不會把重要的提示信息給隱藏了。那麼對於5.0系統的用戶該怎麼辦呢?這個漏洞依舊存在,這就要求我們開發者做一下工作了,在Android中涉及用戶隱私的Acitivity中(例如登錄,支付等其他輸入敏感信息的界面中)增加屬性:

WindowManager.LayoutParams.FLAG_SECURE

看一下屬性源碼說明:

\

該屬性能防止屏幕被截圖和錄制。這個屬性就是可以防止當前Activity不會被錄制,我們可以做一個案例:

\

還記得上一篇內容中,我們使用MediaProjection進行截圖功能,如果加上了這個屬性,再次截圖,效果如下:

\

看到下面的截圖是一片漆黑,截圖失敗的,而且這時候使用adb shell screencap 命令去截圖也是失敗的:

\

所以從這裡可以看出來,其實adb shell screencap和screenrecord命令底層的實現和MediaProjection是一樣的。

下面再來看看視頻錄制功能:

\

看到了,我們的app,沒有被錄制,也是一片漆黑,這個屬性就是為了防止當前應用被錄制的功能!

所以在5.0的系統中,或者對於銀行app,社交app,支付app等,開發者應該把當前登錄的Activity添加這個屬性是最安全的!如果你沒有添加的話,就加上吧,給自己的app加上一份保險!

四、漏洞總結

到這裡,我們就分析完了這個錄制功能的UI漏洞,下面來總結一下

第一、漏洞產生的原因

因為Google在處理對話框提示的時候,沒有做字符限制,導致一些重要的提示信息被遮擋

第二、漏洞的危險

惡意app利用這個UI漏洞,把自己的app名稱弄得很長,而且在後台監聽用戶打開了一些支付app,銀行app之後,就彈出這個授權對話框,但是因為名稱太長了,重要的提示文案被蓋住了,用戶很容易被騙取授權

第三、漏洞修復

Google在6.0以後進行了修復,使用字符限制功能,但是對於沒有升級到6.0的用戶,這時候對於我們開發者就需要在自己的項目中給Activity添加安全屬性,特別是登錄頁面,這樣就可以防止當前頁面被錄制或者截屏了。

五、總結

Android中5.0好不容易釋放了錄制屏幕功能的api,結果就弄出這個漏洞,也是服了Google了,本來錄制功能就非常危險,卻在授權的時候,還有這麼一個UI漏洞,讓用戶被惡意app騙取授權,在後台偷偷錄制桌面信息了,人生處處是坑,Android處處是漏洞!

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved