安卓應用程式滲透測試(九)
在上一篇文章 ofollow,noindex">安卓應用程式滲透測試八 中,我們講解了當app想要與其他app共享資料時,通過content provider發起攻擊和不安全的加密技術,本文我們繼續講解其他攻擊手法。
攻擊安卓貼上板(pasteboard)
安卓提供剪貼簿框架來複制和貼上不同型別的資料,如文字,影象,二進位制流資料或者其他複雜的資料型別。
簡單的文字資料直接儲存在剪貼簿中,而複雜的資料則儲存為一個引用,將要貼上的應用使用content provider可以對這個引用進行解析。
在實現了剪貼簿框架的app內部或不同的app之間可以進行復制貼上。
為了使用剪貼簿,你需要呼叫getSystemService()方法來例項化一個ClipboardManager物件。
“服務呼叫剪貼簿”,服務碼1,2,3分別代表的是getClipboadrText,setClipboardText和hasClipboardText。
服務呼叫剪貼簿 2 s16 thisisinsertedtext(插入的內容)
下面使用銀行app來作為例子,我們從一個app中複製賬號,如圖:
我們可以看到所有程序,我們也可以通過apk名來搜尋我們想看的程序,如圖:
命令:ps | grep ‘insecure’
我們可以使用下面的命令來獲取到複製的賬號:
su (PID) u0_a80 service call clipboard 2 s16 (.apk name) com.android.insecurebank
我們可以看到輸入的內容,也就是app中被複制的內容。能看到明文,這就很不安全了。如果是信用卡,借記卡,PIN,CVV或者是賬號,這就更加嚴重了。
緩解措施
·為了完全不使用剪貼簿,KeePass密碼管理軟體提出了所謂的自動型別。它通過模擬相應的按鍵直接向目標欄位填充。這麼做的優點是沒有通過剪貼簿來傳輸資料。
· 如果要使用剪貼簿來複制貼上密碼時,可以配置KeePass在短時間內自動清除clipboard中的內容。
· 複製密碼時,KeePass會在其主視窗底部顯示一個遞減進度條,使用者可以實實在在的看到超時進度,一旦超時到期(例如15秒或30秒),如果剪貼簿中還包含KeePass資料,KeePass就會立刻刪除剪貼簿的內容(使用者無法再使用剪貼簿歷史管理功能)。
攻擊安卓鍵盤快取
安卓中有一個使用者字典,可以儲存使用者輸入,為了方便以後自動更正使用者的輸入。但是所有其他的app都可以任意訪問這個使用者字典,而沒有進行許可權設定。
在下面的例子中,我們將選擇文字,新增使用者名稱到使用者字典中,如圖:
你可以在使用者字典資料庫中獲取到這個資訊。
使用者字典檔案儲存在/data/data/com.android.providers.userdictionary/databases目錄中
開啟資料庫檔案 sqlite3 user_dict.db
‘select * from words’這條查詢語句會查詢出所有新增到使用者字典的資訊,如圖:
緩解措施
·禁用任何敏感資訊的自動更正功能,不僅是密碼欄位。因為鍵盤可以快取敏感資訊,所以可以恢復。
· 為了提高安全性,可以考慮使用自定義鍵盤(以及PIN輸入),該鍵盤可以禁用快取,還提供了其他的保護措施來防禦惡意軟體。
安卓滲透測試系列其他文章如下: