# Xamarin Apps
{% hint style="success" %}
Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks
* 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.
{% endhint %}
## **κΈ°λ³Έ μ 보**
Xamarinμ κ°λ°μκ° .NET λ° C# νλ μμν¬λ₯Ό μ¬μ©νμ¬ **iOS, Android λ° Windowsμ© μ±μ ꡬμΆ**ν μ μλλ‘ μ€κ³λ **μ€ν μμ€ νλ«νΌ**μ
λλ€. μ΄ νλ«νΌμ νλμ μΈ μ ν리μΌμ΄μ
μ ν¨μ¨μ μΌλ‘ μμ±νκΈ° μν μλ§μ λꡬμ νμ₯ κΈ°λ₯μ λν μ‘μΈμ€λ₯Ό μ 곡ν©λλ€.
### Xamarinμ μν€ν
μ²
* **Android**μ κ²½μ°, Xamarinμ .NET λ°μΈλ©μ ν΅ν΄ Android λ° Java λ€μμ€νμ΄μ€μ ν΅ν©λμ΄ Mono μ€ν νκ²½ λ΄μμ Android Runtime (ART)μ ν¨κ» μλν©λλ€. κ΄λ¦¬ κ°λ₯ν νΈμΆ λνΌ(MCW)μ Android νΈμΆ λνΌ(ACW)λ Monoμ ART κ°μ ν΅μ μ μ©μ΄νκ² νλ©°, λ κ°μ§ λͺ¨λ Linux 컀λμ κΈ°λ°μΌλ‘ ꡬμΆλμμ΅λλ€.
* **iOS**μ κ²½μ°, μ ν리μΌμ΄μ
μ Mono λ°νμμμ μ€νλλ©°, C# .NET μ½λλ₯Ό ARM μ΄μ
λΈλ¦¬ μΈμ΄λ‘ λ³ννκΈ° μν΄ μ 체 μ¬μ μ»΄νμΌ(AOT) μ»΄νμΌμ νμ©ν©λλ€. μ΄ κ³Όμ μ UNIXμ μ μ¬ν 컀λμμ Objective-C λ°νμκ³Ό ν¨κ» μ€νλ©λλ€.
### .NET λ°νμ λ° Mono νλ μμν¬
**.NET νλ μμν¬**λ μ ν리μΌμ΄μ
κ°λ°μ μν μ΄μ
λΈλ¦¬, ν΄λμ€ λ° λ€μμ€νμ΄μ€λ₯Ό ν¬ν¨νλ©°, .NET λ°νμμ μ½λ μ€νμ κ΄λ¦¬ν©λλ€. νλ«νΌ λ
립μ±κ³Ό μ΄μ λ²μ κ³Όμ νΈνμ±μ μ 곡ν©λλ€. **Mono νλ μμν¬**λ 2005λ
μ μμλ .NET νλ μμν¬μ μ€ν μμ€ λ²μ μΌλ‘, Linuxμ .NETμ νμ₯νκΈ° μν΄ μμλμμΌλ©°, νμ¬ Microsoftμ μ§μμ λ°κ³ μμΌλ©° Xamarinμ΄ μ£Όλνκ³ μμ΅λλ€.
### Xamarin μ±μ 리λ²μ€ μμ§λμ΄λ§
#### Xamarin μ΄μ
λΈλ¦¬μ λμ»΄νμΌ
λμ»΄νμΌμ μ»΄νμΌλ μ½λλ₯Ό λ€μ μμ€ μ½λλ‘ λ³νν©λλ€. Windowsμμλ Visual Studioμ λͺ¨λ μ°½μμ λμ»΄νμΌμ μν λͺ¨λμ μλ³ν μ μμΌλ©°, μ΄λ₯Ό ν΅ν΄ νμ¬ μ½λμ μ§μ μ κ·Όνκ³ λΆμμ μν μμ€ μ½λλ₯Ό μΆμΆν μ μμ΅λλ€.
#### JIT vs AOT μ»΄νμΌ
* **Android**λ Just-In-Time (JIT) λ° Ahead-Of-Time (AOT) μ»΄νμΌμ μ§μνλ©°, μ΅μ μ μ€ν μλλ₯Ό μν νμ΄λΈλ¦¬λ AOT λͺ¨λκ° μμ΅λλ€. μ 체 AOTλ κΈ°μ
λΌμ΄μΌμ€μλ§ λ
μ μ μ
λλ€.
* **iOS**λ Appleμ λμ μ½λ μ€ν μ νμΌλ‘ μΈν΄ μ€μ§ AOT μ»΄νμΌλ§ μ¬μ©ν©λλ€.
### APK/IPAμμ dll νμΌ μΆμΆνκΈ°
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)λ Xamarin μ±μμ `assemblies.blob` νμΌμ μΈν©νλ λ° μ¬μ©λ μ μμΌλ©°, μ΄λ₯Ό ν΅ν΄ μΆκ° λΆμμ μν .NET μ΄μ
λΈλ¦¬μ μ κ·Όν μ μμ΅λλ€:
```bash
pyxamstore unpack -d /path/to/decompressed/apk/assemblies/
```
iOS dll νμΌμ λμ»΄νμΌμ μν΄ μ½κ² μ κ·Όν μ μμΌλ©°, μ΄λ μ ν리μΌμ΄μ
μ½λμ μλΉ λΆλΆμ λλ¬λ΄λ©°, μ’
μ’
λ€μν νλ«νΌ κ°μ κ³΅ν΅ κΈ°λ°μ 곡μ ν©λλ€.
### μ μ λΆμ
`.dll` νμΌμ μ»μ νμλ [**dnSpy**](https://github.com/dnSpy/dnSpy) **λλ** [**ILSpy**](https://github.com/icsharpcode/ILSpy)μ κ°μ λꡬλ₯Ό μ¬μ©νμ¬ .Net μ½λλ₯Ό μ μ μΌλ‘ λΆμν μ μμ΅λλ€. μ΄λ μ ν리μΌμ΄μ
μ μ½λλ₯Ό μμ ν μ μκ² ν΄μ€λλ€. μλ₯Ό λ€μ΄, 보νΈλ₯Ό μ°ννκΈ° μν΄ μ ν리μΌμ΄μ
μ λ³μ‘°νλ λ° λ§€μ° μ μ©ν μ μμ΅λλ€.\
μ±μ μμ ν νμλ λ€μ ν¨νΉνκ³ λ€μ μλͺ
ν΄μΌ νλ€λ μ μ μ μνμΈμ.
### λμ λΆμ
λμ λΆμμ SSL νλμ νμΈνκ³ [Fridax](https://github.com/NorthwaveSecurity/fridax)μ κ°μ λꡬλ₯Ό μ¬μ©νμ¬ Xamarin μ±μ .NET λ°μ΄λ리λ₯Ό λ°νμμμ μμ νλ κ²μ ν¬ν¨ν©λλ€. Frida μ€ν¬λ¦½νΈλ λ£¨νΈ νμ§ λλ SSL νλμ μ°ννμ¬ λΆμ λ₯λ ₯μ ν₯μμν¬ μ μμ΅λλ€.
κΈ°ν ν₯λ―Έλ‘μ΄ 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)
{% hint style="success" %}
Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks
* 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.
{% endhint %}