安卓activity劫持测试工具开发

简介: 安卓activity劫持测试工具开发

一、前言


在日常对Android apk安全测试过程中,有一个测试用例是界面劫持(activity劫持,安卓应用的界面是一层一层的,后启动的应用会在栈顶,显示在最前面),就是恶意apk可以不停枚举进程是否存在要劫持的目标进程。


如果发现了目标进程,就将自己的欺骗页面启动;


如果目标apk未对界面劫持进行反劫持检测,那么用户就会受到欺骗攻击;


如果一个恶意应用在用户启动银行app时,启动自身界面,模拟成银行的登录界面,那么在用户没有察觉的情况下,可以直接偷走用户输入的账号密码。


那么在实际检测该漏洞的时候,可以利用工具逆向、扫描源代码进行分析,查看代码在关键位置是否进行了一些报警,如toast。


本文实现的方法为直接使用一个测试的apk对目标应用进行界面覆盖,观察目标应用是否进行了报警。


二、程序开发


主要源码如下:

Package com.test.uihijack;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;  //引入Toast
import android.content.Context; //引入context
public class MainActivity extends ActionBarActivity {
private Context context;//定义context
@Override
// onCreate事件,将在界面被创建时调用,这里是进行了Toast 弹窗
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        context=this;//context赋值为当前界面
        setContentView(R.layout.activity_main);
        //Toast
        final Toast t = Toast.makeText(context,"界面劫持测试",  Toast.LENGTH_SHORT);// ms
        //Toast t = Toast.makeText(context,"happy new year", Toast.LENGTH_LONG);
        //二〇一九年十一月十七日 16:44:21
        //t.setGravity(Gravity.CENTER,0,0);
        t.show();
//        new Handler().postDelayed(new Runnable() {
//            @Override
//            public void run() {
//                t.cancel();
//            }
//        },600000);
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        // 这里是根据UI配置的xml文件来加载页面UI   
getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
    @Override
public boolean onOptionsItemSelected(MenuItem item) {
    //界面上的一些元素设置
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
}

AndroidManifest.xml:


9cda84eaad0ad32cdce099e6ac25674b_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png


这时候的程序运行是看不出来劫持效果的,需要将程序的界面设置为透明,
可以清晰的看到被下层被覆盖的应用,
这里我是在styles.xml文件中利用样式配置将界面设置为透明:

8b59d80ff8bc46c4aa18400e705ac6fe_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png


三、使用方法

打包完成后,在测试apk开启的情况下,使用drozer来调用MainActivity:
runapp.activity.start--componentcom.test.uihijack com.test.uihijack.MainActivity
效果图如下:

9ad798c80e903fdcee629bbdcca78aec_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

我们的应用覆盖在drozer.apk应用之上了。


四、安全修复

测试到缺陷后,开发方需要对程序进行修复,修复方法也很简单,

就是也去判断当前应用程序是否位于栈顶 (是否显示在前面),

如果在后台了,就进行一些如toast提示、震动、通知弹窗等等,告诉用于当前应用已经在后台运行了。


五、附录

源码地址:https://github.com/aloswoya/android_app


相关文章
|
7月前
|
移动开发 前端开发 Android开发
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
1308 12
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
7月前
|
移动开发 JavaScript 应用服务中间件
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
967 5
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
7月前
|
移动开发 Rust JavaScript
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
1067 4
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
8月前
|
开发工具 Android开发
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
836 11
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
|
7月前
|
移动开发 Android开发
【03】建立隐私关于等相关页面和内容-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【03】建立隐私关于等相关页面和内容-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
348 0
|
8月前
|
Java 开发工具 Maven
【01】完整的安卓二次商业实战-详细的初级步骤同步项目和gradle配置以及开发思路-优雅草伊凡
【01】完整的安卓二次商业实战-详细的初级步骤同步项目和gradle配置以及开发思路-优雅草伊凡
1046 6
|
机器学习/深度学习 人工智能 并行计算
AI部署架构:A100、H100、A800、H800、H20的差异以及如何选型?开发、测试、生产环境如何进行AI大模型部署架构?
AI部署架构:A100、H100、A800、H800、H20的差异以及如何选型?开发、测试、生产环境如何进行AI大模型部署架构?
AI部署架构:A100、H100、A800、H800、H20的差异以及如何选型?开发、测试、生产环境如何进行AI大模型部署架构?
|
8月前
|
存储 测试技术 API
数据驱动开发软件测试脚本
今天刚提交了我的新作《带着ChatGPT玩转软件开发》给出版社,在写作期间跟着ChatGPT学到许多新知识。下面分享数据驱动开发软件测试脚本。
318 0
|
10月前
|
安全 数据库 Android开发
在Android开发中实现两个Intent跳转及数据交换的方法
总结上述内容,在Android开发中,Intent不仅是活动跳转的桥梁,也是两个活动之间进行数据交换的媒介。运用Intent传递数据时需注意数据类型、传输大小限制以及安全性问题的处理,以确保应用的健壯性和安全性。
630 11
|
11月前
|
传感器 人工智能 JavaScript
鸿蒙开发:DevEcoTesting中的稳定性测试
DevEcoTesting主要的目的也是用于软件的测试,可以让开发者无需复杂的配置,即可一键执行测试任务,同时提供了测试报告和分析,无论是对于开发者还是测试同学来说,都是一个非常方便的工具。
335 3
鸿蒙开发:DevEcoTesting中的稳定性测试

热门文章

最新文章