hacktricks/mobile-pentesting/xamarin-apps.md

94 lines
7.2 KiB
Markdown
Raw Permalink Normal View History

# Xamarin Apps
{% hint style="success" %}
Leer & oefen AWS Hacking:<img src="../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hacking: <img src="../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
2024-01-05 11:02:33 +00:00
* Kyk na die [**subskripsie planne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacking truuks deur PRs in te dien na die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
2024-02-11 02:07:06 +00:00
## **Basiese Inligting**
Xamarin is 'n **oopbron platform** wat ontwerp is vir ontwikkelaars om **toepassings vir iOS, Android en Windows** te **bou** met behulp van die .NET en C# raamwerke. Hierdie platform bied toegang tot talle gereedskap en uitbreidings om moderne toepassings doeltreffend te skep.
2024-02-11 02:07:06 +00:00
### Xamarin se Argitektuur
* Vir **Android** integreer Xamarin met Android en Java namespaces deur .NET bindings, wat binne die Mono uitvoeringsomgewing werk saam met die Android Runtime (ART). Managed Callable Wrappers (MCW) en Android Callable Wrappers (ACW) fasiliteer kommunikasie tussen Mono en ART, wat albei op die Linux-kern gebou is.
* Vir **iOS** loop toepassings onder die Mono runtime, wat volle Ahead of Time (AOT) kompilering benut om C# .NET kode in ARM assembly taal om te skakel. Hierdie proses loop saam met die Objective-C Runtime op 'n UNIX-agtige kern.
2024-02-11 02:07:06 +00:00
### .NET Runtime en Mono Raamwerk
Die **.NET raamwerk** sluit assemblies, klasse en namespaces in vir toepassingsontwikkeling, met die .NET Runtime wat kode-uitvoering bestuur. Dit bied platformonafhanklikheid en agterwaartse kompatibiliteit. Die **Mono Raamwerk** is 'n oopbron weergawe van die .NET raamwerk, wat in 2005 begin is om .NET na Linux uit te brei, nou ondersteun deur Microsoft en gelei deur Xamarin.
### Omgekeerde Ingenieurswese van Xamarin Toepassings
#### De-kompilering van Xamarin Assemblies
De-kompilering transformeer gecompileerde kode terug na bronkode. In Windows kan die Modules venster in Visual Studio modules vir de-kompilering identifiseer, wat direkte toegang tot derdeparty kode moontlik maak en die ekstraksie van bronkode vir analise toelaat.
#### JIT vs AOT Kompilering
* **Android** ondersteun Just-In-Time (JIT) en Ahead-Of-Time (AOT) kompilering, met 'n Hybride AOT-modus vir optimale uitvoeringsnelheid. Volle AOT is eksklusief vir Enterprise lisensies.
* **iOS** gebruik slegs AOT kompilering weens Apple se beperkings op dinamiese kode-uitvoering.
### Uittreksel van dll Lêers uit APK/IPA
Om toegang te verkry tot die assemblies in 'n APK/IPA, ontpak die lêer en verken die assemblies gids. Vir Android kan gereedskap soos [XamAsmUnZ](https://github.com/cihansol/XamAsmUnZ) en [xamarin-decompress](https://github.com/NickstaDB/xamarin-decompress) dll lêers ontcompress.
2024-02-08 03:06:37 +00:00
```bash
python3 xamarin-decompress.py -o /path/to/decompressed/apk
```
In gevalle waar dit moontlik is om die onbekend/assemblies/ gids met die `.dll` lêers daarin te sien na dekompilering van die APK, is dit moontlik om [**dnSpy**](https://github.com/dnSpy/dnSpy) direk oor die `.dlls` te gebruik om dit te analiseer.\
Echter, soms word die `assemblies.blob` en `assemblies.manifest` lêers binne die onbekend/assemblies/ gids gevind. Die hulpmiddel [pyxamstore](https://github.com/jakev/pyxamstore) kan gebruik word om die `assemblies.blob` lêer in Xamarin-apps uit te pak, wat toegang tot die .NET assemblies vir verdere analise moontlik maak:
2024-02-08 03:06:37 +00:00
```bash
pyxamstore unpack -d /path/to/decompressed/apk/assemblies/
```
iOS dll-lêers is maklik beskikbaar vir dekompilasie, wat beduidende gedeeltes van die toepassingskode onthul, wat dikwels 'n gemeenskaplike basis oor verskillende platforms deel.
### Statiese Analise
Sodra die `.dll`s verkry is, is dit moontlik om die .Net-kode staties te analiseer met behulp van gereedskap soos [**dnSpy**](https://github.com/dnSpy/dnSpy) **of** [**ILSpy**](https://github.com/icsharpcode/ILSpy) **wat** sal toelaat om die kode van die app te wysig. Dit kan baie nuttig wees om die toepassing te manipuleer om beskermings te omseil, byvoorbeeld.\
Let daarop dat jy die app weer moet saampak en weer moet teken na die wysigings.
2024-02-11 02:07:06 +00:00
### Dinamiese Analise
Dinamiese analise behels die nagaan van SSL-pinning en die gebruik van gereedskap soos [Fridax](https://github.com/NorthwaveSecurity/fridax) vir tydrenwysigings van die .NET-binary in Xamarin-apps. Frida-skripte is beskikbaar om worteldetektering of SSL-pinning te omseil, wat analise vermoëns verbeter.
2024-02-11 02:07:06 +00:00
Ander interessante Frida-skripte:
* [**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)
### Hertekening
Die gereedskap [Uber APK Signer](https://github.com/patrickfav/uber-apk-signer) vereenvoudig die teken van verskeie APK's met dieselfde sleutel, en kan gebruik word om 'n app weer te teken nadat daar wysigings aan gemaak is.
2024-02-11 02:07:06 +00:00
## Verdere inligting
* [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)
{% hint style="success" %}
Leer & oefen AWS Hacking:<img src="../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hacking: <img src="../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Ondersteun HackTricks</summary>
2024-01-05 11:02:33 +00:00
* Kyk na die [**subskripsieplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacking truuks deur PR's in te dien na die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}