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をサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。
基本情報
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の場合、XamAsmUnZやxamarin-decompressのようなツールを使用してdllファイルを解凍できます。
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アセンブリにアクセスすることを可能にします。
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に署名する作業を簡素化し、変更を加えた後にアプリを再署名するために使用できます。
さらなる情報
- 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)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。