mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
68 lines
7.1 KiB
Markdown
68 lines
7.1 KiB
Markdown
# Xamarin Apps
|
||
|
||
{{#include ../banners/hacktricks-training.md}}
|
||
|
||
## **Основна інформація**
|
||
|
||
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](https://github.com/cihansol/XamAsmUnZ) та [xamarin-decompress](https://github.com/NickstaDB/xamarin-decompress), можуть розпаковувати dll файли.
|
||
```bash
|
||
python3 xamarin-decompress.py -o /path/to/decompressed/apk
|
||
```
|
||
У випадках, коли після декомпіляції APK можливо побачити папку unknown/assemblies/ з файлами `.dll` всередині, можна використовувати [**dnSpy**](https://github.com/dnSpy/dnSpy) безпосередньо над `.dll` для їх аналізу.\
|
||
Однак іноді в папці unknown/assemblies/ знаходять файли `assemblies.blob` та `assemblies.manifest`. Інструмент [pyxamstore](https://github.com/jakev/pyxamstore) можна використовувати для розпакування файлу `assemblies.blob` в додатках Xamarin, що дозволяє отримати доступ до .NET збірок для подальшого аналізу:
|
||
```bash
|
||
pyxamstore unpack -d /path/to/decompressed/apk/assemblies/
|
||
```
|
||
Файли iOS dll легко доступні для декомпіляції, що відкриває значні частини коду програми, який часто має спільну основу на різних платформах.
|
||
|
||
### Статичний аналіз
|
||
|
||
Після отримання `.dll` можна статично аналізувати .Net код, використовуючи інструменти, такі як [**dnSpy**](https://github.com/dnSpy/dnSpy) **або** [**ILSpy**](https://github.com/icsharpcode/ILSpy), **які** дозволяють модифікувати код програми. Це може бути дуже корисно для зміни програми, щоб обійти захист, наприклад.\
|
||
Зверніть увагу, що після модифікації програми вам потрібно буде знову упакувати її та підписати.
|
||
|
||
### Динамічний аналіз
|
||
|
||
Динамічний аналіз передбачає перевірку на SSL pinning і використання інструментів, таких як [Fridax](https://github.com/NorthwaveSecurity/fridax) для модифікацій .NET бінарних файлів у програмах Xamarin під час виконання. Доступні скрипти Frida для обходу виявлення root або SSL pinning, що покращує можливості аналізу.
|
||
|
||
Інші цікаві скрипти Frida:
|
||
|
||
- [**xamarin-antiroot**](https://codeshare.frida.re/@Gand3lf/xamarin-antiroot/)
|
||
- [**xamarin-root-detect-bypass**](https://codeshare.frida.re/@nuschpl/xamarin-root-detect-bypass/)
|
||
- [**Frida-xamarin-unpin**](https://github.com/GoSecure/frida-xamarin-unpin)
|
||
|
||
### Підписування
|
||
|
||
Інструмент [Uber APK Signer](https://github.com/patrickfav/uber-apk-signer) спрощує підписування кількох APK з одним і тим же ключем і може бути використаний для повторного підписування програми після внесення змін.
|
||
|
||
## Додаткова інформація
|
||
|
||
- [https://www.appknox.com/security/xamarin-reverse-engineering-a-guide-for-penetration-testers](https://www.appknox.com/security/xamarin-reverse-engineering-a-guide-for-penetration-testers)
|
||
- [https://thecobraden.com/posts/unpacking_xamarin_assembly_stores/](https://thecobraden.com/posts/unpacking_xamarin_assembly_stores/)
|
||
- [https://medium.com/@justmobilesec/introduction-to-the-exploitation-of-xamarin-apps-fde4619a51bf](https://medium.com/@justmobilesec/introduction-to-the-exploitation-of-xamarin-apps-fde4619a51bf)
|
||
|
||
{{#include ../banners/hacktricks-training.md}}
|