hacktricks/mobile-pentesting/xamarin-apps.md

93 lines
7.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Xamarin Apps
{% hint style="success" %}
AWS Hacking'i öğrenin ve pratik yapın:<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">\
GCP Hacking'i öğrenin ve pratik yapın: <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>HackTricks'i Destekleyin</summary>
* [**abonelik planlarını**](https://github.com/sponsors/carlospolop) kontrol edin!
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın ya da **Twitter'da** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** bizi takip edin.**
* **Hacking ipuçlarını paylaşmak için** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github reposuna PR gönderin.
</details>
{% endhint %}
## **Temel Bilgiler**
Xamarin, geliştiricilerin **iOS, Android ve Windows için uygulamalar oluşturmasını** sağlamak amacıyla tasarlanmış **açık kaynak bir platformdur**. Bu platform, modern uygulamaları verimli bir şekilde oluşturmak için birçok araç ve uzantıya erişim sunar.
### Xamarin'ın Mimarisi
* **Android** için, Xamarin, .NET bağlamaları aracılığıyla Android ve Java ad alanlarıyla entegre olur ve Mono yürütme ortamında Android Runtime (ART) ile birlikte çalışır. Managed Callable Wrappers (MCW) ve Android Callable Wrappers (ACW), Mono ve ART arasında iletişimi kolaylaştırır; her ikisi de Linux çekirdeği üzerine inşa edilmiştir.
* **iOS** için, uygulamalar Mono çalışma zamanı altında çalışır ve C# .NET kodunu ARM montaj diline dönüştürmek için tam Ahead of Time (AOT) derlemesi kullanır. Bu süreç, UNIX benzeri bir çekirdek üzerinde Objective-C Runtime ile birlikte çalışır.
### .NET Runtime ve Mono Framework
**.NET framework**, uygulama geliştirme için derlemeler, sınıflar ve ad alanları içerir; .NET Runtime, kod yürütmesini yönetir. Platform bağımsızlığı ve geriye dönük uyumluluk sunar. **Mono Framework**, 2005 yılında .NET'i Linux'a genişletmek amacıyla başlatılan açık kaynak bir .NET sürümüdür; şu anda Microsoft tarafından desteklenmekte ve Xamarin tarafından yönetilmektedir.
### Xamarin Uygulamalarının Tersine Mühendisliği
#### Xamarin Derlemelerinin Değiştirilmesi
Değiştirme, derlenmiş kodu tekrar kaynak koda dönüştürür. Windows'ta, Visual Studio'daki Modüller penceresi, değiştirme için modülleri tanımlayabilir ve üçüncü taraf koda doğrudan erişim sağlayarak analiz için kaynak kodunu çıkarabilir.
#### JIT vs AOT Derlemesi
* **Android**, Just-In-Time (JIT) ve Ahead-Of-Time (AOT) derlemesini destekler; optimal yürütme hızı için Hibrit AOT modu vardır. Tam AOT, yalnızca Kurumsal lisanslara özeldir.
* **iOS**, Apple'ın dinamik kod yürütme kısıtlamaları nedeniyle yalnızca AOT derlemesi kullanır.
### APK/IPA'dan dll Dosyalarını Çıkarma
APK/IPA'daki derlemelere erişmek için dosyayıın ve derlemeler dizinini keşfedin. Android için, [XamAsmUnZ](https://github.com/cihansol/XamAsmUnZ) ve [xamarin-decompress](https://github.com/NickstaDB/xamarin-decompress) gibi araçlar dll dosyalarını açabilir.
```bash
python3 xamarin-decompress.py -o /path/to/decompressed/apk
```
APK dekompile edildikten sonra unknown/assemblies/ klasöründe içindeki `.dll` dosyalarını görmek mümkünse, bu durumda `.dll` dosyaları üzerinde analiz yapmak için [**dnSpy**](https://github.com/dnSpy/dnSpy) doğrudan kullanılabilir.\
Ancak bazen unknown/assemblies/ klasöründe `assemblies.blob` ve `assemblies.manifest` dosyaları bulunur. Xamarin uygulamalarında `assemblies.blob` dosyasını açmak için [pyxamstore](https://github.com/jakev/pyxamstore) aracı kullanılabilir, bu da daha fazla analiz için .NET assembly'lerine erişim sağlar:
```bash
pyxamstore unpack -d /path/to/decompressed/apk/assemblies/
```
iOS dll dosyaları, uygulama kodunun önemli kısımlarını ortaya çıkararak dekompile edilmek üzere kolayca erişilebilir durumdadır; bu kod genellikle farklı platformlar arasında ortak bir temel paylaşır.
### Statik Analiz
`.dll` dosyaları elde edildikten sonra, uygulamanın kodunu değiştirmeye olanak tanıyan [**dnSpy**](https://github.com/dnSpy/dnSpy) **veya** [**ILSpy**](https://github.com/icsharpcode/ILSpy) gibi araçlar kullanarak .Net kodunu statik olarak analiz etmek mümkündür. Bu, uygulamayı korumaları aşmak için değiştirmek gibi durumlarda oldukça faydalı olabilir.\
Uygulamayı değiştirdikten sonra, tekrar paketlemeniz ve yeniden imzalamanız gerektiğini unutmayın.
### Dinamik Analiz
Dinamik analiz, SSL pinning kontrolü yapmayı ve Xamarin uygulamalarındaki .NET ikili dosyalarının çalışma zamanı değişiklikleri için [Fridax](https://github.com/NorthwaveSecurity/fridax) gibi araçlar kullanmayı içerir. Root tespiti veya SSL pinning'i aşmak için Frida betikleri mevcuttur ve analiz yeteneklerini artırır.
Diğer ilginç Frida betikleri:
* [**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)
### Yeniden İmzalama
[Uber APK Signer](https://github.com/patrickfav/uber-apk-signer) aracı, aynı anahtar ile birden fazla APK'yı imzalamayı kolaylaştırır ve uygulamada değişiklikler yapıldıktan sonra yeniden imzalamak için kullanılabilir.
## Daha Fazla Bilgi
* [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 %}