
Фреймворк для анализа вредоносного ПО на основе машинного обучения для Android-приложений.
🕵️ Фреймворк машинного обучения для анализа вредоносного ПО в Android-приложениях. ☢️
DroidDetective — это инструмент на Python для анализа Android-приложений (APK) на наличие поведения и конфигураций, связанных с вредоносным ПО. При передаче пути к приложению (APK-файлу) Droid Detective делает прогноз (с помощью своей ML-модели) о том, является ли приложение вредоносным. Возможности и особенности Droid Detective включают:
AndroidManifest.xml приложения. 🙅AndroidManifest.xml приложения. 🧮Все зависимости DroidDetective можно установить вручную или через файл requirements с помощью команды
pip install -r REQUIREMENTS.txt
DroidDetective протестирован как на Windows 10, так и на Ubuntu 18.0 LTS.
DroidDetective можно запустить, передав Python-файлу APK в качестве параметра командной строки, например:
python DroidDetective.py myAndroidApp.apk
Если файл apk_malware.model отсутствует, инструмент сначала обучит модель, для чего потребуется набор обучающих APK в папке malware и в папке normal в корне проекта. После успешного запуска результат будет выведен в CLI: определила ли модель APK как вредоносный или безопасный. Пример такого вывода можно увидеть ниже:
>> Analysed file 'com.android.camera2.apk', identified as not malware.
В DroidDetective.py можно передать дополнительный параметр — JSON-файл для сохранения результатов. Если этот JSON-файл уже существует, результаты данного запуска будут добавлены в него.
python DroidDetective.py myAndroidApp.apk output.json
Пример такого выходного JSON:
{
"com.android.camera2": false,
}
DroidDetective — это инструмент на Python для анализа Android-приложений (APK) на предмет поведения, связанного с вредоносным ПО. Он работает путём обучения классификатора случайного леса на информации, полученной как от известных вредоносных APK, так и от стандартных APK, доступных в магазине Android-приложений. Этот инструмент поставляется предварительно обученным, однако модель можно переобучить на новом наборе данных в любое время. ⚙️
В данной модели в качестве набора признаков используются разрешения из файла AndroidManifest.xml APK. Это достигается путём создания словаря каждого стандартного разрешения Android и установки признака в 1, если разрешение присутствует в APK. Аналогично добавляется признак для количества используемых разрешений в манифесте и для количества неидентифицированных разрешений, найденных в манифесте.
Предварительно обученная модель была обучена примерно на 14 семействах вредоносных программ (каждое с одним или несколькими APK-файлами), взятых из репозитория ashisdb, и примерно на 100 обычных приложениях из Google Play Store.
Ниже приведены статистические данные для этой ML-модели:
Accuracy: 0.9310344827586207
Recall: 0.9166666666666666
Precision: 0.9166666666666666
F-Measure: 0.9166666666666666
Топ-10 признаков с наибольшим весом (т.е. разрешений Android), используемых этой моделью для выявления вредоносного ПО, можно увидеть ниже:
"android.permission.SYSTEM_ALERT_WINDOW": 0.019091367939223395,
"android.permission.ACCESS_NETWORK_STATE": 0.021001765263234648,
"android.permission.ACCESS_WIFI_STATE": 0.02198962579120518,
"android.permission.RECEIVE_BOOT_COMPLETED": 0.026398914436102188,
"android.permission.GET_TASKS": 0.03595458598076517,
"android.permission.WAKE_LOCK": 0.03908212881520419,
"android.permission.WRITE_SMS": 0.057041576632290585,
"android.permission.INTERNET": 0.08816028225034145,
"android.permission.WRITE_EXTERNAL_STORAGE": 0.09835914154294739,
"other_permission": 0.10189463965313218,
"num_of_permissions": 0.12392224814084198