Xamarin Apps

ゼロからヒーローまでのAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert)

HackTricksをサポートする他の方法:

これはブログ記事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ランタイム(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ランタイムと並行して実行されます。

.NETランタイムとMonoフレームワーク

.NETフレームワークには、アプリケーション開発のためのアセンブリ、クラス、および名前空間が含まれており、.NETランタイムがコードの実行を管理しています。これはプラットフォームの独立性と後方互換性を提供します。Monoフレームワークは、2005年に.NETをLinuxに拡張するために開始されたオープンソースバージョンの.NETフレームワークであり、現在はMicrosoftによってサポートされ、Xamarinが主導しています。

Xamarinアプリのリバースエンジニアリング

Xamarinアセンブリの逆コンパイル

逆コンパイルは、コンパイルされたコードを元のソースコードに変換します。Windowsでは、Visual StudioのModulesウィンドウを使用して逆コンパイルのためのモジュールを特定でき、サードパーティのコードに直接アクセスしてソースコードを抽出して分析できます。

JIT vs 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スクリプト:

追加情報

ゼロからヒーローまでのAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert)

HackTricksをサポートする他の方法:

Last updated