hacktricks/mobile-pentesting/xamarin-apps.md
2024-02-10 13:11:20 +00:00

82 lines
6.1 KiB
Markdown

# Xamarin aplikacije
<details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Drugi načini podrške HackTricks-u:
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitter-u** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details>
Ovo je sažetak blog posta [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)
## **Osnovne informacije**
Xamarin je **open-source platforma** dizajnirana za razvoj aplikacija za iOS, Android i Windows koristeći .NET i C# framework-ove. Ova platforma pruža pristup brojnim alatima i ekstenzijama za efikasno kreiranje modernih aplikacija.
### Xamarin-ova arhitektura
- Za **Android**, Xamarin se integriše sa Android i Java namespace-ovima putem .NET veza, radeći unutar Mono izvršnog okruženja zajedno sa Android Runtime-om (ART). Managed Callable Wrappers (MCW) i Android Callable Wrappers (ACW) olakšavaju komunikaciju između Mono-a i ART-a, koji su oboje izgrađeni na Linux kernelu.
- Za **iOS**, aplikacije se izvršavaju pod Mono runtime-om, koristeći potpunu Ahead of Time (AOT) kompilaciju za pretvaranje C# .NET koda u ARM asemblerski jezik. Ovaj proces se izvršava zajedno sa Objective-C Runtime-om na UNIX-sličnom kernelu.
### .NET Runtime i Mono Framework
**.NET framework** uključuje skupove, klase i namespace-ove za razvoj aplikacija, pri čemu .NET Runtime upravlja izvršenjem koda. On nudi platformsku nezavisnost i kompatibilnost unazad. **Mono Framework** je open-source verzija .NET framework-a, pokrenuta 2005. godine da bi se .NET proširio na Linux, sada podržana od strane Microsoft-a i vođena od strane Xamarin-a.
### Reverse inženjering Xamarin aplikacija
#### Dekompilacija Xamarin Assembly-ja
Dekompilacija transformiše kompilirani kod nazad u izvorni kod. Na Windows-u, prozor Moduli u Visual Studio-u može identifikovati module za dekompilaciju, omogućavajući direktni pristup kodu treće strane i izvlačenje izvornog koda radi analize.
#### JIT vs AOT kompilacija
- **Android** podržava Just-In-Time (JIT) i Ahead-Of-Time (AOT) kompilaciju, sa Hibridnim AOT režimom za optimalnu brzinu izvršenja. Potpuna AOT je ekskluzivna za Enterprise licence.
- **iOS** isključivo koristi AOT kompilaciju zbog Apple-ovih ograničenja u vezi izvršavanja dinamičkog koda.
### Izdvajanje dll fajlova iz APK/IPA
Da biste pristupili skupovima u APK/IPA fajlu, raspakujte fajl i istražite direktorijum skupova. Za Android, alati poput [XamAsmUnZ](https://github.com/cihansol/XamAsmUnZ) i [xamarin-decompress](https://github.com/NickstaDB/xamarin-decompress) mogu dekompresovati dll fajlove.
```bash
python3 xamarin-decompress.py -o /path/to/decompressed/apk
```
Za skupove montaže u Androidu, [pyxamstore](https://github.com/jakev/pyxamstore) može ih raspakovati.
```bash
pyxamstore unpack -d /path/to/decompressed/apk/assemblies/
```
iOS dll datoteke su lako dostupne za dekompilaciju, otkrivajući značajne delove koda aplikacije, koji često dele zajedničku osnovu na različitim platformama.
### Dinamička analiza
Dinamička analiza uključuje proveru SSL pinning-a i korišćenje alata poput [Fridax](https://github.com/NorthwaveSecurity/fridax) za izvršne modifikacije .NET binarnih fajlova u Xamarin aplikacijama. Frida skripte su dostupne za zaobilaženje detekcije root-a ili SSL pinning-a, poboljšavajući mogućnosti analize.
Druga interesantna Frida skripta:
* [**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)
## Dodatne informacije
* [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/)
<details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Drugi načini podrške HackTricks-u:
* Ako želite da vidite **vašu kompaniju oglašenu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitter-u** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details>