14 KiB
Drozer Tutorial
{% hint style="success" %}
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.
Bug bounty wenk: meld aan by Intigriti, 'n premium bug bounty platform geskep deur hackers, vir hackers! Sluit by ons aan by https://go.intigriti.com/hacktricks vandag, en begin verdien bounties tot $100,000!
{% embed url="https://go.intigriti.com/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 vrystellings.
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
Starting the Server
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 toepaslike regte het om te loop nie. |
shell | Begin 'n interaktiewe Linux-skaal 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-skaal wat dit genereer, deurgee. |
set | Stoor 'n waarde in 'n veranderlike wat as 'n omgewingsveranderlike aan enige Linux-skaal wat deur drozer gegenereer word, deurgegee sal word. |
shell | Begin 'n interaktiewe Linux-skaal 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 toegang tot private data verkry of 'n sekuriteitskwesbaarheid benut (SQL Injection of Path Traversal).
- Dienste:
- is debuggable: Leer meer
Aktiwiteite
'n Uitgevoerde aktiwiteit komponent se “android:exported” waarde is op “true” in die AndroidManifest.xml-lêer gestel:
<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 tipe magtiging omseil wat jou moet keer om dit te begin.
{% code overflow="wrap" %}
dz> run app.activity.start --component com.mwr.example.sieve com.mwr.example.sieve.PWList
{% endcode %}
Jy kan ook 'n geëksporteerde aktiwiteit vanaf adb begin:
- Pakketnaam is com.example.demo
- Geëksporteerde Aktiwiteitnaam is com.example.test.MainActivity
adb shell am start -n com.example.demo/com.example.test.MainActivity
Inhoudverskaffers
Hierdie pos was te groot om hier te wees, so jy kan dit in sy eie bladsy hier toegang.
Dienste
'n Geverifieerde diens word binne die Manifest.xml verklaar:
{% code overflow="wrap" %}
<service android:name=".AuthService" android:exported="true" android:process=":remote"/>
{% endcode %}
Binne die kode kontroleer vir die **handleMessage
** funksie wat die boodskap sal ontvang:
Lysdiens
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.
Na die ontdekking van hierdie Uitsendingsontvangers 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 uitsaaikreceivers 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 werklike tyd 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 spuit.
Wanneer 'n toepassing debuggeable is, sal dit in die Manifest verskyn:
<application theme="@2131296387" debuggable="true"
U 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
Bug bounty tip: meld aan by Intigriti, 'n premium bug bounty platform geskep deur hackers, vir hackers! Sluit vandag by ons aan by https://go.intigriti.com/hacktricks en begin om bounties tot $100,000 te verdien!
{% embed url="https://go.intigriti.com/hacktricks" %}
{% hint style="success" %}
Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support 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.