Objection Kılavuzu
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)
Azure Hacking’i öğrenin ve pratik yapın:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- 💬 Discord grubuna veya telegram grubuna katılın ya da Twitter’da bizi takip edin 🐦 @hacktricks_live.**
- Hacking ipuçlarını paylaşmak için HackTricks ve HackTricks Cloud github reposuna PR gönderin.
Giriş
objection - Runtime Mobile Exploration
Objection bir çalışma zamanı mobil keşif araç takımıdır, Frida tarafından desteklenir. Jailbroken veya rooted bir mobil cihaza ihtiyaç duymadan mobil uygulamaları ve güvenlik duruşlarını değerlendirmeye yardımcı olmak amacıyla inşa edilmiştir.
Not: Bu bir jailbreak / root bypass biçimi değildir. objection kullanırken, hâlâ karşılaştığınız geçerli sandbox tarafından konulan tüm kısıtlamalarla sınırlısınız.
Özet
objection’in hedefi, kullanıcının Frida’nın sunduğu ana eylemleri çağırmasına izin vermektir. Aksi halde, kullanıcı test etmek istediği her bir uygulama için tek bir script oluşturmak zorunda kalacaktır.
Eğitim
For this tutorial I am going to use the APK that you can download here:
Or from its original repository (download app-release.apk)
Kurulum
pip3 install objection
Bağlantı
Normal bir ADB bağlantısı kurun ve cihazda frida sunucusunu başlatın (frida’nın hem client hem de server üzerinde çalıştığını kontrol edin).
Eğer bir rooted device kullanıyorsanız, test etmek istediğiniz uygulamayı –gadget seçeneği içinde seçmeniz gerekir. Bu durumda:
frida-ps -Uai
objection --gadget asvid.github.io.fridaapp explore
Temel İşlemler
Not all possible commands of objections are going to be listed in this tutorial, only the ones that I have found more useful.
Ortam
Ortamdaki bazı ilginç bilgiler (ör. şifreler veya dosya yolları) bulunabilir.
env
.png)
Frida Bilgileri
frida
.png)
Yükle/İndir
file download <remote path> [<local path>]
file upload <local path> [<remote path>]
frida betiğini içe aktar
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
Static analysis made Dynamic
Gerçek bir uygulamada, objection’ı kullanmadan önce bu bölümde keşfedilen tüm bilgileri static analysis sayesinde bilmemiz gerekir. Yine de, burada yalnızca classes, methods ve exported objects’in tam bir listesine sahip olacağınız için belki yeni bir şey görebilirsiniz.
Bu, uygulamanın readable source code’unu bir şekilde elde edemiyorsanız da faydalıdır.
List activities, receivers and services
android hooking list activities
.png)
android hooking list services
android hooking list receivers
Hiçbiri bulunmazsa Frida bir hata fırlatır
Geçerli activity’yi alma
android hooking get current_activity
.png)
Sınıfları Ara
Uygulamamızın içindeki sınıfları aramaya başlayalım.
android hooking search classes asvid.github.io.fridaapp
.png)
Bir sınıfın metotlarını ara
Şimdi MainActivity sınıfının içindeki metotları çıkaralım:
android hooking search methods asvid.github.io.fridaapp MainActivity
.png)
Bir sınıfın bildirilen metotlarını parametreleriyle listele
Sınıfın metotlarının hangi parametrelere ihtiyaç duyduğunu belirleyelim:
android hooking list class_methods asvid.github.io.fridaapp.MainActivity
.png)
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, sadece sınıfın adını biliyorsanız bir sınıfın method’unu hooklamak istiyorsanız çok kullanışlıdır. Bu fonksiyonu sınıfın hangi module’e ait olduğunu aramak ve sonra method’unu hooklamak için kullanabilirsiniz.
Hooking’in kolay olması
Hooking (watching) bir method
Uygulamanın source code incelemesinden, MainActivity içindeki function sum()’un her saniye çalıştırıldığını biliyoruz. Fonksiyon her çağrıldığında (argümanlar, dönüş değeri ve backtrace) dump all possible information yapmayı deneyelim:
android hooking watch class_method asvid.github.io.fridaapp.MainActivity.sum --dump-args --dump-backtrace --dump-return
.png)
Hooking (tüm sınıfı izleme)
Aslında MainActivity sınıfındaki tüm metotları gerçekten ilginç buluyorum, hepsini hook them all. Dikkatli olun, bu bir uygulamayı crash edebilir.
android hooking watch class asvid.github.io.fridaapp.MainActivity --dump-args --dump-return
If you play with the application while the class is hooked you will see when each function is being called, its arguments and the return value.
.png)
Bir fonksiyonun boolean return değerini değiştirme
From the source code you can see that the function checkPin gets a String as argument and returns a boolean. Lets make the function always return true:
.png)
Now, If you write anything in the text box for the PIN code you will see tat anything is valid:
.png)
Sınıf örnekleri
Search for and print live instances of a specific Java class, specified by a fully qualified class name. Out is the result of an attempt at getting a string value for a discovered objection which would typically contain property values for the object.
android heap print_instances <class>
.png)
Keystore/Intents
keystore ve intents ile şunları kullanarak oynayabilirsiniz:
android keystore list
android intents launch_activity
android intent launch_service
Memory
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
.png)
Listenin en altında frida’yı görebilirsiniz:
.png)
frida’nın hangi export’ları sağladığını görelim:
.png)
Ara/Yaz
objection ile belleğin içinde arama ve yazma yapabilirsiniz:
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şim kurmak için sqlite komutunu kullanabilirsiniz.
Çıkış
exit
Objection’da Eksik Olanlar
- Hooking yöntemleri bazen uygulamanın çökmesine neden oluyor (bu aynı zamanda Frida yüzünden).
- Sınıf örneklerini kullanarak örneklerin fonksiyonlarını çağırmak mümkün değil. Ayrıca yeni sınıf örnekleri oluşturup bunları fonksiyon çağırmak için kullanamıyorsunuz.
- Uygulamanın kullandığı tüm yaygın crypto yöntemlerini hooklamak için (sslpinnin için olan gibi) bir kısayol yok; bu yüzden cyphered text, plain text, keys, IVs ve kullanılan algoritmaları göremiyorsunuz.
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)
Azure Hacking’i öğrenin ve pratik yapın:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- 💬 Discord grubuna veya telegram grubuna katılın ya da Twitter’da bizi takip edin 🐦 @hacktricks_live.**
- Hacking ipuçlarını paylaşmak için HackTricks ve HackTricks Cloud github reposuna PR gönderin.
HackTricks

