
Android 앱을 위한 머신러닝 기반 악성코드 분석 프레임워크입니다.
🕵️ 안드로이드 앱을 위한 머신러닝 기반 악성코드 분석 프레임워크. ☢️
DroidDetective는 잠재적인 악성코드 관련 동작 및 구성을 분석하기 위한 안드로이드 애플리케이션(APK)용 Python 도구입니다. 애플리케이션(APK 파일) 경로가 제공되면 Droid Detective는 자체 ML 모델을 사용하여 해당 애플리케이션이 악성인지 예측합니다. Droid Detective의 기능 및 특징은 다음과 같습니다:
AndroidManifest.xml 파일에 지정된 약 330개의 권한 중 어떤 권한이 있는지 분석합니다. 🙅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 파일이 존재하지 않으면, 도구가 먼저 모델을 훈련하며 프로젝트 루트에 malware라는 폴더와 normal이라는 폴더에 APK 훈련 세트가 필요합니다. 성공적으로 실행되면 CLI에 모델이 APK를 악성 또는 양성으로 식별했는지에 대한 결과가 출력됩니다. 아래에서 이 출력의 예를 볼 수 있습니다:
>> Analysed file 'com.android.camera2.apk', identified as not malware.
추가 매개변수로 DroidDetective.py에 JSON 파일을 제공하여 결과를 저장할 수 있습니다. 이 JSON 파일이 이미 존재하면 이번 실행 결과가 해당 JSON 파일에 추가됩니다.
python DroidDetective.py myAndroidApp.apk output.json
이 출력 JSON의 예는 다음과 같습니다:
{
"com.android.camera2": false,
}
DroidDetective는 잠재적인 악성코드 관련 동작을 분석하기 위한 안드로이드 애플리케이션(APK)용 Python 도구입니다. 이는 알려진 악성코드 APK와 안드로이드 앱 스토어에서 제공되는 일반 APK로부터 얻은 정보를 사용하여 Random Forest 분류기를 훈련하는 방식으로 작동합니다. 이 도구는 사전 훈련된 상태로 제공되지만, 언제든지 새로운 데이터셋으로 모델을 재훈련할 수 있습니다. ⚙️
이 모델은 현재 APK의 AndroidManifest.xml 파일에서 권한을 특징 세트로 사용합니다. 이는 각 표준 안드로이드 권한의 사전을 만들고, 해당 권한이 APK에 있으면 특징을 1로 설정하는 방식으로 작동합니다. 유사하게, 매니페스트에서 사용된 권한의 개수와 매니페스트에서 발견된 식별되지 않은 권한의 개수에 대한 특징도 추가됩니다.
사전 훈련된 모델은 ashisdb의 저장소에서 얻은 약 14개의 악성코드 패밀리(각각 하나 이상의 APK 파일 포함)와 Google Play 스토어에서 얻은 약 100개의 일반 애플리케이션으로 훈련되었습니다.
아래는 이 ML 모델의 통계를 나타냅니다:
Accuracy: 0.9310344827586207
Recall: 0.9166666666666666
Precision: 0.9166666666666666
F-Measure: 0.9166666666666666
악성코드 식별을 위해 이 모델에서 사용된 상위 10개 가중치 특징(안드로이드 권한)은 다음과 같습니다:
"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