Εκμετάλλευση μιας εφαρμογής που μπορεί να αποσφαλματωθεί
Reading time: 5 minutes
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.
Παράκαμψη ελέγχων root και αποσφαλμάτωσης
Αυτή η ενότητα της ανάρτησης είναι μια σύνοψη από την ανάρτηση https://medium.com/@shubhamsonani/hacking-with-precision-bypass-techniques-via-debugger-in-android-apps-27fd562b2cc0
Βήματα για να κάνετε μια εφαρμογή Android αποσφαλματώσιμη και να παρακάμψετε ελέγχους
Κάνοντας την εφαρμογή αποσφαλματώσιμη
Περιεχόμενο βασισμένο στο https://medium.com/@shubhamsonani/hacking-with-precision-bypass-techniques-via-debugger-in-android-apps-27fd562b2cc0
- Αποσυμπίεση του APK:
- Χρησιμοποιήστε το εργαλείο APK-GUI για την αποσυμπίεση του APK.
- Στο αρχείο android-manifest, προσθέστε
android:debuggable=true
για να ενεργοποιήσετε τη λειτουργία αποσφαλμάτωσης. - Επανασυμπιέστε, υπογράψτε και zipalign την τροποποιημένη εφαρμογή.
- Εγκατάσταση της τροποποιημένης εφαρμογής:
- Χρησιμοποιήστε την εντολή:
adb install <application_name>
.
- Ανάκτηση του ονόματος πακέτου:
- Εκτελέστε
adb shell pm list packages –3
για να καταγράψετε τις εφαρμογές τρίτων και να βρείτε το όνομα του πακέτου.
- Ρύθμιση της εφαρμογής να περιμένει σύνδεση αποσφαλμάτωσης:
- Εντολή:
adb shell am setup-debug-app –w <package_name>
. - Σημείωση: Αυτή η εντολή πρέπει να εκτελείται κάθε φορά πριν ξεκινήσει η εφαρμογή για να διασφαλιστεί ότι περιμένει τον αποσφαλματωτή.
- Για μόνιμη ρύθμιση, χρησιμοποιήστε
adb shell am setup-debug-app –w -–persistent <package_name>
. - Για να αφαιρέσετε όλες τις σημαίες, χρησιμοποιήστε
adb shell am clear-debug-app <package_name>
.
- Προετοιμασία για αποσφαλμάτωση στο Android Studio:
- Μεταβείτε στο Android Studio στο File -> Open Profile or APK.
- Ανοίξτε το επανασυμπιεσμένο APK.
- Ρύθμιση σημείων διακοπής σε βασικά αρχεία Java:
- Τοποθετήστε σημεία διακοπής στο
MainActivity.java
(συγκεκριμένα στη μέθοδοonCreate
),b.java
, καιContextWrapper.java
.
Παράκαμψη ελέγχων
Η εφαρμογή, σε ορισμένα σημεία, θα επαληθεύσει αν είναι αποσφαλματώσιμη και θα ελέγξει επίσης για δυαδικά αρχεία που υποδεικνύουν μια ριζωμένη συσκευή. Ο αποσφαλματωτής μπορεί να χρησιμοποιηθεί για να τροποποιήσει τις πληροφορίες της εφαρμογής, να απενεργοποιήσει τη σημαία αποσφαλμάτωσης και να αλλάξει τα ονόματα των αναζητούμενων δυαδικών αρχείων για να παρακάμψει αυτούς τους ελέγχους.
Για τον έλεγχο αποσφαλμάτωσης:
- Τροποποίηση ρυθμίσεων σημαίας:
- Στην ενότητα μεταβλητών της κονσόλας αποσφαλμάτωσης, μεταβείτε στο:
this mLoadedAPK -> mApplicationInfo -> flags = 814267974
. - Σημείωση: Η δυαδική αναπαράσταση του
flags = 814267974
είναι11000011100111011110
, υποδεικνύοντας ότι η "Flag_debuggable" είναι ενεργή.
Αυτά τα βήματα συλλογικά διασφαλίζουν ότι η εφαρμογή μπορεί να αποσφαλματωθεί και ότι ορισμένοι έλεγχοι ασφαλείας μπορούν να παρακαμφθούν χρησιμοποιώντας τον αποσφαλματωτή, διευκολύνοντας μια πιο εις βάθος ανάλυση ή τροποποίηση της συμπεριφοράς της εφαρμογής.
Το βήμα 2 περιλαμβάνει την αλλαγή μιας τιμής σημαίας σε 814267972, η οποία αναπαρίσταται δυαδικά ως 110000101101000000100010100.
Εκμετάλλευση μιας ευπάθειας
Παρέχεται μια επίδειξη χρησιμοποιώντας μια ευάλωτη εφαρμογή που περιέχει ένα κουμπί και ένα textview. Αρχικά, η εφαρμογή εμφανίζει "Crack Me". Ο στόχος είναι να αλλάξει το μήνυμα από "Try Again" σε "Hacked" κατά την εκτέλεση, χωρίς να τροποποιηθεί ο πηγαίος κώδικας.
Έλεγχος για ευπάθεια
- Η εφαρμογή αποσυμπιέστηκε χρησιμοποιώντας το
apktool
για να αποκτήσετε πρόσβαση στο αρχείοAndroidManifest.xml
. - Η παρουσία του
android_debuggable="true"
στο AndroidManifest.xml υποδεικνύει ότι η εφαρμογή είναι αποσφαλματώσιμη και επιρρεπής σε εκμετάλλευση. - Αξιοσημείωτο είναι ότι το
apktool
χρησιμοποιείται αποκλειστικά για να ελέγξει την κατάσταση αποσφαλμάτωσης χωρίς να τροποποιήσει κανέναν κώδικα.
Προετοιμασία της ρύθμισης
- Η διαδικασία περιλάμβανε την εκκίνηση ενός εξομοιωτή, την εγκατάσταση της ευάλωτης εφαρμογής και τη χρήση του
adb jdwp
για να εντοπιστούν οι θύρες Dalvik VM που ακούνε. - Το JDWP (Java Debug Wire Protocol) επιτρέπει την αποσφαλμάτωση μιας εφαρμογής που εκτελείται σε μια VM εκθέτοντας μια μοναδική θύρα.
- Η προώθηση θυρών ήταν απαραίτητη για την απομακρυσμένη αποσφαλμάτωση, ακολουθούμενη από την προσάρτηση του JDB στην στοχευμένη εφαρμογή.
Εισαγωγή κώδικα κατά την εκτέλεση
- Η εκμετάλλευση πραγματοποιήθηκε με την τοποθέτηση σημείων διακοπής και τον έλεγχο της ροής της εφαρμογής.
- Εντολές όπως
classes
καιmethods <class_name>
χρησιμοποιήθηκαν για να αποκαλύψουν τη δομή της εφαρμογής. - Ένα σημείο διακοπής τοποθετήθηκε στη μέθοδο
onClick
, και η εκτέλεσή της ελέγχθηκε. - Οι εντολές
locals
,next
, καιset
χρησιμοποιήθηκαν για να εξετάσουν και να τροποποιήσουν τις τοπικές μεταβλητές, ιδιαίτερα αλλάζοντας το μήνυμα "Try Again" σε "Hacked". - Ο τροποποιημένος κώδικας εκτελέστηκε χρησιμοποιώντας την εντολή
run
, επιτυχώς αλλάζοντας την έξοδο της εφαρμογής σε πραγματικό χρόνο.
Αυτό το παράδειγμα απέδειξε πώς μπορεί να χειραγωγηθεί η συμπεριφορά μιας αποσφαλματώσιμης εφαρμογής, υπογραμμίζοντας τη δυνατότητα πιο σύνθετων εκμεταλλεύσεων όπως η απόκτηση πρόσβασης σε shell στη συσκευή στο πλαίσιο της εφαρμογής.
Αναφορές
- https://medium.com/@shubhamsonani/hacking-with-precision-bypass-techniques-via-debugger-in-android-apps-27fd562b2cc0
- https://resources.infosecinstitute.com/android-hacking-security-part-6-exploiting-debuggable-android-applications
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.