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知識。

關注方法:打開手機微信->通訊錄->右上角"添加"->"搜號碼"->輸入"手機安全之家"->搜索。

或者而通過掃描下方二維碼也可以添加



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