Objection Tutorial
Reading time: 7 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
- abonelik planlarını kontrol edin!
- Bize katılın 💬 Discord grubuna veya telegram grubuna veya bizi takip edin Twitter'da 🐦 @hacktricks_live.
- Hacking ipuçlarını paylaşın, HackTricks ve HackTricks Cloud github reposuna PR göndererek.
Giriş
objection - Çalışma Zamanı Mobil Keşif
Objection, Frida tarafından desteklenen bir çalışma zamanı mobil keşif aracıdır. Jailbreak yapılmış veya root'lanmış 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 atlatma 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.
Özeti
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.
Eğitim
Bu eğitim için buradan indirebileceğiniz APK'yı kullanacağım:
Veya orijinal deposundan(app-release.apk'yi indir)
Kurulum
pip3 install objection
Bağlantı
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:
frida-ps -Uai
objection --gadget asvid.github.io.fridaapp explore
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.
env
Frida Bilgisi
frida
Yükleme/İndirme
file download <remote path> [<local path>]
file upload <local path> [<remote path>]
Frida betiğini içe aktarın
import <local path frida-script>
SSLPinning
android sslpinning disable #Attempts to disable SSL Pinning on Android devices.
Root tespiti
android root disable #Attempts to disable root detection on Android devices.
android root simulate #Attempts to simulate a rooted Android environment.
Exec Komutu
android shell_exec whoami
Ekran Görüntüleri
android ui screenshot /tmp/screenshot
android ui FLAG_SECURE false #This may enable you to take screenshots using the hardware keys
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
android hooking list activities
android hooking list services
android hooking list receivers
Frida, hiçbiri bulunamazsa bir hata verecektir.
Mevcut etkinliği alma
android hooking get current_activity
Sınıfları Ara
Uygulamamızın içindeki sınıfları aramaya başlayalım.
android hooking search classes asvid.github.io.fridaapp
Bir sınıfın Yöntemlerini Ara
Şimdi MainActivity: sınıfındaki yöntemleri çıkaralım:
android hooking search methods asvid.github.io.fridaapp MainActivity
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:
android hooking list class_methods asvid.github.io.fridaapp.MainActivity
Sınıfları listele
Ayrıca, mevcut uygulama içinde yüklenen tüm sınıfları da listeleyebilirsiniz:
android hooking list classes #List all loaded classes, As the target application gets usedmore, this command will return more classes.
Bu, bir sınıfın yöntemini yakalamak istiyorsanız ve sadece sınıfın adını biliyorsanız çok faydalıdır. Bu işlevi, sınıfın hangi modüle ait olduğunu aramak için kullanabilirsiniz ve ardından yöntemini yakalayabilirsiniz.
Yakalamanın Kolay Olması
Bir Yöntemi Yakalamak (izlemek)
Uygulamanın kaynak kodundan bildiğimiz kadarıyla, 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:
android hooking watch class_method asvid.github.io.fridaapp.MainActivity.sum --dump-args --dump-backtrace --dump-return
Bir sınıfı tamamen izlemek (hooking)
Aslında MainActivity sınıfının tüm yöntemlerini gerçekten ilginç buluyorum, hadi hepsini hooklayalım. Dikkatli olun, bu bir uygulamayı çökertebilir.
android hooking watch class asvid.github.io.fridaapp.MainActivity --dump-args --dump-return
Uygulama ile sınıf bağlıyken 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ıyla belirtilmiştir. Bulunan bir objection için bir dize değeri elde etme girişiminin sonucu, tipik olarak nesne için özellik değerlerini içerecektir.
android heap print_instances <class>
Keystore/Intents
Keystore ve intent'lerle oynayabilirsiniz:
android keystore list
android intents launch_activity
android intent launch_service
Bellek
Dump
memory dump all <local destination> #Dump all memory
memory dump from_base <base_address> <size_to_dump> <local_destination> #Dump a part
Liste
memory list modules
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:
memory search "<pattern eg: 41 41 41 ?? 41>" (--string) (--offsets-only)
memory write "<address>" "<pattern eg: 41 41 41 41>" (--string)
SQLite
SQLite veritabanlarıyla etkileşimde bulunmak için sqlite
komutunu kullanabilirsiniz.
Exit
exit
Objection'da Neyi Özlüyorum
- 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 (sslpinnin için olan gibi) şifrelenmiş metin, düz metin, anahtarlar, IV'ler ve kullanılan algoritmaları görmek için bir kısayol yok.
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
- abonelik planlarını kontrol edin!
- Bize katılın 💬 Discord grubuna veya telegram grubuna veya bizi takip edin Twitter'da 🐦 @hacktricks_live.
- Hacking ipuçlarını paylaşın, HackTricks ve HackTricks Cloud github reposuna PR göndererek.