成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

Android設(shè)備管理器漏洞分析!

marser / 2193人閱讀

摘要:一漏洞描述目前被稱為史上最強(qiáng)木馬的病毒利用設(shè)備管理器漏洞使用戶無(wú)法通過(guò)正常方式卸載。只有取消激活設(shè)備管理器后才可以直接卸載。四代碼文件注冊(cè)組件代碼注冊(cè)激活設(shè)備管理器代碼注冊(cè)激活設(shè)備管理器

一、漏洞描述
目前被稱為“史上最強(qiáng)Android木馬”的病毒Backdoor.AndroidOS.Obad.a利用Android設(shè)備管理器漏洞使用戶無(wú)法通過(guò)正常方式卸載。其實(shí)該漏洞早在去年底已被發(fā)現(xiàn)。(http://safe.ijiami.cn/)
注冊(cè)為“設(shè)備管理器”的應(yīng)用是無(wú)法被直接卸載的。只有取消激活“設(shè)備管理器”后才可以直接卸載。
木馬可以利用Android設(shè)備管理器漏洞達(dá)到在設(shè)備管理器列表“隱身”的效果。這樣用戶就無(wú)法進(jìn)去“取消激活”頁(yè)面,從而達(dá)到無(wú)法卸載的目的。

二、影響版本

   Android2.2以上(4.0,4.1,4.2)

三、漏洞原理
首先我們來(lái)看一下Settings app如何形成設(shè)備管理器列表的:

   相關(guān)類:
   packagesappssettingssrccomandroidsettingsDeviceAdminSettings.java

public class DeviceAdminSettings extends ListFragment {

DevicePolicyManager mDPM;
final HashSet mActiveAdmins = 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);//通過(guò)查詢廣播”android.app.action.DEVICE_ADMIN_ENABLED“來(lái)得到可用的設(shè)                                                                                             //備管理器程序列表
    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中數(shù)據(jù)
        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源代碼可以看出,如果想在設(shè)備管理器列表中”隱身“,只要不注冊(cè)”android.app.action.DEVICE_ADMIN_ENABLED“廣播就行。

四、POC代碼

AndroidMainfest.xml文件注冊(cè)組件:

一、漏洞描述
目前被稱為“史上最強(qiáng)Android木馬”的病毒Backdoor.AndroidOS.Obad.a利用Android設(shè)備管理器漏洞使用戶無(wú)法通過(guò)正常方式卸載。其實(shí)該漏洞早在去年底已被發(fā)現(xiàn)。(http://safe.ijiami.cn/)
注冊(cè)為“設(shè)備管理器”的應(yīng)用是無(wú)法被直接卸載的。只有取消激活“設(shè)備管理器”后才可以直接卸載。
木馬可以利用Android設(shè)備管理器漏洞達(dá)到在設(shè)備管理器列表“隱身”的效果。這樣用戶就無(wú)法進(jìn)去“取消激活”頁(yè)面,從而達(dá)到無(wú)法卸載的目的。

二、影響版本

   Android2.2以上(4.0,4.1,4.2)

三、漏洞原理
首先我們來(lái)看一下Settings app如何形成設(shè)備管理器列表的:

   相關(guān)類:
   packagesappssettingssrccomandroidsettingsDeviceAdminSettings.java

public class DeviceAdminSettings extends ListFragment {

DevicePolicyManager mDPM;
final HashSet mActiveAdmins = 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);//通過(guò)查詢廣播”android.app.action.DEVICE_ADMIN_ENABLED“來(lái)得到可用的設(shè)                                                                                             //備管理器程序列表
    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中數(shù)據(jù)
        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源代碼可以看出,如果想在設(shè)備管理器列表中”隱身“,只要不注冊(cè)”android.app.action.DEVICE_ADMIN_ENABLED“廣播就行。

四、POC代碼

AndroidMainfest.xml文件注冊(cè)組件:

java代碼注冊(cè)激活設(shè)備管理器:

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代碼注冊(cè)激活設(shè)備管理器:

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);

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/31881.html

相關(guān)文章

  • Android Studio3.0新特性及安裝詳解

    摘要:許多新的棉絨檢查。如果程序在斷點(diǎn)上暫停,則應(yīng)用程序重新啟動(dòng)。新的中的新型提供了對(duì)應(yīng)用程序活動(dòng)的實(shí)時(shí)統(tǒng)一視圖。要打開,請(qǐng)按照下列步驟操作單擊視圖工具您也可以在工具欄中單擊。從工具欄中選擇要配置的設(shè)備和應(yīng)用程序進(jìn)程。這樣基本上就順利安裝了。 簡(jiǎn)介: Android Studio是Android的官方IDE。它是專為Android而打造,可以加快您的開發(fā)速度,幫助您為每款A(yù)ndroid設(shè)備構(gòu)...

    DDreach 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<