
Инструмент для автоматизации скучного процесса анализа APK.
Инструмент для автоматизации процесса разведки (recon) в APK-файле.
Slicer принимает путь к извлечённому APK-файлу и возвращает все экспортируемые (exported) activity, receiver и service, у которых установлены null разрешения и которые могут быть вызваны извне.
Примечание: APK должен быть извлечён с помощью jadx или apktool.
Зачем?
Я начал заниматься bug bounty около трёх недель назад (в июне 2020) и стараюсь изо всех сил в области Android-приложений. Но я заметил одну вещь: во всех приложениях есть определённые действия, которые необходимо выполнить перед глубоким погружением. Поэтому я подумал, что было бы неплохо автоматизировать этот процесс с помощью простого инструмента.
Почему не drozer?
Ну, drozer — это совсем другой зверь. Хотя он тоже находит все доступные компоненты, мне надоело снова и снова запускать одни и те же команды.
Почему не автоматизировать с помощью drozer?
На самом деле я написал bash-скрипт для выполнения определённых команд drozer, чтобы не запускать их вручную, но всё равно оставались скучные задачи. Например, проверка strings.xml на наличие различных API-ключей, тестирование, общедоступна ли Firebase БД, не установлены ли лимиты использования для ключей Google API и многое другое.
Почему не искать по всем файлам?
Я считаю, что такие инструменты, как grep или ripgrep, будут гораздо быстрее для поиска по всем файлам. Поэтому, если вам нужно найти что-то конкретное, лучше использовать их. Но если вы считаете, что есть что-то, что должно проверяться во всех Android-файлах, смело открывайте issue.
android:allowbackup в true.android:debuggable в true.android:exported=true и не установлены разрешения.exported не указан, то slicer проверяет, определены ли для этого компонента Intent-filters. Если да, то компонент экспортирован по умолчанию (это правило из документации Android)..json.
myapp.firebaseio.com, то будет проверено, возвращает ли https://myapp.firebaseio.com/.json какие-либо данные или выдаёт отказ в доступе.git clone https://github.com/mzfr/slicer
cd slicerpython3 slicer.py -hИспользовать очень просто. Доступны следующие опции:
Извлечение информации из манифеста и строк APK
Использование:
slicer [ОПЦИЯ] [Директория извлечённого APK]
Опции:
-d, --dir путь к выходной директории jadx
-o, --output Имя выходного файла (не реализовано)
Я пока не реализовал флаг output, потому что считаю, что если перенаправить вывод slicer в yaml-файл, он будет иметь правильный формат.
python3 slicer.py -d path/to/extact/apk -c config.json
Модуль извлечения URL и путей взят из apkurlgrep от @ndelphit
Все реализованные функции — это то, что я узнал за последние несколько недель. Если вы считаете, что есть ещё какие-то вещи, которые следует проверять в APK, пожалуйста, откройте issue с предложением по функционалу, и я с радостью его реализую :)
Если хотите, вы можете купить мне кофе:
Duplicate.not applicable, утверждая, что у ключа есть usage cap — r/suspiciouslyspecific 😉strings.xml и AndroidManifest.xml./res/raw и res/xml.