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