Objection Οδηγός

Tip

Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Μάθετε & εξασκηθείτε στο Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Υποστηρίξτε το HackTricks

Εισαγωγή

objection - Εξερεύνηση κινητής σε χρόνο εκτέλεσης

Objection είναι ένα toolkit για εξερεύνηση κινητών σε χρόνο εκτέλεσης, με κινητήρια δύναμη το Frida. Χτίστηκε με σκοπό να βοηθά στην αξιολόγηση mobile εφαρμογών και της ασφάλειάς τους χωρίς την ανάγκη για μια jailbroken ή rooted κινητή συσκευή.

Σημείωση: Αυτό δεν είναι κάποια μορφή jailbreak / root bypass. Χρησιμοποιώντας objection, εξακολουθείτε να περιορίζεστε από όλους τους περιορισμούς που επιβάλλει το αντίστοιχο sandbox που αντιμετωπίζετε.

Περίληψη

Ο στόχος του objection είναι να επιτρέψει στον χρήστη να καλεί τις κύριες ενέργειες που προσφέρει το Frida. Διαφορετικά, ο χρήστης θα χρειαστεί να δημιουργήσει ένα ξεχωριστό script για κάθε εφαρμογή που θέλει να δοκιμάσει.

Οδηγός

Για αυτόν τον οδηγό θα χρησιμοποιήσω το APK που μπορείτε να κατεβάσετε εδώ:

Ή από το original repository (download app-release.apk)

Εγκατάσταση

pip3 install objection

Σύνδεση

Κάντε μια κανονική ADB σύνδεση και ξεκινήστε τον frida server στη συσκευή (και ελέγξτε ότι το frida λειτουργεί και στον client και στον server).

Αν χρησιμοποιείτε rooted device χρειάζεται να επιλέξετε την εφαρμογή που θέλετε να δοκιμάσετε μέσα στην –gadget επιλογή. σε αυτή την περίπτωση:

frida-ps -Uai
objection --gadget asvid.github.io.fridaapp explore

Βασικές Ενέργειες

Δεν θα αναφερθούν όλες οι πιθανές εντολές του objection σε αυτόν τον οδηγό· μόνο αυτές που βρήκα πιο χρήσιμες.

Περιβάλλον

Κάποιες ενδιαφέρουσες πληροφορίες (όπως passwords ή paths) μπορεί να βρεθούν μέσα στο περιβάλλον.

env

Πληροφορίες Frida

frida

Μεταφόρτωση/Λήψη

file download <remote path> [<local path>]
file upload <local path> [<remote path>]

Εισαγωγή frida script

import <local path frida-script>

SSLPinning

android sslpinning disable #Attempts to disable SSL Pinning on Android devices.

Ανίχνευση Root

android root disable  #Attempts to disable root detection on Android devices.
android root simulate #Attempts to simulate a rooted Android environment.

Εκτέλεση Εντολής

android shell_exec whoami

Στιγμιότυπα οθόνης

android ui screenshot /tmp/screenshot
android ui FLAG_SECURE false  #This may enable you to take screenshots using the hardware keys

Static analysis γίνεται δυναμική

Σε μια πραγματική εφαρμογή θα πρέπει να γνωρίζουμε όλες τις πληροφορίες που ανακαλύφθηκαν σε αυτό το μέρος πριν χρησιμοποιήσουμε objection χάρη στην static analysis. Παρόλα αυτά, με αυτόν τον τρόπο ίσως δείτε κάτι νέο, καθώς εδώ θα έχετε μόνο μια πλήρη λίστα κλάσεων, μεθόδων και εξαγόμενων αντικειμένων.

Αυτό είναι επίσης χρήσιμο αν με κάποιον τρόπο δεν μπορείτε να αποκτήσετε κάποιον αναγνώσιμο πηγαίο κώδικα της εφαρμογής.

Λίστα activities, receivers και services

android hooking list activities

android hooking list services
android hooking list receivers

Frida θα εμφανίσει σφάλμα αν δεν βρεθεί κανένα

Λήψη τρέχουσας δραστηριότητας

android hooking get current_activity

Αναζήτηση Κλάσεων

Ας αρχίσουμε να αναζητούμε κλάσεις στην εφαρμογή μας

android hooking search classes asvid.github.io.fridaapp

Αναζήτηση μεθόδων μιας κλάσης

Τώρα ας εξάγουμε τις μεθόδους μέσα στην κλάση MainActivity:

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

Λίστα δηλωμένων μεθόδων μιας κλάσης με τις παραμέτρους τους

Ας δούμε ποιες παραμέτρους χρειάζονται οι μέθοδοι της κλάσης:

android hooking list class_methods asvid.github.io.fridaapp.MainActivity

Λίστα κλάσεων

Μπορείτε επίσης να απαριθμήσετε όλες τις κλάσεις που φορτώθηκαν μέσα στην τρέχουσα εφαρμογή:

android hooking list classes #List all loaded classes, As the target application gets usedmore, this command will return more classes.

Αυτό είναι πολύ χρήσιμο αν θέλεις να hook the method of a class and you only know the name of the class. Μπορείς να χρησιμοποιήσεις αυτή τη function για να search which module owns the class και στη συνέχεια να hook το method της.

Hooking είναι εύκολο

Hooking (watching) a method

Από τον source code της εφαρμογής γνωρίζουμε ότι η function sum() from MainActivity εκτελείται κάθε δευτερόλεπτο. Ας προσπαθήσουμε να dump all possible information κάθε φορά που καλείται η function (arguments, return value and backtrace):

android hooking watch class_method asvid.github.io.fridaapp.MainActivity.sum --dump-args --dump-backtrace --dump-return

Hooking (watching) ολόκληρης της κλάσης

Στην πραγματικότητα βρίσκω όλες τις μεθόδους της κλάσης MainActivity πραγματικά ενδιαφέρουσες — ας hook them all. Προσοχή, αυτό μπορεί να crash μια εφαρμογή.

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.

Αλλαγή της boolean τιμής επιστροφής μιας συνάρτησης

Από τον πηγαίο κώδικα μπορείτε να δείτε ότι η συνάρτηση checkPin παίρνει ένα String ως όρισμα και επιστρέφει ένα boolean. Ας κάνουμε τη συνάρτηση always return true:

Τώρα, αν γράψετε οτιδήποτε στο πλαίσιο κειμένου για τον κωδικό PIN, θα δείτε ότι οτιδήποτε είναι έγκυρο:

Στιγμιότυπα κλάσης

Αναζητήστε και εκτυπώστε live instances of a specific Java class, που καθορίζεται από ένα πλήρως προσδιορισμένο όνομα κλάσης. Το Out είναι το αποτέλεσμα μιας προσπάθειας να ληφθεί μια string τιμή για ένα ανακαλυφθέν objection, που συνήθως contain property values for the object.

android heap print_instances <class>

Keystore/Intents

Μπορείτε να πειραματιστείτε με το keystore και τα intents χρησιμοποιώντας:

android keystore list
android intents launch_activity
android intent launch_service

Μνήμη

Dump

memory dump all <local destination> #Dump all memory
memory dump from_base <base_address> <size_to_dump> <local_destination> #Dump a part

Λίστα

memory list modules

Στο κάτω μέρος της λίστας μπορείτε να δείτε το frida:

Ας ελέγξουμε τι εξάγει το frida:

Αναζήτηση/Εγγραφή

Μπορείτε επίσης να αναζητήσετε και να γράψετε μέσα στη μνήμη με το objection:

memory search "<pattern eg: 41 41 41 ?? 41>" (--string) (--offsets-only)
memory write "<address>" "<pattern eg: 41 41 41 41>" (--string)

SQLite

Μπορείτε να χρησιμοποιήσετε την εντολή sqlite για να αλληλεπιδράσετε με βάσεις δεδομένων sqlite.

Έξοδος

exit

Τι μου λείπει στο Objection

  • Οι hooking methods μερικές φορές προκαλούν την κατάρρευση της εφαρμογής (αυτό οφείλεται επίσης στη Frida).
  • Δεν μπορείτε να χρησιμοποιήσετε instances των classes για να καλέσετε functions των instances. Επίσης δεν μπορείτε να δημιουργήσετε νέα instances των classes και να τα χρησιμοποιήσετε για να καλέσετε functions.
  • Δεν υπάρχει shortcut (όπως αυτό για sslpinnin) για να hook όλες τις κοινές crypto methods που χρησιμοποιεί η εφαρμογή, ώστε να δείτε cyphered text, plain text, keys, IVs και τους algorithms που χρησιμοποιούνται.

References

Tip

Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Μάθετε & εξασκηθείτε στο Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Υποστηρίξτε το HackTricks