Xamarin Apps
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.
Βασικές Πληροφορίες
Το Xamarin είναι μια ανοιχτού κώδικα πλατφόρμα σχεδιασμένη για προγραμματιστές ώστε να δημιουργούν εφαρμογές για iOS, Android και Windows χρησιμοποιώντας τα πλαίσια .NET και C#. Αυτή η πλατφόρμα προσφέρει πρόσβαση σε πολυάριθμα εργαλεία και επεκτάσεις για τη δημιουργία σύγχρονων εφαρμογών με αποδοτικότητα.
Αρχιτεκτονική του Xamarin
- Για Android, το Xamarin ενσωματώνεται με τα namespaces Android και Java μέσω .NET bindings, λειτουργώντας μέσα στο περιβάλλον εκτέλεσης Mono παράλληλα με το Android Runtime (ART). Οι Managed Callable Wrappers (MCW) και οι Android Callable Wrappers (ACW) διευκολύνουν την επικοινωνία μεταξύ Mono και ART, και οι δύο είναι χτισμένες πάνω στον πυρήνα Linux.
- Για iOS, οι εφαρμογές εκτελούνται υπό το runtime Mono, χρησιμοποιώντας πλήρη Ahead of Time (AOT) μεταγλώττιση για να μετατρέψουν τον κώδικα C# .NET σε γλώσσα συναρμολόγησης ARM. Αυτή η διαδικασία εκτελείται παράλληλα με το Objective-C Runtime σε έναν πυρήνα παρόμοιο με UNIX.
.NET Runtime και Mono Framework
Το .NET framework περιλαμβάνει assemblies, κλάσεις και namespaces για την ανάπτυξη εφαρμογών, με το .NET Runtime να διαχειρίζεται την εκτέλεση του κώδικα. Προσφέρει ανεξαρτησία από την πλατφόρμα και συμβατότητα προς τα πίσω. Το Mono Framework είναι μια ανοιχτού κώδικα έκδοση του .NET framework, που ξεκίνησε το 2005 για να επεκτείνει το .NET στο Linux, τώρα υποστηριζόμενο από τη Microsoft και καθοδηγούμενο από το Xamarin.
Αντίστροφη Μηχανική Εφαρμογών Xamarin
Αποσυμπίεση Assemblies του Xamarin
Η αποσυμπίεση μετατρέπει τον μεταγλωττισμένο κώδικα πίσω σε πηγαίο κώδικα. Στα Windows, το παράθυρο Modules στο Visual Studio μπορεί να εντοπίσει modules για αποσυμπίεση, επιτρέποντας άμεση πρόσβαση στον κώδικα τρίτων και εξαγωγή πηγαίου κώδικα για ανάλυση.
JIT vs AOT Μεταγλώττιση
- Android υποστηρίζει Just-In-Time (JIT) και Ahead-Of-Time (AOT) μεταγλώττιση, με μια υβριδική AOT λειτουργία για βέλτιστη ταχύτητα εκτέλεσης. Η πλήρης AOT είναι αποκλειστική για άδειες Enterprise.
- iOS χρησιμοποιεί αποκλειστικά AOT μεταγλώττιση λόγω των περιορισμών της Apple σχετικά με την εκτέλεση δυναμικού κώδικα.
Εξαγωγή αρχείων dll από APK/IPA
Για να αποκτήσετε πρόσβαση στα assemblies σε ένα APK/IPA, αποσυμπιέστε το αρχείο και εξερευνήστε τον φάκελο assemblies. Για Android, εργαλεία όπως το XamAsmUnZ και το xamarin-decompress μπορούν να αποσυμπιέσουν τα αρχεία dll.
python3 xamarin-decompress.py -o /path/to/decompressed/apk
Σε περιπτώσεις όπου μετά την αποσυμπίεση του APK είναι δυνατή η προβολή του φακέλου unknown/assemblies/ με τα αρχεία .dll
μέσα σε αυτόν, είναι δυνατή η χρήση του dnSpy απευθείας πάνω στα .dlls
για την ανάλυσή τους.
Ωστόσο, μερικές φορές, βρίσκονται τα αρχεία assemblies.blob
και assemblies.manifest
μέσα στον φάκελο unknown/assemblies/. Το εργαλείο pyxamstore μπορεί να χρησιμοποιηθεί για την αποσυμπίεση του αρχείου assemblies.blob
σε εφαρμογές Xamarin, επιτρέποντας την πρόσβαση στα .NET assemblies για περαιτέρω ανάλυση:
pyxamstore unpack -d /path/to/decompressed/apk/assemblies/
Τα αρχεία .dll του iOS είναι εύκολα προσβάσιμα για αποσυμπίεση, αποκαλύπτοντας σημαντικά τμήματα του κώδικα της εφαρμογής, ο οποίος συχνά μοιράζεται μια κοινή βάση σε διάφορες πλατφόρμες.
Στατική Ανάλυση
Αφού αποκτηθούν τα .dll
, είναι δυνατή η στατική ανάλυση του κώδικα .Net χρησιμοποιώντας εργαλεία όπως dnSpy ή ILSpy που θα επιτρέψουν την τροποποίηση του κώδικα της εφαρμογής. Αυτό μπορεί να είναι πολύ χρήσιμο για να παρακάμψετε τις προστασίες, για παράδειγμα.
Σημειώστε ότι μετά την τροποποίηση της εφαρμογής θα χρειαστεί να την ξανασυσκευάσετε και να την υπογράψετε ξανά.
Δυναμική Ανάλυση
Η δυναμική ανάλυση περιλαμβάνει τον έλεγχο για SSL pinning και τη χρήση εργαλείων όπως το Fridax για τροποποιήσεις σε χρόνο εκτέλεσης του .NET δυαδικού σε εφαρμογές Xamarin. Διατίθενται σενάρια Frida για να παρακάμψετε την ανίχνευση root ή το SSL pinning, ενισχύοντας τις δυνατότητες ανάλυσης.
Άλλα ενδιαφέροντα σενάρια Frida:
Επαναυπογραφή
Το εργαλείο Uber APK Signer απλοποιεί την υπογραφή πολλαπλών APK με το ίδιο κλειδί και μπορεί να χρησιμοποιηθεί για να επαναυπογράψει μια εφαρμογή μετά από αλλαγές που έχουν γίνει σε αυτήν.
Περαιτέρω πληροφορίες
- https://www.appknox.com/security/xamarin-reverse-engineering-a-guide-for-penetration-testers
- https://thecobraden.com/posts/unpacking_xamarin_assembly_stores/
- https://medium.com/@justmobilesec/introduction-to-the-exploitation-of-xamarin-apps-fde4619a51bf
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.