Drozer Tutorial

Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks

Bug bounty tip: prijavite se za Intigriti, premium bug bounty platformu koju su kreirali hakeri, za hakere! Pridružite nam se na https://go.intigriti.com/hacktricks danas, i počnite da zarađujete nagrade do $100,000!

APKs to test

Delovi ovog tutorijala su izvučeni iz Drozer dokumentacije pdf.

Installation

Install Drozer Client inside your host. Download it from the latest releases.

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

Preuzmite i instalirajte drozer APK sa najnovijih izdanja. U ovom trenutku to je ovo.

adb install drozer.apk

Pokretanje servera

Agent radi na portu 31415, potrebno je da preusmerimo port kako bismo uspostavili komunikaciju između Drozer klijenta i agenta, evo komande za to:

adb forward tcp:31415 tcp:31415

Na kraju, pokrenite aplikaciju i pritisnite dugme "ON"

I povežite se sa njom:

drozer console connect

Interesting Commands

Commands

Description

Help MODULE

Prikazuje pomoć odabranog modula

list

Prikazuje listu svih drozer modula koji se mogu izvršiti u trenutnoj sesiji. Ovo skriva module za koje nemate odgovarajuće dozvole za pokretanje.

shell

Pokreće interaktivnu Linux ljusku na uređaju, u kontekstu Agenta.

clean

Uklanja privremene datoteke koje drozer čuva na Android uređaju.

load

Učitava datoteku koja sadrži drozer komande i izvršava ih redom.

module

Pronađe i instalira dodatne drozer module sa Interneta.

unset

Uklanja imenovanu promenljivu koju drozer prosleđuje bilo kojim Linux ljuskama koje pokreće.

set

Čuva vrednost u promenljivoj koja će biti prosleđena kao promenljiva okruženja bilo kojim Linux ljuskama koje drozer pokreće.

shell

Pokreće interaktivnu Linux ljusku na uređaju, u kontekstu Agenta

run MODULE

Izvršava drozer modul

exploit

Drozer može kreirati eksploate za izvršavanje na uređaju. drozer exploit list

payload

Eksploati trebaju payload. drozer payload list

Package

Pronađite ime paketa filtrirajući po delu imena:

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

Osnovne informacije o paketu:

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

Pročitaj Manifest:

run app.package.manifest jakhar.aseem.diva

Napadna površina paketa:

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
  • Aktivnosti: Možda možete pokrenuti aktivnost i zaobići neku vrstu autorizacije koja bi trebala da vas spreči da je pokrenete.

  • Provajderi sadržaja: Možda možete pristupiti privatnim podacima ili iskoristiti neku ranjivost (SQL Injection ili Path Traversal).

  • Servisi:

  • is debuggable: Saznajte više

Aktivnosti

Vrednost “android:exported” komponentne aktivnosti koja je izvezena postavljena je na “true” u datoteci AndroidManifest.xml:

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

Lista eksportovanih aktivnosti:

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

Pokreni aktivnost:

Možda možete pokrenuti aktivnost i zaobići neku vrstu autorizacije koja bi trebala da vas spreči da je pokrenete.

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

Možete takođe pokrenuti eksportovanu aktivnost iz adb:

  • PackageName je com.example.demo

  • Exported ActivityName je com.example.test.MainActivity

adb shell am start -n com.example.demo/com.example.test.MainActivity

Content Providers

Ova objava je bila prevelika da bi bila ovde, tako da možete pristupiti joj na svojoj stranici ovde.

Services

Izvezeni servis je deklarisan unutar Manifest.xml:

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

Unutar koda proverite funkciju **handleMessage** koja će prihvatiti poruku:

Lista usluga

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

Interagujte sa uslugom

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

Primer

Pogledajte drozer pomoć za app.service.send:

Napomena da prvo šaljete podatke unutar "msg.what", zatim "msg.arg1" i "msg.arg2", trebate proveriti unutar koda koje informacije se koriste i gde. Korišćenjem opcije --extra možete poslati nešto što se interpretira kao "msg.replyTo", a korišćenjem --bundle-as-obj kreirate objekat sa datim detaljima.

U sledećem primeru:

  • 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

Broadcast Receivers

U sekciji osnovnih informacija o Androidu možete videti šta je Broadcast Receiver.

Nakon otkrivanja ovih Broadcast Receivers, trebali biste proveriti kod njih. Obratite posebnu pažnju na onReceive funkciju jer će ona obrađivati primljene poruke.

Otkrivanje svih broadcast receivers

run app.broadcast.info #Detects all

Proverite broadcast prijemnike aplikacije

#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

Broadcast Interakcije

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

Pošaljite poruku

U ovom primeru zloupotrebe FourGoats apk Content Provider-a možete poslati proizvoljnu SMS poruku bilo kojoj ne-premium destinaciji bez traženja dozvole od korisnika.

Ako pročitate kod, parametri "phoneNumber" i "message" moraju biti poslati Content Provider-u.

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

Da li je debuggable

Proizvodni APK nikada ne bi trebao biti debuggable. To znači da možete priključiti java debugger na pokrenutu aplikaciju, pregledati je u vreme izvođenja, postaviti tačke prekida, ići korak po korak, prikupljati vrednosti promenljivih i čak ih menjati. InfoSec institute ima odličan članak o dubljem istraživanju kada je vaša aplikacija debuggable i injektovanju koda u vreme izvođenja.

Kada je aplikacija debuggable, pojaviće se u Manifestu:

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

Možete pronaći sve aplikacije koje se mogu debagovati pomoću Drozer:

run app.package.debuggable

Tutorijali

Više informacija

Savjet za bug bounty: prijavite se za Intigriti, premium bug bounty platformu koju su kreirali hakeri, za hakere! Pridružite nam se na https://go.intigriti.com/hacktricks danas, i počnite zarađivati nagrade do $100,000!

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Podržite HackTricks

Last updated