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

Ανάλυση Εφαρμογής React Native

Για να επιβεβαιώσετε αν η εφαρμογή έχει κατασκευαστεί στο πλαίσιο React Native, ακολουθήστε αυτά τα βήματα:

  1. Μετονομάστε το αρχείο APK με επέκταση zip και εξαγάγετέ το σε έναν νέο φάκελο χρησιμοποιώντας την εντολή cp com.example.apk example-apk.zip και unzip -qq example-apk.zip -d ReactNative.

  2. Μεταβείτε στον νεοδημιουργηθέντα φάκελο ReactNative και εντοπίστε το φάκελο assets. Μέσα σε αυτόν τον φάκελο, θα πρέπει να βρείτε το αρχείο index.android.bundle, το οποίο περιέχει το React JavaScript σε μορφή minified.

  3. Χρησιμοποιήστε την εντολή 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/ ή να ακολουθήσετε αυτά τα βήματα:

  1. Δημιουργήστε ένα αρχείο με το όνομα index.html στον ίδιο φάκελο με τον παρακάτω κώδικα:
html
<script src="./index.android.bundle"></script>
  1. Ανοίξτε το index.html αρχείο στο Google Chrome.

  2. Ανοίξτε την Developer Toolbar πατώντας Command+Option+J για OS X ή Control+Shift+J για Windows.

  3. Κάντε κλικ στο "Sources" στην Developer Toolbar. Θα πρέπει να δείτε ένα αρχείο JavaScript που είναι χωρισμένο σε φακέλους και αρχεία, αποτελώντας το κύριο bundle.

Αν βρείτε ένα αρχείο που ονομάζεται index.android.bundle.map, θα μπορείτε να αναλύσετε τον πηγαίο κώδικα σε μη ελαχιστοποιημένη μορφή. Τα αρχεία map περιέχουν πηγή χαρτογράφησης, η οποία σας επιτρέπει να χαρτογραφήσετε ελαχιστοποιημένα αναγνωριστικά.

Για να αναζητήσετε ευαίσθητα διαπιστευτήρια και endpoints, ακολουθήστε αυτά τα βήματα:

  1. Προσδιορίστε ευαίσθητες λέξεις-κλειδιά για να αναλύσετε τον κώδικα JavaScript. Οι εφαρμογές React Native συχνά χρησιμοποιούν τρίτες υπηρεσίες όπως Firebase, endpoints υπηρεσιών AWS S3, ιδιωτικά κλειδιά κ.λπ.

  2. Σε αυτή την συγκεκριμένη περίπτωση, παρατηρήθηκε ότι η εφαρμογή χρησιμοποιούσε την υπηρεσία Dialogflow. Αναζητήστε ένα μοτίβο σχετικό με τη διαμόρφωσή της.

  3. Ήταν τυχερό ότι ευαίσθητα σκληρά διαπιστευτήρια βρέθηκαν στον κώδικα JavaScript κατά τη διάρκεια της διαδικασίας αναγνώρισης.

Αλλαγή κώδικα JS και ανακατασκευή

Σε αυτή την περίπτωση, η αλλαγή του κώδικα είναι εύκολη. Απλώς χρειάζεται να μετονομάσετε την εφαρμογή για να χρησιμοποιήσει την επέκταση .zip και να την εξαγάγετε. Στη συνέχεια, μπορείτε να τροποποιήσετε τον κώδικα JS μέσα σε αυτό το bundle και να ανακατασκευάσετε την εφαρμογή. Αυτό θα πρέπει να είναι αρκετό για να σας επιτρέψει να εισάγετε κώδικα στην εφαρμογή για σκοπούς δοκιμών.

## Hermes bytecode

Αν το bundle περιέχει Hermes bytecode, δεν θα μπορείτε να έχετε πρόσβαση στον κώδικα Javascript της εφαρμογής (ούτε καν στην ελαχιστοποιημένη έκδοση).

Μπορείτε να ελέγξετε αν το bundle περιέχει Hermes bytecode εκτελώντας την παρακάτω εντολή:

bash
file index.android.bundle
index.android.bundle: Hermes JavaScript bytecode, version 96

Ωστόσο, μπορείτε να χρησιμοποιήσετε τα εργαλεία hbctool, hermes-dec ή hermes_rs για να αποσυναρμολογήσετε τον bytecode και επίσης να αποκωδικοποιήσετε σε κάποιο ψευδο JS κώδικα. Για να το κάνετε αυτό, για παράδειγμα αυτές οι εντολές:

bash
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/.

Αναφορές

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