Xamarin Apps

Support HackTricks

This is a summary of the blog post https://www.appknox.com/security/xamarin-reverse-engineering-a-guide-for-penetration-testers

Basic Information

Το Xamarin είναι μια ανοιχτού κώδικα πλατφόρμα σχεδιασμένη για προγραμματιστές ώστε να δημιουργούν εφαρμογές για iOS, Android και Windows χρησιμοποιώντας τα πλαίσια .NET και C#. Αυτή η πλατφόρμα προσφέρει πρόσβαση σε πολυάριθμα εργαλεία και επεκτάσεις για τη δημιουργία σύγχρονων εφαρμογών με αποδοτικότητα.

Xamarin's Architecture

  • Για 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 and Mono Framework

Το .NET framework περιλαμβάνει assemblies, κλάσεις και namespaces για την ανάπτυξη εφαρμογών, με το .NET Runtime να διαχειρίζεται την εκτέλεση του κώδικα. Προσφέρει ανεξαρτησία από την πλατφόρμα και οπισθοδρομική συμβατότητα. Το Mono Framework είναι μια ανοιχτού κώδικα έκδοση του .NET framework, που ξεκίνησε το 2005 για να επεκτείνει το .NET στο Linux, τώρα υποστηριζόμενο από τη Microsoft και καθοδηγούμενο από το Xamarin.

Reverse Engineering Xamarin Apps

Decompilation of Xamarin Assemblies

Η αποσυμπίεση μετατρέπει τον μεταγλωττισμένο κώδικα πίσω σε πηγαίο κώδικα. Στα Windows, το παράθυρο Modules στο Visual Studio μπορεί να εντοπίσει modules για αποσυμπίεση, επιτρέποντας άμεση πρόσβαση στον κώδικα τρίτων και εξαγωγή πηγαίου κώδικα για ανάλυση.

JIT vs AOT Compilation

  • Android υποστηρίζει Just-In-Time (JIT) και Ahead-Of-Time (AOT) μεταγλώττιση, με μια υβριδική AOT λειτουργία για βέλτιστη ταχύτητα εκτέλεσης. Η πλήρης AOT είναι αποκλειστική για άδειες Enterprise.

  • iOS χρησιμοποιεί αποκλειστικά AOT μεταγλώττιση λόγω των περιορισμών της Apple σχετικά με την εκτέλεση δυναμικού κώδικα.

Extracting dll Files from APK/IPA

Για να αποκτήσετε πρόσβαση στα assemblies σε ένα APK/IPA, αποσυμπιέστε το αρχείο και εξερευνήστε τον φάκελο assemblies. Για το Android, εργαλεία όπως το XamAsmUnZ και το xamarin-decompress μπορούν να αποσυμπιέσουν τα αρχεία dll.

python3 xamarin-decompress.py -o /path/to/decompressed/apk

Για τα assembly blobs στο Android, το pyxamstore μπορεί να τα αποσυμπιέσει.

pyxamstore unpack -d /path/to/decompressed/apk/assemblies/

iOS dll αρχεία είναι άμεσα προσβάσιμα για αποσυμπίεση, αποκαλύπτοντας σημαντικά τμήματα του κώδικα της εφαρμογής, ο οποίος συχνά μοιράζεται μια κοινή βάση σε διάφορες πλατφόρμες.

Δυναμική Ανάλυση

Η δυναμική ανάλυση περιλαμβάνει τον έλεγχο για SSL pinning και τη χρήση εργαλείων όπως το Fridax για τροποποιήσεις σε χρόνο εκτέλεσης του .NET δυαδικού σε εφαρμογές Xamarin. Τα σενάρια Frida είναι διαθέσιμα για να παρακάμψουν την ανίχνευση root ή το SSL pinning, ενισχύοντας τις δυνατότητες ανάλυσης.

Άλλα ενδιαφέροντα σενάρια Frida:

Περαιτέρω πληροφορίες

Support HackTricks

Last updated