hacktricks/mobile-pentesting/xamarin-apps.md

104 lines
15 KiB
Markdown
Raw Normal View History

# Xamarin Apps
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
* क्या आप किसी **साइबर सुरक्षा कंपनी** में काम करते हैं? क्या आप अपनी **कंपनी को HackTricks में विज्ञापित** देखना चाहते हैं? या क्या आपको **PEASS की नवीनतम संस्करण या HackTricks को PDF में डाउनलोड करने की अनुमति** चाहिए? [**सदस्यता योजनाएं**](https://github.com/sponsors/carlospolop) की जांच करें!
2023-11-06 08:38:02 +00:00
* खोजें [**The PEASS Family**](https://opensea.io/collection/the-peass-family), हमारा विशेष संग्रह [**NFTs**](https://opensea.io/collection/the-peass-family)
* प्राप्त करें [**आधिकारिक PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **शामिल हों** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) में या मुझे **Twitter** पर **फ़ॉलो** करें [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **अपने हैकिंग ट्रिक्स साझा करें और** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **और** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **में PR जमा करके** देखें।
</details>
2023-11-06 08:38:02 +00:00
## **मूलभूत जानकारी**
Xamarin एक ओपन-सोर्स प्लेटफ़ॉर्म है जो डेवलपरों को .NET और C# फ़्रेमवर्क का उपयोग करके iOS, Android और Windows के लिए आधुनिक ऐप्स बनाने की सुविधा प्रदान करती है।
### Xamarin Android Architecture
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
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 को आमंत्रित करते हैं, जिससे डेवलपरों को प्रबंधित या प्राकृतिक प्रणाली तक पहुंच मिलती है।
नीचे दिए गए आरेखण द्वारा इस वास्तविकता को दर्शाया गया है:
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
2023-11-06 08:38:02 +00:00
### .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 असेंबलीज़ का डीकंपाइल
डीकंपाइलेशन एक प्रक्रिया है जिसका उपयोग कंपाइल किए गए कोड से स्रोत कोड उत्पन्न करने के लिए किया ज
2023-11-06 08:38:02 +00:00
## APK/IPA से dll फ़ाइलें प्राप्त करना
2023-11-06 08:38:02 +00:00
बस **apk/ipa** फ़ाइल को अनज़िप करें और assemblies निर्देशिका के तहत मौजूद सभी फ़ाइलें कॉपी करें:
<figure><img src="../.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
एंड्रॉइड **APK के मामले में ये dll फ़ाइलें संपीड़ित** होती हैं और सीधे डीकंपाइलेशन के लिए सीधे उपयोग नहीं की जा सकती हैं। भाग्य से हमें ऐसे उपकरण भी मिलते हैं जिनका हम उपयोग कर सकते हैं इन dll फ़ाइलों को **अनसंदर्भित करने के लिए** जैसे [XamAsmUnZ](https://github.com/cihansol/XamAsmUnZ) और [xamarin-decompress](https://github.com/NickstaDB/xamarin-decompress).
```
python3 xamarin-decompress.py -o /path/to/decompressed/apk
```
यह संभव है कि आप निर्देशिका में `assemblies.blob` और `assemblies.manifest` देखेंगे इसके बजाय dll फ़ाइलें। यह एक Xamarin AssemblyStore है और एंड्रॉइड एप्लिकेशन में dlls पैक करने के लिए वर्तमान में सिफारिश की जाने वाली तरीका है। `assemblies.manifest` एक पाठ फ़ाइल है जो `assemblies.blob` बाइनरी फ़ाइल की सामग्री का वर्णन करती है। इन्हें अनपैक करने के लिए आपको [pyxamstore](https://github.com/jakev/pyxamstore) का उपयोग करना होगा।
```
pyxamstore unpack -d /path/to/decompressed/apk/assemblies/
```
2023-11-06 08:38:02 +00:00
आईओएस के मामले में, IPA फ़ाइलों के भीतर **dll फ़ाइलें सीधे लोड की जा सकती हैं** एक डीकंपाइलर में (कुछ भी अनप्रेस करने की आवश्यकता नहीं होती है)।
**Dll फ़ाइलों को डीकंपाइल करने पर अधिकांश एप्लिकेशन कोड पाया जा सकता है।** यह भी ध्यान दें कि Xamarin Framework आधारित ऐप्स में iOS और Android आदि जैसे सभी प्लेटफ़ॉर्मों के बिल्ड में 90% साझा कोड होता है।
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
उपरोक्त स्क्रीनशॉट में दिखाए गए dll फ़ाइलों की सूची से हम पुष्टि कर सकते हैं कि यह एक Xamarin ऐप है। इसमें ऐप-विशिष्ट dll फ़ाइलें शामिल हैं जो ऐप के लिए आवश्यक पुस्तकालय फ़ाइलें जैसे `Xamarin.Essentails.dll` या `Mono.Security.dll` शामिल हैं।
{% hint style="success" %}
अंत में आप [**इन सिफारिश किए गए उपकरणों**](../reversing/reversing-tools-basic-methods/#net-decompiler) का उपयोग करके DLL से **C# कोड** तक पहुंच सकते हैं।
{% endhint %}
2023-11-06 08:38:02 +00:00
## गतिशील विश्लेषण
जांचें कि क्या ऐप्लिकेशन में कोई भी प्रकार का SSL पिनिंग है। यदि नहीं है, तो अनुरोधों को अवरोधित करने के लिए बर्प का उपयोग करना चाहिए। **यहां फ्रीडा जावा या ObjC रनटाइम काम नहीं करेगा**, लेकिन भाग्य से ऐसा एक उपकरण है जिसका उपयोग मेथडों में हुक करने के लिए किया जा सकता है।
[**Fridax**](https://github.com/NorthwaveSecurity/fridax) आपको आसानी से **एक्सामरिन ऐप्लिकेशन के भीतर .NET बाइनरी को रनटाइम पर संशोधित करने** की अनुमति देता है। स्थिर विश्लेषण आपको ऐप्लिकेशन में मौजूद विभिन्न मेथड्स की पहचान करने में मदद करेगा, जिन्हें फ्रीडा के उपयोग से गतिशील विश्लेषण के लिए हुक किया जा सकता है। नीचे कुछ फ्रीडा स्क्रिप्ट हैं जो हमें रूट डिटेक्शन या SSL पिनिंग को बाइपास करने में मदद कर सकते हैं:
* [**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)
2023-11-06 08:38:02 +00:00
## संदर्भ
* [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/)
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
2023-11-06 08:38:02 +00:00
* क्या आप **साइबर सुरक्षा कंपनी** में काम करते हैं? क्या आप अपनी कंपनी को **हैकट्रिक्स में विज्ञापित** देखना चाहते हैं? या क्या आप **PEASS के नवीनतम संस्करण का उपयोग करना चाहते हैं या HackTricks को PDF में डाउनलोड करना चाहते हैं**? [**सदस्यता योजनाएं**](https://github.com/sponsors/carlospolop) की जांच करें!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) की खोज करें, हमारे विशेष [**NFTs**](https://opensea.io/collection/the-peass-family) का संग्रह
* प्राप्त करें [**आधिकारिक PEASS और HackTricks swag**](https://peass.creator-spring.com)
* **शामिल हों** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) या मुझे **ट्विटर** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)** का** अनुसरण करें।
* **अपने हैकिंग ट्रिक्स साझा करें, हैकट्रिक्स रेपो में पीआर जमा करके** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **और** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **को फॉलो करके।**
</details>