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
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
Εισαγωγή
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
.png)
Πληροφορίες Frida
frida
.png)
Μεταφόρτωση/Λήψη
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
.png)
android hooking list services
android hooking list receivers
Frida θα εμφανίσει σφάλμα αν δεν βρεθεί κανένα
Λήψη τρέχουσας δραστηριότητας
android hooking get current_activity
.png)
Αναζήτηση Κλάσεων
Ας αρχίσουμε να αναζητούμε κλάσεις στην εφαρμογή μας
android hooking search classes asvid.github.io.fridaapp
.png)
Αναζήτηση μεθόδων μιας κλάσης
Τώρα ας εξάγουμε τις μεθόδους μέσα στην κλάση MainActivity:
android hooking search methods asvid.github.io.fridaapp MainActivity
.png)
Λίστα δηλωμένων μεθόδων μιας κλάσης με τις παραμέτρους τους
Ας δούμε ποιες παραμέτρους χρειάζονται οι μέθοδοι της κλάσης:
android hooking list class_methods asvid.github.io.fridaapp.MainActivity
.png)
Λίστα κλάσεων
Μπορείτε επίσης να απαριθμήσετε όλες τις κλάσεις που φορτώθηκαν μέσα στην τρέχουσα εφαρμογή:
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
.png)
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.
.png)
Αλλαγή της boolean τιμής επιστροφής μιας συνάρτησης
Από τον πηγαίο κώδικα μπορείτε να δείτε ότι η συνάρτηση checkPin παίρνει ένα String ως όρισμα και επιστρέφει ένα boolean. Ας κάνουμε τη συνάρτηση always return true:
.png)
Τώρα, αν γράψετε οτιδήποτε στο πλαίσιο κειμένου για τον κωδικό PIN, θα δείτε ότι οτιδήποτε είναι έγκυρο:
.png)
Στιγμιότυπα κλάσης
Αναζητήστε και εκτυπώστε live instances of a specific Java class, που καθορίζεται από ένα πλήρως προσδιορισμένο όνομα κλάσης. Το Out είναι το αποτέλεσμα μιας προσπάθειας να ληφθεί μια string τιμή για ένα ανακαλυφθέν objection, που συνήθως contain property values for the object.
android heap print_instances <class>
.png)
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
.png)
Στο κάτω μέρος της λίστας μπορείτε να δείτε το frida:
.png)
Ας ελέγξουμε τι εξάγει το frida:
.png)
Αναζήτηση/Εγγραφή
Μπορείτε επίσης να αναζητήσετε και να γράψετε μέσα στη μνήμη με το 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
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
HackTricks

