一个使APK侦察的枯燥过程自动化的工具Slicer
作者:Sec-Labs | 发布时间:
项目地址
https://github.com/mzfr/slicer
Slicer
一种自动执行 APK 文件侦察过程的工具。
Slicer 接受提取的 APK 文件的路径,然后返回所有导出的、具有 null 权限并可以从外部激发的活动、接收器和服务。
注意 :必须通过 jadx 或提取 APK apktool 。
内容目录
概括
为什么?
我大约在 3 周前(2020 年 6 月)开始了漏洞赏金计划,并且我一直在尽最大努力开发 Android 应用程序。 但我注意到一件事,在所有应用程序中,在深入研究之前我必须做一些事情。 所以我只是觉得用一个简单的工具来自动化这个过程会很好。
为什么不是drozer?
好吧,drozer 是另一种野兽。 尽管它确实找到了所有可访问的组件,但我厌倦了一次又一次地运行这些命令。
为什么不使用 drozer 实现自动化?
我实际上写了一个 bash 脚本来运行某些 drozer 命令,所以我不必手动运行它们,但仍然有一些无聊的事情必须完成。 就像检查 strings.xml 各种 API 密钥一样,测试 firebase DB 是否可以公开访问,或者这些 google API 密钥是否设置了任何上限或任何关于它们的使用以及许多其他东西。
为什么不搜索所有文件?
我认为像 grep 或 ripgrep 这样的工具可以更快地搜索所有文件。 因此,如果您想搜索特定的内容,最好使用这些工具。 但是,如果您认为所有 android 文件中都应该检查某些内容,请随时提出问题。
特征
- 检查APK是否设置
android:allowbackup为true - 检查 APK 是否设置
android:debuggable为true. - 返回所有已导出且具有空权限集的活动、服务和广播接收器。 这是基于两件事决定的:
android:exporte=true存在于任何组件中并且没有权限集。- 如果未提及导出,则切片器检查是否
Intent-filters为该组件定义了任何定义,如果是,则意味着该组件默认导出(这是 android 文档中给出的规则。)
- 通过测试
.json技巧来检查 APK 的 Firebase URL。- 如果 firebase URL 是
myapp.firebaseio.com然后它将检查是否https://myapp.firebaseio.com/.json返回某些内容或拒绝授予权限。 - 如果这个东西是开放的,那么它可以被报告为高严重性。
- 如果 firebase URL 是
- 检查 google API 密钥是否可公开访问。
- 这可以在一些赏金计划中报告,但严重程度较低。
- 但大多数时候报道这种事情会带出痛苦
Duplicate。 - 有时公司也可以关闭它,因为它
not applicable会声称 KEY 有一个usage cap- r/suspiciouslyspecific 😉
- 返回存在于
strings.xml和中的其他 API 密钥AndroidManifest.xml - 列出目录中存在的所有文件
/res/raw名res/xml。 - 提取所有 URL 和路径。
- 这些可以与 dirsearch 或 ffuf 等工具一起使用。
安装
- 克隆这个存储库
git clone https://github.com/mzfr/slicer
cd slicer- 现在你可以运行它了:
python3 slicer.py -h
用法
使用起来非常简单。 以下选项可用:
Extract information from Manifest and strings of an APK
Usage:
slicer [OPTION] [Extracted APK directory]
Options:
-d, --dir path to jadx output directory
-o, --output Name of the output file(not implemented)
我还没有实现这个 output 标志,因为我认为如果你可以将切片器输出重定向到一个 yaml 文件,它将是一个正确的格式。
使用示例
- 从 APK 中提取信息并将其显示在屏幕上。
python3 slicer.py -d path/to/extact/apk -c config.json