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
- Kyk na die subskripsie planne!
- Sluit aan by die 💬 Discord groep of die telegram groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.
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.
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.
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:
adb forward tcp:31415 tcp:31415
Laastens, begin die toepassing en druk die onderkant "AAN"
En verbind daarmee:
drozer console connect
Interessante Opdragte
Opdragte | Beskrywing |
---|---|
Help MODULE | Wys hulp van die geselekteerde module |
list | Wys '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. |
shell | Begin 'n interaktiewe Linux-skal op die toestel, in die konteks van die Agent. |
clean | Verwyder tydelike lêers wat deur drozer op die Android-toestel gestoor is. |
load | Laai 'n lêer wat drozer-opdragte bevat en voer dit in volgorde uit. |
module | Vind en installeer addisionele drozer modules van die Internet. |
unset | Verwyder 'n benoemde veranderlike wat drozer aan enige Linux-skale wat dit genereer, deurgee. |
set | Stoor 'n waarde in 'n veranderlike wat as 'n omgewingsveranderlike aan enige Linux-skale wat deur drozer gegenereer word, deurgegee sal word. |
shell | Begin 'n interaktiewe Linux-skal op die toestel, in die konteks van die Agent |
run MODULE | Voer 'n drozer module uit |
exploit | Drozer kan eksplosiewe skep om in die toestel uit te voer. drozer exploit list |
payload | Die eksplosiewe benodig 'n payload. drozer payload list |
Pakket
Vind die naam van die pakket deur te filter op 'n deel van die naam:
dz> run app.package.list -f sieve
com.mwr.example.sieve
Basiese Inligting van die pakket:
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:
run app.package.manifest jakhar.aseem.diva
Aanvaloppervlak van die pakket:
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:
<activity android:name="com.my.app.Initial" android:exported="true">
</activity>
Lys van uitgevoerde aktiwiteite:
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.
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
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:
<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
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
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)
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
run app.broadcast.info #Detects all
Kontroleer uitsendingsontvangers van 'n 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
Uitsending Interaksies
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.
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:
<application theme="@2131296387" debuggable="true"
Jy kan alle debugbare toepassings met Drozer vind:
run app.package.debuggable
Tutorials
- https://resources.infosecinstitute.com/android-penetration-tools-walkthrough-series-drozer/#gref
- https://github.com/mgcfish/mobiletools/blob/master/_posts/2016-08-01-Using-Drozer-for-application-security-assessments.md
- https://www.hackingarticles.in/android-penetration-testing-drozer/
- https://medium.com/@ashrafrizvi3006/how-to-test-android-application-security-using-drozer-edc002c5dcac
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
- Kyk na die subskripsie planne!
- Sluit aan by die 💬 Discord groep of die telegram groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.