Xamarin Apps

Reading time: 8 minutes

tip

AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE) Azureハッキングを学び、実践する:HackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポートする

基本情報

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年に.NETをLinuxに拡張するために開始されたオープンソース版の.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ファイルを解凍できます。

bash
python3 xamarin-decompress.py -o /path/to/decompressed/apk

APKを逆コンパイルした後、unknown/assemblies/フォルダー内に.dllファイルが見える場合、.dllに対して直接dnSpyを使用して分析することが可能です。
しかし、時にはunknown/assemblies/フォルダー内にassemblies.blobおよびassemblies.manifestファイルが見つかることがあります。ツールpyxamstoreは、Xamarinアプリのassemblies.blobファイルを展開するために使用でき、さらなる分析のために.NETアセンブリにアクセスすることを可能にします。

bash
pyxamstore unpack -d /path/to/decompressed/apk/assemblies/

iOSのdllファイルは逆コンパイルのために容易にアクセス可能であり、アプリケーションコードの重要な部分を明らかにします。これらは異なるプラットフォーム間で共通のベースを共有することがよくあります。

静的分析

.dllを取得したら、dnSpy ILSpy **などのツールを使用して、.Netコードを静的に分析することが可能です。これにより、アプリのコードを変更することができます。これは、保護を回避するためにアプリケーションを改ざんするのに非常に役立ちます。
アプリを変更した後は、再度パッキングし、再署名する必要があることに注意してください。

動的分析

動的分析は、SSLピンニングのチェックや、Xamarinアプリの.NETバイナリのランタイム変更のためにFridaxのようなツールを使用することを含みます。Fridaスクリプトは、ルート検出やSSLピンニングを回避するために利用可能で、分析能力を向上させます。

他の興味深いFridaスクリプト:

再署名

ツールUber APK Signerは、同じキーで複数のAPKに署名する作業を簡素化し、変更を加えた後にアプリを再署名するために使用できます。

さらなる情報

tip

AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE) Azureハッキングを学び、実践する:HackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポートする