6.9 KiB
Xamarin Apps
{% hint style="success" %}
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.
This is a summary of the blog post 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名前空間と統合され、Android Runtime (ART)とともにMono実行環境内で動作します。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ランタイムとMonoフレームワーク
.NETフレームワークには、アプリケーション開発のためのアセンブリ、クラス、および名前空間が含まれており、.NETランタイムがコードの実行を管理します。プラットフォームの独立性と後方互換性を提供します。Monoフレームワークは、2005年にLinux向けに.NETを拡張するために開始されたオープンソース版の.NETフレームワークで、現在はMicrosoftによってサポートされ、Xamarinによって主導されています。
Xamarinアプリの逆コンパイル
Xamarinアセンブリの逆コンパイル
逆コンパイルは、コンパイルされたコードをソースコードに戻すプロセスです。Windowsでは、Visual Studioのモジュールウィンドウが逆コンパイルのためのモジュールを特定でき、サードパーティのコードへの直接アクセスと分析のためのソースコードの抽出を可能にします。
JITとAOTコンパイル
- Androidは、Just-In-Time (JIT)およびAhead-Of-Time (AOT)コンパイルをサポートしており、最適な実行速度のためのハイブリッド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/
{% hint style="success" %}
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.