最近接到任务,让了解一下几款Android安全测试相关的软件,首先是Drozer。Drozer是一款综合的安全评估和攻击的android框架,据 产品介绍 里说,Drozer可以全面评估app的安全性,并帮助团队把app的安全风险保持在可控范围内。
使用方法
1、在 mwrinfosecurity 公司的这个网页上,提供了社区版本的下载(没错,还有收费的高级版),下载并安装之。并保证android的adb环境已经配置好,即cmd中输入adb devices不会报错。并在手机端安装下载包中的Agent.apk的包。
2、在PC端开启转发
adb forward tcp:31415 tcp:31415
adb forward tcp:31415 tcp:31415
3、在手机端打开安装好的apk程序。
4、在PC上开启Drozer console
drozer console connect
drozer console connect
这样,就进入了 dz> 的console界面,后面就参照说明书一步一步进行测试。
功能介绍
dz> run app.package.list -f example
dz> run app.package.list -f example
list命令用以列出所有包含“example”的手机中已安装package名称,记住目标应用的完整名称。
dz> run app.package.info -a com.example
dz> run app.package.info -a com.example
info命令用以通过完整名称,获取该package的详细信息,比如data路径、apk路径、声明的权限等等。
dz> run app.package.attacksurface com.example
dz> run app.package.attacksurface com.example
attacksurface即攻击面分析,分析Activity/Broadcast Receiver/Content Provider/Service的权限,即是否能被其他的的应用程序调用。会像下列示例一样列出数量:
Attack Surface:
3 activities exported
0 broadcast receivers exported
2 content providers exported
2 services exported
is debuggable
dz> run app.provider.info -a com.example
dz> run app.provider.info -a com.example
获取provider的信息,比如是否需要额外权限来读写app的数据库,等等。如果找到相关漏洞,就可以通过
dz> run scanner.provider.finduris -a com.example
dz> run scanner.provider.finduris -a com.example
来扫描一些可用的uri,比如userName、password、ID之类的,甚至可以修改值(如SQL注入什么的):
dz> run app.provider.query content://xxxxxx --preinjection "xxx"
dz> run app.provider.query content://xxxxxx --preinjection "xxx"
dz> run scanner.provider.injection -a com.example
dz> run scanner.provider.injection -a com.example
进行简单的SQL注入检查、文件遍历检查之类的。
其他:
service相关
查询service
dz> run app.service.info -a com.example
dz> run app.service.info -a com.example
shell.start
在设备上启动一个可交互的linux shell
tools.file.upload / tools.file.download
在android设备上上传/下载文件
tools.setup.busybox / tools.setup.minimalsu
往设备上安装busybox和minimalsu
其他功能
在收费版本中,Drozer还提供了攻击面的可视化界面,并在多设备支持、模拟传感器输入等方面进行了探索,但是介于收费功能,没有继续看下去。
总结
在测试app的安全性上,Drozer确实可以发挥一些作用,不过关键问题还是要了解Android app的整体结构和安全策略,才能游刃有余,而不是见招拆招,被动的很。