
Androidアプリ向けの機械学習マルウェア解析フレームワーク。
🕵️ Androidアプリ向けの機械学習マルウェア分析フレームワーク。 ☢️
DroidDetectiveは、Androidアプリケーション(APK)の潜在的なマルウェア関連の動作や構成を分析するためのPythonツールです。アプリケーション(APKファイル)へのパスを指定すると、Droid Detectiveは機械学習モデルを使用して、アプリケーションが悪意があるかどうかの予測を行います。Droid Detectiveの特徴と利点は以下の通りです。
AndroidManifest.xml ファイルで指定されている約330のパーミッションを分析します。 🙅AndroidManifest.xml ファイルで使用されている標準および独自パーミッションの数を分析します。 🧮DroidDetectiveの依存関係はすべて手動または要件ファイルを使用してインストールできます。以下のコマンドを実行します。
pip install -r REQUIREMENTS.txt
DroidDetectiveはWindows 10およびUbuntu 18.0 LTSでテスト済みです。
DroidDetectiveは、コマンドラインパラメータとしてAPKを指定してPythonファイルを実行することで使用できます。例:
python DroidDetective.py myAndroidApp.apk
apk_malware.model ファイルが存在しない場合、ツールは最初にモデルをトレーニングし、プロジェクトのルートに malware と normal という名前のフォルダにAPKのトレーニングセットが必要です。正常に実行されると、モデルがAPKを悪意があるか良性か識別した結果がCLIに表示されます。この出力の例を以下に示します。
>> ファイル 'com.android.camera2.apk' を分析しました。マルウェアではないと識別されました。
DroidDetective.py には、結果を保存するためのJsonファイルを追加パラメータとして指定できます。このJsonファイルが既に存在する場合、この実行の結果がJsonファイルに追加されます。
python DroidDetective.py myAndroidApp.apk output.json
この出力Jsonの例は以下の通りです。
{
"com.android.camera2": false,
}
DroidDetectiveは、Androidアプリケーション(APK)の潜在的なマルウェア関連の動作を分析するためのPythonツールです。これは、既知のマルウェアAPKとAndroidアプリストアで入手可能な標準APKの両方から得られた情報に基づいて、ランダムフォレスト分類器をトレーニングすることで機能します。このツールには事前トレーニング済みのモデルが付属していますが、モデルはいつでも新しいデータセットで再トレーニングできます。 ⚙️
このモデルは現在、APKの AndroidManifest.xml ファイルからのパーミッションを特徴セットとして使用しています。これは、各標準Androidパーミッションの辞書を作成し、パーミッションがAPKに存在する場合は特徴を 1 に設定することで機能します。同様に、マニフェストで使用されているパーミッションの数と、マニフェストで見つかった未確認のパーミッションの数についての特徴が追加されます。
事前トレーニング済みモデルは、ashisdbのリポジトリから取得した約14のマルウェアファミリー(それぞれ1つ以上のAPKファイル)と、Google Playストアから取得した約100の通常アプリケーションでトレーニングされました。
以下はこのMLモデルの統計情報です。
正確性: 0.9310344827586207
再現率: 0.9166666666666666
適合率: 0.9166666666666666
F値: 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