一、简介
Android 提供了一个可管理和操作设备的API叫DevicePolicyManager,使用这个API可以接管手机的应用权限,对手机做出很重要很多大胆的操作,比如设置锁屏方式、恢复出厂设置、设置密码、强制清除密码,修改密码等操作。
很多“远程查找手机”的实现使用了设备管理器功能,可以实现远程锁定手机,远程擦除,远程响铃等。
此外,很多恶意软件通过设备管理器进行“锁屏勒索”等恶意操作,为了限制设备管理器被滥用,Android N 规定,第三方应用开发者只能使用DevicePolicyManager.resetPassword为无密码设备设置初始密码,而不能重置或清除已有的设备密码,但在Android N以下还是存在该类型的勒索攻击。
由于设备管理器的高权限,因此要谨慎对待申请激活设备管理器的App,例如:
今日头条、某些安全管家等等,
二、设备管理器使用
- Menifest文件中注册receiver
1 | <receiver android:name=".demo.DeviceReceiver" |
- 创建xml文件夹添加device_admin.xml
1 | <?xml version="1.0" encoding="utf-8"?> |
新建一个class继承DeviceAdminReceiver
1
2
3import android.app.admin.DeviceAdminReceiver;
public class MyAdmin extends DeviceAdminReceiver {
}实现代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41public class MainActivity extends AppCompatActivity {
private DevicePolicyManager dpm;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
dpm = (DevicePolicyManager) getSystemService(DEVICE_POLICY_SERVICE);
//openAdmin();
Button bt = (Button)findViewById(R.id.button);
bt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
ComponentName cn = new ComponentName(getApplication(), MyAdmin.class);
if(dpm.isAdminActive(cn)){
//设备管理员的api
dpm.lockNow(); //锁屏
//dpm.wipeData(0); //擦除数据,谨慎使用
//dpm.wipeData(DevicePolicyManager.WIPE_EXTERNAL_STORAGE);//删除sdcard数据
}else{
openAdmin();
Toast.makeText(getApplicationContext(), "请先激活管理员", 0).show();
}
}
});
}
//激活设备管理器
public void openAdmin(){
//进入设备管理器激活向导
Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
ComponentName cn = new ComponentName(this, MyAdmin.class);
intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, cn);
//提示用户开启管理员
intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION,
"请激活设备管理器");
startActivityForResult(intent,0);
}
}
三、设备管理器相关漏洞
- 隐藏设备管理器中的列表
当用户激活设备管理器后,程序会在setting设备管理器列表隐藏,应用程序激活成设备管理器后,可以实现锁屏、擦除用户数据等功能,并且无法使用常规的卸载方式对其卸载
参考:https://bbs.pediy.com/thread-183692.htm
http://seclab.safe.baidu.com/2014-10/deviceadminexploit2.html