.. | ||
exploiting-content-providers.md | ||
README.md |
Drozer Tutorial
{% hint style="success" %}
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
- abonelik planlarını kontrol edin!
- 💬 Discord grubuna veya telegram grubuna katılın ya da Twitter'da 🐦 @hacktricks_live'i takip edin.**
- Hacking ipuçlarını paylaşmak için HackTricks ve HackTricks Cloud github reposuna PR gönderin.
![](/Mirrors/hacktricks/media/commit/550b45aa98067596c72ecc5c6f8a24b4c9576ce6/.gitbook/assets/i3.png)
Bug bounty ipucu: Intigriti'ye kaydolun, hackerlar tarafından, hackerlar için oluşturulmuş bir premium bug bounty platformu! Bugün https://go.intigriti.com/hacktricks adresine katılın ve $100,000'a kadar ödüller kazanmaya başlayın!
{% embed url="https://go.intigriti.com/hacktricks" %}
Test edilecek APK'lar
Bu eğitimin bazı bölümleri Drozer belgeleri pdf'inden** alınmıştır.**
Kurulum
Drozer Client'ı ana bilgisayarınıza kurun. en son sürümlerden indirin.
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.
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:
adb forward tcp:31415 tcp:31415
Son olarak, uygulamayı başlatın ve alt kısımdaki "AÇ" butonuna basın.
Ve ona bağlanın:
drozer console connect
İlginç Komutlar
Komutlar | Açıklama |
---|---|
Help MODULE | Seçilen modülün yardımını gösterir |
list | Mevcut oturumda çalıştırılabilecek tüm drozer modüllerinin listesini gösterir. Bu, çalıştırmak için uygun izinlere sahip olmadığınız modülleri gizler. |
shell | Cihazda, Agent bağlamında etkileşimli bir Linux kabuğu başlatır. |
clean | Android cihazında drozer tarafından saklanan geçici dosyaları kaldırır. |
load | Drozer 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. |
unset | Drozer'in oluşturduğu herhangi bir Linux kabuğuna geçirdiği adlandırılmış bir değişkeni kaldırır. |
set | Drozer tarafından oluşturulan herhangi bir Linux kabuğuna çevresel değişken olarak geçirilecek bir değişkende bir değeri saklar. |
shell | Cihazda, Agent bağlamında etkileşimli bir Linux kabuğu başlatır. |
run MODULE | Bir drozer modülünü çalıştırır |
exploit | Drozer, cihazda çalıştırmak için istismarlar oluşturabilir. drozer exploit list |
payload | İstismarların bir yükü gereklidir. drozer payload list |
Paket
Ad kısmını filtreleyerek paketin adını bulun:
dz> run app.package.list -f sieve
com.mwr.example.sieve
Paketin Temel Bilgileri:
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 Oku:
run app.package.manifest jakhar.aseem.diva
Paketin saldırı yüzeyi:
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
- Aktiviteler: Belki bir aktivite 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ı zayıflıkları (SQL Injection veya Path Traversal) istismar edebilirsiniz.
- Hizmetler:
- debuggable: Daha fazla bilgi edinin
Aktiviteler
Bir dışa aktarılmış aktivite bileşeninin “android:exported” değeri AndroidManifest.xml dosyasında “true” olarak ayarlanmıştır:
<activity android:name="com.my.app.Initial" android:exported="true">
</activity>
Dışa aktarılan aktiviteleri listele:
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.
{% code overflow="wrap" %}
dz> run app.activity.start --component com.mwr.example.sieve com.mwr.example.sieve.PWList
{% endcode %}
adb üzerinden bir dışa aktarılan aktiviteyi de başlatabilirsiniz:
- Paket Adı com.example.demo
- Dışa Aktarılan Aktivite Adı com.example.test.MainActivity
adb shell am start -n com.example.demo/com.example.test.MainActivity
İçerik Sağlayıcıları
Bu gönderi burada çok büyük olduğu için buradan kendi sayfasında erişebilirsiniz.
Hizmetler
Dışa aktarılan bir hizmet, Manifest.xml içinde tanımlanır:
{% code overflow="wrap" %}
<service android:name=".AuthService" android:exported="true" android:process=":remote"/>
{% endcode %}
Kodun içinde check için **handleMessage
** fonksiyonunu kontrol edin, bu fonksiyon mesajı alacaktır:
Liste hizmeti
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şim kurun
app.service.send Send a Message to a service, and display the reply
app.service.start Start Service
app.service.stop Stop Service
Örnek
Take a look to the drozer help for app.service.send
:
Not edin ki önce "msg.what" içindeki veriyi, sonra "msg.arg1" ve "msg.arg2" göndereceksiniz, hangi bilginin kullanıldığını ve nerede olduğunu kod içinde kontrol etmelisiniz.
--extra
seçeneğini kullanarak "msg.replyTo"'dan 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)
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 Alıcıları
Android temel bilgi bölümünde Broadcast Alıcısının ne olduğunu görebilirsiniz.
Bu Broadcast Alıcılarını keşfettikten sonra, kodlarını kontrol etmelisiniz. Alınan mesajları işleyen onReceive
fonksiyonuna özel dikkat gösterin.
Tüm broadcast alıcılarını tespit et
run app.broadcast.info #Detects all
Bir uygulamanın yayın alıcılarını kontrol et
#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
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.
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!"
Debuggeable mı
Bir prodüksiyon APK'sı asla debuggeable 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 debuggeable olduğunda daha derinlemesine incelemek ve çalışma zamanı kodu enjekte etmek için.
Bir uygulama debuggeable olduğunda, Manifest'te görünecektir:
<application theme="@2131296387" debuggable="true"
Drozer ile tüm hata ayıklanabilir uygulamaları bulabilirsiniz:
run app.package.debuggable
Eğitimler
- 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
Daha fazla bilgi
![](/Mirrors/hacktricks/media/commit/550b45aa98067596c72ecc5c6f8a24b4c9576ce6/.gitbook/assets/i3.png)
Hata ödülü ipucu: hackerlar tarafından, hackerlar için oluşturulmuş premium Intigriti'ye kaydolun! Bugün https://go.intigriti.com/hacktricks adresine katılın ve $100,000'a kadar ödüller kazanmaya başlayın!
{% embed url="https://go.intigriti.com/hacktricks" %}
{% hint style="success" %}
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Eğitim AWS Kırmızı Ekip Uzmanı (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Eğitim GCP Kırmızı Ekip Uzmanı (GRTE)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- 💬 Discord grubuna veya telegram grubuna katılın ya da Twitter'da bizi takip edin 🐦 @hacktricks_live.**
- Hacking ipuçlarını paylaşmak için HackTricks ve HackTricks Cloud github reposuna PR gönderin.