Xamarin Apps
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Το Xamarin είναι μια ανοιχτού κώδικα πλατφόρμα σχεδιασμένη για προγραμματιστές ώστε να δημιουργούν εφαρμογές για iOS, Android και Windows χρησιμοποιώντας τα πλαίσια .NET και C#. Αυτή η πλατφόρμα προσφέρει πρόσβαση σε πολυάριθμα εργαλεία και επεκτάσεις για τη δημιουργία σύγχρονων εφαρμογών με αποδοτικότητα.
Για 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 περιλαμβάνει assemblies, κλάσεις και namespaces για την ανάπτυξη εφαρμογών, με το .NET Runtime να διαχειρίζεται την εκτέλεση του κώδικα. Προσφέρει ανεξαρτησία από την πλατφόρμα και συμβατότητα προς τα πίσω. Το Mono Framework είναι μια ανοιχτού κώδικα έκδοση του πλαισίου .NET, που ξεκίνησε το 2005 για να επεκτείνει το .NET στο Linux, τώρα υποστηριζόμενο από τη Microsoft και καθοδηγούμενο από το Xamarin.
Η αποσυμπίεση μετατρέπει τον μεταγλωττισμένο κώδικα πίσω σε πηγαίο κώδικα. Στα Windows, το παράθυρο Modules στο Visual Studio μπορεί να εντοπίσει modules για αποσυμπίεση, επιτρέποντας άμεση πρόσβαση στον κώδικα τρίτων και εξαγωγή πηγαίου κώδικα για ανάλυση.
Android υποστηρίζει Just-In-Time (JIT) και Ahead-Of-Time (AOT) μεταγλώττιση, με μια υβριδική AOT λειτουργία για βέλτιστη ταχύτητα εκτέλεσης. Η πλήρης AOT είναι αποκλειστική για άδειες Enterprise.
iOS χρησιμοποιεί αποκλειστικά AOT μεταγλώττιση λόγω των περιορισμών της Apple σχετικά με την εκτέλεση δυναμικού κώδικα.
Για να αποκτήσετε πρόσβαση στα assemblies σε ένα APK/IPA, αποσυμπιέστε το αρχείο και εξερευνήστε τον φάκελο assemblies. Για το Android, εργαλεία όπως το XamAsmUnZ και το xamarin-decompress μπορούν να αποσυμπιέσουν τα αρχεία dll.
Σε περιπτώσεις όπου μετά την αποσυμπίεση του APK είναι δυνατή η προβολή του φακέλου unknown/assemblies/ με τα αρχεία .dll
μέσα σε αυτόν, είναι δυνατή η χρήση του dnSpy απευθείας πάνω στα .dlls
για την ανάλυσή τους.
Ωστόσο, μερικές φορές, βρίσκονται τα αρχεία assemblies.blob
και assemblies.manifest
μέσα στον φάκελο unknown/assemblies/. Το εργαλείο pyxamstore μπορεί να χρησιμοποιηθεί για την αποσυμπίεση του αρχείου assemblies.blob
σε εφαρμογές Xamarin, επιτρέποντας την πρόσβαση στα .NET assemblies για περαιτέρω ανάλυση:
iOS dll αρχεία είναι άμεσα προσβάσιμα για αποσυμπίεση, αποκαλύπτοντας σημαντικά τμήματα του κώδικα της εφαρμογής, ο οποίος συχνά μοιράζεται μια κοινή βάση σε διάφορες πλατφόρμες.
Μόλις αποκτηθούν τα .dll
, είναι δυνατή η στατική ανάλυση του κώδικα .Net χρησιμοποιώντας εργαλεία όπως dnSpy ή ILSpy που θα επιτρέψουν την τροποποίηση του κώδικα της εφαρμογής. Αυτό μπορεί να είναι πολύ χρήσιμο για να παρακάμψετε τις προστασίες, για παράδειγμα.
Σημειώστε ότι μετά την τροποποίηση της εφαρμογής θα χρειαστεί να την ξανασυσκευάσετε και να την υπογράψετε ξανά.
Η δυναμική ανάλυση περιλαμβάνει τον έλεγχο για SSL pinning και τη χρήση εργαλείων όπως το Fridax για τροποποιήσεις σε χρόνο εκτέλεσης του .NET δυαδικού σε εφαρμογές Xamarin. Διαθέσιμα είναι σενάρια Frida για να παρακάμψετε την ανίχνευση root ή το SSL pinning, ενισχύοντας τις δυνατότητες ανάλυσης.
Άλλα ενδιαφέροντα σενάρια Frida:
Το εργαλείο Uber APK Signer απλοποιεί την υπογραφή πολλών APK με το ίδιο κλειδί και μπορεί να χρησιμοποιηθεί για να επαναϋπογράψετε μια εφαρμογή μετά από αλλαγές που έχουν γίνει σε αυτήν.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)