6.3 KiB
Xamarin 앱
htARTE (HackTricks AWS Red Team Expert)를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요!
HackTricks를 지원하는 다른 방법:
- 회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드하려면 SUBSCRIPTION PLANS를 확인하세요!
- 공식 PEASS & HackTricks 스웨그를 얻으세요.
- The PEASS Family를 발견하세요. 독점적인 NFTs 컬렉션입니다.
- 💬 Discord 그룹 또는 텔레그램 그룹에 참여하거나 Twitter 🐦 @carlospolopm을 팔로우하세요.
- HackTricks와 HackTricks Cloud github 저장소에 PR을 제출하여 해킹 트릭을 공유하세요.
이것은 블로그 게시물 https://www.appknox.com/security/xamarin-reverse-engineering-a-guide-for-penetration-testers의 요약입니다.
기본 정보
Xamarin은 .NET 및 C# 프레임워크를 사용하여 iOS, Android 및 Windows용 앱을 개발하기 위해 개발된 오픈 소스 플랫폼입니다. 이 플랫폼은 현대적인 애플리케이션을 효율적으로 만들기 위해 다양한 도구와 확장 기능에 접근할 수 있습니다.
Xamarin의 아키텍처
- Android의 경우, Xamarin은 .NET 바인딩을 통해 Android 및 Java 네임스페이스와 통합되며 Mono 실행 환경에서 Android Runtime (ART)과 함께 작동합니다. 관리 가능한 호출 래퍼(MCW)와 Android 호출 래퍼(ACW)는 Mono와 ART 간의 통신을 용이하게 합니다. 이 두 가지는 Linux 커널 위에 구축되어 있습니다.
- iOS의 경우, 애플리케이션은 Mono 런타임에서 실행되며 C# .NET 코드를 ARM 어셈블리어로 변환하기 위해 완전한 Ahead of Time (AOT) 컴파일을 사용합니다. 이 프로세스는 UNIX와 유사한 커널 위에서 Objective-C 런타임과 함께 실행됩니다.
.NET 런타임 및 Mono 프레임워크
.NET 프레임워크는 응용 프로그램 개발을 위한 어셈블리, 클래스 및 네임스페이스를 포함하며 .NET 런타임은 코드 실행을 관리합니다. 이는 플랫폼 독립성과 역호환성을 제공합니다. Mono 프레임워크는 .NET 프레임워크의 오픈 소스 버전으로, 2005년에 .NET을 Linux로 확장하기 위해 시작되었으며 현재는 Microsoft에서 지원하고 Xamarin이 주도합니다.
Xamarin 앱의 역공학
Xamarin 어셈블리의 디컴파일
디컴파일은 컴파일된 코드를 소스 코드로 변환하는 과정입니다. Windows에서는 Visual Studio의 Modules 창을 통해 디컴파일할 모듈을 식별하여 제3자 코드에 직접 액세스하고 분석을 위해 소스 코드를 추출할 수 있습니다.
JIT vs AOT 컴파일
- Android는 Just-In-Time (JIT) 및 Ahead-Of-Time (AOT) 컴파일을 지원하며 최적의 실행 속도를 위한 Hybrid AOT 모드를 제공합니다. 전체 AOT는 엔터프라이즈 라이선스에만 제공됩니다.
- iOS는 Apple의 동적 코드 실행에 대한 제한으로 인해 AOT 컴파일만 사용합니다.
APK/IPA에서 dll 파일 추출
APK/IPA의 어셈블리에 액세스하려면 파일을 압축 해제하고 어셈블리 디렉토리를 탐색합니다. Android의 경우, XamAsmUnZ와 xamarin-decompress와 같은 도구를 사용하여 dll 파일을 압축 해제할 수 있습니다.
python3 xamarin-decompress.py -o /path/to/decompressed/apk
Android에서 어셈블리 블롭을 언팩하는 데에는 pyxamstore를 사용할 수 있습니다.
pyxamstore unpack -d /path/to/decompressed/apk/assemblies/
iOS dll 파일은 손쉽게 복호화할 수 있으며, 다양한 플랫폼에서 공통적으로 사용되는 애플리케이션 코드의 상당 부분을 노출시킵니다.
동적 분석
동적 분석은 SSL 핀닝을 확인하고 Xamarin 앱의 .NET 이진 파일을 런타임에서 수정하기 위해 Fridax와 같은 도구를 사용하는 것을 의미합니다. Frida 스크립트를 사용하면 루트 탐지 또는 SSL 핀닝 우회와 같은 기능을 향상시킬 수 있습니다.
다른 흥미로운 Frida 스크립트:
추가 정보
- https://www.appknox.com/security/xamarin-reverse-engineering-a-guide-for-penetration-testers
- https://thecobraden.com/posts/unpacking_xamarin_assembly_stores/
htARTE (HackTricks AWS Red Team Expert)를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요!
HackTricks를 지원하는 다른 방법:
- 회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드하려면 SUBSCRIPTION PLANS를 확인하세요!
- 공식 PEASS & HackTricks 스웨그를 구매하세요.
- The PEASS Family를 발견하세요. 독점적인 NFTs 컬렉션입니다.
- 💬 Discord 그룹 또는 텔레그램 그룹에 참여하거나 Twitter 🐦 @carlospolopm를 팔로우하세요.
- HackTricks와 HackTricks Cloud github 저장소에 PR을 제출하여 여러분의 해킹 기술을 공유하세요.