Adb Shell 安全

1,  adb shell具有丰富的系统权限,所以拥有shell id的应用可以执行很多动作,在JB版本,给shell id赋予了很多权限。

http://androidxref.com/4.1.1/xref/frameworks/base/data/etc/platform.xml

113    <!-- Standard permissions granted to the shell. -->
114    <assign-permission name="android.permission.WRITE_EXTERNAL_STORAGE" uid="shell" />
115    <assign-permission name="android.permission.SEND_SMS" uid="shell" />
116    <assign-permission name="android.permission.CALL_PHONE" uid="shell" />
117    <assign-permission name="android.permission.READ_CONTACTS" uid="shell" />
118    <assign-permission name="android.permission.WRITE_CONTACTS" uid="shell" />
119    <assign-permission name="android.permission.READ_CALENDAR" uid="shell" />
120    <assign-permission name="android.permission.WRITE_CALENDAR" uid="shell" />
121    <assign-permission name="android.permission.READ_USER_DICTIONARY" uid="shell" />
122    <assign-permission name="android.permission.WRITE_USER_DICTIONARY" uid="shell" />
123    <assign-permission name="android.permission.ACCESS_FINE_LOCATION" uid="shell" />
124    <assign-permission name="android.permission.ACCESS_COARSE_LOCATION" uid="shell" />

在JB版本之后,这种做法就被取消

2,  shell package的androidmanifest.xml中使用了很多权限。

http://androidxref.com/5.1.1_r6/xref/frameworks/base/packages/Shell/AndroidManifest.xml

19<manifest xmlns:android="http://schemas.android.com/apk/res/android"
20        package="com.android.shell"
21        coreApp="true"
22        android:sharedUserId="android.uid.shell"
23        >
24
25    <!-- Standard permissions granted to the shell. -->
26    <uses-permission android:name="android.permission.SEND_SMS" />
27    <uses-permission android:name="android.permission.CALL_PHONE" />
28    <uses-permission android:name="android.permission.READ_CONTACTS" />
29    <uses-permission android:name="android.permission.WRITE_CONTACTS" />
30    <uses-permission android:name="android.permission.READ_CALENDAR" />
31    <uses-permission android:name="android.permission.WRITE_CALENDAR" />
32    <uses-permission android:name="android.permission.READ_USER_DICTIONARY" />
33    <uses-permission android:name="android.permission.WRITE_USER_DICTIONARY" />
34    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
35    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
36    <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
37    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

 

3,  如果一个具有system权限的app可以去执行adbshell 命令,那么这个shell command就可以以system权限来执行,这个风险很大

4,  System app如果执行adb shell command。通过Runtime.getruntime()exec()去执行外部程序。

Process   process   =  Runtime.getRuntime().exec( command);   

不能允许第三方应用透过系统权限的app去执行adb shell命令

5,  通过adb 启动四大组件

恶意启动,恶意传值等都容易导致应用奔溃或者信息错误。

尽量避免组件外部调用,可以将export设置成false。如果需要外部调用,需要做一些认证或者逻辑判断。

6,  常见的adb shell命令

主要在源码\system\core\toolbox目录和源码\frameworks\base\cmds目录

拿android shellsettings命令为例,

adb shell settings put secure install_non_market_apps1

7,  adb shell命令和adb命令的区别

adb shell是进入android linux环境,可以使用一些linux相关命令

adb 是个桥接,只能起到桥接功能。


【更多文章列表,尽在手机安全之家】

【1】Android Security框架

【2】FDE Introduction

【3】FDE之要求密码开机流程

【4】FDE之默认密码开机流程

【5】预置apk签名

【6】FDE之加密流程

【7】Adb Shell 安全


----------------------------------------------------------------------------------------------------------------------------------------------

请关注手机安全之家,了解更多Android Security知识。

关注方法:打开手机微信->通讯录->右上角"添加"->"搜号码"->输入"手机安全之家"->搜索。

或者而通过扫描下方二维码也可以添加



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章