Drozer Tutorial

Reading time: 7 minutes

tip

AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks'i Destekleyin

Test edilecek APK'lar

Bu eğitimin bazı bölümleri Drozer belgeleri pdf'sinden** alınmıştır.**

Kurulum

Drozer Client'ı ana bilgisayarınıza kurun. en son sürümlerden indirin.

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

drozer APK'sını en son sürümlerden indirin ve kurun. Şu anda bu sürüm.

bash
adb install drozer.apk

Sunucuyu Başlatma

Agent 31415 portunda çalışıyor, Drozer Client ve Agent arasında iletişimi sağlamak için port yönlendirmesi yapmamız gerekiyor, işte bunu yapmak için komut:

bash
adb forward tcp:31415 tcp:31415

Son olarak, uygulamayı başlatın ve alt kısımdaki "AÇIK" butonuna basın.

Ve buna bağlanın:

bash
drozer console connect

İlginç Komutlar

KomutlarAçıklama
Help MODULESeçilen modülün yardımını gösterir
listMevcut oturumda çalıştırılabilen tüm drozer modüllerinin bir listesini gösterir. Bu, çalıştırmak için uygun izinlere sahip olmadığınız modülleri gizler.
shellCihazda, Agent bağlamında etkileşimli bir Linux kabuğu başlatır.
cleanDrozer tarafından Android cihazda saklanan geçici dosyaları kaldırır.
loadDrozer komutlarını içeren bir dosyayı yükler ve bunları sırayla çalıştırır.
moduleİnternetten ek drozer modüllerini bulur ve yükler.
unsetDrozer'in oluşturduğu herhangi bir Linux kabuğuna geçirdiği adlandırılmış bir değişkeni kaldırır.
setDrozer tarafından oluşturulan herhangi bir Linux kabuğuna çevresel değişken olarak geçirilecek bir değişkende bir değeri saklar.
shellCihazda, Agent bağlamında etkileşimli bir Linux kabuğu başlatır.
run MODULEBir drozer modülünü çalıştırır
exploitDrozer, cihazda çalıştırmak için istismarlar oluşturabilir. drozer exploit list
payloadİstismarların bir yükü olması gerekir. drozer payload list

Paket

Paketin adını adın bir kısmıyla filtreleyerek bulun:

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

Paketin Temel Bilgileri:

bash
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

Manifest'i okuyun:

bash
run app.package.manifest jakhar.aseem.diva

Paketin saldırı yüzeyi:

bash
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
  • Etkinlikler: Belki bir etkinlik başlatabilir ve sizi başlatmaktan alıkoyması gereken bir tür yetkilendirmeyi atlayabilirsiniz.
  • İçerik sağlayıcıları: Belki özel verilere erişebilir veya bazı güvenlik açıklarını (SQL Injection veya Path Traversal) istismar edebilirsiniz.
  • Hizmetler:
  • debuggable: Daha fazla bilgi edinin

Etkinlikler

Bir dışa aktarılmış etkinlik bileşeninin “android:exported” değeri AndroidManifest.xml dosyasında “true” olarak ayarlanmıştır:

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

Dışa Aktarılan Aktiviteleri Listele:

bash
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

Etkinliği başlat:

Belki bir etkinliği başlatabilir ve sizi başlatmaktan alıkoyması gereken bir tür yetkilendirmeyi atlayabilirsiniz.

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

Ayrıca adb üzerinden bir dışa aktarılan etkinliği başlatabilirsiniz:

  • Paket Adı com.example.demo
  • Dışa Aktarılan Etkinlik Adı com.example.test.MainActivity
bash
adb shell am start -n com.example.demo/com.example.test.MainActivity

İçerik Sağlayıcıları

Bu gönderi burada yer alacak kadar büyük değil, bu yüzden ulaşabilirsiniz kendi sayfasında buradan.

Hizmetler

Dışa aktarılan bir hizmet, Manifest.xml içinde tanımlanır:

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

Kodun içinde check için **handleMessage** fonksiyonunu kontrol edin, bu fonksiyon message alacaktır:

Liste hizmeti

bash
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

Bir hizmetle etkileşimde bulunun

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

Örnek

app.service.send için drozer yardımına bir göz atın:

Öncelikle "msg.what" içindeki veriyi, ardından "msg.arg1" ve "msg.arg2"'yi göndereceğinizi unutmayın, hangi bilginin kullanıldığını ve nerede olduğunu kod içinde kontrol etmelisiniz.
--extra seçeneğini kullanarak "msg.replyTo" tarafından yorumlanan bir şey gönderebilirsiniz ve --bundle-as-obj kullanarak sağlanan detaylarla bir nesne oluşturursunuz.

Aşağıdaki örnekte:

  • what == 2354
  • arg1 == 9234
  • arg2 == 1
  • replyTo == object(string com.mwr.example.sieve.PIN 1337)
bash
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

Android temel bilgi bölümünde Broadcast Receiver'ın ne olduğunu görebilirsiniz.

Bu Broadcast Receiver'ları keşfettikten sonra kodlarını kontrol etmelisiniz. Alınan mesajları işleyen onReceive fonksiyonuna özel dikkat gösterin.

Tüm broadcast receiver'ları tespit et

bash
run app.broadcast.info #Detects all

Bir uygulamanın yayın alıcılarını kontrol et

bash
#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

Yayın Etkileşimleri

bash
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

Mesaj Gönder

Bu örnekte FourGoats apk İçerik Sağlayıcısını kötüye kullanarak, kullanıcıdan izin istemeden herhangi bir premium olmayan hedefe rastgele bir SMS gönderebilirsiniz.

Kodu okursanız, "phoneNumber" ve "message" parametrelerinin İçerik Sağlayıcısına gönderilmesi gerektiğini göreceksiniz.

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

Debuggable mı

Bir üretim APK'sı asla debuggable olmamalıdır.
Bu, çalışmakta olan uygulamaya java debugger ekleyebileceğiniz, çalışma zamanında inceleyebileceğiniz, kesme noktaları ayarlayabileceğiniz, adım adım ilerleyebileceğiniz, değişken değerlerini toplayabileceğiniz ve hatta bunları değiştirebileceğiniz anlamına gelir. InfoSec institute'un harika bir makalesi var uygulamanız debuggable olduğunda daha derinlemesine incelemek ve çalışma zamanı kodu enjekte etmek için.

Bir uygulama debuggable olduğunda, Manifest'te görünecektir:

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

Tüm hata ayıklanabilir uygulamaları Drozer ile bulabilirsiniz:

bash
run app.package.debuggable

Eğitimler

Daha fazla bilgi

tip

AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks'i Destekleyin