Xamarin Apps
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Xamarin은 개발자가 .NET 및 C# 프레임워크를 사용하여 iOS, Android 및 Windows용 앱을 빌드할 수 있도록 설계된 오픈 소스 플랫폼입니다. 이 플랫폼은 현대적인 애플리케이션을 효율적으로 생성하기 위한 수많은 도구와 확장 기능에 대한 액세스를 제공합니다.
Android의 경우, Xamarin은 .NET 바인딩을 통해 Android 및 Java 네임스페이스와 통합되어 Mono 실행 환경 내에서 Android Runtime (ART)와 함께 작동합니다. Managed Callable Wrappers (MCW) 및 Android Callable Wrappers (ACW)는 Mono와 ART 간의 통신을 용이하게 하며, 두 가지 모두 Linux 커널을 기반으로 구축되었습니다.
iOS의 경우, 애플리케이션은 Mono 런타임에서 실행되며, C# .NET 코드를 ARM 어셈블리 언어로 변환하기 위해 전체 Ahead of Time (AOT) 컴파일을 활용합니다. 이 과정은 UNIX와 유사한 커널에서 Objective-C Runtime과 함께 실행됩니다.
.NET 프레임워크는 애플리케이션 개발을 위한 어셈블리, 클래스 및 네임스페이스를 포함하며, .NET Runtime은 코드 실행을 관리합니다. 플랫폼 독립성과 이전 버전과의 호환성을 제공합니다. Mono 프레임워크는 2005년에 시작된 .NET 프레임워크의 오픈 소스 버전으로, Linux에 .NET을 확장하기 위해 시작되었으며, 현재 Microsoft의 지원을 받고 있으며 Xamarin이 주도하고 있습니다.
디컴파일은 컴파일된 코드를 다시 소스 코드로 변환합니다. Windows에서는 Visual Studio의 모듈 창에서 디컴파일을 위한 모듈을 식별할 수 있으며, 이를 통해 타사 코드에 직접 접근하고 분석을 위한 소스 코드를 추출할 수 있습니다.
Android는 Just-In-Time (JIT) 및 Ahead-Of-Time (AOT) 컴파일을 지원하며, 최적의 실행 속도를 위한 Hybrid AOT 모드가 있습니다. 전체 AOT는 Enterprise 라이센스에만 독점적입니다.
iOS는 Apple의 동적 코드 실행 제한으로 인해 오직 AOT 컴파일만 사용합니다.
APK/IPA에서 어셈블리에 접근하려면 파일을 압축 해제하고 어셈블리 디렉토리를 탐색합니다. Android의 경우, XamAsmUnZ 및 xamarin-decompress와 같은 도구를 사용하여 dll 파일을 압축 해제할 수 있습니다.
APK를 디컴파일한 후에 unknown/assemblies/ 폴더와 그 안에 있는 .dll
파일을 볼 수 있는 경우, dnSpy를 사용하여 .dll
파일을 직접 분석할 수 있습니다.
그러나 때때로 unknown/assemblies/ 폴더 안에 assemblies.blob
및 assemblies.manifest
파일이 발견됩니다. 도구 pyxamstore는 Xamarin 앱에서 assemblies.blob
파일을 언팩하는 데 사용될 수 있으며, 이를 통해 추가 분석을 위한 .NET 어셈블리에 접근할 수 있습니다:
iOS dll 파일은 디컴파일을 위해 쉽게 접근할 수 있으며, 이는 애플리케이션 코드의 상당 부분을 드러내며, 종종 다양한 플랫폼 간에 공통 기반을 공유합니다.
.dll
파일을 얻은 후에는 dnSpy 또는 ILSpy와 같은 도구를 사용하여 .Net 코드를 정적으로 분석할 수 있습니다. 이는 애플리케이션의 코드를 수정할 수 있게 해줍니다. 예를 들어, 보호를 우회하기 위해 애플리케이션을 변조하는 데 매우 유용할 수 있습니다.
애플리케이션을 수정한 후에는 다시 패킹하고 다시 서명해야 합니다.
동적 분석은 SSL 핀닝을 확인하고 Fridax와 같은 도구를 사용하여 Xamarin 앱의 .NET 바이너리에 대한 런타임 수정을 포함합니다. Frida 스크립트는 루트 탐지 또는 SSL 핀닝을 우회하는 데 사용할 수 있어 분석 능력을 향상시킵니다.
기타 흥미로운 Frida 스크립트:
도구 Uber APK Signer는 동일한 키로 여러 APK에 서명하는 과정을 간소화하며, 변경이 수행된 후 애플리케이션을 재서명하는 데 사용할 수 있습니다.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)