前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【Android 插件化】基于插件化的恶意软件的加载策略分析 ( 自定义路径加载插件 | 系统路径加载插件 | 用户同意后加载插件 | 隐藏恶意插件 )

【Android 插件化】基于插件化的恶意软件的加载策略分析 ( 自定义路径加载插件 | 系统路径加载插件 | 用户同意后加载插件 | 隐藏恶意插件 )

作者头像
韩曙亮
发布于 2023-03-29 10:21:21
发布于 2023-03-29 10:21:21
87300
代码可运行
举报
运行总次数:0
代码可运行

文章目录

一、自定义路径加载插件


插件化应用中 , 宿主应用 加载 插件 APK , 需要获取该插件 APK 文件路径 , 可以在 Assets 资源目录 , 也可以在 Android 内置存储 或 SD 卡存储控件中 ;

恶意插件 , 解密或从网络上下载后 , 也需要存放在一个文件目录中 ;

常见的自定义路径如下 :

分析上述 API 调用 , 搜索 APK 文件 , 并判断该文件是否是使用 插件化引擎 安装的插件 ;

这里的安装指的是将插件 APK 拷贝到指定的文件目录 ;

二、系统路径加载插件


恶意软件 会 诱导用户加载 系统中安装的 恶意软件 , 宿主应用没有向该系统路径写入数据的权限 ;

加载插件流程 : 首先 , 要请求获取包列表 ( Package List ) , 向用户显示该列表 ; 然后 , 引导用户选择列表中的应用执行 ; 最后 , 宿主应用可以从系统数据空间中选择 APK 文件 , 拷贝到自己的存储空间 , 也就是安装了该插件 ;

调用 PackageManager.getInstalledPackages() 方法 , 可以获取已安装的应用程序 , 可以从调用该方法为起点进行分析 , 继续向后分析 , 查看哪些应用被展示给了用户 , 恶意应用就在这些应用中 ;

三、用户同意后加载插件


基于插件化的 良性应用 , 如果要装载插件 , 需要弹出弹窗 , 请求用户同意 , 用户同意后 , 才能安装插件 ;

恶意应用 安装插件时 , 基本都是静默安装 , 不经过用户同意 , 并且安装后尽可能隐藏插件 ;

这里的安装插件指的是将插件存放在指定的位置 ;

定位插件安装界面 , 如果发现插件安装操作在 Activity 生命周期中进行操作 , 则说明该安装操作肯定是静默安装 , 没有征得用户同意 ;

如果插件安装界面 , 插件安装操作 , 都在 onClick 等 UI 交互方法中 , 说明该安装操作不是静默安装 ;

程序启动的 Activity , 一般都带有 android.intent.category.LAUNCHER 标识 ;

四、隐藏恶意插件


安装 良性应用 后 , 一般会让用户选择是否将应用图标添加到 Launcher 界面 , 如果选择是 , 则可以在主界面看到安装后的应用图标 ;

安装 恶意应用 后 , 恶意应用大多会将自己隐藏 , 并且在后台运行 ;

① 隐藏图标 : 恶意软件不在 Launcher 主界面显示应用图标 , 以及 Activity 界面 , 用户在 UI 界面中看不到该应用的任何信息 ;

修改清单文件 , 去掉

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<category android:name=”android.intent.category.LAUNCHER/>

信息 , 就可以隐藏应用图标 ;

如下设置 , 也可以隐藏应用图标 :

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
getPackageManager().setComponentEnabledSetting(
	getComponentName(), 
	PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
 	PackageManager.DONT_KILL_APP
);

② 后台运行 : 恶意软件 作为服务在后台运行 ;

③ 界面透明 : 恶意软件 设置 FLAG_NOT_TOUCH_MODAL 标识 , 可以使主要布局透明 , 并且移除状态栏 , 标题栏 ;

分析 宿主软件 中 , 是否存在上述隐藏插件应用的行为 ;

参考 : VAHunt: Warding Off New Repackaged Android Malware in App-Virtualization’s Clothing

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-10-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【Android 插件化】基于插件化引擎的“恶意应用“与“良性应用“区别 | 恶意插件化应用特征
在 【Android 插件化】VAHunt 引入 | VAHunt 原理 | VAHunt 识别插件化引擎 和 【Android 插件化】VAHunt 检测插件化引擎的具体细节 博客中 , 简单介绍了如何检测插件化引擎 ;
韩曙亮
2023/03/29
3360
【Android 插件化】基于插件化引擎的“恶意应用“与“良性应用“区别 | 恶意插件化应用特征
【Android 插件化】恶意软件判定规则 | 恶意软件的范围定义
在 【Android 插件化】基于插件化的恶意软件的加载策略分析 ( 自定义路径加载插件 | 系统路径加载插件 | 用户同意后加载插件 | 隐藏恶意插件 ) 博客中介绍了
韩曙亮
2023/03/29
7670
【Android 插件化】“ 插桩式 “ 插件化框架 ( 获取插件入口 Activity 组件 | 加载插件 Resources 资源 )
【Android 插件化】插件化简介 ( 组件化与插件化 ) 【Android 插件化】插件化原理 ( JVM 内存数据 | 类加载流程 ) 【Android 插件化】插件化原理 ( 类加载器 ) 【Android 插件化】“ 插桩式 “ 插件化框架 ( 原理与实现思路 ) 【Android 插件化】“ 插桩式 “ 插件化框架 ( 类加载器创建 | 资源加载 ) 【Android 插件化】“ 插桩式 “ 插件化框架 ( 注入上下文的使用 ) 【Android 插件化】“ 插桩式 “ 插件化框架 ( 获取插件入口 Activity 组件 | 加载插件 Resources 资源 ) 【Android 插件化】“ 插桩式 “ 插件化框架 ( 运行应用 | 代码整理 )
韩曙亮
2023/03/29
9940
【Android 插件化】“ 插桩式 “ 插件化框架 ( 获取插件入口 Activity 组件 | 加载插件 Resources 资源 )
反插件化:你的应用不是一个插件(转)
Android插件化技术是应用程序级别的一项创新型技术,它的初衷主要是用于热更新,减少APK安装包的大小,以及解决65535方法数量的限制。从技术层面来说,Android插件化技术与传统意义上的动态加载还不一样,因为它在不需要声明任何特定的接口或组件的情况下,它就在可以加载或者启动整个应用程序(比如apk文件)。Android插件化技术的主要应用场景是,在同一个设备上启动多个应用的实例,也就是我们常说的"双开"。根据我们的观察,诞生Android插件化的的两个主要动机是:1是在社交APP中的多账户需求,2是在应用商店中即时启动应用程序。上面这两种应用场景均来自用户的需求。比如,一个用户既拥有Twitter的个人账户,也有一个拥有Twitter的企业账户,而又不想来回注销切换账户并重复登录,并且不想使用两个手机。Google Play中有一个很受欢迎的APP——"Parallel Space",就是采用的这项技术,它的安装量已经有5000万次。
隔壁老李头
2018/10/11
1.8K0
【Android 插件化】现有的针对插件化恶意应用的解决方案 | 插件化应用开发推荐方案
SafetyNet Attestation API 是 Google 推出的 , 针对 Android 应用被滥用的 API , 可以有效避免 Android 应用运行在 root 后的手机 , 虚拟机 , hook 调试环境中 , 这样进一步降低了软件被逆向的风险 ;
韩曙亮
2023/03/29
3980
【Android 插件化】VAHunt 引入 | VAHunt 原理 | VAHunt 识别插件化引擎
从应用开发者角度出发 , 保护自己开发的应用不被恶意开发者使用插件化虚拟引擎二次打包 , 并植入恶意代码插件 , 避免自己的应用运行在插件化引擎中 , 是很有必要的 ;
韩曙亮
2023/03/29
2670
【Android 插件化】插件化技术弊端 ( 恶意插件化程序的解决方向 | 常用的插件化虚拟引擎 )
在之前的 Android 应用中 , 部分黑客将应用破解 , 植入自己的恶意代码 , 然后进行重打包 , 再上传到应用市场或其它传播渠道 ;
韩曙亮
2023/03/29
9590
【Android 插件化】静态分析应用 APK 安装包是否使用了插件化引擎 ( 虚拟化引擎运行特点 | 恶意软件特点 )
宿主应用 中 , 首先在 AndroidManifest.xml 中 , 定义了若干占坑的 “桩” 组件 , 这些组件的作用是为了欺骗 ActivityManagerService 准备的 , 如果给 AMS 传入没有在清单文件中注册过得组件 , 直接就报错了 ;
韩曙亮
2023/03/29
3430
【Android 插件化】“ 插桩式 “ 插件化框架 ( 运行应用 | 代码整理 )
【Android 插件化】插件化简介 ( 组件化与插件化 ) 【Android 插件化】插件化原理 ( JVM 内存数据 | 类加载流程 ) 【Android 插件化】插件化原理 ( 类加载器 ) 【Android 插件化】“ 插桩式 “ 插件化框架 ( 原理与实现思路 ) 【Android 插件化】“ 插桩式 “ 插件化框架 ( 类加载器创建 | 资源加载 ) 【Android 插件化】“ 插桩式 “ 插件化框架 ( 注入上下文的使用 ) 【Android 插件化】“ 插桩式 “ 插件化框架 ( 获取插件入口 Activity 组件 | 加载插件 Resources 资源 ) 【Android 插件化】“ 插桩式 “ 插件化框架 ( 运行应用 | 代码整理 )
韩曙亮
2023/03/29
5910
【Android 插件化】“ 插桩式 “ 插件化框架 ( 运行应用 | 代码整理 )
Android插件化浅析
插件化是2016年移动端最火爆的几个名词之一,目前淘宝、百度、腾讯等都有成熟的动态加载框架,包括apkplug, 本篇博客就来探讨一下插件化设计。本博客主要从以下几个方面对插件化进行解析:
老马的编程之旅
2022/06/22
6130
Android插件化浅析
Android插件化学习之路(七)之DL插件开发该注意的坑
随着前面几篇博客的学习,相信大家对插件化已经有了比较清楚的认识,然而如何将插件化应用到项目中?网上已经有一些优秀的开源框架,这里要向大家推荐一个开源的动态加载框架DL, 该项目由任玉刚大神发起的,项目地址: https://github.com/singwhatiwanna/dynamic-load-apk,该项目结构图如下:
老马的编程之旅
2022/06/22
5060
Android插件化学习之路(七)之DL插件开发该注意的坑
BroadcastReceiver插件化解决方案
1.静态广播和动态广播仅区别于注册方式的不同。静态广播的注册信息保存在PMS中,动态广播的注册信息保存在AMS中
用户3112896
2019/09/26
8310
Android 插件化与测试
插件化技术最初源于免安装运行apk的想法,支持插件化的app可以在运行时加载和运行插件,这样便可以将app中一些不常用的功能模块做成插件,一方面减小了安装包的大小,另一方面可以实现app功能的动态扩展。小编所在项目,近期有插件相关测试需求,为了更深入的进行测试,进行了学习。
用户5521279
2019/08/19
1.2K0
Android 插件化与测试
浅谈 Android 插件化原理
想必大家都知道,在 Android 系统中,应用是以 Apk 的形式存在的,应用都需要安装才能使用。但实际上 Android 系统安装应用的方式相当简单,其实就是把应用 Apk 拷贝到系统不同的目录下、然后把 so 解压出来而已。
Rouse
2021/02/23
9860
【Android 插件化】使用插件化引擎对应用进行重打包的恶意软件特征 ( 检测困难 | 成本低 | 恶意插件可更换 | 容易传播 )
恶意软件开发者 , 开发一个插件化 宿主软件 , 将 APK 安装包直接以插件形式运行 , 同时还会将恶意代码放在另外一个插件中 ;
韩曙亮
2023/03/29
4180
Android插件化原理解析
在解决插件中组件的生命周期,通常的做法是通过 Hook相应的系统对象,实现欺上瞒下,后面将通过Activity的插件化来进行讲解。
用户1205080
2019/02/26
9070
android插件开发机制
插件机制实质上就是由主体程序定义接口,然后由插件去实现这些接口,以达到功能模块化。Android系统是基于Linux内核的,其安全机制也继承了Linux的特性,再加上android framework没有提供插件化编程的接口,使得在android上做插件开发显得很困难。经过与同事的研究和讨论,想到了一种在android上做开发插件的方法。下面直接通过一个demo来说明。 Step1:定义主程序中的接口。 public interface MyInterface {   public void te
xiangzhihong
2018/01/30
8150
android插件开发机制
【Android 插件化】使用 PluginKiller 帮助应用开发者规避发布的 APK 安装包被作为插件的风险 ( 验证应用是否运行在插件化引擎中 )
在上一篇博客 【Android 插件化】插件化技术弊端 ( 恶意插件化程序的解决方向 | 常用的插件化虚拟引擎 ) 中 , 介绍了插件化的弊端 , DroidPlugin 和 VirtualApp 被用于制作恶意软件 , 黑客利用这两个插件化框架将 APK 文件封装到虚拟机引擎中 , 冒充被封装的 APK ;
韩曙亮
2023/03/29
7870
插件化框架android-pluginmgr全解析
阅读须知:阅读本文的童鞋最好是有过插件化框架使用经历或者对插件化框架有过了解的。前方高能,大牛绕道。
俞其荣
2022/07/28
1.3K0
插件化框架android-pluginmgr全解析
RePlugin 插件化-内置加载
说明:meta-data下的name是包名+name,包名+version.var
cMusketeer
2018/06/20
5670
推荐阅读
【Android 插件化】基于插件化引擎的“恶意应用“与“良性应用“区别 | 恶意插件化应用特征
3360
【Android 插件化】恶意软件判定规则 | 恶意软件的范围定义
7670
【Android 插件化】“ 插桩式 “ 插件化框架 ( 获取插件入口 Activity 组件 | 加载插件 Resources 资源 )
9940
反插件化:你的应用不是一个插件(转)
1.8K0
【Android 插件化】现有的针对插件化恶意应用的解决方案 | 插件化应用开发推荐方案
3980
【Android 插件化】VAHunt 引入 | VAHunt 原理 | VAHunt 识别插件化引擎
2670
【Android 插件化】插件化技术弊端 ( 恶意插件化程序的解决方向 | 常用的插件化虚拟引擎 )
9590
【Android 插件化】静态分析应用 APK 安装包是否使用了插件化引擎 ( 虚拟化引擎运行特点 | 恶意软件特点 )
3430
【Android 插件化】“ 插桩式 “ 插件化框架 ( 运行应用 | 代码整理 )
5910
Android插件化浅析
6130
Android插件化学习之路(七)之DL插件开发该注意的坑
5060
BroadcastReceiver插件化解决方案
8310
Android 插件化与测试
1.2K0
浅谈 Android 插件化原理
9860
【Android 插件化】使用插件化引擎对应用进行重打包的恶意软件特征 ( 检测困难 | 成本低 | 恶意插件可更换 | 容易传播 )
4180
Android插件化原理解析
9070
android插件开发机制
8150
【Android 插件化】使用 PluginKiller 帮助应用开发者规避发布的 APK 安装包被作为插件的风险 ( 验证应用是否运行在插件化引擎中 )
7870
插件化框架android-pluginmgr全解析
1.3K0
RePlugin 插件化-内置加载
5670
相关推荐
【Android 插件化】基于插件化引擎的“恶意应用“与“良性应用“区别 | 恶意插件化应用特征
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验