10 KiB
Xamarin Apps
{% hint style="success" %}
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and 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 περιλαμβάνει assemblies, κλάσεις και namespaces για την ανάπτυξη εφαρμογών, με το .NET Runtime να διαχειρίζεται την εκτέλεση του κώδικα. Προσφέρει ανεξαρτησία από την πλατφόρμα και συμβατότητα προς τα πίσω. Το Mono Framework είναι μια ανοιχτού κώδικα έκδοση του πλαισίου .NET, που ξεκίνησε το 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/
iOS dll αρχεία είναι άμεσα προσβάσιμα για αποσυμπίεση, αποκαλύπτοντας σημαντικά τμήματα του κώδικα της εφαρμογής, ο οποίος συχνά μοιράζεται μια κοινή βάση σε διάφορες πλατφόρμες.
Στατική Ανάλυση
Μόλις αποκτηθούν τα .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
{% hint style="success" %}
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.