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

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

Frida Bilgileri

frida

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

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

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 metotlarını ara

Şimdi MainActivity sınıfının içindeki metotları çıkaralım:

android hooking search methods asvid.github.io.fridaapp MainActivity

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

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

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.

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:

Now, If you write anything in the text box for the PIN code you will see tat anything is valid:

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>

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

Listenin en altında frida’yı görebilirsiniz:

frida’nın hangi export’ları sağladığını görelim:

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