# Debuggable bir uygulamanın istismar edilmesi
{% hint style="success" %}
AWS Hacking'i öğrenin ve pratik yapın:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
GCP Hacking'i öğrenin ve pratik yapın: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
HackTricks'i Destekleyin
* [**abonelik planlarını**](https://github.com/sponsors/carlospolop) kontrol edin!
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın ya da **Twitter'da** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** bizi takip edin.**
* **Hacking ipuçlarını paylaşmak için** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github reposuna PR gönderin.
{% endhint %}
# **Root ve debuggeable kontrollerinin atlatılması**
Bu bölüm, [**https://medium.com/@shubhamsonani/hacking-with-precision-bypass-techniques-via-debugger-in-android-apps-27fd562b2cc0**](https://medium.com/@shubhamsonani/hacking-with-precision-bypass-techniques-via-debugger-in-android-apps-27fd562b2cc0) adresindeki yazının bir özetidir.
## Android Uygulamasını Debuggable Hale Getirme ve Kontrolleri Atlatma Adımları
### **Uygulamayı Debuggable Hale Getirme**
İçerik https://medium.com/@shubhamsonani/hacking-with-precision-bypass-techniques-via-debugger-in-android-apps-27fd562b2cc0 adresine dayanmaktadır.
1. **APK'yı Decompile Etme:**
- APK'yı decompile etmek için APK-GUI aracını kullanın.
- _android-manifest_ dosyasına `android:debuggable=true` ekleyerek hata ayıklama modunu etkinleştirin.
- Değiştirilen uygulamayı yeniden derleyin, imzalayın ve zipalign yapın.
2. **Değiştirilen Uygulamayı Yükleme:**
- Komutu kullanın: `adb install `.
3. **Paket Adını Alma:**
- Üçüncü taraf uygulamaları listelemek ve paket adını bulmak için `adb shell pm list packages –3` komutunu çalıştırın.
4. **Uygulamayı Debugger Bağlantısını Bekleyecek Şekilde Ayarlama:**
- Komut: `adb shell am setup-debug-app –w `.
- **Not:** Bu komut, uygulamayı başlatmadan önce her seferinde çalıştırılmalıdır, böylece debugger'ı bekler.
- Kalıcılık için `adb shell am setup-debug-app –w -–persistent ` kullanın.
- Tüm bayrakları kaldırmak için `adb shell am clear-debug-app ` komutunu kullanın.
5. **Android Studio'da Hata Ayıklama İçin Hazırlık:**
- Android Studio'da _File -> Open Profile or APK_ yolunu izleyin.
- Yeniden derlenmiş APK'yı açın.
6. **Ana Java Dosyalarında Kesme Noktaları Ayarlama:**
- `MainActivity.java` (özellikle `onCreate` metodunda), `b.java` ve `ContextWrapper.java` dosyalarında kesme noktaları koyun.
### **Kontrolleri Atlatma**
Uygulama, belirli noktalarda debuggeable olup olmadığını kontrol edecek ve köklü bir cihazı gösteren ikili dosyaları da kontrol edecektir. Debugger, uygulama bilgilerini değiştirmek, debuggeable bitini kaldırmak ve aranan ikili dosyaların adlarını değiştirmek için kullanılabilir.
Debuggable kontrolü için:
1. **Bayrak Ayarlarını Değiştirme:**
- Debugger konsolunun değişken bölümünde, `this mLoadedAPK -> mApplicationInfo -> flags = 814267974` yolunu izleyin.
- **Not:** `flags = 814267974` ikili temsili `11000011100111011110` olup, "Flag_debuggable" bayrağının aktif olduğunu gösterir.
![https://miro.medium.com/v2/resize:fit:1400/1*-ckiSbWGSoc1beuxxpKbow.png](https://miro.medium.com/v2/resize:fit:1400/1*-ckiSbWGSoc1beuxxpKbow.png)
Bu adımlar, uygulamanın hata ayıklanabilir olmasını ve belirli güvenlik kontrollerinin debugger kullanılarak atlatılmasını sağlar, böylece uygulamanın davranışının daha derinlemesine analizi veya değiştirilmesi mümkün olur.
Adım 2, bir bayrak değerini 814267972 olarak değiştirmeyi içerir; bu, ikili olarak 110000101101000000100010100 şeklinde temsil edilir.
# **Bir Açığı İstismar Etme**
Bir düğme ve bir metin görünümü içeren savunmasız bir uygulama kullanılarak bir gösterim sağlandı. Başlangıçta uygulama "Crack Me" mesajını gösterir. Amaç, kaynak kodunu değiştirmeden "Try Again" mesajını "Hacked" olarak değiştirmektir.
## **Açığı Kontrol Etme**
- Uygulama, `AndroidManifest.xml` dosyasına erişmek için `apktool` kullanılarak decompile edildi.
- AndroidManifest.xml dosyasında `android_debuggable="true"` ifadesinin varlığı, uygulamanın debuggeable olduğunu ve istismara açık olduğunu gösterir.
- `apktool`'un yalnızca debuggeable durumunu kontrol etmek için kullanıldığını ve herhangi bir kodu değiştirmediğini belirtmek önemlidir.
## **Kurulumu Hazırlama**
- Süreç, bir emülatör başlatmayı, savunmasız uygulamayı yüklemeyi ve dinleyen Dalvik VM portlarını belirlemek için `adb jdwp` kullanmayı içeriyordu.
- JDWP (Java Debug Wire Protocol), bir VM'de çalışan bir uygulamanın hata ayıklanmasını sağlamak için benzersiz bir port açar.
- Uzaktan hata ayıklama için port yönlendirme gerekliydi, ardından JDB hedef uygulamaya bağlandı.
## **Çalışma Zamanında Kod Enjekte Etme**
- İstismar, kesme noktaları ayarlayarak ve uygulama akışını kontrol ederek gerçekleştirildi.
- Uygulamanın yapısını ortaya çıkarmak için `classes` ve `methods ` gibi komutlar kullanıldı.
- `onClick` metodunda bir kesme noktası ayarlandı ve yürütmesi kontrol edildi.
- `locals`, `next` ve `set` komutları, yerel değişkenleri incelemek ve değiştirmek için kullanıldı; özellikle "Try Again" mesajını "Hacked" olarak değiştirmek için.
- Değiştirilen kod, `run` komutu kullanılarak yürütüldü ve uygulamanın çıktısı gerçek zamanlı olarak başarıyla değiştirildi.
Bu örnek, debuggeable bir uygulamanın davranışının nasıl manipüle edilebileceğini gösterdi ve uygulama bağlamında cihazda shell erişimi elde etme gibi daha karmaşık istismarların potansiyelini vurguladı.
## Referanslar
* [https://medium.com/@shubhamsonani/hacking-with-precision-bypass-techniques-via-debugger-in-android-apps-27fd562b2cc0](https://medium.com/@shubhamsonani/hacking-with-precision-bypass-techniques-via-debugger-in-android-apps-27fd562b2cc0)
* [https://resources.infosecinstitute.com/android-hacking-security-part-6-exploiting-debuggable-android-applications](https://resources.infosecinstitute.com/android-hacking-security-part-6-exploiting-debuggable-android-applications)
{% hint style="success" %}
AWS Hacking'i öğrenin ve pratik yapın:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
GCP Hacking'i öğrenin ve pratik yapın: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
HackTricks'i Destekleyin
* [**abonelik planlarını**](https://github.com/sponsors/carlospolop) kontrol edin!
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın ya da **Twitter'da** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** bizi takip edin.**
* **Hacking ipuçlarını paylaşmak için** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github reposuna PR gönderin.
{% endhint %}