Objection Tutorial
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
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!
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.
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.
Bu eğitim için buradan indirebileceğiniz APK'yı kullanacağım:
Ya da orijinal deposundan (app-release.apk'yi indirin)
Normal bir 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 rootlu bir cihaz kullanıyorsanız, test etmek istediğiniz uygulamayı --gadget seçeneği içinde seçmeniz gerekmektedir. bu durumda:
Objection'ın tüm olası komutları bu öğreticide listelenmeyecek, sadece daha faydalı bulduğum komutlar yer alacak.
Ortam içinde bazı ilginç bilgiler (şifreler veya yollar gibi) bulunabilir.
Gerçek bir uygulamada, statik analiz sayesinde objection kullanmadan önce bu bölümde keşfedilen tüm bilgileri bilmemiz gerekir. Yine de, bu şekilde belki de burada yalnızca sınıfların, yöntemlerin ve dışa aktarılan nesnelerin tam bir listesini göreceğiniz için yeni bir şey görebilirsiniz.
Bu, bir şekilde uygulamanın okunabilir kaynak kodunu elde edemiyorsanız da faydalıdır.
Frida, hiçbiri bulunamazsa bir hata verecektir.
Uygulamamızın içindeki sınıfları aramaya başlayalım.
Şimdi MainActivity: sınıfındaki yöntemleri çıkaralım:
Sınıfın yöntemlerinin hangi parametrelere ihtiyaç duyduğunu bulalım:
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 kullanışlıdır. Bu fonksiyonu kullanarak sınıfın hangi modüle ait olduğunu arayabilirsiniz ve ardından yöntemini hooklayabilirsiniz.
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:
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 süre boyunca uygulama ile oynarsanız, her bir fonksiyonun ne zaman çağrıldığını, argümanlarını ve dönüş değerini göreceksiniz.
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:
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 ve intent'lerle oynayabilirsiniz:
Listenin en altında frida'yı görebilirsiniz:
Frida'nın neyi dışa aktardığını kontrol edelim:
Objection ile bellek içinde arama yapabilir ve yazabilirsiniz:
SQLite veritabanlarıyla etkileşimde bulunmak için sqlite
komutunu kullanabilirsiniz.
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 kullanamıyorsunuz.
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) bir kısayol yok (sslpinnin için olan gibi).
Bug bounty ipucu: Intigriti için kayıt olun, hackler tarafından, hackler 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!
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)