Android安全——Activity劫持
一、activity劫持簡介
DEFCON-19上公布的https://www.trustwave.com/spiderlabs/advisories/TWSL2011-008.txt
android運行時,會在很多activity中進行切換,它自身維護著一個activity的歷史棧,用于在用戶點擊back時,恢復前一個activity,棧頂指向當前顯示的activity。
http://developer.android.com/guide/topics/fundamentals/tasks-and-back-stack.html
在我們使用intent開啟activity時,intent有一個選項FLAG_ACTIVITY_NEW_TASK,可以使得這個activity位于棧頂
http://developer.android.com/reference/android/content/Intent.html
#FLAG_ACTIVITY_NEW_TASK
如果我們注冊一個receiver,響應android.intent.action.BOOT_COMPLETED,使得開啟啟動一個service;這個service,會啟動一個計時器,不停枚舉當前進程中是否有預設的進程啟動,如果發現有預設進程,則使用FLAG_ACTIVITY_NEW_TASK啟動自己的釣魚界面,截獲正常應用的登錄憑證。
二、實例
androidmanifest.xml
HijackReceiver.java用于開機啟動HijackService
HijackService.java用于判斷正常應用是否啟動,如果啟動則開啟劫持activity
AlipayLogin.java是偽造的界面,用于獲取用戶憑證并發送到指定地址,并返回正常應用
演示效果如下:
啟動正常應用
這時惡意的后臺service啟動了偽造的activity
當用戶輸入憑證之后
惡意activity記錄下憑證,并跳回到正常應用
在遠端服務器已經記錄下了用戶憑證