hacktricks/mobile-pentesting/xamarin-apps.md

83 lines
6.3 KiB
Markdown
Raw Normal View History

2024-02-10 21:30:13 +00:00
# Xamarin 앱
<details>
2024-02-10 21:30:13 +00:00
<summary><strong>htARTE (HackTricks AWS Red Team Expert)</strong>를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요<strong>!</strong></summary>
2024-02-10 21:30:13 +00:00
HackTricks를 지원하는 다른 방법:
2024-01-05 11:02:33 +00:00
2024-02-10 21:30:13 +00:00
* **회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드**하려면 [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)를 확인하세요!
* [**공식 PEASS & HackTricks 스웨그**](https://peass.creator-spring.com)를 얻으세요.
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요. 독점적인 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션입니다.
* 💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 **참여**하거나 **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)을 **팔로우**하세요.
* **HackTricks**와 **HackTricks Cloud** github 저장소에 PR을 제출하여 **해킹 트릭을 공유**하세요.
</details>
2024-02-10 21:30:13 +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)의 요약입니다.
2024-02-10 21:30:13 +00:00
## **기본 정보**
2024-02-10 21:30:13 +00:00
Xamarin은 .NET 및 C# 프레임워크를 사용하여 iOS, Android 및 Windows용 앱을 개발하기 위해 개발된 **오픈 소스 플랫폼**입니다. 이 플랫폼은 현대적인 애플리케이션을 효율적으로 만들기 위해 다양한 도구와 확장 기능에 접근할 수 있습니다.
2024-02-10 21:30:13 +00:00
### Xamarin의 아키텍처
2024-02-10 21:30:13 +00:00
- **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 런타임과 함께 실행됩니다.
2024-02-10 21:30:13 +00:00
### .NET 런타임 및 Mono 프레임워크
2024-02-10 21:30:13 +00:00
**.NET 프레임워크**는 응용 프로그램 개발을 위한 어셈블리, 클래스 및 네임스페이스를 포함하며 .NET 런타임은 코드 실행을 관리합니다. 이는 플랫폼 독립성과 역호환성을 제공합니다. **Mono 프레임워크**는 .NET 프레임워크의 오픈 소스 버전으로, 2005년에 .NET을 Linux로 확장하기 위해 시작되었으며 현재는 Microsoft에서 지원하고 Xamarin이 주도합니다.
2024-02-10 21:30:13 +00:00
### Xamarin 앱의 역공학
2024-02-10 21:30:13 +00:00
#### Xamarin 어셈블리의 디컴파일
2024-02-10 21:30:13 +00:00
디컴파일은 컴파일된 코드를 소스 코드로 변환하는 과정입니다. Windows에서는 Visual Studio의 Modules 창을 통해 디컴파일할 모듈을 식별하여 제3자 코드에 직접 액세스하고 분석을 위해 소스 코드를 추출할 수 있습니다.
2024-02-10 21:30:13 +00:00
#### JIT vs AOT 컴파일
2024-02-10 21:30:13 +00:00
- **Android**는 Just-In-Time (JIT) 및 Ahead-Of-Time (AOT) 컴파일을 지원하며 최적의 실행 속도를 위한 Hybrid AOT 모드를 제공합니다. 전체 AOT는 엔터프라이즈 라이선스에만 제공됩니다.
- **iOS**는 Apple의 동적 코드 실행에 대한 제한으로 인해 AOT 컴파일만 사용합니다.
2024-02-10 21:30:13 +00:00
### APK/IPA에서 dll 파일 추출
2024-02-10 21:30:13 +00:00
APK/IPA의 어셈블리에 액세스하려면 파일을 압축 해제하고 어셈블리 디렉토리를 탐색합니다. Android의 경우, [XamAsmUnZ](https://github.com/cihansol/XamAsmUnZ)와 [xamarin-decompress](https://github.com/NickstaDB/xamarin-decompress)와 같은 도구를 사용하여 dll 파일을 압축 해제할 수 있습니다.
2024-02-08 03:06:37 +00:00
```bash
python3 xamarin-decompress.py -o /path/to/decompressed/apk
```
2024-02-10 21:30:13 +00:00
Android에서 어셈블리 블롭을 언팩하는 데에는 [pyxamstore](https://github.com/jakev/pyxamstore)를 사용할 수 있습니다.
2024-02-08 03:06:37 +00:00
```bash
pyxamstore unpack -d /path/to/decompressed/apk/assemblies/
```
2024-02-10 21:30:13 +00:00
iOS dll 파일은 손쉽게 복호화할 수 있으며, 다양한 플랫폼에서 공통적으로 사용되는 애플리케이션 코드의 상당 부분을 노출시킵니다.
2024-02-10 21:30:13 +00:00
### 동적 분석
2024-02-10 21:30:13 +00:00
동적 분석은 SSL 핀닝을 확인하고 Xamarin 앱의 .NET 이진 파일을 런타임에서 수정하기 위해 [Fridax](https://github.com/NorthwaveSecurity/fridax)와 같은 도구를 사용하는 것을 의미합니다. Frida 스크립트를 사용하면 루트 탐지 또는 SSL 핀닝 우회와 같은 기능을 향상시킬 수 있습니다.
2024-02-10 21:30:13 +00:00
다른 흥미로운 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)
2024-02-10 21:30:13 +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>
2024-02-10 21:30:13 +00:00
<summary><strong>htARTE (HackTricks AWS Red Team Expert)</strong>를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요<strong>!</strong></summary>
2024-02-10 21:30:13 +00:00
HackTricks를 지원하는 다른 방법:
2024-01-05 11:02:33 +00:00
2024-02-10 21:30:13 +00:00
* **회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드**하려면 [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)를 확인하세요!
* [**공식 PEASS & HackTricks 스웨그**](https://peass.creator-spring.com)를 구매하세요.
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요. 독점적인 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션입니다.
* 💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 **참여**하거나 **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)를 **팔로우**하세요.
* **HackTricks**와 **HackTricks Cloud** github 저장소에 PR을 제출하여 여러분의 해킹 기술을 공유하세요.
</details>