mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
68 lines
9.6 KiB
Markdown
68 lines
9.6 KiB
Markdown
# Xamarin Apps
|
|
|
|
{{#include ../banners/hacktricks-training.md}}
|
|
|
|
## **बुनियादी जानकारी**
|
|
|
|
Xamarin एक **ओपन-सोर्स प्लेटफॉर्म** है जिसे डेवलपर्स के लिए **iOS, Android, और Windows** के लिए ऐप बनाने के लिए डिज़ाइन किया गया है, जो .NET और C# फ्रेमवर्क का उपयोग करता है। यह प्लेटफॉर्म आधुनिक अनुप्रयोगों को कुशलता से बनाने के लिए कई उपकरणों और एक्सटेंशनों तक पहुंच प्रदान करता है।
|
|
|
|
### Xamarin की आर्किटेक्चर
|
|
|
|
- **Android** के लिए, Xamarin Android और Java नामस्थान के साथ .NET बाइंडिंग के माध्यम से एकीकृत होता है, जो Mono निष्पादन वातावरण में Android Runtime (ART) के साथ काम करता है। Managed Callable Wrappers (MCW) और Android Callable Wrappers (ACW) Mono और ART के बीच संचार को सुविधाजनक बनाते हैं, जो दोनों Linux कर्नेल पर आधारित हैं।
|
|
- **iOS** के लिए, अनुप्रयोग Mono रनटाइम के तहत चलते हैं, जो C# .NET कोड को ARM असेंबली भाषा में परिवर्तित करने के लिए पूर्ण Ahead of Time (AOT) संकलन का उपयोग करते हैं। यह प्रक्रिया UNIX-जैसे कर्नेल पर Objective-C Runtime के साथ चलती है।
|
|
|
|
### .NET रनटाइम और Mono फ्रेमवर्क
|
|
|
|
**.NET फ्रेमवर्क** में अनुप्रयोग विकास के लिए असेंबली, कक्षाएँ, और नामस्थान शामिल हैं, जिसमें .NET रनटाइम कोड निष्पादन का प्रबंधन करता है। यह प्लेटफॉर्म स्वतंत्रता और पिछली संगतता प्रदान करता है। **Mono फ्रेमवर्क** .NET फ्रेमवर्क का एक ओपन-सोर्स संस्करण है, जिसे 2005 में Linux के लिए .NET का विस्तार करने के लिए शुरू किया गया था, अब Microsoft द्वारा समर्थित और Xamarin द्वारा संचालित है।
|
|
|
|
### Xamarin ऐप्स का रिवर्स इंजीनियरिंग
|
|
|
|
#### Xamarin असेंबली का डिकंपाइल करना
|
|
|
|
डिकंपाइलिंग संकलित कोड को फिर से स्रोत कोड में परिवर्तित करती है। Windows में, Visual Studio में Modules विंडो डिकंपाइलिंग के लिए मॉड्यूल की पहचान कर सकती है, जिससे तीसरे पक्ष के कोड तक सीधी पहुंच और विश्लेषण के लिए स्रोत कोड निकालने की अनुमति मिलती है।
|
|
|
|
#### JIT बनाम AOT संकलन
|
|
|
|
- **Android** Just-In-Time (JIT) और Ahead-Of-Time (AOT) संकलन का समर्थन करता है, जिसमें अनुकूल निष्पादन गति के लिए एक हाइब्रिड AOT मोड है। पूर्ण AOT केवल एंटरप्राइज लाइसेंस के लिए विशेष है।
|
|
- **iOS** केवल AOT संकलन का उपयोग करता है क्योंकि Apple के गतिशील कोड निष्पादन पर प्रतिबंध हैं।
|
|
|
|
### 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 को डिकंपाइल करने के बाद अज्ञात/assemblies/ फ़ोल्डर में `.dll` फ़ाइलें देखी जा सकती हैं, इसलिए `.dlls` पर सीधे विश्लेषण करने के लिए [**dnSpy**](https://github.com/dnSpy/dnSpy) का उपयोग करना संभव है।\
|
|
हालांकि, कभी-कभी, अज्ञात/assemblies/ फ़ोल्डर के अंदर `assemblies.blob` और `assemblies.manifest` फ़ाइलें पाई जाती हैं। Xamarin ऐप्स में `assemblies.blob` फ़ाइल को अनपैक करने के लिए उपकरण [pyxamstore](https://github.com/jakev/pyxamstore) का उपयोग किया जा सकता है, जो आगे के विश्लेषण के लिए .NET assemblies तक पहुंच की अनुमति देता है:
|
|
```bash
|
|
pyxamstore unpack -d /path/to/decompressed/apk/assemblies/
|
|
```
|
|
iOS dll फ़ाइलें डिकंपाइल के लिए आसानी से उपलब्ध हैं, जो एप्लिकेशन कोड के महत्वपूर्ण हिस्सों को प्रकट करती हैं, जो अक्सर विभिन्न प्लेटफार्मों के बीच एक सामान्य आधार साझा करती हैं।
|
|
|
|
### स्थैतिक विश्लेषण
|
|
|
|
एक बार जब `.dll` प्राप्त हो जाती हैं, तो .Net कोड का स्थैतिक विश्लेषण करना संभव है, जैसे कि [**dnSpy**](https://github.com/dnSpy/dnSpy) **या** [**ILSpy**](https://github.com/icsharpcode/ILSpy) **जो** ऐप के कोड को संशोधित करने की अनुमति देगा। यह एप्लिकेशन को संशोधित करने के लिए बहुत उपयोगी हो सकता है ताकि सुरक्षा को बायपास किया जा सके।\
|
|
ध्यान दें कि ऐप को संशोधित करने के बाद, आपको इसे फिर से पैक करना होगा और फिर से साइन करना होगा।
|
|
|
|
### गतिशील विश्लेषण
|
|
|
|
गतिशील विश्लेषण में SSL पिनिंग की जांच करना और Xamarin ऐप्स में .NET बाइनरी के रनटाइम संशोधनों के लिए [Fridax](https://github.com/NorthwaveSecurity/fridax) जैसे उपकरणों का उपयोग करना शामिल है। रूट डिटेक्शन या SSL पिनिंग को बायपास करने के लिए Frida स्क्रिप्ट उपलब्ध हैं, जो विश्लेषण क्षमताओं को बढ़ाती हैं।
|
|
|
|
अन्य दिलचस्प 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) एक ही कुंजी के साथ कई APKs को साइन करना सरल बनाता है, और इसे ऐप में किए गए परिवर्तनों के बाद फिर से साइन करने के लिए उपयोग किया जा सकता है।
|
|
|
|
## आगे की जानकारी
|
|
|
|
- [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)
|
|
|
|
{{#include ../banners/hacktricks-training.md}}
|