
Фреймворк для автоматического извлечения статических и динамических признаков из Android-приложений
Это инструмент для извлечения статических и динамических признаков из Android APK-файлов. Он объединяет различные известные инструменты анализа Android-приложений, такие как DroidBox, FlowDroid, Strace, AndroGuard или анализ VirusTotal. Если указать исходную директорию, содержащую APK-файлы, AndroPyTool применяет все эти инструменты для выполнения предварительного статического, статического и динамического анализа и генерирует файлы признаков в форматах JSON и CSV, а также позволяет сохранить все данные в базе данных MongoDB.
Для получения дополнительной информации вы можете прочитать следующие две статьи:
Martín, A., Lara-Cabrera, R., & Camacho, D. (2018). Обнаружение вредоносного ПО для Android с помощью гибридного объединения признаков и ансамблевых классификаторов: фреймворк AndroPyTool и набор данных OmniDroid. Information Fusion. DOI: 10.1016/j.inffus.2018.12.006
Martín, A., Lara-Cabrera, R., & Camacho, D. (2018). Новый инструмент для статического и динамического анализа вредоносных программ Android. In Data Science and Knowledge Engineering for Sensing Decision Support (pp. 509-516). World Scientific.
Пожалуйста, если вы используете этот инструмент, цитируйте вышеуказанные работы в своих статьях.

Существует два возможных способа установки и использования AndroPyTool.
Режим A - DOCKER: Загрузка Docker-контейнера, содержащего все необходимые файлы. Это рекомендуемый вариант, вы можете запустить AndroPyTool всего за два шага.
Режим B - Исходный код: Установка и настройка всех необходимых библиотек и запуск исходного кода Python.
Docker-контейнер был создан для обеспечения быстрой и надежной версии AndroPyTool. Чтобы использовать AndroPyTool с помощью Docker, вам нужно:
Установить Docker (если вы еще этого не сделали). Следуйте инструкциям здесь. Если вы не используете Ubuntu, измените операционную систему на соответствующую.
Загрузить контейнер из Docker Hub:
$ docker pull alexmyg/andropytool
Запустить AndroPyTool, запустив контейнер:
$ docker run --volume=</PATH/TO/FOLDER/WITH/APKS/>:/apks alexmyg/andropytool -s /apks/ <АРГУМЕНТЫ>
Вам нужно заменить </PATH/TO/FOLDER/WITH/APKS/> на путь на вашем хосте, содержащий APK-файлы для анализа. Аргумент "-s" должен быть указан, как показано в строке выше, указывая на /apks/
ПРИМЕЧАНИЕ 2: AndroPyTool перемещает ваши APK-файлы в разные подпапки для создания организованной рабочей директории. Смотрите схему структуры папок.
Существуют различные аргументы, которые могут быть переданы AndroPyTool:
-h: Показать справочное сообщение и выйти.-all, --allsteps: Выполнить все шаги AndroPyTool (рекомендуется). Для получения отчета VirusTotal необходимо также указать аргумент -vt, за которым следует ключ API VirusTotal. Если опция -all не указана, то выполняется только последний шаг вместе с указанными аргументами.-s SOURCE_FOLDER, --source SOURCE_FOLDER: Папка, содержащая APK-файлы для анализа. Все образцы должны иметь расширение .apk. Если предыдущий запуск AndroPyTool был прерван, необходимо указать предыдущую рабочую директорию.-S, --single: Сохранять отдельные анализы отдельно. По умолчанию: False.-f, --filter: Фильтровать валидные и невалидные APK (рекомендуется).-vt VIRUSTOTAL_API_KEY, --virustotal VIRUSTOTAL_API_KEY: Анализировать приложения с помощью сервиса VirusTotal. Должен следовать ключ API VirusTotal.-cl, : Классифицировать приложения как вредоносные или безвредные на основе отчетов VirusTotal. Должен быть установлен аргумент --virustotal.ПРИМЕЧАНИЕ: Эта процедура протестирована только в Ubuntu
0. Требования
$ sudo apt-get update
$ sudo apt-get install -y --no-install-recommends software-properties-common wget git lib32gcc1 lib32ncurses5 lib32stdc++6 lib32z1 libc6-i386 libgl1-mesa-dev python-pip python-dev gcc python-tk curl
$ sudo add-apt-repository ppa:webupd8team/java -y
$ sudo apt-get update
$ sudo echo oracle-java8-installer shared/accepted-oracle-license-v1-1 select true | sudo /usr/bin/debconf-set-selections
$ sudo apt-get install -y oracle-java8-installer
$ sudo apt-get install -y python-setuptools
$ sudo apt-get clean
1. Вам нужно установить Android SDK (перейдите к следующему шагу, если он уже установлен) Следующие шаги позволят вам установить Android SDK в не-GUI режиме:
Загрузите и распакуйте Android SDK:
$ cd
$ wget http://dl.google.com/android/android-sdk_r24.2-linux.tgz
$ tar -xvf android-sdk_r24.2-linux.tgz
Добавьте Android SDK в PATH (если вы не используете Bash, например, предпочитаете Zsh, не забудьте изменить правильный файл). Для этого добавьте следующие две строки в файл ~/.bashrc:
export ANDROID_HOME=$HOME/android-sdk-linux/
export PATH=$PATH:$ANDROID_HOME/tools
export PATH=$PATH:$ANDROID_HOME/platform-tools
Загрузите библиотеки в текущую сессию с помощью:
$ source ~/.bashrc
2. Нужно установить пакет Android 16
Установим Android 16, версию, поддерживаемую DroidBox (платформа и системный образ):
$ echo y | android update sdk --filter platform-tools --no-ui --force -a
$ echo y | android update sdk --filter tools --no-ui --force -a
$ echo y | android update sdk --filter android-16 --no-ui --force -a
$ echo y | android update sdk --filter sys-img-armeabi-v7a-android-16 --no-ui -a
3. Загрузим репозитории
$ git clone --recursive https://github.com/alexMyG/AndroPyTool.git
$ wget https://github.com/alexMyG/AndroPyTool/releases/download/droidbox_images_patched/images_droidbox.zip
$ unzip -o images_droidbox.zip -d AndroPyTool/DroidBox_AndroPyTool/images
$ touch AndroPyTool/avclass/__init__.py
4. Подготовим DroidBox
$ chmod 744 AndroPyTool/DroidBox_AndroPyTool/*.sh
$ echo "no" | AndroPyTool/DroidBox_AndroPyTool/createDroidBoxDevice.sh
5. Установим требуемые библиотеки Python
virtualenv:
$ sudo pip install virtualenv
$ virtualenv droidbox_env
$ source droidbox_env/bin/activate
$ pip install -r AndroPyTool/requirements.txt
6. Теперь мы можем запустить AndroPyTool
$ cd AndroPyTool/
$ python androPyTool.py -s </PATH/TO/FOLDER/WITH/APKS/>
ВХОД: Папка, содержащая файлы с расширением ".apk". ВЫХОД: Структура папок по следующей схеме:
/ --> корневая папка
/samples/ --> образцы, изначально находящиеся в корневой папке
/samples/BW/ --> образцы безвредного ПО
/samples/MW/ --> образцы вредоносного ПО
/invalid_apks/ --> найденные невалидные APK
/VT_analysis/ --> отчеты анализа VirusTotal
/FlowDroid_outputs/ --> результаты FlowDroid
/FlowDroid_processed/ --> обработанные результаты FlowDroid
/DroidBox_outputs/ --> необработанные выходные данные DroidBox
/Dynamic/Droidbox/ --> анализ DroidBox в JSON
/Dynamic/Strace/ --> анализ Strace в CSV
/Features_files/ --> файлы признаков, сгенерированные AndroPyTool
--classify-fw, --flowdroid: Запустить FlowDroid.-dr, --droidbox: Запустить DroidBox.-c, --cleanup: Выполнить очистку, удалив временные рабочие файлы. По умолчанию: True-P PACKAGEINDEX, --packgeIndex PACKAGEINDEX: TXT-файл со всеми пакетами Android API. По умолчанию: info/package_index.txt-C CLASSINDEX, --classIndex CLASSINDEX: TXT-файл со всеми классами Android API. По умолчанию: info/class_index.txt-C CLASSINDEX, --classIndex CLASSINDEX: TXT-файл со всеми классами Android API. По умолчанию: info/class_index.txt-SC SYSTEMCOMMANDSINDEX, --systemCommandsIndex SYSTEMCOMMANDSINDEX: TXT-файл со всеми системными командами. По умолчанию: info/system_commands.txt-C CLASSINDEX, --classIndex CLASSINDEX: TXT-файл со всеми классами Android API. По умолчанию: info/class_index.txt-mg MONGODBURI, --mongodbURI MONGODBURI: Экспортировать сгенерированный отчет в базу данных MongoDB. Требуется адрес подключения по схеме: localhost:27017-csv EXPORTCSV, --cexportCSV EXPORTCSV: Экспортировать сгенерированный отчет в CSV-файл. Включаются только статические признаки.--color: Разрешить цвета при выводе сообщений.--no-color: Не использовать цвета для вывода сообщений.