Xamarin Apps
Reading time: 6 minutes
tip
学习和实践 AWS 黑客技术:HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE)
支持 HackTricks
- 查看 订阅计划!
- 加入 💬 Discord 群组 或 Telegram 群组 或 在 Twitter 🐦 上关注我们 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud GitHub 仓库提交 PR 来分享黑客技巧。
基本信息
Xamarin 是一个 开源平台,旨在帮助开发者 为 iOS、Android 和 Windows 构建应用,使用 .NET 和 C# 框架。该平台提供了众多工具和扩展,以高效创建现代应用程序。
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 和 xamarin-decompress 等工具解压 dll 文件。
python3 xamarin-decompress.py -o /path/to/decompressed/apk
在反编译APK后,如果可以看到unknown/assemblies/文件夹及其中的.dll
文件,则可以直接使用dnSpy对.dll
进行分析。
然而,有时会在unknown/assemblies/文件夹中发现assemblies.blob
和assemblies.manifest
文件。可以使用工具pyxamstore来解包Xamarin应用中的assemblies.blob
文件,从而访问.NET程序集以进行进一步分析:
pyxamstore unpack -d /path/to/decompressed/apk/assemblies/
iOS dll 文件可以轻松获取以进行反编译,揭示应用程序代码的显著部分,这些代码通常在不同平台之间共享一个共同的基础。
静态分析
一旦获得 .dll
,可以使用工具如 dnSpy 或 ILSpy 对 .Net 代码进行静态分析,这将允许修改应用程序的代码。这对于篡改应用程序以绕过保护措施非常有用。
请注意,在修改应用程序后,您需要重新打包并重新签名。
动态分析
动态分析涉及检查 SSL 钉扎,并使用工具如 Fridax 对 Xamarin 应用中的 .NET 二进制文件进行运行时修改。Frida 脚本可用于绕过根检测或 SSL 钉扎,增强分析能力。
其他有趣的 Frida 脚本:
重新签名
工具 Uber APK Signer 简化了使用相同密钥签名多个 APK 的过程,并可用于在对应用程序进行更改后重新签名。
进一步信息
- https://www.appknox.com/security/xamarin-reverse-engineering-a-guide-for-penetration-testers
- https://thecobraden.com/posts/unpacking_xamarin_assembly_stores/
- https://medium.com/@justmobilesec/introduction-to-the-exploitation-of-xamarin-apps-fde4619a51bf
tip
学习和实践 AWS 黑客技术:HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE)
支持 HackTricks
- 查看 订阅计划!
- 加入 💬 Discord 群组 或 Telegram 群组 或 在 Twitter 🐦 上关注我们 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud GitHub 仓库提交 PR 来分享黑客技巧。