0x00 drozer源码分析

安装记录(略):https://github.com/daumbrella/drozer

安装版本 2.4.3-19-g26f0ddf

安装环境 win7

报错: 'cut' 不是内部或外部命令, 因为setup.py脚本里有一个 getversion的函数,使用了Linux命令cut,导致报错。更改为如下代码即可:

def get_version():
	version_cmd = ['git', 'describe', '--tags']

	if platform == "linux2" or platform == "linux" or platform == "darwin":
		return subprocess.check_output(' '.join(version_cmd),shell=True)
	elif platform == "win32":
		return subprocess.check_output(version_cmd,shell=True)[0:5]


drozer是用来审计Android应用以及系统漏洞的。使用时发现发是由两部分组成,一部分是PC端的服务器,一部分是Android端安装的代理Agent。
那么它究竟可以做什么呢?并如何实现这些功能的呢?下面就让我们开始研究它吧!

drozer允许你以一个Android应用的身份与其他应用和操作系统进行交互。它的出现就是避免你自己写很多个apk来测试其他应用。drozer具有以下命令:

命令 描述
run MODULE
list
执行 drozer 模块
显示可在当前会话中执行的所有 drozer 模块的列表。 这会隐藏您
没有合适权限运行的模块
shell 在代理程序进程的上下文中,在设备上启动交互式 Linux shell
cd 将特定命名空间安装作为会话的根目录,以避免重复键入模块的全
clean
contributions
删除 drozer 在 Android 设备上存储的临时文件
显示已在系统中使用的对 drozer 框架和模块做出贡献的人员列表
echo
exit
help
load
module
permissions
set
unset
将文本打印到控制台
终止 drozer 会话
关于特定的命令或模块展示帮助信息
加载包含 drozer 命令的文件,并按顺序执行它们
从 Internet 查找并安装其他 drozer 模块
显示授予 drozer Agent 的权限列表
将值存储在作为环境变量传递给 drozer 生成的任何 Linux shell 的变
量中
删除 dorzer 传递给它产生的任何 Linux shell 命名的变量


其中最主要就是run啦,我们可以run app.activity.info -a 包名 来获取包的可导出activity的信息。

所有可用的module:
app.activity.forintent      Find activities that can handle the given intent
找到可以处理给定intent的activity。

app.activity.info           Gets information about exported activities.
获取导出activity的信息。

app.activity.start          Start an Activity
启动一个activity。

app.broadcast.info          Get information about broadcast receivers
获取广播接收器的信息。

app.broadcast.send          Send broadcast using an intent
使用intent发送广播。

app.broadcast.sniff         Register a broadcast receiver that can sniff particular intents
注册一个广播接收器,来嗅探特定intent。

app.package.attacksurface   Get attack surface of package
获得一个包的攻击面。

app.package.backup          Lists packages that use the backup API (returns truon FLAG_ALLOW_BACKUP)
列出使用备份API的包(返回truon FLAG_ALLOW_BACKUP)。

app.package.debuggable      Find debuggable packages
找到所有可调试的包名。

app.package.info            Get information about installed packages
获取关于某个包的信息。  run app.package.info -a XXXXX(应用名)

app.package.launchintent    Get launch intent of package
获取某个包的启动intent。

app.package.list            List Packages
列出所有的包名 -f 进行过滤。显示中文可以将cmd编码设置为utf-8,chcp 65001.

app.package.manifest        Get AndroidManifest.xml of package
获取某个包的Androidmanifest信息。

app.package.native          Find Native libraries embedded in the application.
发现应用中的native库

app.package.shareduid       Look for packages with shared UIDs
寻找共享某个uid的包名

app.provider.columns        List columns in content provider
列出content provider的所有列

app.provider.delete         Delete from a content provider
从content provider中删除

app.provider.download       Download a file from a content provider that supports files
总content provider中下载文件

app.provider.finduri        Find referenced content URIs in a package
在包中找到引用的内容uri

app.provider.info           Get information about exported content providers
获取导出的content provider的信息  run app.provider.info -a 包名

app.provider.insert         Insert into a Content Provider
向content provider中插入

app.provider.query          Query a content provider
查询一个content provider

app.provider.read           Read from a content provider that supports files
从支持文件的content provider读取

app.provider.update         Update a record in a content provider
更新content provider的记录

app.service.info            Get information about exported services
获取导出service的信息 

app.service.send            Send a Message to a service, and display the reply
向服务器发送消息,并显示回复

app.service.start           Start Service
启动一个服务

app.service.stop            Stop Service
停止一个服务

auxiliary.webcontentresolver Start a web service interface to content providers.
启动web服务接口

exploit.jdwp.check          Open @jdwp-control and see which apps connect
打开jdwp,查看哪个apps连接(jdwp是用于动态调试Java代码的协议)

exploit.pilfer.general.apnprovider Reads APN content provider
读取APN content provider APN: Access Point Name,中文即接入点

exploit.pilfer.general.settingsprovider Reads Settings content provider
读取设置content provider

information.datetime        Print Date/Time
打印时间

information.deviceinfo      Get verbose device information
获取冗长的设备信息

information.permissions     Get a list of all permissions used by packages on the device
获取包所使用的所有权限

scanner.activity.browsable  Get all BROWSABLE activities that can be invoked from the web browser
扫描所有可以被浏览器调用的activity

scanner.misc.native         Find native components included in packages
扫描应用包含的native组件

scanner.misc.readablefiles  Find world-readable files in the given folder
扫描给定文件夹中全局可读的文件

scanner.misc.secretcodes    Search for secret codes that can be used from the dialer
扫描可以使用拨号器的密码

scanner.misc.sflagbinaries  Find suid/sgid binaries in the given folder (defaul is /system).
在给定的文件夹中找到suid/sgid二进制文件

scanner.misc.writablefiles  Find world-writable files in the given folder
在给定的文件夹中找到全局界可写文件

scanner.provider.finduris   Search for content providers that can be queried from our context.
扫描可以从上下文查询的content provider

scanner.provider.injection  Test content providers for SQL injection vulnerabilities.
测试content provider中的SQL注入漏洞

scanner.provider.sqltables  Find tables accessible through SQL injection vulnerabilities.
通过SQL注入扫描可访问的表

scanner.provider.traversal  Test content providers for basic directory traversa vulnerabilities.
测试content provider的目录遍历漏洞

shell.exec                  Execute a single Linux command.
执行一个Linux命令

shell.send                  Send an ASH shell to a remote listener.
发送一个ASH shell到远程监听器

shell.start                 Enter into an interactive Linux shell.
进入到可交互的Linux shell

tools.file.download         Download a File
下载文件

tools.file.md5sum           Get md5 Checksum of file
获取文件的md5

tools.file.size             Get size of file
获取文件大小

tools.file.upload           Upload a File
上传文件

tools.setup.busybox         Install Busybox.
按照busybox

tools.setup.minimalsu       Prepare 'minimal-su' binary installation on the device.
在设备上准备“minimal-su”二进制安装。
 

这些模块不需要全部背下来,每次list help用起来就可以来!不过还是建议顺一下,有个印象~

下面我们将用个例子来使用drozer进行实际的渗透测试。

猜你喜欢

转载自blog.csdn.net/doudoudouzoule/article/details/83588922