
Ein Framework zur automatisierten Extraktion von statischen und dynamischen Merkmalen aus Android-Anwendungen
Dies ist ein Tool zum Extrahieren von statischen und dynamischen Merkmalen aus Android APKs. Es kombiniert verschiedene bekannte Android-App-Analysetools wie DroidBox, FlowDroid, Strace, AndroGuard oder VirusTotal-Analyse. Wenn ein Quellverzeichnis mit APK-Dateien bereitgestellt wird, wendet AndroPyTool all diese Tools für prä-statische, statische und dynamische Analysen an und erzeugt Merkmalsdateien im JSON- und CSV-Format und ermöglicht es, alle Daten in einer MongoDB-Datenbank zu speichern.
Für weitere Informationen können Sie die folgenden beiden Arbeiten lesen:
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.
Bitte zitieren Sie die oben genannten Arbeiten in Ihren Veröffentlichungen, wenn Sie dieses Tool verwenden.

Es gibt zwei Möglichkeiten, AndroPyTool zu installieren und zu nutzen.
MODUS A – DOCKER: Herunterladen eines Docker-Containers, der alle notwendigen Dateien enthält. Dies ist die empfohlene Option, Sie können AndroPyTool in nur zwei Schritten zum Laufen bringen.
MODUS B – QUELLCODE: Installieren und Konfigurieren aller erforderlichen Bibliotheken und Ausführen des Python-Quellcodes.
Ein Docker-Container wurde erstellt, um eine schnelle und zuverlässige Version von AndroPyTool bereitzustellen. Um AndroPyTool mit Docker zu verwenden, müssen Sie lediglich:
Installieren Sie Docker (falls noch nicht geschehen). Folgen Sie den Anweisungen hier. Wenn Sie nicht Ubuntu verwenden, wechseln Sie zum richtigen Betriebssystem.
Ziehen Sie den Container von Docker Hub:
$ docker pull alexmyg/andropytool
Führen Sie AndroPyTool aus, indem Sie den Container starten:
$ docker run --volume=</PATH/TO/FOLDER/WITH/APKS/>:/apks alexmyg/andropytool -s /apks/ <ARGUMENTS>
Sie müssen </PFAD/ZUM/ORDNER/MIT/APKS/> durch einen Pfad auf Ihrem Host ersetzen, der die zu analysierenden APKs enthält. Das Argument "-s" muss wie in der obigen Zeile angegeben werden, wobei auf /apks/ zu verweisen ist.
HINWEIS 2: AndroPyTool verschiebt Ihre APK-Dateien in verschiedene Unterordner, um ein organisiertes Arbeitsverzeichnis zu erstellen. Siehe das Ordnerstrukturschema.
Es gibt verschiedene Argumente, die an androPyTool übergeben werden können:
-h: Zeigt die Hilfemeldung an und beendet.-all, --allsteps: Führt alle Schritte von AndroPyTool aus (empfohlen). Um einen VirusTotal-Bericht zu erhalten, muss auch das Argument -vt gefolgt von einem VirusTotal-API-Schlüssel angegeben werden. Wenn die Option -all nicht angegeben wird, wird nur der letzte Schritt plus die bereitgestellten Argumente ausgeführt.-s SOURCE_FOLDER, --source SOURCE_FOLDER: Ordner mit zu analysierenden APKs. Alle Beispiele müssen die Erweiterung .apk enthalten. Wenn eine vorherige Ausführung von AndroPyTool unterbrochen wurde, muss das vorherige Arbeitsverzeichnis angegeben werden.-S, --single: Einzelne Analyse separat speichern. Standard: False.-f, --filter: Filtert gültige und ungültige APKs (empfohlen).-vt VIRUSTOTAL_API_KEY, --virustotal VIRUSTOTAL_API_KEY: Analysiert Anwendungen mit dem VirusTotal-Dienst. Es muss ein VirusTotal-API-Schlüssel folgen.HINWEIS: Dieses Verfahren wurde nur unter Ubuntu getestet.
0. Voraussetzungen
$ 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. Sie müssen das Android SDK installieren (zum nächsten Schritt, falls bereits vorhanden) Die nächsten Schritte ermöglichen die Installation des Android SDK im Nicht-GUI-Modus:
Android SDK herunterladen und entpacken:
$ cd
$ wget http://dl.google.com/android/android-sdk_r24.2-linux.tgz
$ tar -xvf android-sdk_r24.2-linux.tgz
Android SDK zum Pfad hinzufügen (wenn Sie nicht Bash verwenden, z.B. Zsh bevorzugen, denken Sie daran, die richtige Datei zu ändern). Fügen Sie dazu diese beiden Zeilen zu Ihrer ~/.bashrc-Datei hinzu:
export ANDROID_HOME=$HOME/android-sdk-linux/
export PATH=$PATH:$ANDROID_HOME/tools
export PATH=$PATH:$ANDROID_HOME/platform-tools
Laden Sie die Bibliotheken in der aktuellen Sitzung mit:
$ source ~/.bashrc
2. Wir müssen das Android 16-Paket installieren
Installieren wir Android 16, die von DroidBox unterstützte Version (die Plattform und das System-Image):
$ 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. Laden wir die Repositorys herunter
$ 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. Bereiten wir DroidBox vor
$ chmod 744 AndroPyTool/DroidBox_AndroPyTool/*.sh
$ echo "no" | AndroPyTool/DroidBox_AndroPyTool/createDroidBoxDevice.sh
5. Installieren wir die benötigten Python-Bibliotheken
virtualenv:
$ sudo pip install virtualenv
$ virtualenv droidbox_env
$ source droidbox_env/bin/activate
$ pip install -r AndroPyTool/requirements.txt
6. Jetzt können wir AndroPyTool ausführen
$ cd AndroPyTool/
$ python androPyTool.py -s </PATH/TO/FOLDER/WITH/APKS/>
EINGABE: Ein Ordner mit Dateien mit der Erweiterung ".apk". AUSGABE: Eine Ordnerstruktur nach folgendem Schema:
/ --> root folder
/samples/ --> samples, originally in the root folder
/samples/BW/ --> benignware samples
/samples/MW/ --> malware samples
/invalid_apks/ --> invalid apks found
/VT_analysis/ --> VirusTotal analysis reports
/FlowDroid_outputs/ --> flowdroid results
/FlowDroid_processed/ --> flowdroid results processed
/DroidBox_outputs/ --> DroidBox outputs raw
/Dynamic/Droidbox/ --> Droidbox analysis in JSON
/Dynamic/Strace/ --> Strace analysis in CSV
/Features_files/ --> Features files generated with AndroPyTool
-cl, --classify: Klassifiziert Apps als Malware oder Benignware basierend auf den VirusTotal-Berichten. Das Argument --virustotal muss gesetzt sein.-fw, --flowdroid: Führt flowdroid aus.-dr, --droidbox: Führt droidbox aus.-c, --cleanup: Bereinigt durch Löschen temporärer Arbeitsdateien. Standard: True-P PACKAGEINDEX, --packgeIndex PACKAGEINDEX: TXT-Datei mit allen Android-API-Paketen. Standard: info/package_index.txt-C CLASSINDEX, --classIndex CLASSINDEX: TXT-Datei mit allen Android-API-Klassen. Standard: info/class_index.txt-C CLASSINDEX, --classIndex CLASSINDEX: TXT-Datei mit allen Android-API-Klassen. Standard: info/class_index.txt-SC SYSTEMCOMMANDSINDEX, --systemCommandsIndex SYSTEMCOMMANDSINDEX: TXT-Datei mit allen Systembefehlen. Standard: info/system_commands.txt-C CLASSINDEX, --classIndex CLASSINDEX: TXT-Datei mit allen Android-API-Klassen. Standard: info/class_index.txt-mg MONGODBURI, --mongodbURI MONGODBURI: Exportiert den generierten Bericht in eine MongoDB-Datenbank. Erfordert Verbindungsadresse nach dem Schema: localhost:27017-csv EXPORTCSV, --cexportCSV EXPORTCSV: Exportiert den generierten Bericht in eine CSV-Datei. Es werden nur statische Merkmale einbezogen.--color: Erlaubt Farben beim Drucken von Nachrichten.--no-color: Verwendet keine Farben zum Drucken von Nachrichten.