Objection Tutorial
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Bug bounty tip: sign up for Intigriti, μια premium πλατφόρμα bug bounty που δημιουργήθηκε από hackers, για hackers! Join us at https://go.intigriti.com/hacktricks today, and start earning bounties up to $100,000!
objection - Runtime Mobile Exploration
Objection είναι ένα εργαλείο εξερεύνησης κινητών σε χρόνο εκτέλεσης, που υποστηρίζεται από Frida. Δημιουργήθηκε με στόχο να βοηθήσει στην αξιολόγηση κινητών εφαρμογών και της ασφάλειας τους χωρίς την ανάγκη για jailbroken ή rooted κινητή συσκευή.
Note: Αυτό δεν είναι κάποια μορφή jailbreak / root bypass. Χρησιμοποιώντας το objection
, είστε ακόμα περιορισμένοι από όλους τους περιορισμούς που επιβάλλει το σχετικό sandbox που αντιμετωπίζετε.
Ο στόχος του objection είναι να επιτρέψει στον χρήστη να καλέσει τις κύριες ενέργειες που προσφέρει η Frida. Αλλιώς, ο χρήστης θα χρειαστεί να δημιουργήσει ένα μοναδικό script για κάθε εφαρμογή που θέλει να δοκιμάσει.
Για αυτό το tutorial θα χρησιμοποιήσω το APK που μπορείτε να κατεβάσετε εδώ:
Ή από το πρωτότυπο αποθετήριο(κατεβάστε app-release.apk)
Κάντε μια κανονική σύνδεση ADB και ξεκινήστε τον server frida στη συσκευή (και ελέγξτε ότι το frida λειτουργεί τόσο στον πελάτη όσο και στον server).
Αν χρησιμοποιείτε μια rooted συσκευή, είναι απαραίτητο να επιλέξετε την εφαρμογή που θέλετε να δοκιμάσετε μέσα στην επιλογή --gadget. σε αυτή την περίπτωση:
Δεν θα παρατίθενται όλες οι δυνατές εντολές του objections σε αυτό το tutorial, μόνο αυτές που έχω βρει πιο χρήσιμες.
Ορισμένες ενδιαφέρουσες πληροφορίες (όπως κωδικοί πρόσβασης ή διαδρομές) θα μπορούσαν να βρεθούν μέσα στο περιβάλλον.
Σε μια πραγματική εφαρμογή θα πρέπει να γνωρίζουμε όλες τις πληροφορίες που ανακαλύφθηκαν σε αυτό το μέρος πριν χρησιμοποιήσουμε το objection χάρη στην στατική ανάλυση. Ούτως ή άλλως, με αυτόν τον τρόπο ίσως μπορέσετε να δείτε κάτι νέο καθώς εδώ θα έχετε μόνο μια πλήρη λίστα από κλάσεις, μεθόδους και εξαγόμενα αντικείμενα.
Αυτό είναι επίσης χρήσιμο αν με κάποιο τρόπο είστε ανίκανοι να αποκτήσετε κάποιο αναγνώσιμο πηγαίο κώδικα της εφαρμογής.
Frida θα εκκινήσει ένα σφάλμα αν δεν βρεθεί κανένα
Ας αρχίσουμε να ψάχνουμε για κλάσεις μέσα στην εφαρμογή μας
Τώρα ας εξάγουμε τις μεθόδους μέσα στην κλάση MainActivity:
Ας καταλάβουμε ποιες παραμέτρους χρειάζονται οι μέθοδοι της κλάσης:
Μπορείτε επίσης να καταγράψετε όλες τις κλάσεις που έχουν φορτωθεί μέσα στην τρέχουσα εφαρμογή:
Αυτό είναι πολύ χρήσιμο αν θέλετε να συνδέσετε τη μέθοδο μιας κλάσης και γνωρίζετε μόνο το όνομα της κλάσης. Μπορείτε να χρησιμοποιήσετε αυτή τη λειτουργία για να αναζητήσετε ποιο module ανήκει η κλάση και στη συνέχεια να συνδέσετε τη μέθοδο της.
Από τον κώδικα πηγής της εφαρμογής γνωρίζουμε ότι η λειτουργία sum() από MainActivity εκτελείται κάθε δευτερόλεπτο. Ας προσπαθήσουμε να εκφορτώσουμε όλες τις δυνατές πληροφορίες κάθε φορά που καλείται η λειτουργία (παράμετροι, τιμή επιστροφής και backtrace):
Στην πραγματικότητα, βρίσκω όλες τις μεθόδους της κλάσης MainActivity πολύ ενδιαφέρουσες, ας hook them all. Να είστε προσεκτικοί, αυτό θα μπορούσε να crash μια εφαρμογή.
Αν παίξετε με την εφαρμογή ενώ η κλάση είναι συνδεδεμένη, θα δείτε πότε καλείται κάθε συνάρτηση, τα ορίσματα της και την τιμή επιστροφής.
Από τον πηγαίο κώδικα μπορείτε να δείτε ότι η συνάρτηση checkPin παίρνει ένα String ως όρισμα και επιστρέφει ένα boolean. Ας κάνουμε τη συνάρτηση να επιστρέφει πάντα true:
Τώρα, αν γράψετε οτιδήποτε στο πλαίσιο κειμένου για τον κωδικό PIN, θα δείτε ότι οτιδήποτε είναι έγκυρο:
Αναζητήστε και εκτυπώστε ζωντανές εμφανίσεις μιας συγκεκριμένης Java κλάσης, που καθορίζεται από ένα πλήρως προσδιορισμένο όνομα κλάσης. Το αποτέλεσμα είναι η προσπάθεια να αποκτήσετε μια τιμή string για μια ανακαλυφθείσα ένσταση που θα περιέχει συνήθως τιμές ιδιοτήτων για το αντικείμενο.
Μπορείτε να πειραματιστείτε με το keystore και τα intents χρησιμοποιώντας:
Στο κάτω μέρος της λίστας μπορείτε να δείτε το frida:
Ας ελέγξουμε τι εξάγει το frida:
Μπορείτε επίσης να αναζητήσετε και να γράψετε μέσα στη μνήμη με το objection:
Μπορείτε να χρησιμοποιήσετε την εντολή sqlite
για να αλληλεπιδράσετε με βάσεις δεδομένων sqlite.
Οι μέθοδοι hooking μερικές φορές καταρρέουν την εφαρμογή (αυτό οφείλεται επίσης στο Frida).
Δεν μπορείτε να χρησιμοποιήσετε τις παρουσίες των κλάσεων για να καλέσετε συναρτήσεις της παρουσίας. Και δεν μπορείτε να δημιουργήσετε νέες παρουσίες κλάσεων και να τις χρησιμοποιήσετε για να καλέσετε συναρτήσεις.
Δεν υπάρχει συντόμευση (όπως αυτή για το sslpinnin) για να hookάρετε όλες τις κοινές μεθόδους κρυπτογράφησης που χρησιμοποιούνται από την εφαρμογή για να δείτε κρυπτογραφημένο κείμενο, απλό κείμενο, κλειδιά, IVs και αλγόριθμους που χρησιμοποιούνται.
Bug bounty tip: εγγραφείτε στο Intigriti, μια premium πλατφόρμα bug bounty που δημιουργήθηκε από hackers, για hackers! Ελάτε μαζί μας στο https://go.intigriti.com/hacktricks σήμερα, και αρχίστε να κερδίζετε βραβεία έως $100,000!
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)