Xamarin Uygulamaları
Reading time: 4 minutes
tip
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- Bize katılın 💬 Discord grubuna veya telegram grubuna veya bizi takip edin Twitter'da 🐦 @hacktricks_live.
- Hacking ipuçlarını paylaşın, HackTricks ve HackTricks Cloud github reposuna PR göndererek.
Temel Bilgiler
Xamarin, geliştiricilerin iOS, Android ve Windows için uygulamalar oluşturmasını sağlamak amacıyla tasarlanmış açık kaynaklı 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 Önceden Derleme (AOT) derlemesi kullanır. Bu süreç, UNIX benzeri bir çekirdek üzerinde Objective-C Runtime ile birlikte çalışır.
.NET Çalışma Zamanı ve Mono Çerçevesi
.NET çerçevesi, uygulama geliştirme için derlemeler, sınıflar ve ad alanları içerir; .NET Çalışma Zamanı kod yürütmesini yönetir. Platform bağımsızlığı ve geriye dönük uyumluluk sunar. Mono Çerçevesi, 2005 yılında .NET'i Linux'a genişletmek amacıyla başlatılan açık kaynaklı bir .NET çerçevesidir; ş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 Önceden Derleme (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ı açın ve derlemeler dizinini keşfedin. Android için, XamAsmUnZ ve xamarin-decompress gibi araçlar dll dosyalarını açabilir.
python3 xamarin-decompress.py -o /path/to/decompressed/apk
APK dekompile edildikten sonra unknown/assemblies/ klasöründe içindeki .dll
dosyalarıyla birlikte görmek mümkünse, bu durumda .dll
dosyaları üzerinde doğrudan dnSpy kullanmak mümkündür.
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 aracı kullanılabilir, bu da daha fazla analiz için .NET bileşenlerine erişim sağlar:
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 veya ILSpy gibi araçlar kullanarak .Net kodunu statik olarak analiz etmek mümkündür. Bu, uygulamanın korumalarını aşmak için uygulamayı değiştirmek için 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 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:
Yeniden İmzalama
Uber APK Signer aracı, aynı anahtar ile birden fazla APK'yı imzalamayı kolaylaştırır ve değişiklikler yapıldıktan sonra bir uygulamayı yeniden imzalamak için kullanılabilir.
Daha Fazla Bilgi
- https://www.appknox.com/security/xamarin-reverse-engineering-a-guide-for-penetration-testers
- https://thecobraden.com/posts/unpacking_xamarin_assembly_stores/
- https://medium.com/@justmobilesec/introduction-to-the-exploitation-of-xamarin-apps-fde4619a51bf
tip
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- Bize katılın 💬 Discord grubuna veya telegram grubuna veya bizi takip edin Twitter'da 🐦 @hacktricks_live.
- Hacking ipuçlarını paylaşın, HackTricks ve HackTricks Cloud github reposuna PR göndererek.