5.9 KiB
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ı:
- Şirketinizi HackTricks'te tanıtmak veya HackTricks'i PDF olarak indirmek için ABONELİK PLANLARINI kontrol edin!
- Resmi PEASS & HackTricks ürünlerini edinin
- Özel NFT'lerden oluşan koleksiyonumuz The PEASS Family'yi keşfedin
- 💬 Discord grubuna veya telegram grubuna katılın veya Twitter 🐦 @carlospolopm'u takip edin.
- Hacking hilelerinizi HackTricks ve HackTricks Cloud github depolarına pull request göndererek paylaşın.
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.
- 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.
- Değiştirilmiş Uygulamanın Yüklenmesi:
adb install <uygulama_adı>
komutunu kullanın.
- 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.
- 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.
- Android Studio'da Hata Ayıklamaya Hazırlık:
- Android Studio'da File -> Open Profile or APK yolunu izleyin.
- Derlenmiş APK'yı açın.
- Ana Java Dosyalarında Kesme Noktaları Ayarlama:
MainActivity.java
(özellikleonCreate
yönteminde),b.java
veContextWrapper.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:
- 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 temsili11000011100111011110
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.
- 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ılarakAndroidManifest.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
vemethods <class_name>
gibi komutlar kullanılar