摘要:一漏洞描述目前被稱為史上最強木馬的病毒利用設備管理器漏洞使用戶無法通過正常方式卸載。只有取消激活設備管理器后才可以直接卸載。四代碼文件注冊組件代碼注冊激活設備管理器代碼注冊激活設備管理器
一、漏洞描述
目前被稱為“史上最強Android木馬”的病毒Backdoor.AndroidOS.Obad.a利用Android設備管理器漏洞使用戶無法通過正常方式卸載。其實該漏洞早在去年底已被發現。(http://safe.ijiami.cn/)
注冊為“設備管理器”的應用是無法被直接卸載的。只有取消激活“設備管理器”后才可以直接卸載。
木馬可以利用Android設備管理器漏洞達到在設備管理器列表“隱身”的效果。這樣用戶就無法進去“取消激活”頁面,從而達到無法卸載的目的。
二、影響版本
Android2.2以上(4.0,4.1,4.2)
三、漏洞原理
首先我們來看一下Settings app如何形成設備管理器列表的:
相關類: packagesappssettingssrccomandroidsettingsDeviceAdminSettings.java
public class DeviceAdminSettings extends ListFragment {
DevicePolicyManager mDPM; final HashSetmActiveAdmins = new HashSet (); final ArrayList mAvailableAdmins = new ArrayList (); @Override public void onResume() { super.onResume(); updateList(); } void updateList() { mActiveAdmins.clear(); List cur = mDPM.getActiveAdmins(); if (cur != null) { for (int i=0; i avail = getActivity().getPackageManager().queryBroadcastReceivers( new Intent(DeviceAdminReceiver.ACTION_DEVICE_ADMIN_ENABLED), PackageManager.GET_META_DATA);//通過查詢廣播”android.app.action.DEVICE_ADMIN_ENABLED“來得到可用的設 //備管理器程序列表 int count = avail == null ? 0 : avail.size(); for (int i=0; i .......
class PolicyListAdapter extends BaseAdapter { ....... public void bindView(View view, int position) { final Activity activity = getActivity(); ViewHolder vh = (ViewHolder) view.getTag(); DeviceAdminInfo item = mAvailableAdmins.get(position);//顯示mAvailableAdmins中數據 vh.icon.setImageDrawable(item.loadIcon(activity.getPackageManager())); vh.name.setText(item.loadLabel(activity.getPackageManager())); vh.checkbox.setChecked(mActiveAdmins.contains(item.getComponent())); try { vh.description.setText(item.loadDescription(activity.getPackageManager())); } catch (Resources.NotFoundException e) { } } }}
由Android Settings App源代碼可以看出,如果想在設備管理器列表中”隱身“,只要不注冊”android.app.action.DEVICE_ADMIN_ENABLED“廣播就行。
四、POC代碼
AndroidMainfest.xml文件注冊組件:
一、漏洞描述
目前被稱為“史上最強Android木馬”的病毒Backdoor.AndroidOS.Obad.a利用Android設備管理器漏洞使用戶無法通過正常方式卸載。其實該漏洞早在去年底已被發現。(http://safe.ijiami.cn/)
注冊為“設備管理器”的應用是無法被直接卸載的。只有取消激活“設備管理器”后才可以直接卸載。
木馬可以利用Android設備管理器漏洞達到在設備管理器列表“隱身”的效果。這樣用戶就無法進去“取消激活”頁面,從而達到無法卸載的目的。二、影響版本
Android2.2以上(4.0,4.1,4.2)三、漏洞原理
首先我們來看一下Settings app如何形成設備管理器列表的:相關類: packagesappssettingssrccomandroidsettingsDeviceAdminSettings.javapublic class DeviceAdminSettings extends ListFragment {
DevicePolicyManager mDPM; final HashSetmActiveAdmins = new HashSet (); final ArrayList mAvailableAdmins = new ArrayList (); @Override public void onResume() { super.onResume(); updateList(); } void updateList() { mActiveAdmins.clear(); List cur = mDPM.getActiveAdmins(); if (cur != null) { for (int i=0; i avail = getActivity().getPackageManager().queryBroadcastReceivers( new Intent(DeviceAdminReceiver.ACTION_DEVICE_ADMIN_ENABLED), PackageManager.GET_META_DATA);//通過查詢廣播”android.app.action.DEVICE_ADMIN_ENABLED“來得到可用的設 //備管理器程序列表 int count = avail == null ? 0 : avail.size(); for (int i=0; i .......
class PolicyListAdapter extends BaseAdapter { ....... public void bindView(View view, int position) { final Activity activity = getActivity(); ViewHolder vh = (ViewHolder) view.getTag(); DeviceAdminInfo item = mAvailableAdmins.get(position);//顯示mAvailableAdmins中數據 vh.icon.setImageDrawable(item.loadIcon(activity.getPackageManager())); vh.name.setText(item.loadLabel(activity.getPackageManager())); vh.checkbox.setChecked(mActiveAdmins.contains(item.getComponent())); try { vh.description.setText(item.loadDescription(activity.getPackageManager())); } catch (Resources.NotFoundException e) { } } }}
由Android Settings App源代碼可以看出,如果想在設備管理器列表中”隱身“,只要不注冊”android.app.action.DEVICE_ADMIN_ENABLED“廣播就行。
四、POC代碼
AndroidMainfest.xml文件注冊組件:
java代碼注冊激活設備管理器:
Intent intent = new Intent(
DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
ComponentName mDeviceComponentName = new ComponentName("packagename","packagename.deviceAdminReceiver");
intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN,
mDeviceComponentName);
this.startActivity(intent,0);java代碼注冊激活設備管理器:
Intent intent = new Intent(
DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
ComponentName mDeviceComponentName = new ComponentName("packagename","packagename.deviceAdminReceiver");
intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN,
mDeviceComponentName);
this.startActivity(intent,0);
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/31881.html
摘要:許多新的棉絨檢查。如果程序在斷點上暫停,則應用程序重新啟動。新的中的新型提供了對應用程序活動的實時統一視圖。要打開,請按照下列步驟操作單擊視圖工具您也可以在工具欄中單擊。從工具欄中選擇要配置的設備和應用程序進程。這樣基本上就順利安裝了。 簡介: Android Studio是Android的官方IDE。它是專為Android而打造,可以加快您的開發速度,幫助您為每款Android設備構...
閱讀 2947·2023-04-25 22:16
閱讀 2093·2021-10-11 11:11
閱讀 3247·2019-08-29 13:26
閱讀 593·2019-08-29 12:32
閱讀 3409·2019-08-26 11:49
閱讀 2987·2019-08-26 10:30
閱讀 1939·2019-08-23 17:59
閱讀 1507·2019-08-23 17:57