mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-22 04:33:28 +00:00
93 lines
7.1 KiB
Markdown
93 lines
7.1 KiB
Markdown
# Xamarin Apps
|
|
|
|
{% hint style="success" %}
|
|
Learn & practice 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">\
|
|
Learn & practice 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>
|
|
|
|
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
|
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
|
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
|
|
|
</details>
|
|
{% endhint %}
|
|
|
|
## **Osnovne Informacije**
|
|
|
|
Xamarin je **platforma otvorenog koda** dizajnirana za programere da **prave aplikacije za iOS, Android i Windows** koristeći .NET i C# okvire. Ova platforma nudi pristup brojnim alatima i ekstenzijama za efikasno kreiranje modernih aplikacija.
|
|
|
|
### Arhitektura Xamarina
|
|
|
|
* Za **Android**, Xamarin se integriše sa Android i Java imenskim prostorima putem .NET veza, radeći unutar Mono izvršnog okruženja zajedno sa Android Runtime (ART). Managed Callable Wrappers (MCW) i Android Callable Wrappers (ACW) olakšavaju komunikaciju između Mono i ART, koji su oba izgrađena na Linux kernelu.
|
|
* Za **iOS**, aplikacije se izvršavaju pod Mono runtime-om, koristeći potpunu Ahead of Time (AOT) kompilaciju za konverziju C# .NET koda u ARM asembler jezik. Ovaj proces se odvija zajedno sa Objective-C Runtime na UNIX-sličnom kernelu.
|
|
|
|
### .NET Runtime i Mono Okvir
|
|
|
|
**.NET okvir** uključuje asambleje, klase i imenske prostore za razvoj aplikacija, pri čemu .NET Runtime upravlja izvršavanjem koda. Nudi nezavisnost od platforme i unazad kompatibilnost. **Mono Okvir** je verzija .NET okvira otvorenog koda, pokrenuta 2005. godine kako bi se proširio .NET na Linux, sada podržana od strane Microsoft-a i vođena od strane Xamarina.
|
|
|
|
### Reverzno Inženjerstvo Xamarinskih Aplikacija
|
|
|
|
#### Dekompilacija Xamarinskih Asambleja
|
|
|
|
Dekompilacija transformiše kompajlirani kod nazad u izvorni kod. U Windows-u, prozor Moduli u Visual Studio-u može identifikovati module za dekompilaciju, omogućavajući direktan pristup kodu trećih strana i ekstrakciju izvornog koda za analizu.
|
|
|
|
#### 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šavanja. Potpuna AOT je ekskluzivna za Enterprise licence.
|
|
* **iOS** koristi isključivo AOT kompilaciju zbog Apple-ovih ograničenja na dinamičko izvršavanje koda.
|
|
|
|
### Ekstrakcija dll Fajlova iz APK/IPA
|
|
|
|
Da biste pristupili asamblejama u APK/IPA, raspakujte fajl i istražite direktorijum asambleja. 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
|
|
```
|
|
U slučajevima kada nakon dekompilacije APK-a može da se vidi folder unknown/assemblies/ sa `.dll` datotekama unutar njega, moguće je koristiti [**dnSpy**](https://github.com/dnSpy/dnSpy) direktno na `.dll` datotekama za analizu.\
|
|
Međutim, ponekad se unutar foldera unknown/assemblies/ nalaze datoteke `assemblies.blob` i `assemblies.manifest`. Alat [pyxamstore](https://github.com/jakev/pyxamstore) može se koristiti za raspakivanje datoteke `assemblies.blob` u Xamarin aplikacijama, omogućavajući pristup .NET skupovima za dalju analizu:
|
|
```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.
|
|
|
|
### Staticka analiza
|
|
|
|
Kada se dobiju `.dll` datoteke, moguće je statički analizirati .Net kod koristeći alate kao što su [**dnSpy**](https://github.com/dnSpy/dnSpy) **ili** [**ILSpy**](https://github.com/icsharpcode/ILSpy) **koji** omogućavaju modifikaciju koda aplikacije. Ovo može biti veoma korisno za manipulaciju aplikacijom kako bi se zaobišle zaštite, na primer.\
|
|
Imajte na umu da nakon modifikacije aplikacije, biće potrebno ponovo je spakovati i ponovo potpisati.
|
|
|
|
### Dinamička analiza
|
|
|
|
Dinamička analiza uključuje proveru SSL pinovanja i korišćenje alata kao što je [Fridax](https://github.com/NorthwaveSecurity/fridax) za runtime modifikacije .NET binarnih datoteka u Xamarin aplikacijama. Frida skripte su dostupne za zaobilaženje detekcije root-a ili SSL pinovanja, poboljšavajući mogućnosti analize.
|
|
|
|
Druge zanimljive 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)
|
|
|
|
### Ponovno potpisivanje
|
|
|
|
Alat [Uber APK Signer](https://github.com/patrickfav/uber-apk-signer) pojednostavljuje potpisivanje više APK-ova sa istim ključem, i može se koristiti za ponovno potpisivanje aplikacije nakon što su izvršene izmene.
|
|
|
|
## 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/)
|
|
* [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" %}
|
|
Learn & practice 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">\
|
|
Learn & practice 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>
|
|
|
|
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
|
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
|
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
|
|
|
</details>
|
|
{% endhint %}
|