Kate Li (Taiwan)的部落格

首頁

詳解android app allowbackup配寘帶來的風險

作者 shomer 時間 2020-02-25
all

前言

筆者在使用自己編寫的Drozer模塊對國內流行的安卓手機應用進行自動化掃描後發現有大量涉及用戶財產和隱私的流行安卓應用存在Android AllowBackup漏洞,已測試成功受到漏洞影響的應用包括:新浪微博,百度雲網盤,美團,大眾點評等等。

漏洞案例

先來看一個情景案例,某IT男一直暗戀部門某女神,一天女神手機太卡了找IT男幫助清理手機空間,IT男高興地答應女神兩分鐘搞定,屁顛屁顛的跑到自己電腦旁邊連上手機,女神在一邊呆呆的看著IT男敲了幾行程式碼然後在手機上點了幾下,最後果然兩分鐘不到就搞定了,在女神謝著離開後,IT男露出了WS的笑容。

沒錯,他成功了盜到了女神的微博帳號,終於不用問同事女神的微博帳號是多少了~當然這不是結局,一天晚上睡覺時,他看了女神的微博私信後心突然碎了。到底發生了什麼,這背後有啥不可告人的秘密?且看本文詳細分析。

漏洞背景

在穀歌2010年發佈Android 2.2 Froyo (凍酸嬭)系統中,穀歌引入一個了系統備份的功能,允許用戶備份系統應用和協力廠商應用的apk安裝包和應用數據,以便在刷機或者資料丟失後恢復應用。協力廠商應用開發者需要在應用的AndroidManifest.xml檔案中配寘allowBackup標誌(默認為true)來設定應用數據是否能能够被備份或恢復。當這個標誌被設定為true時應用程序數據可以在手機未獲取ROOT的情况下通過adb調試工具來備份和恢復,這就允許惡意攻擊者在接觸用戶手機的情况下在短時間內啟動手機USB調試功能來竊取那些能够受到AllowBackup漏洞影響的應用的數據,造成用戶隱私洩露甚至財產損失。

使用反編繹工具JEB查看weibo用戶端manifest配寘:

在之前的案例正是因為新浪微博安卓用戶端(最新版)AndroidManifest.xml並沒有配寘:

導致女神手機中的微博用戶端數據可以在短時間內通過ADB調試備份到電腦中最後恢復到IT男手機,然後IT男以後每天就可以用女神的帳號看女神發了啥微博和私信內容。當然可利用的場景當然不止於此,想想,如果存在漏洞的是你的團購應用呢(看看有啥團購券我先來用吧),當然還有你的網盤應用(說不定可以看女神的私密照~),哦,對了連社交和理財應用也不能放過(女神們還敢把手機給IT男清理不)。

檢測方法

1)手工檢測

測試環境:

測試流程:

2)線上檢測

目前國內三個主要的Android應用漏洞線上檢測系統均能較好的檢測此漏洞,建議普通用戶和開發者使用騰訊金剛稽核系統上傳應用安裝包進行檢測。

1.騰訊金剛稽核系統檢測結果(http://service.security.tencent.com/kingkong)

2.阿裡聚安全檢測結果(http://jaq.alibaba.com/)

3.360捉蟲獵手檢測結果(http://appscan.360.cn/)

影響範圍

現時測試了手上一臺安裝有Android 4.1.1系統的魅族MX2手機和安裝有Android 4.4.2系統的魅族MX4手機均測試成功,理論上影響Android 2.2-Android 4.4系統中存在風險的應用。

建議評級:   儘管此漏洞的利用條件較高,需要物理接觸,但此漏洞對涉及用戶財產與隱私類的APP來說殺傷力較大,建議廠商視情况修復。

修復方案

開發者如要避免應用數據洩露的風險,應當在設定AndroidManifest.xml檔案中配寘android:allowBackup=“false”,此時應用程序數據無法被備份和恢復。或者在應用啟動時檢測手機硬體和網路環境是否改變,如果存在异常則強制退出或重新登入。

編寫Drozer模塊實現漏洞自動化掃描

Drozer是MWR InfoSecurity公司開發的一款安卓應用安全評估框架,其社區版開源在Github上(https://github.com/mwrlabs/drozer)。對於從事安卓應用漏洞測試的安全研究者們來說,他們可以使用drozer提供的框架自己編寫模塊(Module)方便對的安卓應用進行漏洞檢測與利用。

以下是自己編寫一個Drozer Module,用於自動化批量檢測手機中的哪些應用存在AllowBackup風險。

運行截圖:

注意事項:   此drozermodule檢測原理是匹配應用manifest檔案中是否配寘了allowBackup=“false”來判斷應用數據是否可備份和恢復,實際測試會發現一部分應用能成功備份和恢復但就是無法登入(比如手機淘寶和京東客戶端),這說明廠商已經考慮到此設定可能帶來的安全風險,並做出了相應限制,此類應用是安全的。

編寫腳本實現自動攻擊和利用

如上文所述,整個漏洞測試過程中需要輸入不少命令,對於手速慢和不習慣敲命令的人來說還是略麻煩了點,所以我們可以編寫Python腳本來實現自動化攻擊和利用。

運行截圖:

應用備份生成的.ab檔案其實是可以解包的,解包後的目錄結構如下:

分別對應了androidmanifest.xml,apk安裝包,database目錄,files目錄,其它目錄以及shared_prefs目錄,我們可以通過解包來對竊取的應用數據進一步分析。解包的python腳本如下:

更多猥瑣利用利用方法

國外安全公司PALO ALTO早在2014年8月就發過研究報告稱超過94%的流行應用存在此漏洞,大牛Claud Xiao更是在去年Hitcon會議分享過與此有關的研究,如何讓這個被很多人廠商視如雞肋的漏洞有為猥瑣的利用呢?這裡提兩點自己想到的,歡迎大家一起來交流:)

1)在APP漏洞裏不安全的內部存儲絕對是十分常見的漏洞,比如密碼明文儲存。筆者曾在測試某金融類APP時發現該APP在應用內部(/data/data/com.xx.xx/shared_prefs/)存儲了明文的手勢密碼(如下圖中的lock.xml),正常情况下如果用戶手機是未ROOT的,就算明文存儲也沒法獲取到,漏洞影響相對較小,而繼而我發現該理財APP同時存在allowbackup漏洞,也就是說我可以先將該應用資料備份到另一臺已經獲取ROOT手機,然後我不僅獲得了用戶帳號登入許可權,連手勢密碼我都可以直接修改成任意(伺服器端沒做驗證)或者相同(伺服器端有驗證)。還有一種情况是應用資料庫中(/data/data/com.xx.xx/database/)直接存儲了用戶的登錄帳號和密碼那相當於直接利用allowbackup盜得了使用者帳戶密碼。

2)LastPass(一個用戶密碼管理工具)曾經被發現存在通過備份到其它手機來清除手勢密碼來登入獲取用戶儲存在LastPass上的所有密碼的漏洞(CVE-2013-5113 and CVE-2013-5114)。發散一下思維,儲存用戶其它密碼的還有哪些應用?對!瀏覽器,那些習慣了記住密碼的用戶很可能就會被存在漏洞的瀏覽器賣了。其它就看大家的更猥瑣的發揮了~

參考資料: