hacktricks/mobile-pentesting/android-app-pentesting/drozer-tutorial
2024-02-11 02:07:06 +00:00
..
exploiting-content-providers.md Translated to Afrikaans 2024-02-11 02:07:06 +00:00
README.md Translated to Afrikaans 2024-02-11 02:07:06 +00:00

Drozer Tutoriaal

Leer AWS-hacking 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 wat deur hackers geskep is, vir hackers! Sluit vandag by ons aan by https://go.intigriti.com/hacktricks, en begin om belonings te verdien tot $100,000!

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

APK's 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

Begin die Bediener

Agent loop op poort 31415, ons moet poort deurstuur om die kommunikasie tussen die Drozer-kliënt en Agent te vestig, hier is die opdrag om dit te doen:

adb forward tcp:31415 tcp:31415

Uiteindelik, begin die toepassing en druk die "ON" knoppie

En maak daarmee verbinding:

drozer console connect

Interessante Opdragte

Opdragte Beskrywing
Help MODULE Toon die hulp van die gekose module
lys Toon 'n lys van alle drozer modules wat in die huidige sessie uitgevoer kan word. Hierdie verberg modules waarvoor jy nie die nodige toestemmings het om uit te voer nie.
shell Begin 'n interaktiewe Linux-skulp 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-skulpe wat dit skep, oordra.
stel Stoor 'n waarde in 'n veranderlike wat as 'n omgewingsveranderlike aan enige Linux-skulpe wat deur drozer geskep word, oorgedra sal word.
shell Begin 'n interaktiewe Linux-skulp op die toestel, in die konteks van die Agent
run MODULE Voer 'n drozer-module uit
exploit Drozer kan exploits skep om in die toestel uit te voer. drozer exploit list
payload Die exploits benodig 'n payload. drozer payload list

Pakket

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

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

Basiese Inligting van die pakkie:

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

Aanvalsvlak 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 sekere soort outorisasie om dit te begin, omseil wat jou behoort te verhoed om dit te begin.
  • Inhoudsverskaffers: Miskien kan jy toegang verkry tot private data of 'n sekere kwesbaarheid uitbuit (SQL-injeksie of Padtraversal).
  • Dienste:
  • is debuggable: Leer meer

Aktiwiteite

Die "android:exported" waarde van 'n uitgevoerde aktiwiteitskomponent is ingestel op "true" in die AndroidManifest.xml-lêer:

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

Lys uitgevoerde aktiwiteite:

Om die uitgevoerde aktiwiteite in 'n lysformaat te sien, kan jy die volgende stappe volg:

  1. Installeer die drozer-agentskakel op die teiken Android-toestel.
  2. Maak 'n verbinding met die drozer-agentskakel deur die opdraglyn te gebruik.
  3. Voer die volgende opdrag in: run app.package.list -f.
  4. Die lys van uitgevoerde aktiwiteite sal vertoon word, insluitend die pakketname en aktiwiteitsname.

Hier is 'n voorbeeld van hoe die uitvoer van die opdrag sal lyk:

com.example.app/.MainActivity
com.example.app/.LoginActivity
com.example.app/.SettingsActivity

Hierdie lys toon die pakketname en aktiwiteitsname van die uitgevoerde aktiwiteite in die toepassing.

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 outorisering omseil wat jou moet verhoed 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 uitgevoerde aktiwiteit vanaf adb begin:

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

Inhoudbieders

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

Dienste

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

{% code overflow="wrap" %}

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

{% endcode %}

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

To interact with a service, you need to use the run command in drozer. This command allows you to execute various modules and actions against the target application.

Om met 'n diens te interaksieer, moet jy die run-opdrag in drozer gebruik. Hierdie opdrag stel jou in staat om verskeie modules en aksies teen die teikentoepassing uit te voer.

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", dan "msg.arg1" en "msg.arg2" sal stuur. Jy moet binne die kode ondersoek watter inligting gebruik word en waar.
Met behulp van die --extra opsie 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 app

Om die uitsaai-ontvangers van 'n Android-app te kontroleer, kan jy die volgende stappe volg:

  1. Installeer en begin drozer op jou toestel.

  2. Verbind met die toestel deur die connect-bevel te gebruik.

  3. Voer die volgende bevel in om 'n lys van alle geïnstalleerde pakkette op die toestel te kry:

    run app.package.list -f
    
  4. Identifiseer die pakketnaam van die app wat jy wil ondersoek.

  5. Voer die volgende bevel in om 'n lys van alle uitsaai-ontvangers van die app te kry:

    run app.broadcast.info -a <pakketnaam>
    

    Vervang <pakketnaam> met die werklike pakketnaam van die app.

  6. Jy sal 'n lys van uitsaai-ontvangers sien wat deur die app gebruik word, tesame met hul besonderhede soos die ontvangerklas en die uitsaai-intentfilters.

Deur hierdie stappe te volg, kan jy die uitsaai-ontvangers van 'n Android-app ondersoek en relevante inligting verkry.

#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 misbruik die FourGoats apk Inhoudsverskaffer 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 Inhoudsverskaffer 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 debugeerbaar

'n Produksie APK moet nooit debugeerbaar wees nie. Dit beteken dat jy 'n Java debugeerder kan koppel aan die lopende toepassing, dit in uitvoertyd kan ondersoek, breekpunte kan stel, stap vir stap kan gaan, veranderlike waardes kan versamel en selfs kan verander. InfoSec-instituut het 'n uitstekende artikel oor dieper graafwerk wanneer jou toepassing debugeerbaar is en in uitvoertyd kode inspuit.

Wanneer 'n toepassing debugeerbaar is, sal dit in die manifest verskyn:

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

Jy kan al die toepassings wat gedebug kan word met Drozer vind:

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 vandag by ons aan by https://go.intigriti.com/hacktricks, en begin om belonings te verdien tot $100,000!

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

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

Ander maniere om HackTricks te ondersteun: