导语:在前面的几篇文章中我们讲了Android的基本架构,渗透测试工具和ADB,本篇文章将讲述Android应用程序渗透测试如何入门。
在前面的几篇文章中,链接在这里part1,part2,part3,我们讲了Android的基本架构,渗透测试工具和ADB,现在我们来看下Android应用程序渗透测试如何入门。
从安全角度来看,查看清单文件通常是渗透测试人员开始渗透之前第一件要做的事情。
Android清单文件
· 提供Android应用程序所有详细细节
· 命名应用程序的Java包
· 声明所有权限
· 描述Android应用程序组件
· 包含应用程序所需的最低级API的声明
· 运行改程序所需的最低Android版本
· 所有服务
我们将使用insecurebank这个apk来进行演示
允许调试:true
如果应用程序被标记为可调试,任何攻击者在获取应用程序的权限后可以访问应用程序的数据,也可以在该应用程序权限下执行任意代码。
Java Debug Wire 协议是调试器和JVM实例之间的中心链接。
手机没有root,也是可以通过应用程序允许来获取数据或执行任意代码的。
APP启动前:
APP启动后:
上面是我个人手机的shell终端,手机并没有root。
允许备份:true
这个设置定义启用了USB调试的用户能否备份和存储应用程序数据。
因此,处理和存储信用卡信息,密码等敏感信息的应用程序此设置应该设置为false,来防止敏感信息泄露风险。
打开终端
输入如下命令
-Adb backup -apk -shared (apk name)
再输入下面这条命令
Cat backup.ab zlib-flate -uncompress > backup_compressed.tar
权限
权限是对访问设备上部分代码和数据的一种限制。
应该检查有权限复制数据到外部存储的应用程序,以确保没有存储敏感信息。
应审查应用程序请求的所有权限,以确保它们不会带来安全风险。
权限属性的值有下面4个:
· Normal(普通)
· Dangerous(危险)
· Signature(签名)
· Signature Or System(签名或系统)
示例
<permission> Android:protectionLevel=“signature” </permission>
Intents(意图)
这些是用于将两个或多个不同Android组件绑定在一起的组件。Intents可用于执行各种任务,例如启动操作,切换活动和启动服务。
Intents可用于启动活动,将其发送到任何感兴趣的广播接收器组件,以及与后台服务通信。应该审查Intents消息,以确保它们不包含任何可能被截获的敏感信息。
<Intent-filter> <action android:name=”string” /> <category android:name=”string” /> </Intents-filter>
显式意图将一个活动连接到同一个应用程序中的另一个活动。这些Intents通过名称指定目标组件,它们通常用于应用程序内部消息——例如当用户单击按钮时启动同类型活动的活动。
隐式意图不命名目标,组件名称的字段留空。隐式意图通常用于激活其他应用程序中的组件。例如,如果我们想要向用户显示地图上的位置,我们可以使用隐式意图来请求另一个能够定位的应用在地图上显示指定位置。
敬请期待安卓应用程序渗透测试五。