Post by 南山android
安天移动安全团队最近发现了一个使用Xposed恶意插件来实现隐藏和假装本身的恶意样本,并经过HOOK Activity相关的系统API,来获取重要Activity上的用户输入,如支付宝、手机银行、QQ等登陆界面的帐号和密码。数据库
Xposed框架是一款能够在不修改APK的状况下影响程序运行(修改系统)的框架服务,基于它能够制做出许多功能强大的模块,且在功能不冲突的状况下同时运做。(需root权限)api
1、隐藏本身。安全
HOOK–android.app.ApplicationPackageManager->getInstalledApplicationsapp
HOOK–android.app.ApplicationPackageManager->queryIntentActivities框架
HOOK–android.app.ActivityManager->getRunningServicesspa
HOOK–android.app.ActivityManager->getRunningAppProcesses插件
在上述api调用完成后,即afterHookedMethod中,将过滤下列相关信息。orm
应用自己的信息”com.android.os.backup”;支付宝
提权应用的信息”eu.chainfire.supersu”、”com.koushikdutta.superuser”、”com.qihoo.permroot”;
xposed框架应用”de.robv.android.xposed.installer”;
如getInstalledApplications被hook后的处理方法:
2、假装成系统应用。
HOOK–getPackagesForUid
在经过getPackagesForUid获取指定id的包名时,hook该api方法后,将”com.android.os.back”替换成”android”,假装成系统应用。
3、干涉应用权限的检查。
HOOK–android.app.ApplicationPackageManager->checkPermission
HOOK–android.app.ContextImpl->checkPermission
hook了两处权限检查,只要是qihao360的权限检查,则一概拦截,而对该应用自己的权限检查,则所有放行。
4、获取Activity中EditText输入的内容。
HOOK–android.widget.TextView->setInputType
HOOK–android.app.Activity->onPause
hook住setInputType方法后,将触发这个操做的类名保存下来。
HOOK住Activity->onPause方法后,在确认有EditText输入操做发生后,将会获取该Activity所属于的包名、标题等信息,在进一步的操做中会继续获取EditText中的输入内容和Hint内容,而后保存到数据库,等待上传。
经过这种方式,能够获取如支付宝、手机银行、QQ等重要应用中的帐户信息。
该样本利用Xposed恶意插件实现隐藏、假装,并窃取重要Activity的输入信息,达到了以低成本低开发难度来实现更多高难度的技术及行为。用户能够下载安装AVL Pro对该类木马进行检测和查杀,AVL Pro实时防御,帮助你们摆脱病毒营造良好手机环境!