hacktricks/mobile-pentesting/xamarin-apps.md

84 lines
5.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Xamarin Apps
{% hint style="success" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>支持 HackTricks</summary>
* 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 分享黑客技巧。
</details>
{% endhint %}
这是博客文章 [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) 的摘要
## **基本信息**
Xamarin 是一个 **开源平台**,旨在帮助开发人员使用 .NET 和 C# 框架 **构建 iOS、Android 和 Windows 应用**。该平台提供了众多工具和扩展,以高效创建现代应用程序。
### Xamarin 的架构
- 对于 **Android**Xamarin 通过 .NET 绑定与 Android 和 Java 命名空间集成,在 Mono 执行环境中与 Android Runtime (ART) 一起运行。托管可调用包装器 (MCW) 和 Android 可调用包装器 (ACW) 促进 Mono 和 ART 之间的通信,二者均基于 Linux 内核构建。
- 对于 **iOS**,应用程序在 Mono 运行时下运行,利用完整的提前编译 (AOT) 将 C# .NET 代码转换为 ARM 汇编语言。此过程与 UNIX 类内核上的 Objective-C 运行时一起运行。
### .NET 运行时和 Mono 框架
**.NET 框架** 包含用于应用程序开发的程序集、类和命名空间,.NET 运行时管理代码执行。它提供平台独立性和向后兼容性。**Mono 框架** 是 .NET 框架的开源版本,始于 2005 年,旨在将 .NET 扩展到 Linux现在由 Microsoft 支持并由 Xamarin 主导。
### 反向工程 Xamarin 应用
#### Xamarin 程序集的反编译
反编译将编译后的代码转换回源代码。在 Windows 中Visual Studio 的模块窗口可以识别可反编译的模块,允许直接访问第三方代码并提取源代码进行分析。
#### JIT 与 AOT 编译
- **Android** 支持即时编译 (JIT) 和提前编译 (AOT),并具有混合 AOT 模式以实现最佳执行速度。完整 AOT 仅限于企业许可证。
- **iOS** 仅采用 AOT 编译,因为 Apple 对动态代码执行有严格限制。
### 从 APK/IPA 中提取 dll 文件
要访问 APK/IPA 中的程序集,请解压文件并浏览程序集目录。对于 Android可以使用 [XamAsmUnZ](https://github.com/cihansol/XamAsmUnZ) 和 [xamarin-decompress](https://github.com/NickstaDB/xamarin-decompress) 等工具解压 dll 文件。
```bash
python3 xamarin-decompress.py -o /path/to/decompressed/apk
```
对于Android中的assembly blobs[pyxamstore](https://github.com/jakev/pyxamstore)可以解压它们。
```bash
pyxamstore unpack -d /path/to/decompressed/apk/assemblies/
```
iOS dll 文件可以轻松访问以进行反编译,揭示了应用程序代码的显著部分,这些代码通常在不同平台之间共享一个共同的基础。
### 动态分析
动态分析涉及检查 SSL 钉扎,并使用像 [Fridax](https://github.com/NorthwaveSecurity/fridax) 这样的工具对 Xamarin 应用中的 .NET 二进制文件进行运行时修改。Frida 脚本可用于绕过根检测或 SSL 钉扎,从而增强分析能力。
其他有趣的 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)
## 进一步信息
* [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" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>支持 HackTricks</summary>
* 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或 **在** **Twitter** 🐦 **上关注我们** [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 来分享黑客技巧。
</details>
{% endhint %}