Drozer Tutorial

Reading time: 8 minutes

tip

Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Ondersteun HackTricks

APKs om te toets

Dele van hierdie tutoriaal is onttrek uit die Drozer dokumentasie pdf.

Installasie

Installeer Drozer Client binne jou gasheer. Laai dit af van die nuutste vr releases.

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

Laai die drozer APK af en installeer dit vanaf die nuutste vrystellings. Op hierdie oomblik is dit hierdie.

bash
adb install drozer.apk

Begin die Bediener

Agent loop op poort 31415, ons moet port forward om die kommunikasie tussen die Drozer Client en Agent te vestig, hier is die opdrag om dit te doen:

bash
adb forward tcp:31415 tcp:31415

Laastens, begin die toepassing en druk die onderkant "AAN"

En verbind daarmee:

bash
drozer console connect

Interessante Opdragte

OpdragteBeskrywing
Help MODULEWys hulp van die geselekteerde module
listWys 'n lys van alle drozer modules wat in die huidige sessie uitgevoer kan word. Dit verberg modules waarvoor jy nie die toepaslike regte het om te loop nie.
shellBegin 'n interaktiewe Linux-skal op die toestel, in die konteks van die Agent.
cleanVerwyder tydelike lêers wat deur drozer op die Android-toestel gestoor is.
loadLaai 'n lêer wat drozer-opdragte bevat en voer dit in volgorde uit.
moduleVind en installeer addisionele drozer modules van die Internet.
unsetVerwyder 'n benoemde veranderlike wat drozer aan enige Linux-skale wat dit genereer, deurgee.
setStoor 'n waarde in 'n veranderlike wat as 'n omgewingsveranderlike aan enige Linux-skale wat deur drozer gegenereer word, deurgegee sal word.
shellBegin 'n interaktiewe Linux-skal op die toestel, in die konteks van die Agent
run MODULEVoer 'n drozer module uit
exploitDrozer kan eksplosiewe skep om in die toestel uit te voer. drozer exploit list
payloadDie eksplosiewe benodig 'n payload. drozer payload list

Pakket

Vind die naam van die pakket deur te filter op 'n deel van die naam:

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

Basiese Inligting van die pakket:

bash
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

Lees Manifest:

bash
run app.package.manifest jakhar.aseem.diva

Aanvaloppervlak van die pakket:

bash
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
  • Aktiwiteite: Miskien kan jy 'n aktiwiteit begin en 'n tipe magtiging omseil wat jou moet keer om dit te begin.
  • Inhoudverskaffers: Miskien kan jy privaat data toegang of 'n sekuriteitskwesbaarheid (SQL Injection of Path Traversal) benut.
  • Dienste:
  • is debuggable: Leer meer

Aktiwiteite

'n Geverifieerde aktiwiteit komponent se “android:exported” waarde is op “true” in die AndroidManifest.xml-lêer:

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

Lys van uitgevoerde aktiwiteite:

bash
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

Begin aktiwiteit:

Miskien kan jy 'n aktiwiteit begin en 'n soort van magtiging omseil wat jou moet keer om dit te begin.

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

U kan ook 'n geexporteerde aktiwiteit vanaf adb begin:

  • Pakketnaam is com.example.demo
  • Geexporteerde Aktiwiteitnaam is com.example.test.MainActivity
bash
adb shell am start -n com.example.demo/com.example.test.MainActivity

Inhoud Verskaffers

Hierdie pos was te groot om hier te wees, so jy kan dit op sy eie bladsy hier toegang.

Dienste

'n Geverifieerde diens word binne die Manifest.xml verklaar:

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

Binnen die kode check vir die **handleMessage** funksie wat die message sal receive:

Lys diens

bash
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

Interaksie met 'n diens

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

Voorbeeld

Kyk na die drozer hulp vir app.service.send:

Let daarop dat jy eers die data binne "msg.what" sal stuur, dan "msg.arg1" en "msg.arg2", jy moet binne die kode watter inligting gebruik word en waar nagaan.
Met die --extra opsie kan jy iets stuur wat deur "msg.replyTo" geïnterpreteer word, en met --bundle-as-obj skep jy 'n objek met die verskafde besonderhede.

In die volgende voorbeeld:

  • what == 2354
  • arg1 == 9234
  • arg2 == 1
  • replyTo == object(string com.mwr.example.sieve.PIN 1337)
bash
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

Uitsendingsontvangers

In die Android basiese inligting afdeling kan jy sien wat 'n Uitsendingsontvanger is.

Nadat jy hierdie Uitsendingsontvangers ontdek het, moet jy die kode daarvan nagaan. Gee spesiale aandag aan die onReceive funksie, aangesien dit die ontvangde boodskappe sal hanteer.

Detecteer alle uitsendingsontvangers

bash
run app.broadcast.info #Detects all

Kontroleer uitsendingsontvangers van 'n app

bash
#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

Uitsending Interaksies

bash
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

Stuur 'n boodskap

In hierdie voorbeeld wat die FourGoats apk Content Provider misbruik, kan jy enige SMS na 'n nie-premium bestemming stuur sonder om die gebruiker om toestemming te vra.

As jy die kode lees, moet die parameters "phoneNumber" en "message" na die Content Provider gestuur word.

bash
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!"

Is debuggeable

'n Produksie APK moet nooit debuggeable wees.
Dit beteken dat jy java debugger aan die lopende toepassing kan heg, dit in werksiklus kan inspekteer, breekpunte kan stel, stap vir stap kan gaan, veranderlike waardes kan versamel en selfs hulle kan verander. InfoSec institute het 'n uitstekende artikel oor hoe om dieper te delf wanneer jou toepassing debuggeable is en runtime kode in te voeg.

Wanneer 'n toepassing debuggeable is, sal dit in die Manifest verskyn:

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

Jy kan alle debugbare toepassings met Drozer vind:

bash
run app.package.debuggable

Tutorials

More info

tip

Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Ondersteun HackTricks