Property Extractor für Android-Apps



DroidLysis ist ein Vor-Analyse Tool für Android-Apps: Es führt sich wiederholende und langweilige Aufgaben aus, die wir normalerweise zu Beginn eines Reverse Engineering erledigen würden. Es zerlegt das Android-Beispiel, organisiert die Ausgabe in Verzeichnissen und sucht nach verdächtigen Stellen im Code, die es zu untersuchen gilt. Die Ausgabe hilft dem Reverse Engineer, die ersten Schritte von zu beschleunigen Analyse.

DroidLysis kann über Android-Pakete (apk), ausführbare Dalvik-Dateien (dex), Zip-Dateien (zip), Rar-Dateien (rar) oder Dateiverzeichnisse verwendet werden.

DroidLysis installieren

  1. Installieren Sie die erforderlichen Systempakete
sudo apt-get install default-jre git python3 python3-pip unzip wget libmagic-dev libxml2-dev libxslt-dev
  1. Installieren Sie Android-Demontagetools

  2. Apktool ,

  3. Baksmaliund optional
  4. Dex2jar Und
  5. Veraltet: Procyon (Beachten Sie, dass Procyon nur mit Java 8 funktioniert, nicht mit Java 11).
$ 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
  1. Holen Sie sich DroidLysis aus dem Git-Repository (bevorzugt) oder von pip

Von Git in einer virtuellen Python-Umgebung installieren (python3 -m venvoder virtuelle Pyenv-Umgebungen usw.).

$ python3 -m venv venv
$ source ./venv/bin/activate
(venv) $ pip3 install git+https://github.com/cryptax/droidlysis

Alternativ können Sie DroidLysis direkt von PyPi installieren (pip3 install droidlysis).

  1. Konfigurieren conf/general.conf. Stellen Sie insbesondere sicher, dass Sie sich ändern /home/axelle mit Ihren entsprechenden Verzeichnissen.
[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
procyon = /home/axelle/softs/procyon-decompiler-0.5.30.jar
keytool = /usr/bin/keytool
...
  1. Starte es:
python3 ./droidlysis3.py --help

Aufbau

Der Aufbau Datei ist ./conf/general.conf (Sie können mit der Datei zu einer anderen Datei wechseln --config Möglichkeit). Hier konfigurieren Sie den Speicherort verschiedener externer Tools (z. B. Apktool) und den Namen von Musterdateien (standardmäßig). ./conf/smali.conf, ./conf/wide.conf, ./conf/arm.conf, ./conf/kit.conf) und den Namen der Datenbankdatei (wird nur verwendet, wenn Sie angeben). --enable-sql)

Stellen Sie sicher, dass Sie die richtigen Pfade für die Demontagetools angeben, da DroidLysis diese sonst nicht findet.

Verwendung

DroidLysis verwendet Python 3. So starten Sie es und erhalten Optionen:

droidlysis --help

Testen Sie es zum Beispiel an Signals APK:

droidlysis --input Signal-website-universal-release-6.26.3.apk --output /tmp --config /PATH/TO/DROIDLYSIS/conf/general.conf

DroidLysis-Ausgaben:

  • Eine Zusammenfassung auf der Konsole (siehe Bild oben)
  • Das entpackte, vorverarbeitete Beispiel in einem Unterverzeichnis Ihres Ausgabeverzeichnisses. Das Unterverzeichnis wird nach dem Dateinamen des Beispiels und der sha256-Summe benannt. Wenn wir zum Beispiel die Signalanwendung analysieren und festlegen --output /tmpwird in die Analyse geschrieben /tmp/Signalwebsiteuniversalrelease4.52.4.apk-f3c7d5e38df23925dd0b2fe1f44bfa12bac935a6bc8fe3a485a4436d4487a290.
  • Eine Datenbank (standardmäßig SQLite droidlysis.db) mit Eigenschaften, die es bemerkt hat.

Optionen

Holen Sie sich die Nutzung mit droidlysis --help

  • Die Eingabe kann eine Datei oder eine sein Verzeichnis von Dateien, die rekursiv untersucht werden können. DroidLysis weiß, wie man Android-Pakete, ausführbare DEX-, ODEX- und ARM-Dateien, ZIP und RAR verarbeitet. DroidLysis schlägt bei anderen Dateitypen nicht fehl (es sei denn, es liegt ein Fehler vor ...), kann den Inhalt jedoch nicht verstehen.

  • Bei der Verarbeitung von Dateiverzeichnissen ist es in der Regel sehr hilfreich, verarbeitete Proben an einen anderen Ort zu verschieben, um zu wissen, was verarbeitet wurde. Dies wird per Option erledigt --movein. Wenn Sie nur an Statistiken interessiert sind, sollten Sie wahrscheinlich auch das Ausgabeverzeichnis löschen, das detaillierte Informationen enthält Information für jede Probe: Dies ist eine Option --clearoutput. Wenn Sie alle Statistiken in einer SQL-Datenbank speichern möchten, verwenden Sie --enable-sql (sehen Hier)

  • Die DEX-Dekompilierung dauert mit Procyon recht langwierig, diese Option also deaktiviert standardmäßig. Wenn Sie wollen dekompilieren nach Java, verwenden --enable-procyon.

  • Die Analyse von DroidLysis überprüft standardmäßig keine bekannten SDKs von Drittanbietern, dh es werden beispielsweise keine verdächtigen Aktivitäten von diesen gemeldet. Wenn Sie möchten, dass sie überprüft werden, verwenden Sie die Option --no-kit-exception. Dadurch werden in der Regel viel mehr erkannte Eigenschaften für das Beispiel erstellt, da SDKs (z. B. Werbung) viele gekennzeichnete APIs verwenden (GPS-Standort abrufen, IMEI abrufen, IMSI abrufen, HTTP POST ...).

Beispielausgabeverzeichnis (--output DIR)

Dieses Verzeichnis enthält (sofern zutreffend):

  • Eine lesbare AndroidManifest.xml
  • Lesbare Ressourcen in res
  • Bibliotheken libVermögenswerte assets
  • Zerlegter Smali-Code: smali (und andere)
  • Paket-Metainformationen: META-INF
  • Packungsinhalt nach dem einfachen Entpacken ./unzipped
  • Ausführbare DEX-Datei classes.dex (und andere) und in jar umgewandelt: classes-dex2jar.jarund unjarred in ./unjarred

Die folgenden Dateien werden von DroidLysis generiert:

  • autoanalysis.md: listet jedes von DroidLysis erkannte Muster auf und wo.
  • report.md: das Gleiche, was auf der Konsole gedruckt wurde

Wenn Sie nicht benötigen, dass das Beispielausgabeverzeichnis generiert wird, verwenden Sie die Option --clearoutput.

Tracker von Exodus usw. importieren (--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

Tracker von Exodus, die in Ihrem Original nicht vorhanden sind kit.conf werden angehängt ~/.cache/droidlysis/kit.conf. Vergleichen Sie die beiden Dateien und prüfen Sie, welche Tracker Sie hinzufügen möchten.

SQLite-Datenbank{#sqlite_database}

Wenn Sie ein Verzeichnis von Proben verarbeiten möchten, möchten Sie wahrscheinlich die von DroidLysis gefundenen Eigenschaften in einer Datenbank speichern, um die Ergebnisse einfach zu analysieren und abzufragen. Nutzen Sie in diesem Fall die Option --enable-sql. Dadurch werden alle Ergebnisse automatisch in einer Datenbank mit dem Namen „dump“ abgelegt droidlysis.dbin einer Tabelle mit dem Namen samples. Jeder Eintrag in der Tabelle bezieht sich auf eine bestimmte Stichprobe. Jede Spalte enthält Eigenschaften, die DroidLysis verfolgt.

Um beispielsweise alle Dateinamen-, SHA256-Summen- und Smali-Eigenschaften der Datenbank abzurufen:

sqlite> select sha256, sanitized_basename, smali_properties from samples;
f3c7d5e38df23925dd0b2fe1f44bfa12bac935a6bc8fe3a485a4436d4487a290|Signalwebsiteuniversalrelease4.52.4.apk|{"send_sms": true, "receive_sms": true, "abort_broadcast": true, "call": false, "email": false, "answer_call": false, "end_call": true, "phone_number": false, "intent_chooser": true, "get_accounts": true, "contacts": false, "get_imei": true, "get_external_storage_stage": false, "get_imsi": false, "get_network_operator": false, "get_active_network_info": false, "get_line_number": true, "get_sim_country_iso": true,
...

Eigenschaftsmuster

Was DroidLysis erkennt, kann in den Dateien des konfiguriert und erweitert werden ./conf Verzeichnis.

Ein Muster besteht aus:

  • A Etikett Name: Beispiel send_sms. Dies dient zur Benennung der Immobilie. Muss weltweit eindeutig sein .conf Datei.
  • A Muster: Dies ist ein regulärer Ausdruck, der abgeglichen werden soll. Ex: ;->sendTextMessage|;->sendMultipartTextMessage|SmsManager;->sendDataMessage. Im smali.conf Datei, dieser reguläre Ausdruck stimmt mit Smali-Code überein. In diesem speziellen Fall gibt es drei verschiedene Möglichkeiten, SMS-Nachrichten aus dem Code zu senden: sendTextMessage, sendMultipartTextMessage und sendDataMessage.
  • A Beschreibung (optional): erklärt die Bedeutung der Eigenschaft und ihre Bedeutung.
[send_sms]
pattern=;->sendTextMessage|;->sendMultipartTextMessage|SmsManager;->sendDataMessage
description=Sending SMS messages

Exodus Privacy Tracker importieren

Exodus Privacy führt eine Liste verschiedener SDKs, die in unserer Analyse ausgeschlossen werden sollten conf/kit.conf. Option hinzufügen --import_exodus zur Droidlysis-Befehlszeile: Dadurch werden vorhandene Tracker analysiert, die Exodus Privacy kennt und die noch nicht in Ihrem sind kit.conf. Endlich wird es so sein anhängen alle neuen Tracker zu ~/.cache/droidlysis/kit.conf.

Anschließend möchten Sie möglicherweise Ihre sortieren kit.conf Datei:

import configparser
import collections
import os

config = configparser.ConfigParser({}, collections.OrderedDict)
config.read(os.path.expanduser('~/.cache/droidlysis/kit.conf'))
# Order all sections alphabetically
config._sections = collections.OrderedDict(sorted(config._sections.items(), key=lambda t: t[0] ))
with open('sorted.conf','w') as f:
config.write(f)

Aktualisierung

  • v3.4.6 – Manifesterkennungsfunktion, die APK bei der Installation automatisch lädt
  • v3.4.5 – Erstellen einer beschreibbaren Benutzerdatei kit.conf
  • v3.4.4 – Fehlerbehebung Nr. 14
  • v3.4.3 – Verwendung von Konfigurationsdateien
  • v3.4.2 – Import von Exodus Privacy Trackers hinzugefügt
  • v3.4.1 – Abhängigkeit von Androguard entfernt
  • v3.4.0 – Multidex-Unterstützung
  • v3.3.1 – Verbesserung der Erkennung von Base64-Strings
  • v3.3.0 – Daten in JSON ausgeben
  • v3.2.1 – IP-Adresserkennung
  • v3.2.0 – Dex2jar ist optional
  • v3.1.0 – Erkennung von Base64-Strings



Source link

Loading...