任意版本界面劫持
界面劫持攻击分为界面劫持和钓鱼攻击两部分。恶意程序会对目标应用的客户端进行监控,当应用客户端程序调用Acitivity组件显示 窗口,且该窗口界面组件是恶意程序预设的攻击对象,恶意程序就会立即启动自己的仿冒界面使之替换或覆盖在客户端程序界面之上,这就是界面劫持。恶意攻击者在发动界面劫持后,用户所面对并操作的其实已经是被替换后的仿冒页面,这意味着用户在毫无察觉的情况下将自己的账号、密码等信息输入到了仿冒界面中,这些数据最终会返回到恶意程序的服务器里,这个过程便是钓鱼攻击。
我们安卓APP检测本身就有界面劫持的检测项目,检查是否存在Activity界面劫持,确认app是否能够发现被劫持并提示用户。具体的效果检测如下:
(这里我们使用的工具是一个专门用来进行界面劫持的工具ActivityHijack.apk)
但是在检测中发现了一个特殊的问题,就是这款工具,针对于Android5.0版本以下的系统可以轻松的对app进行界面劫持,但是针对于Android5.0版本以上的系统根本无法对任何app进行劫持。所以本文章就针对于该问题进行讲解,并实现无论任何版本进行界面劫持。
界面劫持的原理:
首先Activity相当于一个与用户交互的界面。而Activity的调度是交由Android系统中的ActivityManagerService