hacktricks/mobile-pentesting/xamarin-apps.md

18 KiB

Xamarin ऐप्स

AWS हैकिंग सीखें शून्य से लेकर हीरो तक htARTE (HackTricks AWS Red Team Expert) के साथ!

HackTricks का समर्थन करने के अन्य तरीके:

मूल जानकारी

Xamarin एक ओपन-सोर्स प्लेटफॉर्म है जो डेवलपर्स को उपकरणों और ऐड-ऑन्स का व्यापक चयन प्रदान करता है, जिससे वे iOS, Android, और Windows के लिए .NET और C# फ्रेमवर्क का उपयोग करके आधुनिक ऐप्स बना सकते हैं।

Xamarin Android आर्किटेक्चर

Xamarin Android.* और Java.* नेमस्पेसेस के लिए .NET बाइंडिंग्स प्रदान करता है। Xamarin.

Android ऐप्लिकेशन Mono एक्जीक्यूशन एनवायरनमेंट के अंतर्गत काम करते हैं, जिसके साथ Android Runtime (ART) वर्चुअल मशीन साइड बाय साइड चलती है।

Mono एक्जीक्यूशन एनवायरनमेंट इन नेमस्पेसेस को Managed Callable Wrappers (MCW) के माध्यम से कॉल करता है और ART को Android Callable Wrappers (ACW) प्रदान करता है।

ये दोनों एनवायरनमेंट्स Linux कर्नेल के ऊपर चलते हैं और यूजर कोड के लिए विभिन्न APIs को इन्वोक करते हैं। यह व्यवस्था डेवलपर्स को अंतर्निहित सिस्टम तक पहुंच प्रदान करती है।

Xamarin iOS प्रोजेक्ट

Xamarin.iOS ऐप्लिकेशन Mono रनटाइम एनवायरनमेंट के अंतर्गत चलते हैं और C# .NET कोड्स को ARM असेंबली भाषा में कंपाइल करने के लिए पूर्ण Ahead of Time (AOT) कंपाइलेशन का उपयोग करते हैं।

यह Objective-C Runtime के साथ चलता है। रनटाइम एनवायरनमेंट्स UNIX-जैसे कर्नेल के ऊपर चलते हैं और यूजर कोड के लिए कई APIs को इन्वोक करते हैं, जो डेवलपर्स को अंतर्निहित प्रबंधित या नेटिव सिस्टम तक पहुंचने देते हैं।

नीचे दी गई डायग्राम इस आर्किटेक्चर को दर्शाती है:

.Net रनटाइम और Mono फ्रेमवर्क क्या है?

.Net फ्रेमवर्क एसेंबलीज, क्लासेस, और नेमस्पेसेस का एक सेट है जिसका उपयोग डेवलपर्स ऐप्लिकेशन बनाने के लिए कर सकते हैं; .Net रनटाइम कंपाइल किए गए कोड को चलाता है, और इस प्रक्रिया को मैनेज्ड कोड एक्जीक्यूशन कहा जाता है। .NET रनटाइम कई फीचर्स प्रदान करता है जो प्लेटफॉर्म स्वतंत्रता सुनिश्चित करते हैं और पुराने फ्रेमवर्क संस्करणों के साथ संगत होते हैं।

Mono फ्रेमवर्क की शुरुआत 2005 में Linux (Ximian/SuSe/Novell) के लिए .NET फ्रेमवर्क के एक कार्यान्वयन के रूप में हुई थी। Microsoft द्वारा प्रायोजित और Xamarin द्वारा नेतृत्व किया गया, Mono ECMA मानकों के आधार पर Common Language Runtime और C# के लिए .NET फ्रेमवर्क का ओपन-सोर्स कार्यान्वयन है।

Xamarin ऐप्स के लिए रिवर्स इंजीनियरिंग तकनीकें

Xamarin असेंबलीज का डिकंपाइलेशन

डिकंपाइलेशन वह प्रक्रिया है जिसका उपयोग कंपाइल किए गए कोड से सोर्स कोड उत्पन्न करने के लिए किया जाता है। वर्तमान में मेमोरी में मौजूद असेंबलीज और एक्जीक्यूटेबल्स के बारे में जानकारी प्राप्त करने के लिए, Windows एक शानदार जगह है।

Modules विंडो खोलने के लिए, Debug > Windows > Modules का चयन करें। एक बार जब आप मॉड्यूल का पता लगा लेते हैं जिसका डिकंपाइलेशन आवश्यक है, तो राइट-क्लिक करें और "Decompile Source to Symbol File" का चयन करें। यह क्रिया एक सिंबल फाइल बनाती है जिसमें डिकंपाइल्ड सोर्स होता है, जो बदले में आपको अपने सोर्स कोड से सीधे तीसरे पक्ष के कोड में प्रवेश करने देता है।

Visual Studio प्रतीकों की अनुपस्थिति में भी मैनेज्ड कोड को डिकंपाइल करता है, जिससे आप कोड को देख सकते हैं, वेरिएबल्स का निरीक्षण कर सकते हैं और ब्रेकपॉइंट्स सेट कर सकते हैं। डिस्क पर सोर्स कोड निकालने के लिए, एम्बेडेड सोर्स वाले मॉड्यूल पर राइट-क्लिक करें और "Extract Embedded Source" पर क्लिक करें। यह सोर्स फाइलों को Miscellaneous files फोल्डर में निर्यात करेगा जिससे आगे का विश्लेषण किया जा सकता है।

Xamarin ऐप्लिकेशन्स का JIT बनाम AOT कंपाइलेशन

ये दो विकल्प हैं C# आधारित Xamarin कोड को एक ऐप्लिकेशन में कंपाइल करने के लिए, अर्थात् Just in time कंपाइलेशन और ahead of time कंपाइलेशन। कंपाइलेशन का तरीका यह प्रभावित करता है कि ऐप्लिकेशन कोड apk या ipa फाइल के भीतर कैसे शिप किया जाता है। आइए इसे नीचे जल्दी से देखें:

- Android: Xamarin आपको android के लिए JIT और AOT दोनों फ्लैग्स का उपयोग करके कंपाइल करने की अनुमति देता है। Hybrid AOT मोड का उपयोग करके निष्पादन की अधिकतम गति प्राप्त करने का भी एक तरीका है। ध्यान दें कि Full AOT मोड केवल Enterprise लाइसेंस के लिए उपलब्ध है।

- iOS: iOS के मामले में केवल एक विकल्प है, ahead-of-time कंपाइलेशन। यह Apple की नीतियों के कारण है जो डिवाइस पर गतिशील रूप से उत्पन्न कोड के निष्पादन को प्रतिबंधित करती हैं।

{% hint style="info" %} यदि आपको Full AOT कंपाइल किया गया ऐप्लिकेशन मिलता है, और यदि IL Assembly फाइलों को डेवलपर द्वारा बिल्ड साइज को कम करने के लिए हटा दिया गया है, तो रिवर्सिंग में लिब फोल्डर से या libmonodroid_bundle_app.so फाइल से .dll.so फाइलों से dll फाइलें निकालने का एक अतिरिक्त

python3 xamarin-decompress.py -o /path/to/decompressed/apk

यह संभव है कि dll फाइलों के बजाय आपको assemblies डायरेक्टरी में assemblies.blob और assemblies.manifest दिखाई दें। यह एक Xamarin AssemblyStore है और एक Android एप्लिकेशन में dlls को पैक करने का वर्तमान में सुझाया गया तरीका है। assemblies.manifest एक पाठ फाइल है जो बाइनरी फाइल assemblies.blob की सामग्री का वर्णन करती है। इन्हें अनपैक करने के लिए आपको pyxamstore का उपयोग करना होगा।

pyxamstore unpack -d /path/to/decompressed/apk/assemblies/

iOS के मामले में, IPA फाइलों के अंदर dll फाइलें सीधे एक डिकंपाइलर में लोड की जा सकती हैं (कुछ भी अनकंप्रेस करने की जरूरत नहीं है)।

ज्यादातर एप्लिकेशन कोड हमें dll फाइलों को डिकंपाइल करने पर मिल जाता है। यह भी ध्यान दें कि Xamarin Framework आधारित एप्स में सभी प्लेटफॉर्म्स जैसे iOS और Android आदि के बिल्ड्स में 90% सामान्य कोड होता है।

ऊपर के स्क्रीनशॉट से, जिसमें apk में मौजूद dll फाइलों की सूची है, हम पुष्टि कर सकते हैं कि यह एक Xamarin एप्प है। इसमें एप्प-विशिष्ट dll फाइलें के साथ-साथ एप्प को चलाने के लिए आवश्यक लाइब्रेरी फाइलें भी होती हैं, जैसे कि Xamarin.Essentails.dll या Mono.Security.dll

{% hint style="success" %} अंत में आप इन सिफारिश किए गए उपकरणों का उपयोग करके DLLs से C# कोड तक पहुँच सकते हैं। {% endhint %}

डायनामिक विश्लेषण

यह जांचने की कोशिश करें कि क्या एप्लिकेशन में किसी प्रकार की SSL पिनिंग लागू है। यदि नहीं, तो Burp का उपयोग सिस्टम CA के रूप में अनुरोधों को इंटरसेप्ट करने के लिए काम करना चाहिए। Frida का उपयोग Java या ObjC रनटाइम के साथ यहाँ काम नहीं करेगा, लेकिन सौभाग्य से एक उपकरण है जिसका उपयोग विधियों में हुकिंग के लिए किया जा सकता है।

Fridax आपको आसानी से रनटाइम पर Xamarin एप्लिकेशन के अंदर .NET बाइनरी को संशोधित करने की अनुमति देता है। स्थिर विश्लेषण आपको एप्लिकेशन के भीतर विभिन्न विधियों की पहचान करने में मदद करेगा, जिन्हें बाद में Fridax का उपयोग करके डायनामिक विश्लेषण के लिए हुक किया जा सकता है। नीचे कुछ Frida स्क्रिप्ट्स हैं जो हमें रूट डिटेक्शन या SSL-पिनिंग को बायपास करने में मदद कर सकते हैं:

संदर्भ

Learn AWS hacking from zero to hero with htARTE (HackTricks AWS Red Team Expert)!

HackTricks का समर्थन करने के अन्य तरीके:

  • यदि आप चाहते हैं कि आपकी कंपनी का विज्ञापन HackTricks में दिखाई दे या HackTricks को PDF में डाउनलोड करें, तो SUBSCRIPTION PLANS देखें!
  • आधिकारिक PEASS & HackTricks स्वैग प्राप्त करें।
  • The PEASS Family की खोज करें, हमारा एक्सक्लूसिव NFTs संग्रह।
  • 💬 Discord group में शामिल हों या telegram group में शामिल हों या मुझे Twitter 🐦 पर फॉलो करें @carlospolopm.
  • HackTricks के github repos और HackTricks Cloud में PRs सबमिट करके अपनी हैकिंग ट्रिक्स साझा करें।