9.3 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 інтегрується з Android та Java просторами імен через прив'язки .NET, працюючи в середовищі виконання Mono разом з Android Runtime (ART). Managed Callable Wrappers (MCW) та Android Callable Wrappers (ACW) полегшують зв'язок між Mono та ART, обидва з яких побудовані на ядрі Linux.
- Для iOS додатки працюють під управлінням середовища виконання Mono, використовуючи повну компіляцію Ahead of Time (AOT) для перетворення коду C# .NET в ARM асемблерну мову. Цей процес відбувається поряд з Objective-C Runtime на ядрі, подібному до UNIX.
.NET Runtime та Mono Framework
.NET framework включає збірки, класи та простори імен для розробки додатків, при цьому .NET Runtime керує виконанням коду. Він пропонує незалежність від платформи та зворотну сумісність. Mono Framework є версією .NET framework з відкритим кодом, ініційованою в 2005 році для розширення .NET на Linux, тепер підтримується Microsoft і очолюється Xamarin.
Реверс-інжиніринг додатків Xamarin
Декомпіляція збірок Xamarin
Декомпіляція перетворює скомпільований код назад у вихідний код. У Windows вікно Модулі у Visual Studio може ідентифікувати модулі для декомпіляції, що дозволяє отримати прямий доступ до коду третіх сторін та витягти вихідний код для аналізу.
JIT проти AOT компіляції
- Android підтримує Just-In-Time (JIT) та Ahead-Of-Time (AOT) компіляцію, з гібридним режимом AOT для оптимальної швидкості виконання. Повна AOT є ексклюзивною для корпоративних ліцензій.
- iOS використовує лише AOT компіляцію через обмеження Apple на динамічне виконання коду.
Витягування dll файлів з APK/IPA
Щоб отримати доступ до збірок в APK/IPA, розпакуйте файл і досліджуйте каталог збірок. Для Android інструменти, такі як XamAsmUnZ та xamarin-decompress, можуть розпаковувати dll файли.
python3 xamarin-decompress.py -o /path/to/decompressed/apk
У випадках, коли після декомпіляції APK можливо побачити папку unknown/assemblies/ з файлами .dll
всередині, можна використовувати dnSpy безпосередньо над .dll
для їх аналізу.
Однак іноді в папці unknown/assemblies/ знаходять файли assemblies.blob
та assemblies.manifest
. Інструмент pyxamstore можна використовувати для розпакування файлу assemblies.blob
в додатках Xamarin, що дозволяє отримати доступ до .NET збірок для подальшого аналізу:
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.