mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-23 05:03:35 +00:00
83 lines
6 KiB
Markdown
83 lines
6 KiB
Markdown
# Xamarin Apps
|
|
|
|
{% hint style="success" %}
|
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
|
|
|
<details>
|
|
|
|
<summary>Support HackTricks</summary>
|
|
|
|
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
|
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
|
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
|
|
|
</details>
|
|
{% endhint %}
|
|
|
|
This is a summary of the blog post [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)
|
|
|
|
## **Podstawowe informacje**
|
|
|
|
Xamarin to **platforma open-source** zaprojektowana dla programistów do **tworzenia aplikacji na iOS, Android i Windows** przy użyciu frameworków .NET i C#. Ta platforma oferuje dostęp do licznych narzędzi i rozszerzeń, aby efektywnie tworzyć nowoczesne aplikacje.
|
|
|
|
### Architektura Xamarin
|
|
|
|
- Dla **Androida**, Xamarin integruje się z przestrzeniami nazw Android i Java poprzez powiązania .NET, działając w środowisku wykonawczym Mono obok Android Runtime (ART). Managed Callable Wrappers (MCW) i Android Callable Wrappers (ACW) ułatwiają komunikację między Mono a ART, które są zbudowane na jądrze Linuxa.
|
|
- Dla **iOS**, aplikacje działają pod runtime Mono, wykorzystując pełną kompilację Ahead of Time (AOT) do konwersji kodu C# .NET na język asemblera ARM. Proces ten działa obok Objective-C Runtime na jądrze podobnym do UNIX.
|
|
|
|
### Runtime .NET i framework Mono
|
|
|
|
**Framework .NET** obejmuje zestawy, klasy i przestrzenie nazw do rozwoju aplikacji, a Runtime .NET zarządza wykonaniem kodu. Oferuje niezależność platformy i zgodność wsteczną. **Framework Mono** to wersja open-source frameworka .NET, rozpoczęta w 2005 roku, aby rozszerzyć .NET na Linuxa, obecnie wspierana przez Microsoft i kierowana przez Xamarin.
|
|
|
|
### Inżynieria wsteczna aplikacji Xamarin
|
|
|
|
#### Dekompilacja zestawów Xamarin
|
|
|
|
Dekompilacja przekształca skompilowany kod z powrotem w kod źródłowy. W systemie Windows okno Moduły w Visual Studio może identyfikować moduły do dekompilacji, umożliwiając bezpośredni dostęp do kodu stron trzecich i ekstrakcję kodu źródłowego do analizy.
|
|
|
|
#### Kompilacja JIT vs AOT
|
|
|
|
- **Android** wspiera kompilację Just-In-Time (JIT) oraz Ahead-Of-Time (AOT), z hybrydowym trybem AOT dla optymalnej prędkości wykonania. Pełna AOT jest zarezerwowana dla licencji Enterprise.
|
|
- **iOS** stosuje wyłącznie kompilację AOT z powodu ograniczeń Apple dotyczących dynamicznego wykonywania kodu.
|
|
|
|
### Ekstrakcja plików dll z APK/IPA
|
|
|
|
Aby uzyskać dostęp do zestawów w pliku APK/IPA, rozpakuj plik i przeszukaj katalog zestawów. Dla Androida narzędzia takie jak [XamAsmUnZ](https://github.com/cihansol/XamAsmUnZ) i [xamarin-decompress](https://github.com/NickstaDB/xamarin-decompress) mogą dekompresować pliki dll.
|
|
```bash
|
|
python3 xamarin-decompress.py -o /path/to/decompressed/apk
|
|
```
|
|
Dla blobów assembly w Androidzie, [pyxamstore](https://github.com/jakev/pyxamstore) może je rozpakować.
|
|
```bash
|
|
pyxamstore unpack -d /path/to/decompressed/apk/assemblies/
|
|
```
|
|
Pliki dll iOS są łatwo dostępne do dekompilacji, ujawniając znaczną część kodu aplikacji, który często dzieli wspólną bazę na różnych platformach.
|
|
|
|
### Analiza dynamiczna
|
|
|
|
Analiza dynamiczna polega na sprawdzaniu SSL pinning i używaniu narzędzi takich jak [Fridax](https://github.com/NorthwaveSecurity/fridax) do modyfikacji binarnych .NET w aplikacjach Xamarin w czasie rzeczywistym. Skrypty Frida są dostępne, aby obejść wykrywanie roota lub SSL pinning, co zwiększa możliwości analizy.
|
|
|
|
Inne interesujące skrypty 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)
|
|
|
|
## Dalsze informacje
|
|
* [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/)
|
|
|
|
{% hint style="success" %}
|
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
|
|
|
<details>
|
|
|
|
<summary>Support HackTricks</summary>
|
|
|
|
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
|
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
|
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
|
|
|
</details>
|
|
{% endhint %}
|