7.2 KiB
Xamarin Apps
ゼロからヒーローまでのAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert)!
HackTricksをサポートする他の方法:
- HackTricksで企業を宣伝したいまたはHackTricksをPDFでダウンロードしたい場合は、SUBSCRIPTION PLANSをチェックしてください!
- 公式PEASS&HackTricksスワッグを入手する
- The PEASS Familyを発見し、独占的なNFTsのコレクションを見つける
- 💬 Discordグループに参加するか、telegramグループに参加するか、Twitter 🐦でフォローする @carlospolopm。
- ハッキングトリックを共有するために HackTricksとHackTricks CloudのGitHubリポジトリにPRを提出する
これはブログ記事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向けには、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/
ゼロからヒーローまでのAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert)!
HackTricksをサポートする他の方法:
- HackTricksで企業を宣伝したいまたはHackTricksをPDFでダウンロードしたい場合は、SUBSCRIPTION PLANSをチェックしてください!
- 公式PEASS&HackTricksスウォッグを入手する
- The PEASS Familyを発見し、独占的なNFTsコレクションを見つける
- **💬 Discordグループ**に参加するか、telegramグループに参加するか、Twitter 🐦 @carlospolopmをフォローする。
- HackTricksとHackTricks CloudのGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。