【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 插件化】恶意软件判定规