
Strumento di pre-analisi automatizzato per app Android che disassembla campioni, estrae proprietà tramite pattern matching configurabile e organizza l'output per accelerare l'analisi della reverse engineering e del malware.
DroidLysis è uno strumento di pre-analisi per app Android: esegue attività ripetitive e noiose che tipicamente faremmo all'inizio di qualsiasi reverse engineering. Disassembla il campione Android, organizza l'output in directory e cerca punti sospetti nel codice da esaminare. L'output aiuta il reverse engineer ad accelerare i primi passi dell'analisi.
DroidLysis può essere utilizzato su pacchetti Android (apk), eseguibili Dalvik (dex), file Zip (zip), file Rar (rar) o directory di file.
sudo apt-get install default-jre git python3 python3-pip unzip wget libmagic-dev libxml2-dev libxslt-dev
$ mkdir -p ~/softs
$ cd ~/softs
$ wget https://bitbucket.org/iBotPeaches/apktool/downloads/apktool_2.9.3.jar
$ wget https://bitbucket.org/JesusFreke/smali/downloads/baksmali-2.5.2.jar
$ wget https://github.com/pxb1988/dex2jar/releases/download/v2.4/dex-tools-v2.4.zip
$ unzip dex-tools-v2.4.zip
$ rm -f dex-tools-v2.4.zip
Installare da Git in un ambiente virtuale Python (python3 -m venv, o ambienti virtuali pyenv ecc.).
$ python3 -m venv venv
$ source ./venv/bin/activate
(venv) $ pip3 install git+https://github.com/cryptax/droidlysis
In alternativa, puoi installare DroidLysis direttamente da PyPi (pip3 install droidlysis).
conf/general.conf. In particolare assicurati di modificare /home/axelle con le tue directory appropriate.[tools]
apktool = /home/axelle/softs/apktool_2.9.3.jar
baksmali = /home/axelle/softs/baksmali-2.5.2.jar
dex2jar = /home/axelle/softs/dex-tools-v2.4/d2j-dex2jar.sh
keytool = /usr/bin/keytool
...
python3 ./droidlysis3.py --help
Il file di configurazione è ./conf/general.conf (puoi passare a un altro file con l'opzione --config).
Qui si configura la posizione dei vari strumenti esterni (es. Apktool), il nome dei file di pattern
(per impostazione predefinita ./conf/smali.conf, ./conf/wide.conf, ./conf/arm.conf, ./conf/kit.conf) e il nome del
file di database (usato solo se si specifica --enable-sql)
Assicurati di specificare i percorsi corretti per gli strumenti di disassemblaggio, altrimenti DroidLysis non li troverà.
DroidLysis utilizza Python 3. Per avviarlo e ottenere le opzioni:
droidlysis --help
Ad esempio, testalo sull'APK di Signal:
droidlysis --input Signal-website-universal-release-6.26.3.apk --output /tmp --config /PERCORSO/DI/DROIDLYSIS/conf/general.conf

DroidLysis produce:
--output /tmp, l'analisi verrà scritta in /tmp/Signalwebsiteuniversalrelease4.52.4.apk-f3c7d5e38df23925dd0b2fe1f44bfa12bac935a6bc8fe3a485a4436d4487a290.droidlysis.db) contenente le proprietà rilevate.Ottieni l'uso con droidlysis --help
L'input può essere un file o una directory di file da esaminare ricorsivamente. DroidLysis sa come elaborare pacchetti Android, eseguibili DEX, ODEX e ARM, ZIP, RAR. DroidLysis non fallirà su altri tipi di file (a meno che non ci sia un bug...) ma non sarà in grado di comprendere il contenuto.
Quando si elaborano directory di file, è tipicamente molto utile spostare i campioni elaborati in un'altra posizione per sapere cosa è stato elaborato. Questo è gestito dall'opzione --movein. Inoltre, se sei interessato solo alle statistiche, dovresti probabilmente pulire la directory di output che contiene informazioni dettagliate per ogni campione: questa è l'opzione --clearoutput. Se desideri memorizzare tutte le statistiche in un database SQL, usa --enable-sql (vedi qui)
L'analisi di DroidLysis non ispeziona gli SDK di terze parti noti per impostazione predefinita, cioè per esempio non segnalerà alcuna attività sospetta da questi. Se vuoi che vengano ispezionati, usa l'opzione --no-kit-exception. Questo di solito crea molte più proprietà rilevate per il campione, poiché gli SDK (ad es. pubblicitari) utilizzano molte API segnalate (ottenere posizione GPS, ottenere IMEI, ottenere IMSI, HTTP POST...).
--output DIR)Questa directory contiene (quando applicabile):
AndroidManifest.xml leggibilereslib, risorse assetssmali (e altri)META-INF./unzippedclasses.dex (e altri), e convertito in jar: classes-dex2jar.jar, e decompresso in ./unjarredI seguenti file sono generati da DroidLysis:
autoanalysis.md: elenca ogni pattern rilevato da DroidLysis e dove.report.md: lo stesso di quanto stampato sulla consoleSe non hai bisogno che la directory di output del campione venga generata, usa l'opzione --clearoutput.
--import-exodus)$ python3 ./droidlysis3.py --import-exodus --verbose
Processing file: ./droidurl.pyc ...
DEBUG:droidconfig.py:Reading configuration file: './conf/./smali.conf'
DEBUG:droidconfig.py:Reading configuration file: './conf/./wide.conf'
DEBUG:droidconfig.py:Reading configuration file: './conf/./arm.conf'
DEBUG:droidconfig.py:Reading configuration file: '/home/axelle/.cache/droidlysis/./kit.conf'
DEBUG:droidproperties.py:Importing ETIP Exodus trackers from https://etip.exodus-privacy.eu.org/api/trackers/?format=json
DEBUG:connectionpool.py:Starting new HTTPS connection (1): etip.exodus-privacy.eu.org:443
DEBUG:connectionpool.py:https://etip.exodus-privacy.eu.org:443 "GET /api/trackers/?format=json HTTP/1.1" 200 None
DEBUG:droidproperties.py:Appending imported trackers to /home/axelle/.cache/droidlysis/./kit.conf
I tracker da Exodus che non sono presenti nel tuo kit.conf iniziale vengono aggiunti a ~/.cache/droidlysis/kit.conf. Confronta i 2 file e controlla quali tracker desideri aggiungere.
Se desideri elaborare una directory di campioni, probabilmente ti piacerà memorizzare le proprietà trovate da DroidLysis in un database, per analizzare e interrogare facilmente i risultati. In tal caso, usa l'opzione --enable-sql. Questo scaricherà automaticamente tutti i risultati in un database denominato droidlysis.db, in una tabella chiamata samples. Ogni voce nella tabella è relativa a un dato campione. Ogni colonna è una proprietà tracciata da DroidLysis.
Ad esempio, per recuperare tutti i nomi file, la somma SHA256 e le proprietà smali del database: