Exploiting a debuggeable application

Hata Ayıklanabilir Bir Uygulamanın Sömürülmesi

AWS hackleme becerilerinizi sıfırdan kahraman seviyesine yükseltin htARTE (HackTricks AWS Kırmızı Takım Uzmanı)ile!

HackTricks'ı desteklemenin diğer yolları:

Root ve Hata Ayıklanabilir Kontrollerini Atlama

Bu bölüm, https://medium.com/@shubhamsonani/hacking-with-precision-bypass-techniques-via-debugger-in-android-apps-27fd562b2cc0 adlı yazıdan bir özet içermektedir.

Bir Android Uygulamasını Hata Ayıklanabilir Hale Getirme ve Kontrolleri Atlama Adımları

Uygulamayı Hata Ayıklanabilir Hale Getirme

İçerik, https://medium.com/@shubhamsonani/hacking-with-precision-bypass-techniques-via-debugger-in-android-apps-27fd562b2cc0 adresindeki yazıya dayanmaktadır.

  1. APK'nın Geri Derlenmesi:

  • APK'nın geri derlenmesi için APK-GUI aracı kullanılır.

  • android-manifest dosyasına android:debuggable=true ekleyerek hata ayıklama modunu etkinleştirin.

  • Değiştirilmiş uygulamayı yeniden derleyin, imzalayın ve zipalign yapın.

  1. Değiştirilmiş Uygulamanın Yüklenmesi:

  • adb install <uygulama_adı> komutunu kullanın.

  1. Paket Adının Alınması:

  • Üçüncü taraf uygulamaların listesini almak için adb shell pm list packages –3 komutunu çalıştırın ve paket adını bulun.

  1. Uygulamanın Hata Ayıklama Bağlantısını Beklemesi İçin Ayarlanması:

  • Komut: adb shell am setup-debug-app –w <paket_adı>.

  • Not: Bu komut, uygulamayı başlatmadan önce her seferinde çalıştırılmalıdır ve hata ayıklama beklemesi için gereklidir.

  • Kalıcılık için adb shell am setup-debug-app –w -–persistent <paket_adı> kullanın.

  • Tüm bayrakları kaldırmak için adb shell am clear-debug-app <paket_adı> kullanın.

  1. Android Studio'da Hata Ayıklamaya Hazırlık:

  • Android Studio'da File -> Open Profile or APK yolunu izleyin.

  • Derlenmiş APK'yı açın.

  1. Ana Java Dosyalarında Kesme Noktaları Ayarlama:

  • MainActivity.java (özellikle onCreate yönteminde), b.java ve ContextWrapper.java dosyalarına kesme noktaları yerleştirin.

Kontrolleri Atlama

Uygulama, belirli noktalarda hata ayıklanabilir olup olmadığını kontrol edecek ve köklü bir cihazı gösteren ikili dosyaları kontrol edecektir. Hata ayıklayıcı, uygulama bilgilerini değiştirmek, hata ayıklanabilir biti kaldırmak ve bu kontrolleri atlatabilmek için aranan ikili dosyaların adlarını değiştirmek için kullanılabilir.

Hata ayıklanabilirlik kontrolü için:

  1. Bayrak Ayarlarını Değiştirme:

  • Hata ayıklama konsolunun değişken bölümünde, this mLoadedAPK -> mApplicationInfo -> flags = 814267974 yolunu izleyin.

  • Not: flags = 814267974'ün ikili temsili 11000011100111011110 olduğunu gösterir ve "Flag_debuggable" aktiftir.

Bu adımlar, uygulamanın hata ayıklanabilir olmasını ve hata ayıklama kullanarak belirli güvenlik kontrollerini atlatabilmesini sağlar, böylece uygulamanın davranışını daha ayrıntılı bir şekilde analiz etmek veya değiştirmek mümkün olur.

  1. adımda, bayrak değerini 814267972 olarak değiştirmek gerekmektedir ve bu ikili olarak 110000101101000000100010100 şeklinde temsil edilir.

Bir Zafiyeti Sömürme

Düzenlenebilir bir uygulama kullanılarak bir gösterim yapıldı. Uygulama bir düğme ve bir metin görüntüler. Başlangıçta, uygulama "Crack Me" olarak görüntülenir. Amaç, kaynak kodu değiştirmeden çalışma zamanında mesajı "Try Again" yerine "Hacked" olarak değiştirmektir.

Zafiyetin Kontrol Edilmesi

  • Uygulama, apktool kullanılarak AndroidManifest.xml dosyasına erişmek için geri derlendi.

  • AndroidManifest.xml'de android_debuggable="true" varlığı, uygulamanın hata ayıklanabilir olduğunu ve sömürülebilir olduğunu gösterir.

  • apktool'un yalnızca kodu değiştirmeden hata ayıklanabilir durumunu kontrol etmek için kullanıldığına dikkat edilmelidir.

Kurulumun Hazırlanması

  • İşlem, bir emülatörün başlatılması, zafiyetli uygulamanın yüklenmesi ve dinleyen Dalvik VM bağlantı noktalarını belirlemek için adb jdwp kullanılmasıyla gerçekleştirildi.

  • JDWP (Java Debug Wire Protocol), bir VM'de çalışan bir uygulamanın hata ayıklanmasına olanak sağlayan benzersiz bir bağlantı noktasını açığa çıkarır.

  • Uzaktan hata ayıklama için port yönlendirme gereklidir, ardından JDB'nin hedef uygulamaya bağlanması yapılır.

Çalışma Zamanında Kod Enjeksiyonu

  • Sömürü, kesme noktalarının ayarlanması ve uygulama akışının kontrol edilmesiyle gerçekleştirildi.

  • classes ve methods <class_name> gibi komutlar kullanılar

Last updated