
Un framework per l'estrazione automatica di caratteristiche statiche e dinamiche da applicazioni Android.
Questo è uno strumento per estrarre caratteristiche statiche e dinamiche da APK Android. Combina diversi strumenti noti di analisi di app Android come DroidBox, FlowDroid, Strace, AndroGuard o VirusTotal. Fornita una directory di origine contenente file APK, AndroPyTool applica tutti questi strumenti per eseguire analisi pre-statiche, statiche e dinamiche e genera file di caratteristiche in formato JSON e CSV e permette anche di salvare tutti i dati in un database MongoDB.
Per ottenere maggiori informazioni puoi leggere i seguenti due articoli:
Martín, A., Lara-Cabrera, R., & Camacho, D. (2018). Rilevamento di malware Android tramite fusione ibrida di caratteristiche e classificatori ensemble: il framework AndroPyTool e il dataset OmniDroid. Information Fusion. DOI: 10.1016/j.inffus.2018.12.006
Martín, A., Lara-Cabrera, R., & Camacho, D. (2018). Un nuovo strumento per l'analisi statica e dinamica del malware Android. In Data Science and Knowledge Engineering for Sensing Decision Support (pp. 509-516). World Scientific.
Per favore, se usi questo strumento, cita i lavori sopra nei tuoi articoli.

Ci sono due modi possibili per installare e utilizzare AndroPyTool.
MODALITÀ A - DOCKER: Scarica un container Docker che contiene tutti i file necessari. Questa è l'opzione consigliata, puoi avere AndroPyTool in esecuzione in soli due passaggi.
MODALITÀ B - CODICE SORGENTE: Installa e configura tutte le librerie necessarie ed esegui il codice Python sorgente.
È stato creato un container Docker per fornire una versione veloce e affidabile di AndroPyTool. Per utilizzare AndroPyTool con Docker basta:
Installa Docker (se non l'hai già fatto). Segui le istruzioni qui. Se non stai usando Ubuntu, passa al Sistema Operativo corretto.
Scarica il container da Docker hub:
$ docker pull alexmyg/andropytool
Esegui AndroPyTool avviando il container:
$ docker run --volume=</PATH/TO/FOLDER/WITH/APKS/>:/apks alexmyg/andropytool -s /apks/ <ARGUMENTS>
Devi sostituire </PATH/TO/FOLDER/WITH/APKS/> con un percorso del tuo host che contiene gli apk da analizzare. L'argomento "-s" deve essere fornito come mostrato nella riga sopra, puntando a /apks/
NOTA 2: AndroPyTool sposta i tuoi file APK in diverse sottocartelle per generare una directory di lavoro organizzata. Vedi lo schema della struttura delle cartelle.
Ci sono diversi argomenti che possono essere forniti a AndroPyTool:
-h: Mostra il messaggio di aiuto ed esce.-all, --allsteps: Esegue tutti i passaggi di AndroPyTool (Consigliato). Per ottenere un report di VirusTotal, l'argomento -vt deve essere fornito seguito da una chiave API di VirusTotal. Se l'opzione -all non è fornita, viene eseguito solo l'ultimo passaggio insieme agli argomenti forniti.-s SOURCE_FOLDER, --source SOURCE_FOLDER: Cartella contenente APK da analizzare. Tutti i campioni devono avere estensione .apk. Se una precedente esecuzione di AndroPyTool è stata interrotta, deve essere fornita la directory di lavoro precedente.-S, --single: Salva le analisi singole separatamente. Predefinito: False.-f, --filter: Filtra APK validi e non validi (Consigliato).-vt VIRUSTOTAL_API_KEY, --virustotal VIRUSTOTAL_API_KEY: Analizza le applicazioni con il servizio VirusTotal. Deve essere seguito da una chiave API di VirusTotal.NOTA: Questa procedura è stata testata solo su Ubuntu
0. Requisiti
$ 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. Devi installare Android SDK (vai al passaggio successivo se lo hai già) I prossimi passaggi ti permetteranno di installare Android SDK in modalità Non-GUI:
Scarica e decomprimi Android SDK:
$ cd
$ wget http://dl.google.com/android/android-sdk_r24.2-linux.tgz
$ tar -xvf android-sdk_r24.2-linux.tgz
Aggiungi Android SDK al PATH (se non usi Bash, ad esempio preferisci Zsh, ricordati di modificare il file corretto). Per farlo, aggiungi queste due righe al tuo file ~/.bashrc:
export ANDROID_HOME=$HOME/android-sdk-linux/
export PATH=$PATH:$ANDROID_HOME/tools
export PATH=$PATH:$ANDROID_HOME/platform-tools
Carica le librerie nella sessione corrente con:
$ source ~/.bashrc
2. Dobbiamo installare il pacchetto Android 16
Installiamo Android 16, che è la versione supportata da DroidBox (la piattaforma e l'immagine di sistema):
$ 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. Scarichiamo i repository
$ 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. Prepariamo DroidBox
$ chmod 744 AndroPyTool/DroidBox_AndroPyTool/*.sh
$ echo "no" | AndroPyTool/DroidBox_AndroPyTool/createDroidBoxDevice.sh
4. Installiamo le librerie Python richieste
virtualenv:
$ sudo pip install virtualenv
$ virtualenv droidbox_env
$ source droidbox_env/bin/activate
$ pip install -r AndroPyTool/requirements.txt
5. Ora possiamo eseguire AndroPyTool
$ cd AndroPyTool/
$ python androPyTool.py -s </PATH/TO/FOLDER/WITH/APKS/>
INPUT: Una cartella contenente file con estensione ".apk". OUTPUT: Una struttura di cartelle che segue questo 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: Classifica le app tra malware o benignware basandosi sui report di VirusTotal. L'argomento --virustotal deve essere impostato.-fw, --flowdroid: Esegui flowdroid.-dr, --droidbox: Esegui droidbox.-c, --cleanup: Esegue la pulizia cancellando i file di lavoro temporanei. Predefinito: True-P PACKAGEINDEX, --packgeIndex PACKAGEINDEX: File TXT con tutti i pacchetti API Android. Predefinito: info/package_index.txt-C CLASSINDEX, --classIndex CLASSINDEX: File TXT con tutte le classi API Android. Predefinito: info/class_index.txt-C CLASSINDEX, --classIndex CLASSINDEX: File TXT con tutte le classi API Android. Predefinito: info/class_index.txt-SC SYSTEMCOMMANDSINDEX, --systemCommandsIndex SYSTEMCOMMANDSINDEX: File TXT con tutti i comandi di sistema. Predefinito: info/system_commands.txt-C CLASSINDEX, --classIndex CLASSINDEX: File TXT con tutte le classi API Android. Predefinito: info/class_index.txt-mg MONGODBURI, --mongodbURI MONGODBURI: Esporta il report generato in un database mongodb. Richiede l'indirizzo di connessione seguendo lo schema: localhost:27017-csv EXPORTCSV, --cexportCSV EXPORTCSV: Esporta il report generato in un file CSV. Sono incluse solo le caratteristiche statiche.--color: Permette i colori durante la stampa dei messaggi.--no-color: Non usare colori per stampare i messaggi.