hacktricks/mobile-pentesting/xamarin-apps.md

6.9 KiB
Raw Blame History

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
{% endhint %}

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の場合、XamAsmUnZxamarin-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スクリプト

さらなる情報

{% 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
{% endhint %}