
Androidアプリケーションから静的および動的特徴を自動抽出するためのフレームワーク
これは、Android APKから静的および動的特徴を抽出するためのツールです。DroidBox、FlowDroid、Strace、AndroGuard、VirusTotal分析など、よく知られたAndroidアプリ分析ツールを組み合わせています。APKファイルを含むソースディレクトリを指定すると、AndroPyToolはこれらすべてのツールを適用して、静的解析前、静的解析、動的解析を実行し、JSONおよびCSV形式の特徴ファイルを生成し、MongoDBデータベースにすべてのデータを保存することもできます。
詳細については、以下の2つの論文をお読みください。
Martín, A., Lara-Cabrera, R., & Camacho, D. (2018). Android malware detection through hybrid features fusion and ensemble classifiers: the AndroPyTool framework and the OmniDroid dataset. Information Fusion. DOI: 10.1016/j.inffus.2018.12.006
Martín, A., Lara-Cabrera, R., & Camacho, D. (2018). A new tool for static and dynamic Android malware analysis. In Data Science and Knowledge Engineering for Sensing Decision Support (pp. 509-516). World Scientific.
このツールを使用する場合は、上記の研究を論文で引用してください。

AndroPyToolのインストールと使用には2つの方法があります。
モードA - Docker: 必要なファイルがすべて含まれたDockerコンテナをダウンロードします。これが推奨される方法です。わずか2ステップでAndroPyToolを実行できます。
モードB - ソースコード: 必要なライブラリをすべてインストールして設定し、Pythonソースコードを実行します。
AndroPyToolの高速で信頼性の高いバージョンを提供するために、Dockerコンテナが構築されています。Dockerを使用してAndroPyToolを使用するには、以下の手順を実行するだけです。
Dockerをインストールします(まだインストールしていない場合)。手順はこちらに従ってください。Ubuntuを使用していない場合は、適切なオペレーティングシステムに変更してください。
Docker Hubからコンテナをプルします:
$ docker pull alexmyg/andropytool
コンテナを起動してAndroPyToolを実行します:
$ docker run --volume=</PATH/TO/FOLDER/WITH/APKS/>:/apks alexmyg/andropytool -s /apks/ <ARGUMENTS>
</PATH/TO/FOLDER/WITH/APKS/> を、分析するapkが含まれるホスト上のパスに置き換えてください。上記の行のように、引数 "-s" は /apks/ を指すように指定する必要があります。
注2: AndroPyToolは、整理された作業ディレクトリを生成するために、APKファイルを異なるサブフォルダに移動します。フォルダ構造のスキームを参照してください。
AndroPyToolに指定できる引数は異なります:
-h:ヘルプメッセージを表示して終了します。-all, --allsteps:AndroPyToolのすべてのステップを実行します(推奨)。VirusTotalレポートを取得するには、引数 -vt とそれに続くVirusTotal APIキーも指定する必要があります。-all オプションが指定されていない場合は、指定された引数に加えて最後のステップのみが実行されます。-s SOURCE_FOLDER, --source SOURCE_FOLDER:分析するAPKを含むフォルダ。すべてのサンプルは .apk 拡張子を持つ必要があります。以前のAndroPyToolの実行が中断された場合は、以前の作業ディレクトリを指定する必要があります。-S, --single:個々の分析を別々に保存します。デフォルト:False。-f, --filter:有効なAPKと無効なAPKをフィルタリングします(推奨)。-vt VIRUSTOTAL_API_KEY, --virustotal VIRUSTOTAL_API_KEY:VirusTotalサービスでアプリケーションを分析します。VirusTotal APIキーを続けて指定する必要があります。-cl, --classify: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をインストールする必要があります(すでにインストールしている場合は次の手順に進んでください) 次の手順で、GUIモードなしでAndroid SDKをインストールできます:
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をパスに追加します(Bashを使用していない場合(例:Zshを好む場合)は、適切なファイルを変更することを忘れないでください)。そのために、次の2行を ~/.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パッケージをインストールする必要があります
$ 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
3. DroidBoxを準備しましょう
$ chmod 744 AndroPyTool/DroidBox_AndroPyTool/*.sh
$ echo "no" | AndroPyTool/DroidBox_AndroPyTool/createDroidBoxDevice.sh
4. 必要なPythonライブラリをインストールしましょう
virtualenv をインストールします:
$ sudo pip install virtualenv
$ virtualenv droidbox_env
$ source droidbox_env/bin/activate
$ pip install -r AndroPyTool/requirements.txt
5. これで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/ --> JSON形式のDroidBox分析
/Dynamic/Strace/ --> CSV形式のStrace分析
/Features_files/ --> AndroPyToolで生成された特徴ファイル
-fw, --flowdroid:FlowDroidを実行します。-dr, --droidbox:DroidBoxを実行します。-c, --cleanup:一時的な作業ファイルを削除してクリーンアップを実行します。デフォルト:True-P PACKAGEINDEX, --packgeIndex PACKAGEINDEX:すべてのAndroid APIパッケージを含むTXTファイル。デフォルト:info/package_index.txt-C CLASSINDEX, --classIndex CLASSINDEX:すべてのAndroid APIクラスを含むTXTファイル。デフォルト:info/class_index.txt-C CLASSINDEX, --classIndex CLASSINDEX:すべてのAndroid APIクラスを含むTXTファイル。デフォルト:info/class_index.txt-SC SYSTEMCOMMANDSINDEX, --systemCommandsIndex SYSTEMCOMMANDSINDEX:すべてのシステムコマンドを含むTXTファイル。デフォルト:info/system_commands.txt-C CLASSINDEX, --classIndex CLASSINDEX:すべてのAndroid APIクラスを含むTXTファイル。デフォルト:info/class_index.txt-mg MONGODBURI, --mongodbURI MONGODBURI:生成されたレポートをMongoDBデータベースにエクスポートします。スキーム localhost:27017 に従った接続アドレスが必要です。-csv EXPORTCSV, --cexportCSV EXPORTCSV:生成されたレポートをCSVファイルにエクスポートします。静的機能のみが含まれます。--color:メッセージ出力時に色を許可します。--no-color:メッセージ出力に色を使用しません。