Drozer Tutorial

Erlernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

Bug-Bounty-Tipp: Melden Sie sich an für Intigriti, eine Premium-Bug-Bounty-Plattform, die von Hackern für Hacker erstellt wurde! Treten Sie uns noch heute bei unter https://go.intigriti.com/hacktricks und beginnen Sie, Prämien von bis zu 100.000 $ zu verdienen!

APKs zum Testen

Teile dieses Tutorials wurden aus dem Drozer-Dokumentations-PDF** extrahiert.**

Installation

Installieren Sie den Drozer-Client auf Ihrem Host. Laden Sie ihn von den neuesten Versionen herunter.

pip install drozer-2.4.4-py2-none-any.whl
pip install twisted
pip install service_identity

Lade die drozer APK von den neuesten Veröffentlichungen herunter und installiere sie. Im Moment ist es diese.

adb install drozer.apk

Starten des Servers

Der Agent läuft auf Port 31415, wir müssen Port-Weiterleitung durchführen, um die Kommunikation zwischen dem Drozer-Client und dem Agent herzustellen. Hier ist der Befehl dazu:

adb forward tcp:31415 tcp:31415

Schließlich starten Sie die Anwendung und drücken Sie unten auf "ON"

Und verbinden Sie sich damit:

drozer console connect

Interessante Befehle

Befehle

Beschreibung

Help MODULE

Zeigt die Hilfe des ausgewählten Moduls an

list

Zeigt eine Liste aller drozer Module, die in der aktuellen Sitzung ausgeführt werden können. Dies verbirgt Module, für die Sie nicht die entsprechenden Berechtigungen haben.

shell

Startet eine interaktive Linux-Shell auf dem Gerät im Kontext des Agents.

clean

Entfernt temporäre Dateien, die von drozer auf dem Android-Gerät gespeichert wurden.

load

Lädt eine Datei mit drozer-Befehlen und führt sie in Sequenz aus.

module

Sucht und installiert zusätzliche drozer-Module aus dem Internet.

unset

Entfernt eine benannte Variable, die drozer an alle von ihm gestarteten Linux-Shells übergibt.

set

Speichert einen Wert in einer Variablen, der als Umgebungsvariable an alle von drozer gestarteten Linux-Shells übergeben wird.

shell

Startet eine interaktive Linux-Shell auf dem Gerät im Kontext des Agents.

run MODULE

Führt ein drozer-Modul aus

exploit

Drozer kann Exploits erstellen, die auf dem Gerät ausgeführt werden sollen. drozer exploit list

payload

Die Exploits benötigen ein Payload. drozer payload list

Paket

Finde den Namen des Pakets, indem du nach einem Teil des Namens filterst:

dz> run app.package.list -f sieve
com.mwr.example.sieve

Grundlegende Informationen zum Paket:

dz> run app.package.info -a com.mwr.example.sieve
Package: com.mwr.example.sieve
Process Name: com.mwr.example.sieve
Version: 1.0
Data Directory: /data/data/com.mwr.example.sieve
APK Path: /data/app/com.mwr.example.sieve-2.apk
UID: 10056
GID: [1028, 1015, 3003]
Shared Libraries: null
Shared User ID: null
Uses Permissions:
- android.permission.READ_EXTERNAL_STORAGE
- android.permission.WRITE_EXTERNAL_STORAGE
- android.permission.INTERNET
Defines Permissions:
- com.mwr.example.sieve.READ_KEYS
- com.mwr.example.sieve.WRITE_KEYS

Lesen Sie Manifest:

run app.package.manifest jakhar.aseem.diva

Angriffsfläche des Pakets:

dz> run app.package.attacksurface com.mwr.example.sieve
Attack Surface:
3 activities exported
0 broadcast receivers exported
2 content providers exported
2 services exported
is debuggable
  • Aktivitäten: Möglicherweise können Sie eine Aktivität starten und eine Art Autorisierung umgehen, die Sie daran hindern sollte, sie zu starten.

  • Inhaltsanbieter: Möglicherweise können Sie auf private Daten zugreifen oder eine Schwachstelle ausnutzen (SQL-Injection oder Pfadtraversierung).

  • Dienste:

  • is debuggable: Weitere Informationen

Aktivitäten

Der Wert "android:exported" eines exportierten Aktivitätskomponenten ist in der AndroidManifest.xml-Datei auf "true" gesetzt:

<activity android:name="com.my.app.Initial" android:exported="true">
</activity>

Auflisten exportierter Aktivitäten:

dz> run app.activity.info -a com.mwr.example.sieve
Package: com.mwr.example.sieve
com.mwr.example.sieve.FileSelectActivity
com.mwr.example.sieve.MainLoginActivity
com.mwr.example.sieve.PWList

Aktivität starten:

Möglicherweise können Sie eine Aktivität starten und eine Art Autorisierung umgehen, die Sie daran hindern sollte, sie zu starten.

dz> run app.activity.start --component com.mwr.example.sieve com.mwr.example.sieve.PWList

Sie können auch eine exportierte Aktivität von adb aus starten:

  • PackageName ist com.example.demo

  • Exportierter ActivityName ist com.example.test.MainActivity

adb shell am start -n com.example.demo/com.example.test.MainActivity

Inhaltanbieter

Dieser Beitrag war zu groß, um hier zu sein, also können Sie darauf auf seiner eigenen Seite zugreifen.

Dienste

Ein exportierter Dienst wird in der Manifest.xml deklariert:

<service android:name=".AuthService" android:exported="true" android:process=":remote"/>

Im Code nach der **handleMessage** Funktion suchen, die die Nachricht empfangen wird:

Dienst auflisten

dz> run app.service.info -a com.mwr.example.sieve
Package: com.mwr.example.sieve
com.mwr.example.sieve.AuthService
Permission: null
com.mwr.example.sieve.CryptoService
Permission: null

Mit einem Dienst interagieren

app.service.send            Send a Message to a service, and display the reply
app.service.start           Start Service
app.service.stop            Stop Service

Beispiel

Werfen Sie einen Blick auf die drozer Hilfe für app.service.send:

Beachten Sie, dass Sie zuerst die Daten innerhalb von "msg.what", dann "msg.arg1" und "msg.arg2" senden werden. Sie sollten im Code überprüfen, welche Informationen verwendet werden und wo. Mit der Option --extra können Sie etwas senden, das von "msg.replyTo" interpretiert wird, und mit --bundle-as-obj erstellen Sie ein Objekt mit den bereitgestellten Details.

Im folgenden Beispiel:

  • what == 2354

  • arg1 == 9234

  • arg2 == 1

  • replyTo == object(string com.mwr.example.sieve.PIN 1337)

run app.service.send com.mwr.example.sieve com.mwr.example.sieve.AuthService --msg 2354 9234 1 --extra string com.mwr.example.sieve.PIN 1337 --bundle-as-obj

Broadcast Receiver

Im Abschnitt Grundlegende Informationen zu Android können Sie sehen, was ein Broadcast-Empfänger ist.

Nachdem Sie diese Broadcast-Empfänger entdeckt haben, sollten Sie den Code von ihnen überprüfen. Achten Sie besonders auf die Funktion onReceive, da sie die empfangenen Nachrichten verarbeitet.

Alle Broadcast-Empfänger erkennen

run app.broadcast.info #Detects all

Überprüfen Sie die Broadcast-Empfänger einer App

#Check one negative
run app.broadcast.info -a jakhar.aseem.diva
Package: jakhar.aseem.diva
No matching receivers.

# Check one positive
run app.broadcast.info -a com.google.android.youtube
Package: com.google.android.youtube
com.google.android.libraries.youtube.player.PlayerUiModule$LegacyMediaButtonIntentReceiver
Permission: null
com.google.android.apps.youtube.app.common.notification.GcmBroadcastReceiver
Permission: com.google.android.c2dm.permission.SEND
com.google.android.apps.youtube.app.PackageReplacedReceiver
Permission: null
com.google.android.libraries.youtube.account.AccountsChangedReceiver
Permission: null
com.google.android.apps.youtube.app.application.system.LocaleUpdatedReceiver
Permission: null

Broadcast Interaktionen

app.broadcast.info          Get information about broadcast receivers
app.broadcast.send          Send broadcast using an intent
app.broadcast.sniff         Register a broadcast receiver that can sniff particular intents

Nachricht senden

In diesem Beispiel, bei dem der FourGoats apk Content Provider missbraucht wird, können Sie eine beliebige SMS an ein nicht-premium Ziel ohne die Erlaubnis des Benutzers senden.

Wenn Sie den Code lesen, müssen die Parameter "phoneNumber" und "message" an den Content Provider gesendet werden.

run app.broadcast.send --action org.owasp.goatdroid.fourgoats.SOCIAL_SMS --component org.owasp.goatdroid.fourgoats.broadcastreceivers SendSMSNowReceiver --extra string phoneNumber 123456789 --extra string message "Hello mate!"

Ist debugfähig

Eine Produktions-APK sollte niemals debugfähig sein. Das bedeutet, dass Sie einen Java-Debugger an die laufende Anwendung anhängen, sie zur Laufzeit inspizieren, Haltepunkte setzen, schrittweise vorgehen, Variablenwerte sammeln und sie sogar ändern können. InfoSec Institute hat einen ausgezeichneten Artikel über das tiefergehende Eindringen, wenn Ihre Anwendung debugfähig ist und das Einschleusen von Code zur Laufzeit.

Wenn eine Anwendung debugfähig ist, wird sie im Manifest angezeigt:

<application theme="@2131296387" debuggable="true"

Du kannst alle debuggbaren Anwendungen mit Drozer finden:

run app.package.debuggable

Tutorials

Weitere Informationen

Bug-Bounty-Tipp: Registrieren Sie sich bei Intigriti, einer Premium-Bug-Bounty-Plattform, die von Hackern für Hacker erstellt wurde! Treten Sie uns noch heute bei https://go.intigriti.com/hacktricks bei und beginnen Sie, Prämien von bis zu 100.000 $ zu verdienen!

Erlernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

Last updated