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

Posted 韩曙亮

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 插件化基于插件化的恶意软件的加载策略分析 ( 自定义路径加载插件 | 系统路径加载插件 | 用户同意后加载插件 | 隐藏恶意插件 )相关的知识,希望对你有一定的参考价值。





一、自定义路径加载插件



插件化应用中 , 宿主应用 加载 插件 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 界面中看不到该应用的任何信息 ;

修改清单文件 , 去掉

<category android:name=”android.intent.category.LAUNCHER” />

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

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

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

以上是关于Android 插件化基于插件化的恶意软件的加载策略分析 ( 自定义路径加载插件 | 系统路径加载插件 | 用户同意后加载插件 | 隐藏恶意插件 )的主要内容,如果未能解决你的问题,请参考以下文章

Android 插件化基于插件化引擎的“恶意应用“与“良性应用“区别 | 恶意插件化应用特征

Android 插件化多开原理 | 使用插件化技术的恶意应用 | 插件化的其它风险 | 应用开发推荐方案

Android 插件化使用插件化引擎对应用进行重打包的恶意软件特征 ( 检测困难 | 成本低 | 恶意插件可更换 | 容易传播 )

Android 插件化插件化技术弊端 ( 恶意插件化程序的解决方向 | 常用的插件化虚拟引擎 )

Android 插件化VAHunt 引入 | VAHunt 原理 | VAHunt 识别插件化引擎

Android 插件化使用 PluginKiller 帮助应用开发者规避发布的 APK 安装包被作为插件的风险 ( 验证应用是否运行在插件化引擎中 )