Hata ayıklanabilir bir uygulamanın istismar edilmesi

Reading time: 4 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

Kök ve hata ayıklanabilir kontrollerin atlatılması

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

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

Uygulamayı Hata Ayıklanabilir Hale Getirme

İçerik https://medium.com/@shubhamsonani/hacking-with-precision-bypass-techniques-via-debugger-in-android-apps-27fd562b2cc0 adresinden alınmıştır.

  1. APK'yı Decompile Et:
  • 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.
  1. Değiştirilen Uygulamayı Yükle:
  • Komutu kullanın: adb install <application_name>.
  1. Paket Adını Al:
  • Üçüncü taraf uygulamaları listelemek ve paket adını bulmak için adb shell pm list packages –3 komutunu çalıştırın.
  1. Uygulamayı Hata Ayıklayıcı Bağlantısını Bekleyecek Şekilde Ayarlayın:
  • Komut: adb shell am setup-debug-app –w <package_name>.
  • Not: Bu komut, uygulamayı başlatmadan önce her seferinde çalıştırılmalıdır, böylece hata ayıklayıcıyı bekler.
  • Süreklilik için adb shell am setup-debug-app –w -–persistent <package_name> kullanın.
  • Tüm bayrakları kaldırmak için adb shell am clear-debug-app <package_name> komutunu kullanın.
  1. Android Studio'da Hata Ayıklama İçin Hazırlık Yapın:
  • Android Studio'da File -> Open Profile or APK yolunu izleyin.
  • Yeniden derlenmiş APK'yı açın.
  1. Ana Java Dosyalarında Kesme Noktaları Ayarlayın:
  • MainActivity.java (özellikle onCreate metodunda), b.java ve ContextWrapper.java dosyalarında kesme noktaları koyun.

Kontrolleri Atlatma

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

Hata ayıklanabilir kontrolü için:

  1. Bayrak Ayarlarını Değiştir:
  • Hata ayıklayıcı 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

Bu adımlar, uygulamanın hata ayıklanabilir olmasını ve belirli güvenlik kontrollerinin hata ayıklayıcı 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 hata ayıklanabilir olduğunu ve istismara açık olduğunu gösterir.
  • apktool'un yalnızca hata ayıklanabilir durumu kontrol etmek için kullanıldığını belirtmek gerekir; herhangi bir kod değiştirilmemiştir.

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önlendirmesi 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 <class_name> gibi komutlar kullanıldı.
  • onClick metodunda bir kesme noktası ayarlandı ve yürütmesi kontrol edildi.
  • Yerel değişkenleri incelemek ve değiştirmek için locals, next ve set komutları kullanıldı; özellikle "Try Again" mesajı "Hacked" olarak değiştirildi.
  • 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, hata ayıklanabilir 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

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