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.
Ανάλυση Εφαρμογής React Native
Για να επιβεβαιώσετε αν η εφαρμογή έχει κατασκευαστεί στο πλαίσιο React Native, ακολουθήστε αυτά τα βήματα:
-
Μετονομάστε το αρχείο APK με επέκταση zip και εξαγάγετέ το σε έναν νέο φάκελο χρησιμοποιώντας την εντολή
cp com.example.apk example-apk.zip
καιunzip -qq example-apk.zip -d ReactNative
. -
Μεταβείτε στον νεοδημιουργηθέντα φάκελο ReactNative και εντοπίστε το φάκελο assets. Μέσα σε αυτόν τον φάκελο, θα πρέπει να βρείτε το αρχείο
index.android.bundle
, το οποίο περιέχει το React JavaScript σε μορφή minified. -
Χρησιμοποιήστε την εντολή
find . -print | grep -i ".bundle$"
για να αναζητήσετε το αρχείο JavaScript.
Κώδικας Javascript
Εάν ελέγχοντας τα περιεχόμενα του index.android.bundle
βρείτε τον κώδικα JavaScript της εφαρμογής (ακόμα και αν είναι minified), μπορείτε να τον αναλύσετε για να βρείτε ευαίσθητες πληροφορίες και ευπάθειες.
Καθώς το bundle περιέχει στην πραγματικότητα όλο τον κώδικα JS της εφαρμογής, είναι δυνατόν να τον χωρίσετε σε διάφορα αρχεία (πιθανώς διευκολύνοντας την αντίστροφη μηχανική του) χρησιμοποιώντας το εργαλείο react-native-decompiler.
Webpack
Για να αναλύσετε περαιτέρω τον κώδικα JavaScript, μπορείτε να ανεβάσετε το αρχείο στο https://spaceraccoon.github.io/webpack-exploder/ ή να ακολουθήσετε αυτά τα βήματα:
- Δημιουργήστε ένα αρχείο με το όνομα
index.html
στον ίδιο φάκελο με τον παρακάτω κώδικα:
<script src="./index.android.bundle"></script>
-
Ανοίξτε το
index.html
αρχείο στο Google Chrome. -
Ανοίξτε την Developer Toolbar πατώντας Command+Option+J για OS X ή Control+Shift+J για Windows.
-
Κάντε κλικ στο "Sources" στην Developer Toolbar. Θα πρέπει να δείτε ένα αρχείο JavaScript που είναι χωρισμένο σε φακέλους και αρχεία, αποτελώντας το κύριο bundle.
Αν βρείτε ένα αρχείο που ονομάζεται index.android.bundle.map
, θα μπορείτε να αναλύσετε τον πηγαίο κώδικα σε μη ελαχιστοποιημένη μορφή. Τα αρχεία map περιέχουν πηγή χαρτογράφησης, η οποία σας επιτρέπει να χαρτογραφήσετε ελαχιστοποιημένα αναγνωριστικά.
Για να αναζητήσετε ευαίσθητα διαπιστευτήρια και endpoints, ακολουθήστε αυτά τα βήματα:
-
Προσδιορίστε ευαίσθητες λέξεις-κλειδιά για να αναλύσετε τον κώδικα JavaScript. Οι εφαρμογές React Native συχνά χρησιμοποιούν τρίτες υπηρεσίες όπως Firebase, endpoints υπηρεσιών AWS S3, ιδιωτικά κλειδιά κ.λπ.
-
Σε αυτή την συγκεκριμένη περίπτωση, παρατηρήθηκε ότι η εφαρμογή χρησιμοποιούσε την υπηρεσία Dialogflow. Αναζητήστε ένα μοτίβο σχετικό με τη διαμόρφωσή της.
-
Ήταν τυχερό ότι ευαίσθητα σκληρά διαπιστευτήρια βρέθηκαν στον κώδικα JavaScript κατά τη διάρκεια της διαδικασίας αναγνώρισης.
Αλλαγή κώδικα JS και ανακατασκευή
Σε αυτή την περίπτωση, η αλλαγή του κώδικα είναι εύκολη. Απλώς χρειάζεται να μετονομάσετε την εφαρμογή για να χρησιμοποιήσει την επέκταση .zip
και να την εξαγάγετε. Στη συνέχεια, μπορείτε να τροποποιήσετε τον κώδικα JS μέσα σε αυτό το bundle και να ανακατασκευάσετε την εφαρμογή. Αυτό θα πρέπει να είναι αρκετό για να σας επιτρέψει να εισάγετε κώδικα στην εφαρμογή για σκοπούς δοκιμών.
## Hermes bytecode
Αν το bundle περιέχει Hermes bytecode, δεν θα μπορείτε να έχετε πρόσβαση στον κώδικα Javascript της εφαρμογής (ούτε καν στην ελαχιστοποιημένη έκδοση).
Μπορείτε να ελέγξετε αν το bundle περιέχει Hermes bytecode εκτελώντας την παρακάτω εντολή:
file index.android.bundle
index.android.bundle: Hermes JavaScript bytecode, version 96
Ωστόσο, μπορείτε να χρησιμοποιήσετε τα εργαλεία hbctool, hermes-dec ή hermes_rs για να αποσυναρμολογήσετε τον bytecode και επίσης να αποκωδικοποιήσετε σε κάποιο ψευδο JS κώδικα. Για να το κάνετε αυτό, για παράδειγμα αυτές οι εντολές:
hbc-disassembler ./index.android.bundle /tmp/my_output_file.hasm
hbc-decompiler ./index.android.bundle /tmp/my_output_file.js
Αλλαγή κώδικα και ανακατασκευή
Ιδανικά, θα πρέπει να είστε σε θέση να τροποποιήσετε τον αποσυναρμολογημένο κώδικα (αλλάζοντας μια σύγκριση, ή μια τιμή ή οτιδήποτε χρειάζεται να τροποποιήσετε) και στη συνέχεια να ανακατασκευάσετε τον bytecode και μετά να ανακατασκευάσετε την εφαρμογή.
Το εργαλείο hbctool υποστηρίζει την αποσυναρμολόγηση του πακέτου και την επανακατασκευή του μετά την εκτέλεση των αλλαγών, ωστόσο υποστηρίζει μόνο παλιές εκδόσεις του bytecode Hermes.
Το εργαλείο hermes-dec δεν υποστηρίζει την ανακατασκευή του bytecode.
Το εργαλείο hermes_rs υποστηρίζει την ανακατασκευή του bytecode, αλλά στην πραγματικότητα είναι μια βιβλιοθήκη και όχι ένα εργαλείο CLI.
Δυναμική Ανάλυση
Μπορείτε να προσπαθήσετε να αναλύσετε δυναμικά την εφαρμογή χρησιμοποιώντας το Frida για να ενεργοποιήσετε τη λειτουργία προγραμματιστή της εφαρμογής React και να χρησιμοποιήσετε το react-native-debugger
για να συνδεθείτε σε αυτήν. Ωστόσο, για αυτό χρειάζεστε τον πηγαίο κώδικα της εφαρμογής προφανώς. Μπορείτε να βρείτε περισσότερες πληροφορίες σχετικά με αυτό στο https://newsroom.bedefended.com/hooking-react-native-applications-with-frida/.
Αναφορές
- https://medium.com/bugbountywriteup/lets-know-how-i-have-explored-the-buried-secrets-in-react-native-application-6236728198f7
- https://www.assetnote.io/resources/research/expanding-the-attack-surface-react-native-android-applications
- https://payatu.com/wp-content/uploads/2023/02/Mastering-React-Native-Application-Pentesting-A-Practical-Guide-2.pdf
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.