15 KiB
Xamarin Apps
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- क्या आप किसी साइबर सुरक्षा कंपनी में काम करते हैं? क्या आप अपनी कंपनी को HackTricks में विज्ञापित देखना चाहते हैं? या क्या आपको PEASS की नवीनतम संस्करण या HackTricks को PDF में डाउनलोड करने की अनुमति चाहिए? सदस्यता योजनाएं की जांच करें!
- खोजें The PEASS Family, हमारा विशेष संग्रह NFTs
- प्राप्त करें आधिकारिक PEASS & HackTricks swag
- शामिल हों 💬 Discord समूह या टेलीग्राम समूह में या मुझे Twitter पर फ़ॉलो करें 🐦@carlospolopm.
- अपने हैकिंग ट्रिक्स साझा करें और hacktricks repo और hacktricks-cloud repo में PR जमा करके देखें।
मूलभूत जानकारी
Xamarin एक ओपन-सोर्स प्लेटफ़ॉर्म है जो डेवलपरों को .NET और C# फ़्रेमवर्क का उपयोग करके iOS, Android और Windows के लिए आधुनिक ऐप्स बनाने की सुविधा प्रदान करती है।
Xamarin Android Architecture
Xamarin .NET बाइंडिंग्स Android.* और Java.* नेमस्पेस को प्रदान करता है। Xamarin.
Android ऐप्लिकेशन Mono निष्पादन पर्यावरण के तहत कार्य करते हैं, जहां Android रनटाइम (ART) वर्चुअल मशीन साइड बाय साइड चलती है।
Mono निष्पादन पर्यावरण MCW (Managed Callable Wrappers) के माध्यम से इन नेमस्पेस में कॉल करता है और ART को ACW (Android Callable Wrappers) प्रदान करता है।
इन दोनों पर्यावरणों को लिनक्स कर्नल के ऊपर चलाया जाता है और उपयोगकर्ता कोड के लिए विभिन्न API को आमंत्रित करता है। इस व्यवस्था से डेवलपरों को निम्नलिखित प्रणाली तक पहुंच मिलती है।
Xamarin iOS Project
Xamarin.iOS ऐप्लिकेशन Mono रनटाइम पर्यावरण के तहत कार्य करते हैं और C# .NET कोड को ARM असेंबली भाषा में कंपाइल करने के लिए पूर्ण आगे कंपाइलेशन (AOT) का उपयोग करते हैं।
यह Objective-C रनटाइम के साथ चलता है। रनटाइम पर्यावरण एक UNIX-जैसे कर्नल के ऊपर चलते हैं और उपयोगकर्ता कोड के लिए कई API को आमंत्रित करते हैं, जिससे डेवलपरों को प्रबंधित या प्राकृतिक प्रणाली तक पहुंच मिलती है।
नीचे दिए गए आरेखण द्वारा इस वास्तविकता को दर्शाया गया है:
.Net Runtime और Mono Framework क्या हैं?
**.Net फ़्रेमवर्क एक संग्रह हैं, जिसमें डेवलपर एप्लिकेशन बनाने के लिए उपयोग कर सकते हैं; .Net Runtime कंपाइल किए गए कोड को चलाता है, और इस प्रक्रिया को मैनेज़्ड कोड निष्पादन कहा जाता है। .NET Runtime पुराने फ़्रेमवर्क संस्करणों के साथ संगत होने और प्लेटफ़ॉर्म स्वतंत्रता सुनिश्चित करने कई सुविधाएँ प्रदान करता है।
Mono Framework 2005 में Linux (Ximian/SuSe/Novell) के लिए .NET फ़्रेमवर्क के एक अमल के रूप में शुरू किया गया था। Microsoft द्वारा प्रायोजित और Xamarin द्वारा नेतृत्व किया जाने वाला Mono, ECMA मानकों पर आधारित .NET फ़्रेमवर्क का ओपन-सोर्स अमल है।
Xamarin Apps के लिए Reverse Engineering तकनीकें
Xamarin असेंबलीज़ का डीकंपाइल
डीकंपाइलेशन एक प्रक्रिया है जिसका उपयोग कंपाइल किए गए कोड से स्रोत कोड उत्पन्न करने के लिए किया ज
APK/IPA से dll फ़ाइलें प्राप्त करना
बस apk/ipa फ़ाइल को अनज़िप करें और assemblies निर्देशिका के तहत मौजूद सभी फ़ाइलें कॉपी करें:
एंड्रॉइड APK के मामले में ये dll फ़ाइलें संपीड़ित होती हैं और सीधे डीकंपाइलेशन के लिए सीधे उपयोग नहीं की जा सकती हैं। भाग्य से हमें ऐसे उपकरण भी मिलते हैं जिनका हम उपयोग कर सकते हैं इन dll फ़ाइलों को अनसंदर्भित करने के लिए जैसे XamAsmUnZ और xamarin-decompress.
python3 xamarin-decompress.py -o /path/to/decompressed/apk
यह संभव है कि आप निर्देशिका में assemblies.blob
और assemblies.manifest
देखेंगे इसके बजाय dll फ़ाइलें। यह एक Xamarin AssemblyStore है और एंड्रॉइड एप्लिकेशन में dlls पैक करने के लिए वर्तमान में सिफारिश की जाने वाली तरीका है। assemblies.manifest
एक पाठ फ़ाइल है जो assemblies.blob
बाइनरी फ़ाइल की सामग्री का वर्णन करती है। इन्हें अनपैक करने के लिए आपको pyxamstore का उपयोग करना होगा।
pyxamstore unpack -d /path/to/decompressed/apk/assemblies/
आईओएस के मामले में, IPA फ़ाइलों के भीतर dll फ़ाइलें सीधे लोड की जा सकती हैं एक डीकंपाइलर में (कुछ भी अनप्रेस करने की आवश्यकता नहीं होती है)।
Dll फ़ाइलों को डीकंपाइल करने पर अधिकांश एप्लिकेशन कोड पाया जा सकता है। यह भी ध्यान दें कि Xamarin Framework आधारित ऐप्स में iOS और Android आदि जैसे सभी प्लेटफ़ॉर्मों के बिल्ड में 90% साझा कोड होता है।
उपरोक्त स्क्रीनशॉट में दिखाए गए dll फ़ाइलों की सूची से हम पुष्टि कर सकते हैं कि यह एक Xamarin ऐप है। इसमें ऐप-विशिष्ट dll फ़ाइलें शामिल हैं जो ऐप के लिए आवश्यक पुस्तकालय फ़ाइलें जैसे Xamarin.Essentails.dll
या Mono.Security.dll
शामिल हैं।
{% hint style="success" %} अंत में आप इन सिफारिश किए गए उपकरणों का उपयोग करके DLL से C# कोड तक पहुंच सकते हैं। {% endhint %}
गतिशील विश्लेषण
जांचें कि क्या ऐप्लिकेशन में कोई भी प्रकार का SSL पिनिंग है। यदि नहीं है, तो अनुरोधों को अवरोधित करने के लिए बर्प का उपयोग करना चाहिए। यहां फ्रीडा जावा या ObjC रनटाइम काम नहीं करेगा, लेकिन भाग्य से ऐसा एक उपकरण है जिसका उपयोग मेथडों में हुक करने के लिए किया जा सकता है।
Fridax आपको आसानी से एक्सामरिन ऐप्लिकेशन के भीतर .NET बाइनरी को रनटाइम पर संशोधित करने की अनुमति देता है। स्थिर विश्लेषण आपको ऐप्लिकेशन में मौजूद विभिन्न मेथड्स की पहचान करने में मदद करेगा, जिन्हें फ्रीडा के उपयोग से गतिशील विश्लेषण के लिए हुक किया जा सकता है। नीचे कुछ फ्रीडा स्क्रिप्ट हैं जो हमें रूट डिटेक्शन या SSL पिनिंग को बाइपास करने में मदद कर सकते हैं:
संदर्भ
- https://www.appknox.com/security/xamarin-reverse-engineering-a-guide-for-penetration-testers
- https://thecobraden.com/posts/unpacking_xamarin_assembly_stores/
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- क्या आप साइबर सुरक्षा कंपनी में काम करते हैं? क्या आप अपनी कंपनी को हैकट्रिक्स में विज्ञापित देखना चाहते हैं? या क्या आप PEASS के नवीनतम संस्करण का उपयोग करना चाहते हैं या HackTricks को PDF में डाउनलोड करना चाहते हैं? सदस्यता योजनाएं की जांच करें!
- The PEASS Family की खोज करें, हमारे विशेष NFTs का संग्रह
- प्राप्त करें आधिकारिक PEASS और HackTricks swag
- शामिल हों 💬 Discord समूह या टेलीग्राम समूह या मुझे ट्विटर 🐦@carlospolopm** का** अनुसरण करें।
- अपने हैकिंग ट्रिक्स साझा करें, हैकट्रिक्स रेपो में पीआर जमा करके hacktricks repo और hacktricks-cloud repo को फॉलो करके।