hacktricks/mobile-pentesting/android-app-pentesting/drozer-tutorial
2024-04-07 05:33:57 +00:00
..
exploiting-content-providers.md Translated ['README.md', 'binary-exploitation/arbitrary-write-2-exec/REA 2024-04-07 05:33:57 +00:00
README.md Translated ['README.md', 'binary-exploitation/arbitrary-write-2-exec/REA 2024-04-07 05:33:57 +00:00

Drozer Tutoriaal

Leer AWS hakwerk vanaf nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Ander maniere om HackTricks te ondersteun:

Bug bounty wenk: teken aan vir Intigriti, 'n premium bug bounty platform geskep deur hackers, vir hackers! Sluit by ons aan by https://go.intigriti.com/hacktricks vandag, en begin om belonings te verdien 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 Klient binne jou gasheer. Laai dit af van die nuutste vrylatings.

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

Laai die drozer APK af van die nuutste vrystellings. Op hierdie oomblik is dit hierdie.

adb install drozer.apk

Begin die Bediener

Die agent hardloop op poort 31415, ons moet poort deurstuur om die kommunikasie tussen die Drozer-kliënt en agent te vestig, hier is die bevel om dit te doen:

adb forward tcp:31415 tcp:31415

Uiteindelik, begin die toepassing en druk op die onderste "AAN"

En verbind daarmee:

drozer console connect

Interessante Opdragte

Opdragte Beskrywing
Help MODULE Wys die hulp van die gekose module
lys Wys 'n lys van alle drozer-modules wat uitgevoer kan word in die huidige sessie. Dit verberg modules waarvoor jy nie die toepaslike regte het om uit te voer nie.
shell Begin 'n interaktiewe Linux-skoot op die toestel, in die konteks van die Agent.
skoon Verwyder tydelike lêers wat deur drozer op die Android-toestel gestoor word.
laai Laai 'n lêer wat drozer-opdragte bevat en voer hulle in volgorde uit.
module Vind en installeer addisionele drozer-modules van die Internet.
unset Verwyder 'n benoemde veranderlike wat drozer aan enige Linux-skote wat dit aanroep, oordra.
stel Berg 'n waarde op in 'n veranderlike wat as 'n omgewingsveranderlike aan enige Linux-skote wat deur drozer aangeroep word, oorgedra sal word.
shell Begin 'n interaktiewe Linux-skoot op die toestel, in die konteks van die Agent.
run MODULE Voer 'n drozer-module uit
exploit Drozer kan exploits skep om op die toestel uit te voer. drozer exploit list
payload Die exploits benodig 'n lading. 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

Aanvalsoppervlak 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: Dalk kan jy 'n aktiwiteit begin en 'n soort van magtiging omseil wat jou behoort te keer om dit te begin.
  • Inhoudsverskaffers: Dalk kan jy toegang verkry tot private data of 'n kwesbaarheid uitbuit (SQL Injection of Padtraversal).
  • Dienste:
  • is debuggable: Leer meer

Aktiwiteite

'n Uitgevoerde aktiwiteitskomponent se "android:exported" waarde is ingestel op "waar" in die AndroidManifest.xml-lêer:

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

Lys 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 behoort te keer om dit te begin.

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

{% endcode %}

Jy kan ook 'n uitgevoerde aktiwiteit begin vanaf adb:

  • PakketNaam is com.example.demo
  • Uitgevoerde AktiwiteitNaam is com.example.test.MainActivity
adb shell am start -n com.example.demo/com.example.test.MainActivity

Inhoudsverskaffers

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

Dienste

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

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

{% endcode %}

Binne die kode soek 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

Interageer 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

Neem 'n kykie 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 ondersoek watter inligting gebruik word en waar.
Deur die --extra opsie te gebruik, kan jy iets stuur wat geïnterpreteer word deur "msg.replyTo", en deur --bundle-as-obj te gebruik, skep jy 'n objek met die verskafte 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

Uitsaai-Ontvangers

In die Android basiese inligting afdeling kan jy sien wat 'n Uitsaai-Ontvanger is.

Nadat jy hierdie Uitsaai-Ontvangers ontdek het, moet jy die kode nagaan. Gee spesiale aandag aan die onReceive funksie aangesien dit die ontvangste boodskappe sal hanteer.

Ontdek alle uitsaai-ontvangers

run app.broadcast.info #Detects all

Kontroleer uitsaai-ontvangers van 'n program

#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

Uitsaai 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 van die misbruik van die FourGoats apk Inhoudverskaffer kan jy 'n willekeurige SMS stuur na enige nie-premium bestemming sonder om die gebruiker om toestemming te vra.

As jy die kode lees, moet die parameters "phoneNumber" en "message" na die Inhoudverskaffer 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 'n java debugger kan koppel aan die lopende aansoek, dit in tyd lopende kan inspekteer, breekpunte kan stel, stap vir stap kan gaan, veranderlike waardes kan versamel en selfs kan verander. InfoSec-instituut het 'n uitstekende artikel oor dieper delf wanneer jou aansoek debuggable is en inspuiting van tydverloopkode.

Wanneer 'n aansoek debuggable is, sal dit in die Manifes verskyn:

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

Jy kan alle toepassings met foutopsporing vind met Drozer:

run app.package.debuggable

Tutoriale

Meer inligting

Bug bounty wenk: teken aan vir Intigriti, 'n premium bug bounty platform geskep deur hackers, vir hackers! Sluit by ons aan by https://go.intigriti.com/hacktricks vandag, en begin om belonings tot $100,000 te verdien!

{% embed url="https://go.intigriti.com/hacktricks" %}

Leer AWS hakwerk vanaf nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Ander maniere om HackTricks te ondersteun: