Objection Tutorial
Bug bounty tip: Intigriti için kayıt olun, hackers tarafından, hackers için oluşturulmuş premium bir 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!
Introduction
objection - Runtime Mobile Exploration
Objection, Frida tarafından desteklenen bir runtime mobil keşif aracıdır. Jailbroken veya rooted bir mobil cihaza ihtiyaç duymadan mobil uygulamaları ve güvenlik durumlarını değerlendirmeye yardımcı olmak amacıyla oluşturulmuştur.
Not: Bu, bir tür jailbreak / root bypass değildir. objection
kullanarak, karşılaştığınız geçerli sandbox tarafından dayatılan tüm kısıtlamalarla sınırlı kalmaya devam edersiniz.
Resume
objection'ın amacı, kullanıcının Frida'nın sunduğu ana eylemleri çağırmasına izin vermektir. Aksi takdirde, kullanıcı test etmek istediği her uygulama için tek bir script oluşturmak zorunda kalacaktır.
Tutorial
Bu eğitim için burada indirebileceğiniz APK'yı kullanacağım:
Ya da orijinal deposundan (app-release.apk'yi indirin)
Installation
Bağlantı
Bir normal ADB bağlantısı kurun ve cihazda frida sunucusunu başlatın (ve frida'nın hem istemci hem de sunucuda çalıştığını kontrol edin).
Eğer bir rootlu cihaz kullanıyorsanız, test etmek istediğiniz uygulamayı --gadget seçeneği içinde seçmeniz gerekmektedir. bu durumda:
Temel Eylemler
Objection'ın tüm olası komutları bu eğitimde listelenmeyecek, sadece daha faydalı bulduğum komutlar yer alacak.
Ortam
Ortam içinde bazı ilginç bilgiler (şifreler veya yollar gibi) bulunabilir.
Frida Bilgisi
Yükleme/İndirme
Frida betiğini içe aktarın
SSLPinning
Root tespiti
Exec Komutu
Ekran Görüntüleri
Statik analiz Dinamik hale getirildi
Gerçek bir uygulamada, objection kullanmadan önce bu bölümde keşfedilen tüm bilgileri statik analiz sayesinde bilmemiz gerekir. Yine de, bu şekilde belki de yeni bir şey görebilirsiniz çünkü burada yalnızca sınıfların, yöntemlerin ve dışa aktarılan nesnelerin tam bir listesini bulacaksınız.
Bu, bir şekilde uygulamanın okunabilir kaynak kodunu elde edemiyorsanız da faydalıdır.
Etkinlikleri, alıcıları ve hizmetleri listele
Frida, hiçbiri bulunamazsa bir hata verecektir.
Mevcut aktiviteyi alma
Sınıfları Ara
Uygulamamızın içindeki sınıfları aramaya başlayalım.
Bir sınıfın Arama Yöntemleri
Şimdi MainActivity: sınıfındaki yöntemleri çıkaralım:
Bir sınıfın tanımlı Yöntemlerini ve parametrelerini listele
Sınıfın yöntemlerinin hangi parametrelere ihtiyaç duyduğunu bulalım:
Sınıfları listele
Ayrıca, mevcut uygulama içinde yüklenen tüm sınıfları listeleyebilirsiniz:
Bu, bir sınıfın yöntemini hooklamak istiyorsanız ve sadece sınıfın adını biliyorsanız çok faydalıdır. Bu fonksiyonu sınıfın hangi modüle ait olduğunu aramak için kullanabilirsiniz ve ardından yöntemini hooklayabilirsiniz.
Hooklamanın kolay olması
Bir yöntemi hooklamak (izlemek)
Uygulamanın kaynak kodundan bildiğimiz gibi, MainActivity'den sum() fonksiyonu her saniye çalıştırılmaktadır. Fonksiyon her çağrıldığında tüm olası bilgileri (argümanlar, dönüş değeri ve geri izleme) dökme yapmayı deneyelim:
Bir sınıfı tamamen izlemek (hooking)
Aslında MainActivity sınıfının tüm yöntemlerini gerçekten ilginç buluyorum, hepsini hooklayalım. Dikkatli olun, bu bir uygulamayı çökertebilir.
Eğer sınıfın bağlı olduğu uygulama ile oynarsanız, her bir fonksiyonun ne zaman çağrıldığını, argümanlarını ve dönüş değerini göreceksiniz.
Bir fonksiyonun boolean dönüş değerini değiştirme
Kaynak koddan, checkPin fonksiyonunun bir String argümanı aldığını ve bir boolean döndürdüğünü görebilirsiniz. Fonksiyonu her zaman true döndürecek şekilde ayarlayalım:
Artık, PIN kodu için metin kutusuna herhangi bir şey yazarsanız, her şeyin geçerli olduğunu göreceksiniz:
Sınıf örnekleri
Belirli bir Java sınıfının canlı örneklerini arayın ve yazdırın; bu, tam nitelikli sınıf adı ile belirtilmiştir. Bulunan bir objection için bir dize değeri elde etme girişiminin sonucu, genellikle nesne için özellik değerlerini içerecektir.
Keystore/Intents
Keystore ve intent'lerle oynayabilirsiniz:
Bellek
Dump
Liste
Listenin en altında frida'yı görebilirsiniz:
Frida'nın neyi dışa aktardığını kontrol edelim:
Ara/Yaz
Objection ile bellek içinde arama yapabilir ve yazabilirsiniz:
SQLite
SQLite veritabanlarıyla etkileşimde bulunmak için sqlite
komutunu kullanabilirsiniz.
Exit
Objection'da Ne Eksik
Hooking yöntemleri bazen uygulamayı çökertiyor (bu aynı zamanda Frida'dan da kaynaklanıyor).
Sınıfların örneklerini kullanarak örneğin fonksiyonlarını çağırmak mümkün değil. Ve yeni sınıf örnekleri oluşturup bunları fonksiyonları çağırmak için kullanamazsınız.
Uygulama tarafından kullanılan tüm yaygın kripto yöntemlerini hooklamak için (şifreli metin, düz metin, anahtarlar, IV'ler ve kullanılan algoritmalar görmek için) sslpinnin gibi bir kısayol yok.
Bug bounty ipucu: Intigriti için kayıt olun, hackers tarafından, hackers için oluşturulmuş premium bir 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!
Last updated