资讯专栏INFORMATION COLUMN

Android设备管理器漏洞分析!

marser / 1943人阅读

摘要:一漏洞描述目前被称为史上最强木马的病毒利用设备管理器漏洞使用户无法通过正常方式卸载。只有取消激活设备管理器后才可以直接卸载。四代码文件注册组件代码注册激活设备管理器代码注册激活设备管理器

一、漏洞描述
目前被称为“史上最强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 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);//通过查询广播”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.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);//通过查询广播”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);

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/31881.html

相关文章

  • Android基础-系统架构分析,环境搭建,下载Android Studio,AndroidDevT

    摘要:系统架构分析体系结构安卓结构有四大层,五个部分,分四层为应用层,应用框架层,系统运行层和和内核层。验证是否配置成功打开电脑,键键,输入,分别依次打入和,出现下图显示表示配置成功。 系统架构分析 Android体系结构 安卓结构有四大层,五个部分,Android分四层为: 应用层(Applications),应用框架层(Application Framework),系统运行层(Librari...

    Lsnsh 评论0 收藏0
  • Android Studio3.0新特性及安装详解

    摘要:许多新的棉绒检查。如果程序在断点上暂停,则应用程序重新启动。新的中的新型提供了对应用程序活动的实时统一视图。要打开,请按照下列步骤操作单击视图工具您也可以在工具栏中单击。从工具栏中选择要配置的设备和应用程序进程。这样基本上就顺利安装了。 简介: Android Studio是Android的官方IDE。它是专为Android而打造,可以加快您的开发速度,帮助您为每款Android设备构...

    DDreach 评论0 收藏0
  • Android Studio3.0新特性及安装详解

    摘要:许多新的棉绒检查。如果程序在断点上暂停,则应用程序重新启动。新的中的新型提供了对应用程序活动的实时统一视图。要打开,请按照下列步骤操作单击视图工具您也可以在工具栏中单击。从工具栏中选择要配置的设备和应用程序进程。这样基本上就顺利安装了。 简介: Android Studio是Android的官方IDE。它是专为Android而打造,可以加快您的开发速度,帮助您为每款Android设备构...

    sherlock221 评论0 收藏0
  • Android Studio 2.2新特性

    摘要:平台支持则是针对的支持,另外官方模拟器也已经发布。包含有多种新特性设计,开发,构建和测试。从更新至,需要下载多的补丁文件。针对有一些的修复。该特性在调试多问题时,非常有用。这些特性的详细用法,会在稍后的博文中,一一解答。 android studio 2.2 Android studio 2.2的提升包含三大要素:更快,更加智能,Android平台支持。开发更加迅速,例如新的布局编辑器...

    wapeyang 评论0 收藏0
  • 查找并修复Android中的内存泄露—OutOfMemoryError

    摘要:程序中很容易出现内存泄露问题。通常,内存泄露都与已泄露的活动相关。这是内存泄露的首要标志。将引用存储至某个或内部会导致内存泄露。查找并修复中的内存泄露技术分享第张根据类名在内存分析器中过滤对象现在,我们看到存在个实例。 【编者按】本文作者为来自南非约翰内斯堡的女程序员 Rebecca Franks,Rebecca 热衷于安卓开发,拥有4年安卓应用开发经验。有点完美主义者,喜爱美食。 本...

    MAX_zuo 评论0 收藏0

发表评论

0条评论

marser

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<