mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
68 lines
5.0 KiB
Markdown
68 lines
5.0 KiB
Markdown
# Xamarin Apps
|
|
|
|
{{#include ../banners/hacktricks-training.md}}
|
|
|
|
## **Podstawowe informacje**
|
|
|
|
Xamarin to **platforma open-source** zaprojektowana dla deweloperó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 Linux.
|
|
- 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 Linux, obecnie wspierana przez Microsoft i kierowana przez Xamarin.
|
|
|
|
### Inżynieria odwrotna 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ą rozpakować pliki dll.
|
|
```bash
|
|
python3 xamarin-decompress.py -o /path/to/decompressed/apk
|
|
```
|
|
W przypadkach, gdy po dekompilacji APK możliwe jest zobaczenie folderu unknown/assemblies/ z plikami `.dll` w środku, można bezpośrednio użyć [**dnSpy**](https://github.com/dnSpy/dnSpy) do ich analizy.\
|
|
Jednak czasami w folderze unknown/assemblies/ znajdują się pliki `assemblies.blob` i `assemblies.manifest`. Narzędzie [pyxamstore](https://github.com/jakev/pyxamstore) może być użyte do rozpakowania pliku `assemblies.blob` w aplikacjach Xamarin, co umożliwia dostęp do zestawów .NET w celu dalszej analizy:
|
|
```bash
|
|
pyxamstore unpack -d /path/to/decompressed/apk/assemblies/
|
|
```
|
|
Pliki .dll dla 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 statyczna
|
|
|
|
Po uzyskaniu plików `.dll` możliwe jest statyczne analizowanie kodu .Net za pomocą narzędzi takich jak [**dnSpy**](https://github.com/dnSpy/dnSpy) **lub** [**ILSpy**](https://github.com/icsharpcode/ILSpy), które pozwolą na modyfikację kodu aplikacji. Może to być bardzo przydatne do manipulacji aplikacją w celu ominięcia zabezpieczeń, na przykład.\
|
|
Należy pamiętać, że po modyfikacji aplikacji będziesz musiał ponownie ją spakować i podpisać.
|
|
|
|
### Analiza dynamiczna
|
|
|
|
Analiza dynamiczna polega na sprawdzaniu SSL pinning i używaniu narzędzi takich jak [Fridax](https://github.com/NorthwaveSecurity/fridax) do modyfikacji binarnej .NET w aplikacjach Xamarin w czasie rzeczywistym. Skrypty Frida są dostępne do omijania wykrywania 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)
|
|
|
|
### Ponowne podpisywanie
|
|
|
|
Narzędzie [Uber APK Signer](https://github.com/patrickfav/uber-apk-signer) upraszcza podpisywanie wielu APK z tym samym kluczem i może być używane do ponownego podpisywania aplikacji po wprowadzeniu w niej zmian.
|
|
|
|
## 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/)
|
|
- [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}}
|