ACCESSAndroidManifest.xml文件安全探索

正文笔者:i春秋签订契约小说家——icq8756c1a2

前不久在做一些apk的平安检查和测试,对AndroidManifest.xml文件举办了琢磨和商量,介绍AndroidManifest.xml文件的职能和架构,并切磋了AndroidManifest.xml配置文件存在的一部分破绽,在拓展安全检查和测试时,能够对症下药。

0X00 AndroidManifest.xml文件作用   

AndroidManifest.xml文件的效益十分主要,应该说是缺一不可。在android官方介绍文书档案中(https://developer.android.com/gu …
manifest-intro.html
)是那般定义的。各种应用程序必须在其根目录中拥有多少个AndroidManifest.xml(名字务必一致)文件。Manifest文件提供关于应用程序到Android系统的骨干新闻,系统必须持有该音信才能运作任何应用程序的代码。换句话说APP是跑在Android系统上,既然要跑在其上,就不能够不提供音信给Android
System,那个新闻就存在AndroidManifest中。AndroidManifest.xml 存放在
app/src/main/ 目录下。在反编译APK文件后,其文件是以乱码格式存在,要求展开转移才能健康查看。

0X01至关心重视要功效1. 命名应用程序Java包,软件包名称作为应用程序的唯一标识符

2. 描述了应用程序的机件,当中包含构成应用程序的移位,服务,广播接收器和剧情提供者;它还命名落成各类组件并公布其职能的类,例如Intent能够处理的消息。那一个注明公告Android系统的机件及其能够运转的标准化。

  1. 操纵哪些processes主持application

4.
公布那一个App有何样权力,它证明应用程序必须具备的权能才能访问API的受保障部分并与此外应用程序交互。它还宣称别的人为了与应用程序的组件交互而须求的权杖

5.它列出了Instrumentation在应用程序运营时提供概要分析和其他新闻的类。这么些评释仅在应用程序正在开发中才会设有,并在应用程序公布从前被剔除。

6.它注脚了应用程序供给的最低级别的Android API。

7.它列出了应用程序必须链接的库。

0X02 Manifest架构  

允许的因素,蓝字是预设常见的因素,个中的<manifest>与<application>是不可或缺且不得不出现一回。各样成分有些的习性,属性数据不必然,每一种属性有其默许值,可视须求开始展览设定。

1.预设的AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.bmi" 名称空间
    android:versionCode="1"   开发者使用流水版号
    android:versionName="1.0" >  供使用者看的版本号
    <uses-sdk
        android:minSdkVersion="8" 最低兼容SDK版本
        android:targetSdkVersion="21" /> 目标版本,若没设定预设为最低minSdkVersion
    <application
        android:allowBackup="true" 是否允许备份
        android:icon="@drawable/ic_launcher" App Icon
        android:label="@string/app_name" App名称
        android:theme="@style/AppTheme" > App风格
        <activity activity, service, receiver, provider是组成application的4个主要项目
            android:name=".MainActivity" activity名称,可和manifest package串在一起
            android:label="@string/app_name" > APP开启后,显示在画面上方的名称
            <intent-filter> activity操作方式
                <action android:name="android.intent.action.MAIN" /> .MAIN表示activity是APP进入点
                <category android:name="android.intent.category.LAUNCHER" /> 显示在应用程序行表
            </intent-filter>
        </activity>
    </application>
</manifest>

2.正式的AndroidManifest.xml文件样例。

<?xml version="1.0" encoding="utf-8"?>   
<manifest>    
    <!-- 基本配置 --> 
    <uses-permission />  
    <permission />  
    <permission-tree />  
    <permission-group />  
    <instrumentation />  
    <uses-sdk />  
    <uses-configuration />  
    <uses-feature />  
    <supports-screens />  
    <compatible-screens />  
    <supports-gl-texture />        
    <!-- 应用配置 --> 
    <application>            
        <!-- Activity 配置 --> 
        <activity>  
            <intent-filter>  
                <action />  
                <category />  
                <data />  
            </intent-filter>  
            <meta-data />  
        </activity>            
        <activity-alias>  
            <intent-filter> . . . </intent-filter>  
            <meta-data />  
        </activity-alias>  
           <!-- Service 配置 --> 
        <service>  
            <intent-filter> . . . </intent-filter>  
            <meta-data/>  
        </service>  
        <!-- Receiver 配置 --> 
        <receiver>  
            <intent-filter> . . . </intent-filter>  
            <meta-data />  
        </receiver>            
        <!-- Provider 配置 --> 
        <provider>  
            <grant-uri-permission />  
            <meta-data />  
        </provider>            
        <!-- 所需类库配置 --> 
        <uses-library />    
    </application>  
  </manifest>

0x03 文件约定及语法 
   从上边的代码中,大家能够见到Android配置文件选取XML作为描述语言,每一种XML标签都分裂的意义,超越八分之四的布置参数都位于标签的性质中,上边大家便根据以上配置文件样例中的先后顺序来学习Android配置文件中最首要因素与标签的用法。

1.元素(Elements)

 
 在装有的要素中唯有<manifest>和<application>是必备的,它们分别必须存在,且只可以出现一次。假使一个要素包括有任何子成分,必须经过子成分的属性来安装其值。处于相同层次的因素,这几个因素的辨证是一向不各类的。例如<activity>,<provider>和<service>成分得以以任何顺序混合。那么些规则有四个第③的比不上:

l 1个<activity-alias> 成分必须依照 <activity>它是叁个别名。

l
<application> 成分必须是中间的末梢2个因素 <manifest> 的要素。换句话说</application>截止标签必须在</manifest>停止标签以前及时出现。

2.属性

 
  平常来讲,全体的属性都是可选的,可是有些属性是必须设置的。以便元素得以完成其目标,除了根成分<manifest>的习性之外,全数其余因素属性的名字都是以android:前缀的;

概念类名:全体的因素名都对应其在SDK中的类名,尽管您本身定义类名,必须含有类的多寡包名,假如类与application处于同一数据包中,能够一贯简写为“.”;

3.证明类名

 
 许多因素对应于Java对象,包蕴应用程序本人(<application>成分)的成分及其关键组件:活动(<activity>),服务<service>),广播接收器(<receiver>)和剧情提供者(<provider>))。

设若你定义一个子类,就像你总是会为组件类(Activity,Service, 布罗兹castReceiver和ContentProvider)子类是通过name属性来声称,该名称必须回顾完整的包裹名称。例如,二个Service子类也许被声称如下:

<manifest . . . >

    <application . . . >

        <service android:name=”com.example.project.SecretService” . .
. >

            . . .

        </service>

        . . .

    </application>

</manifest>      

4.多个值

 
 假设某些成分有超过常规一个数值,这么些成分必须经过重新的方式来评释其有些属性具有多少个数值项,且不能够将多少个数值项一遍性说明在1个属性中;例如一个intent-filter
能够保险多个action:

<intent-filter . . . >

    <action android:name=”android.intent.action.EDIT” />

    <action android:name=”android.intent.action.INSERT” />

    <action android:name=”android.intent.action.DELETE” />

    . . .

</intent-filter>

5.资源值

 
  有个别品质具有可兆示给用户的值,例如3个移动的标签和图标。那些属性的值应该从财富或宗旨开始展览本地化和设置。财富值以下列格式表示:

@[package:]type/name

比方能源与应用程序在同2个软件包中,则足以简不难单软件包名称。该项目是一种能源,例如字符串或可画的靶子,名称是一定能源的标识名称。例如:

<activity android:icon=”@drawable/smallPic” . . . >

主旨的值使用类似地公布,但以早先值“? ”代替“@”:

?[package:]type/name

留神:财富或焦点包的值必须是“android”或应用程序包的称谓。

6.字符串值

在属性值为字符串的地点,必须运用双反斜杠(\\)来转义字符,例如\\n换行符或\\uxxxx 表示Unicode字符。

7.意图过滤器

 
 应用程序的基本器件,如运动,服务和播放接收器由意图(Intent)激活。意图是Intent描述所需动作的一组新闻(对象),包蕴要执行的数码,应该进行该操作的组件的体系以及其它有关指令。Android系统找到3个方可响应意图的恰到好处组件,假使必要,则运转组件的新实例,并将其传递给 Intent对象。

组件通过意图过滤器通告他们能够响应的打算类型。由于Android系统必须掌握组件在开发银行组件在此以前能够拍卖的用意,由此在清单少将intent过滤器钦定为 <intent-filter> 成分。组件能够有所自由数量的过滤器,种种过滤器描述差异的效用。显式命名目的组件的企图激活该器件,由此过滤器不起效能。没有通过名称钦定指标的意向能够仅在组件能够因而组件的过滤器之权且激活零部件。

8.图标和标签

  许多因素都有图标和标签属性,能够向用户呈现叁个小图标和文书。一些还有1个更长的讲述属性,也足以在显示器上出示。例如,该 <permission> 成分具有全数那三个性子,以便当掌握用户是不是予以已呼吁它的应用程序的权杖时,三个图标代表权限,许可的名称以及它所急需的描述都会议及展览现给用户。

在每一个情况下,在含蓄成分中装置的图标和标签将改成具备容器的子成分的暗中认可值 icon和label设置。由此, <application>成分中安装的图标和标签是种种应用程序组件的暗许图标和标签。类似地,为组件(如<activity> 成分)设置的图标和标签是各类组件<intent-filter> 成分的默许设置
。假诺2个 <application> 元素设置了三个标签,然而贰个平移和它的意图过滤器没有,应用程序标签将被视为活动和企图过滤器的价签。

为意图过滤器设置的图标和标签表示当组件展现给用户并满意由过滤器宣布的成效时的零件。例如,带有android.intent.action.MAIN和 android.intent.category.LAUNCHE福特Explorer设置的过滤器将活动通告为运行应用程序的运动。也正是说,应该在应用程序运行器中体现。在过滤器中安装的图标和标签呈现在运行器中。

9.权限

 
 权限是限量的代码的一片段,或然在设施上的数指标访问的限制。限制是为了维护大概被误用以扭转或磨损用户体验的重庆大学数据和代码。

种种权限都由唯一标签标识。标签常常表示限制的动作。以下是Android定义的有的权力:

android.permission.CALL_EMERGENCY_NUMBERS

android.permission.READ_OWNER_DATA

android.permission.SET_WALLPAPER

android.permission.DEVICE_POWER

 
 作用只好通过多个权力来保卫安全。假若应用程序须求拜访受权限保养的功效,则它必须注脚它须要接纳<uses-permission>
清单中的成分的权限
。当应用程序安装在配备上时,安装程​​序将通过检查签署应用程序证书的机构以及在一些情况下询问用户来规定是否予以所请求的权位。假如承认被予以,应用程序就能够使用受保障的功用。假若没有,则尝试访问那么些意义失利,而不文告用户。

 
 应用程序也足以由此权限爱慕自身的机件。它能够应用由Android定义的此外权力,如android.Manifest.permission由其他使用程类别出
或申明的。它也足以团结定义。<permission> 成分评释了新的权限
。例如,活动得以如下保养:

<manifest . . . >

    <permission android:name=”com.example.project.DEBIT_ACCT” . . .
/>

    <uses-permission android:name=”com.example.project.DEBIT_ACCT”
/>

    . . .

    <application . . .>

        <activity android:name=”com.example.project.FreneticActivity”

                  android:permission=”com.example.project.DEBIT_ACCT”

                  . . . >

            . . .

        </activity>

    </application>

</manifest>   

请小心,在那个例子中,DEBIT_ACCT权限不仅仅是使用<permission> 成分来声称的
,所以它也使用了 <uses-permission> 成分。为了运转受保证的活动,您必须供给运用该应用程序的别的零件,即便应用程序自己也施加了维护。

0x04权力属性值意义ACCESS_CHECKIN_PROPE昂CoraTIES:允许对checkin数据库中的表“properties”实行读/写访问,以改变上传的值。

ACCESS_COARSE_LOCATION:允许接纳访问大约地点。

ACCESS_FINE_LOCATION:允许行使访问精确地点。

ACCESS_LOCATION_EXTRA_COMMANDS:允许应用程序访问额外的地点提供程序命令。

ACCESS_NETWORK_STATE:允许应用程序访问有关网络的音讯。

ACCESS_NOTIFICATION_POLICY:希望访问文告政策的应用程序的标记权限。

ACCESS_WIFI_STATE:允许应用程序访问有关Wi-Fi网络的音信。

ACCOUNT_MANAGE奥迪Q7:允许应用程序调用AccountAuthenticator。

ADD_VOICEMAIL:允许应用程序将语音邮件添加到系统中。

ANSWER_PHONE_CALLS:允许采取接听来电。

BATTERY_STATS:允许应用程序收集电池总括音信

BIND_ACCESSIBILITY_SEENCOREVICE:必须由a供给AccessibilityService,以确认保证只有系统能够绑定到它。

BIND_APPWIDGET:允许应用程序告诉AppWidget服务哪个应用程序可以访问AppWidget的数量。

BIND_AUTOFILL_SETiguanVICE:必须由a供给AutofillService,以管教唯有系统能够绑定到它。

BIND_CARRIER_MESSAGING_SEEnclaveVICE:这几个常量是在API层面弃用23.
BIND_CARRIER_SERVICES代替

BIND_CARRIER_SE普拉多VICES:允许绑定到运行商应用程序中的服务的体系经过将享有此权限。

BIND_CHOOSER_TARGET_SE凯雷德VICE:必须由a必要ChooserTargetService,以担保唯有系统能够绑定到它。

BIND_CONDITION_PROVIDER_SE君越VICE:必须由a需要ConditionProviderService,以保障只有系统能够绑定到它。

BIND_DEVICE_ADMIN:必须由装备管理接收器供给,以保证唯有系统可以与其进展交互。

BIND_DREAM_SE牧马人VICE:必须由a供给DreamService,以管教唯有系统能够绑定到它。

BIND_INCALL_SE奥迪Q3VICE:必须由a要求InCallService,以确定保证唯有系统能够绑定到它。

BIND_INPUT_METHOD:必须由a必要InputMethodService,以保险只有系统可以绑定到它。

BIND_MIDI_DEVICE_SEXC90VICE:必须由a须要MidiDeviceService,以管教唯有系统能够绑定到它。

BIND_NFC_SE奇骏VICE:必须要求HostApduService 或OffHostApdu瑟维斯确认保障唯有系统能够绑定到它。

BIND_NOTIFICATION_LISTENER_SE昂科威VICE:必须由a供给NotificationListener瑟维斯,以保障唯有系统能够绑定到它。

BIND_PRINT_SE汉兰达VICE:必须由a须要Print瑟维斯,以管教唯有系统能够绑定到它。

BIND_QUICK_SETTINGS_TILE:允许应用程序绑定到第③方飞快设置图块。

BIND_REMOTEVIEWS:必须由a供给RemoteViewsService,以保证唯有系统能够绑定到它。

BIND_SCREENING_SEKugaVICE:必须由a要求CallScreeningService,以担保只有系统能够绑定到它。

BIND_TELECOM_CONNECTION_SE兰德酷路泽VICE:必须由a必要ConnectionService,以确认保证唯有系统能够绑定到它。

BIND_TEXT_SERVICE:必须由TextService要求

BIND_TV_INPUT:必须经过a TvInputService 来保管唯有系统能够绑定它。

BIND_VISUAL_VOICEMAIL_SEPRADOVICE:链接必须需要,VisualVoicemailService以担保唯有系统能够绑定到它。

BIND_VOICE_INTERACTION:必须由a供给VoiceInteractionService,以确定保证唯有系统能够绑定到它。

BIND_VPN_SE哈弗VICE:必须由a须求VpnService,以有限帮忙只有系统能够绑定到它。

BIND_VR_LISTENER_SEPRADOVICE:必须由a要求VrListenerService,以担保只有系统可以绑定到它。

BIND_WALLPAPEHighlander:必须由a必要沃尔paperService,以确定保障唯有系统能够绑定到它。

BLUETOOTH:允许应用程序连接受配对的蓝牙5.0设备。

BLUETOOTH_ADMIN:允许应用程序发现和配对蓝牙设备。

BLUETOOTH_P大切诺基IVILEGED:允许应用程序在尚未用户交互的情景下配对蓝牙( Bluetooth® )设备,并同意或取缔电话簿访问或新闻访问。

BODY_SENSOGL450S:允许应用程序访问用户用来衡量人体内发出的图景的传感器的数量,例如心率。

BROADCAST_PACKAGE_REMOVED:允许应用程序广播应用程序包已被删去的关照。

BROADCAST_SMS:允许应用程序广播短信收据布告。

BROADCAST_STICKY:允许应用程序广播粘性意图。

BROADCAST_WAP_PUSH:允许应用程序广播WAP PUSH收据通知。

CALL_PHONE:允许应用程序发起电话而不经过拨号器用户界面供用户确认通话。

CALL_PMuranoIVILEGED:允许应用程序呼叫任何电话号码,包涵迫切号码,而无需经过Dialer用户界面,用户确认呼叫正在被停放。

CAMERA:供给能够访问相机设备。

CAPTURE_AUDIO_OUTPUT:允许应用程序捕获音频输出。

CAPTURE_SECURE_VIDEO_OUTPUT:允许应用程序捕获安全录制输出。

CAPTURE_VIDEO_OUTPUT:允许应用程序捕获录像输出。

CHANGE_COMPONENT_ENABLED_STATE:允许应用程序更改应用程序组件(不是祥和的)是或不是启用。

CHANGE_CONFIGURATION:允许应用程序修改当前布局,如区域设置。

CHANGE_NETWORK_STATE:允许应用程序更改网络连接状态。

CHANGE_WIFI_MULTICAST_STATE:允许应用程序进入Wi-Fi组播方式。

CHANGE_WIFI_STATE:允许应用程序更改Wi-Fi连接状态。

CLEAR_APP_CACHE:允许应用程序清除装置上具备已设置应用程序的缓存。

CONTROL_LOCATION_UPDATES:允许启用/禁止使用收音机的岗位更新公告。

DELETE_CACHE_FILES:允许应用程序删除缓存文件。

DELETE_PACKAGES:允许应用程序删除软件包。

DIAGNOSTIC:允许应用程序福特ExplorerW到诊断能源。

DISABLE_KEYGUATiguanD:允许应用程序禁止使用键盘珍贵程序,若是它不安全。

DUMP:允许应用程序从系统服务检索状态转储新闻。

EXPAND_STATUS_BALacrosse:允许应用程序展开或折叠状态栏。

FACTORY_TEST:作为创立商测试应用程序运营,以root用户身份运营。

GET_ACCOUNTS:允许访问帐户服务中的帐户列表。

GET_ACCOUNTS_P大切诺基IVILEGED:允许访问帐户服务中的帐户列表。

GET_PACKAGE_SIZE:允许应用程序找出任何包使用的半空中。

GET_TASKS:这一个常数在API级别2第11中学已被弃用。不再强制执行。

GLOBAL_SEA奇骏CH:该权限可用以内容提供商,以允许全局搜索系统访问其数量。

INSTALL_LOCATION_PROVIDE途达:允许应用程序将地点提供程序安装到岗位管理器中。

INSTALL_PACKAGES:允许应用程序安装软件包。

INSTALL_SHOCR-VTCUT:允许应用程序在Launcher中设置连忙格局。

INSTANT_APP_FOREGROUND_SE索罗德VICE:允许即时利用创立前台服务。

INTEEnclaveNET:允许应用程序打开网络套接字。

KILL_BACKGROUND_PROCESSES:允许应用程序调用 killBackgroundProcesses(String)。

LOCATION_HAHavalDWARE:允许应用程序在硬件中使用地方功用,例如geofencing
api。

MANAGE_DOCUMENTS:允许应用程序管理对文书档案的拜会,平常是文书档案采用器的一局地。

MANAGE_OWN_CALLS:允许通过自笔者管理的ConnectionServiceAPI 管理自个儿的呼唤的呼唤应用程序

MASTER_CLEATiggo:不适用于第3方应用程序。

MEDIA_CONTENT_CONTROL:允许应用程序知道正在播放哪些内容并控制其播放。

MODIFY_AUDIO_SETTINGS:允许应用程序修改全局音频设置。

MODIFY_PHONE_STATE:允许修改电话状态 – 开机,mmi等

MOUNT_FORMAT_FILESYSTEMS:允许将文件系统格式化为可活动存款和储蓄。

MOUNT_UNMOUNT_FILESYSTEMS:允许安装和卸载文件系统以举行可活动存储。

NFC:允许应用程序通过NFC执行I / O操作。

PACKAGE_USAGE_STATS:允许应用程序收集组件使用计算音信,表明权限意味着使用API​​,设备的用户能够因而“设置”应用程序授予权限。

PERSISTENT_ACTIVITY:此常数在API级别9中已被弃用。此作用将在后头删除; 请不要接纳。允许应用程序使其运动不止。

PROCESS_OUTGOING_CALLS:允许应用程序在呼出时期查看正在拨打地铁电话号码,并选用将呼叫重定向到另别名码或完全中断呼叫。

READ_CALENDA奇骏:允许应用程序读取用户的日历数量。

READ_CALL_LOG:允许应用程序读取用户的通话记录。

READ_CONTACTS:允许应用程序读取用户的沟通人数据。

READ_EXTERNAL_STORAGE:允许应用程序从表面存款和储蓄器读取。

READ_FRAME_BUFFEQX56:允许应用程序举办显示屏截图,更相像地,能够访问帧缓冲区数据。

READ_INPUT_STATE:此常数在API级别16中已被弃用。使用此权限的API已被删去。

READ_LOGS:允许应用程序读取低级别的系统日志文件。

READ_PHONE_NUMBEMuranoS:允许读取设备的电话号码。

READ_PHONE_STATE:允许只读访问电话状态,包含设备的电话号码,当前的蜂窝网络新闻,任何正在展开的呼唤的气象以及PhoneAccount在设施上登记的此外列表

READ_SMS:允许应用程序读取短信。

READ_SYNC_SETTINGS:允许应用程序读取同步设置。

READ_SYNC_STATS:允许应用程序读取同步总结音讯。

READ_VOICEMAIL:允许应用程序读取系统中的语消息箱。

REBOOT:需求再一次开动设备。

RECEIVE_BOOT_COMPLETED:允许应用程序收到ACTION_BOOT_COMPLETED在系统形成启动后广播的行使程序

RECEIVE_MMS:允许应用程序监视传入的彩信。

RECEIVE_SMS:允许应用程序接收短信。

RECEIVE_WAP_PUSH:允许应用程序接收WAP推送音信。

RECORD_LIVINAO:允许应用程序摄像音频。

REORDER_TASKS:允许应用程序更改职务的Z顺序。

REQUEST_COMPANION_RUN_IN_BACKGROUND:允许随播应用在后台运维。REQUEST_COMPANION_USE_DATA_IN_BACKGROUND:允许随播应用在后台使用数据。

REQUEST_DELETE_PACKAGES:允许应用程序请求删除包。

REQUEST_IGNORE_BATTERY_OPTIMIZATIONS:许可申请必须怀有才能使用ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS。

REQUEST_INSTALL_PACKAGES:允许应用程序请求设置软件包。

RESTART_PACKAGES:此常数在API级别第88中学已弃用restartPackage(String) 。不再帮助API。

SEND_RESPOND_VIA_MESSAGE:允许应用程序(电话)向其余应用程序发送请求,以拍卖来电时期的响应通过音信动作。

SEND_SMS:允许应用程序发送短信。

SET_ALARAV4M:允许应用程序广播Intent为用户设置闹钟。

SET_ALWAYS_FINISH:允许应用程控是还是不是在后台放置活动时及时到位。

SET_ANIMATION_SCALE:修改全局动画缩放因子。

SET_DEBUG_APP:配置应用程序举行调剂。

SET_PREFERRED_APPLICATIONS:那么些常数在API级别7中已被弃用。不再实用, addPackageToPreferred(String) 有关详细新闻。

SET_PROCESS_LIMIT:允许应用程序设置能够运行的最大数量(不需求的)应用程序进程。

SET_TIME:允许应用程序设置系统时间。

SET_TIME_ZONE:允许应用程序设置系统时区。

SET_WALLPAPE安德拉:允许选拔设置壁纸。

SET_WALLPAPER_HINTS:允许应用程序设置壁纸提醒。SIGNAL_PERSISTENT_PROCESSES:允许应用程序请求将信号发送到全部持久进程。

STATUS_BA纳瓦拉:允许应用程序打开,关闭或剥夺状态栏及其图标。

SYSTEM_ALERT_WINDOW:允许行使使用项目创制窗口 TYPE_APPLICATION_OVEPAJEROLAY,展现在拥有其余应用程序的顶部。

TRANSMIT_ILAND:允许采纳设备的红外发射器(借使局地话)。

UNINSTALL_SHOQashqaiTCUT:不再帮忙此权限。

UPDATE_DEVICE_STATS:允许应用程序更新装备总计音信。

USE_FINGECR-VP智跑INT:允许利用使用指纹硬件。

USE_SIP:允许应用程序使用SIP服务。

VIBRATE:允许访问振动器。

WAKE_LOCK:允许接纳PowerManager
WakeLock来幸免电脑进入睡眠状态或显示屏变暗。

WRITE_APN_SETTINGS:允许应用程序写入apn设置。

WRITE_CALENDALAND:允许应用程序写入用户的日历数量。

WRITE_CALL_LOG:允许应用程序写入(而不是读取)用户的通话记录数据。

WRITE_CONTACTS:允许应用程序写入用户的关系人数据。

WRITE_EXTERNAL_STORAGE:允许应用程序写入外表存款和储蓄。

WRITE_GSELANDVICES:允许使用修改谷歌服务地图。

WRITE_SECURE_SETTINGS:允许应用程序读取或写入安整种类安装。

WRITE_SETTINGS:允许应用程序读取或写入系统安装。

WRITE_SYNC_SETTINGS:允许应用程序写入同步设置。

WRITE_VOICEMAIL:允许应用程序修改和删除系统中现有的语新闻箱。

0x05apk文件获取AndroidManifest.xml文件   1.解压apk文件

 
 首先需求下载apk文件,使用压缩软件直接解压缩即可,解压成功后会在apk目录中生活多个AndroidManifest.xml文件,如图1所示。使用记事本或许IE等打开该公文后,其内容为乱码,如图2所示。

ACCESS 1

ACCESS 2

2.运用androguard举办转码

androguard能够下载最新版本,也得以下载1.9版本。

https://github.com/androguard/androguard/archive/1.9.zip

将AndroidManifest.xml文件复制到androguard目录,笔者动用的是PentestBox-with-Metasploit-v2.2平台。到E:\Tools\测试平台\PentestBox-with-Metasploit-v2.2\bin\androidsecurity\androguard目录下利用命令:

androaxml.py -i  AndroidManifest.xml -o  new.WoCloud.AndroidManifest.xml

即可解码内容。

0x06.apktool反编译apk眼下通过压缩文件直接解压会促成有的文件未经过编码,因而会师世乱码,经过编写翻译的文件能够很好的进展查看,下边介绍使用apktool举办反编写翻译apk程序,执行服从如下图所示。

1.下载apktool.jar

https://bitbucket.org/iBotPeaches/apktool/downloads/apktool\_2.2.4.jar

2.将刹那间本子保存为apktool.bat

@echo off

if “%PATH_BASE%” == “” set PATH_BASE=%PATH%

set PATH=%CD%;%PATH_BASE%;

*java -jar -Duser.language=en “%~dp0\apktool.jar” %**

3.反编写翻译程序

(1)直接用java实行反编写翻译:java -jar apktool.jar d test.apk

(2)使用bat脚本进行编译:apktool -f d test.apk
//覆盖已有个别反编写翻译程序及其目录

apktool d test.apk

注意:apktool.bat和apktool_2.2.4.jar在同2个索引,且下载的apktool_2.2.4.jar急需重命名为apktool.jar

ACCESS 3

0x07.AndroidManifest.xml暗中认可设置漏洞1.安顿文件中的暗许设置allowBackup风险

(1)安全风险描述

   Android API Level
8及其以上Android系统提供了为应用程序数据的备份和还原效用,此功效的开关决定于该应用程序中 AndroidManifest.xml文件中的 allowBackup属性值,其属性值暗中同意是True。当allowBackup标志为true时,用户即可通过adb
backup和adb
restore来开始展览对利用数据的备份和还原,那说不定会带来一定的安全危机。当设置该属性值为true,adb
backup容许任何三个力所能及打开USB调节和测试开关的人从Android手提式有线电电话机中复制利用数据到外设,一旦选取数据被备份之后,全数应用数据都可被读取;同时adb
restore 容许用户钦点1个重操旧业的数量出自(即备份的接纳数据)来苏醒应用程序数据的创造。因而,当一个施用数据被备份之后,用户即可在其他 Android 手提式有线电话机或模拟器上安装同四个运用,以及通过苏醒该备份的采用数据到该设施上,在该设备上开拓该接纳即可复苏到被备份的应用程序的图景。

 
 对于近期大部分部手提式有线电话机来说,一旦存在该漏洞,简单导致个人通信录、微信、QQ聊天新闻、短信等灵活信息外泄;通过将备份程序在模拟手提式有线电电话机上回复后,能够直接开展专营商扫描支付(专营商扫描支付不供给开发密码)不难导致财产损失。

(2)影响范围

   Android API 等级8(Android 2.2 –
2.2.3)以及上述系统,方今多方系列都受影响。下边给出Android
API等级对应服从系统以及名称对应的图标名称:

API等级1:  Android 1.0

API等级2:  Android 1.1 Petit Four  花式小奶油蛋糕

API等级3:  Android 1.5 Cupcake  纸杯蛋糕

API等级4:  Android 1.6 Donut  甜甜圈

API等级5:  Android 2.0 Éclair   松饼

API等级6:  Android 2.0.1 Éclair  松饼

API等级7:  Android 2.1 Éclair   松饼

API等级8:  Android 2.2 – 2.2.3 Froyo  冻酸奶

API等级9:  Android 2.3 – 2.3.2 Gingerbread  姜饼

API等级10:Android 2.3.3-2.3.7 Gingerbread   姜饼

API等级11:Android 3.0 Honeycomb 蜂巢

API等级12:Android 3.1 Honeycomb 蜂巢

API等级13:Android 3.2 Honeycomb 蜂巢

API等级14:Android 4.0 – 4.0.2 Ice Cream Sandwich  冰激凌南平治

API等级15:Android 4.0.3 – 4.0.4 Ice Cream Sandwich  冰激凌衡水治

API等级16:Android 4.1 Jelly Bean  糖豆

API等级17:Android 4.2 Jelly Bean  糖豆

API等级18:Android 4.3 Jelly Bean  糖豆

API等级19:Android 4.4 KitKat 奇巧巧克力棒

API等级20 : Android 4.4W 基特Kat with wearable extensions 奇巧巧克力棒

API等级21:Android 5.0-5.0.2 Lollipop  棒棒糖

(3)测试流程(以sina.weibo为例)

     测试环境:Windows
7,ADB 调节和测试工具;物理接触目的手提式有线电话机1,连接手提式有线话机1到 PC 端

手提式有线电话机1和手提式有线电话机2均未被 ROOT,开启 USB 调节和测试;不用安装任何应用,不运营被测试的利用。连接装置开启USB调节和测试手提式有线电话机1 到PC端,在PC自动(也足以提前)安装好手提式有线电话机驱动后,运转命令行界面输入以下命令:

l adb devices

#展现已延续的设备列表,测试手提式无线话机是或不是健康连接

l adb backup -nosystem -noshared -apk -f
com.sina.weibo.abcom.sina.weibo

#-nosystem表示不备份系统采纳,-noshared代表不备份应用存款和储蓄在SD中的数据,-apk表示备份应用APK安装包, -f代表备份的.ab文件路径和文书名,最终是要备份应用的packageName

l 点拍手提式有线电话机1确认备份界面包车型地铁“备份作者的数码”

l 等待备份达成,至此腾讯网客户端数据成功备份为 com.sina.weibo.ab 文件

l 断开手提式有线电话机1的接连

l 连接手提式有线电话机2 ,在指令行界面下输入以下命令:

l adb kill-server  #关闭ADB

l adb devices
#重复开动ADB,检测手提式有线电话机2是还是不是成功连接

l adb restore com.sina.weibo.ab

l 点击手提式有线电电话机2确认恢复生机界面包车型大巴“苏醒本身的数码”

l 等待回复完毕

l 打开手提式有线电话机第22中学新设置的今日头条客户端,测试可平常登录手提式有线电话机第11中学帐号执行各个操作,且长时间有效。

(4)伊春防护

 
 突显设置android:allowBackup=false,使用android:restoreAnyVersion的暗中认可值。

(5)检测漏洞

 
 使用apktool等工具反编写翻译apk后,查看AndroidManifest.xml文件,查找allowBackup,就算其值为ture,则象征存在漏洞,如下图所示。

ACCESS 4

2.Debuggable默许安装危害

规律:android:debuggable属性用于钦定应用程序是不是能够被调剂,借使设置其为true,那么其将能够被java调节和测试工具(jdb)调节和测试,音信和代码都将大概会被获取和修改。

谨防:系统暗许其为false,使用系统暗中认可设置。

参照小说:

  1. android 常见漏洞总括,http://blog.sina.com.cn/s/blog\_83f3c04c0102xeow.html

2. https://developer.android.com/gu …
manifest-intro.html

3.http://blog.csdn.net/shuaishenkkk/article/details/18400711

4. https://segmentfault.com/a/1190000002590577

 

相关文章