Japan
サイト内の現在位置
MobSFを用いたAndroidアプリの動的解析手法
NECセキュリティブログ2024年3月29日
NECサイバーセキュリティ戦略統括部セキュリティ技術センターの谷口です。
今回は、モバイルアプリケーション解析ツールの「MobSF(Mobile-Security-Framework-MobSF)」[1]を用いた動的解析についてご紹介いたします。
MobSF(Mobile-Security-Framework-MobSF)とは
「MobSF」は、Ajin Abraham氏が作成したモバイルアプリケーション用のセキュリティ診断プラットフォームです。OSはAndroid、iOS、Windows Mobileをサポートしており、また、静的解析と動的解析に対応しています。今回はAndoirdアプリの動的解析手法について紹介いたします。静的解析については、「MobSFを用いたiOSアプリのソースコード解析」[2]、「モバイルアプリの脆弱性診断 ~MobSF(Mobile Security Framework)でAndroidアプリを診断してみた~」[3]、「モバイルアプリの脆弱性診断 ~MobSF(Mobile Security Framework)でAndroidアプリを診断してみた 2~」
[4]が参考になります。
動的解析機能の特徴は、完全自動化ではなく半自動で解析する点になります。アプリ内にあるユーザー名、パスワードの入力方法などのロジックをMobSFが自動で探索できないため、アプリ内の解析したい画面を手動で操作しながら解析する必要があります。
使用環境
次の環境を使用しました。
- Windows11 64bit
- Android Studio Flamingo | 2022.2.1 Patch 2
- Android Studio Emulator(Nexus One API 28 Android 9.0 x86_64)
- MobSF Dockerイメージ(opensecurity/mobile-security-framework-mobsf)
- diva-android
Android Studioの準備

図2のようにエミュレーターとして使用したい仮想デバイスの選択を行います。「MobSF」では仮想デバイスとして次のスペックを満たす必要があります。
- Android 5.0~9.0
- APIレベル28以下
- Google APIイメージ(Play Storeイメージではrootへのアクセス権がないため不可)
MobSFのドキュメント「MobSF/docs」[7]によるとAndroid 9.0、API28のデバイスが推奨されていたので、それを満たす「Nexus One」デバイスを選択し「Next」を押下し、図3の画面でデバイスイメージをダウンロードします。


デバイスイメージのダウンロードが完了したら、図4の画面でFinishを押下しAndroid Studioを終了します。

ダウンロードした仮想デバイスがインストールされているか、Windows11上のコマンドプロンプトで次のコマンドを入力して確認します。
> emulator -list-avds
Nexus_One_API_28
反映されたことが確認出来たら、次のコマンドを入力して仮想デバイスを起動します。起動したら図5のように「Extended Controls」から「Help」に記載されているデバイスのシリアルナンバーをメモします。このシリアルナンバーはMobSFを起動する際に指定する必要があります。
> emulator -avd Nexus_One_API_28 -writable-system -no-snapshot

adbコマンドで解析したいapkを仮想デバイスにインストールします。今回は以下のコマンドでセキュリティ評価用の脆弱に構築された「diva-android」[8]アプリをインストールました。
> adb install DivaApplication.apk
Performing Streamed Install
Success
Androidの環境準備は以上になります。
MobSFの準備
「MobSF」は「Docker Hub」でコンテナイメージが公開されているので[9]、そのイメージを利用してセットアップします。Dockerを起動する際に-eオプションを用いて、仮想デバイス構築の際にメモしておいたデバイスのシリアルナンバーをMOBSF_ANALYZER_IDENTIFIERに指定し、実行します。
> docker pull opensecurity/mobile-security-framework-mobsf:latest
> docker run -it -e MOBSF_ANALYZER_IDENTIFIER=emulator-5554 -p 8000:8000 opensecurity/mobile-security-framework-mobsf:latest
Webブラウザでhttp://localhost:8000/にアクセスし、図6のように「DYNAMIC ANALYZER」→「Android Dynamic Analyzer」を選択して、先ほど仮想デバイスにインストールしたapkが画面に表示されることが確認できます。(図7)


図7の右上にある、「MobSFy Android Runtime」を押下して実行すると、解析に必要なパッケージである「Frida」[10]や「MobSF」のAgentが仮想デバイスにインストールされるので、実行しておきます。実行が完了すると、図8のようにインストールが成功した実行結果が出力されます。

MobSFの準備は以上になります。
MobSFの動的解析手法
「Start Dynamic Analysis」を押下して開始すると、解析用の画面に切り替わり、様々なテスト項目やオプションが搭載されていることが確認できます。また、図9の中央には「MobSF」のアクティビティログとエラーログが出力されており、リアルタイムでMobSFの解析動作とエラー状況を確認することが可能です。
Fridaの機能は次の項目がデフォルトで有効化されています。
- API Monitoring
- SSL Pinning Bypass
- Root Detection Bypass
- Debugger Check Bypass
- Clipboard Monitor
その他にもオプションで、ロードされたclassの列挙や文字列のキャプチャなどが使用できます。

図9の上部にある「MobSF」の動的解析項目の機能は次の通りです。
[項目] | [機能] |
---|---|
Show Screen | こちらを有効にするとエミュレーター本体を操作せずに、MobSFの画面内で操作することができます。2、3秒ほどのラグがあります。 |
Remove Root CA | Root CA証明書の削除、再インストールができます。 |
Unset HTTP(S) Proxy | HTTPS ProxyのON/OFFができます。 |
TLS/SSL Security Tester | HTTPプロトコル経由でネットワーク接続を実行する場合のみ実行できます。アプリに対して、証明書エラーやTLS/SSLのエラーをバイパスしHTTPS接続を許可できるか、公開鍵のピンニングがされているかなど複数のテストを実行できます。 |
Get Dependencies | アプリの依存関係を収集できます。 |
Take a Screenshot | 仮想デバイスで表示している画面のスクリーンショットを撮ることができます。 |
Logcat Stream | 仮想デバイスのログをリアルタイムで出力、収集できます。 |
Live API Monitor | アプリと通信しているAPIを10秒おきに表示、収集できます。 |
Generate Report | 動的解析を終了して、収集したデータの解析とレポートを出力します。 |
解析結果の例
今回は入力フォームの機能に焦点を当てて、アプリで入力した機密情報がローカルストレージに格納されてしまう問題を検出できるか確認します。
図10のようなアプリの入力フォーム画面において、適当なユーザー名やパスワードなどの文字列を入力していきます。

入力し終えたら「Generate Report」を選択し、解析を終了して解析結果の出力を待ちます。今回は10秒ほどで解析結果が出力されました。
図11のように解析結果が出力され、動的解析画面で実施した複数のログや検出事項がまとめられています。

図12のように左メニューの「File Analysis」に移ると、アプリ操作中に使用、更新されたデータベースやxmlが記録されているので、それぞれファイルのの内容を確認します。

図13、図14のように、入力したユーザー名やパスワードが内部ストレージに残存していることが確認できました。


今回検出できた、ローカルストレージに機微情報が残るような問題を避けるためには、ローカルストレージに資格情報などは保存せずに、メモリやKeyChainを使う方法が対策して挙げられます。
所感・まとめ
手動操作は必要なものの、見やすいUIで直感的に操作、解析できる点が良かったです。また、Webアプリ1つで解析結果をまとめて収集、分析してくれるため検出箇所やログなどが見直しやすく、あまり動的解析の経験がない方でも使いやすいのではないかと感じました。
参考文献
- [1]「MobSF(Mobile-Security-Framework-MobSF)」(
https://github.com/MobSF/Mobile-Security-Framework-MobSF)
- [2]「MobSFを用いたiOSアプリのソースコード解析」(https://jpn.nec.com/cybersecurity/blog/221021/index.html)
- [3]「モバイルアプリの脆弱性診断 ~MobSF(Mobile Security Framework)でAndroidアプリを診断してみた~」(
https://www.secure-iv.co.jp/blog/5153)
- [4]「モバイルアプリの脆弱性診断 ~MobSF(Mobile Security Framework)でAndroidアプリを診断してみた 2~」(
https://www.secure-iv.co.jp/blog/6317)
- [5]「Android Studio」(
https://developer.android.com/studio?hl=ja)
- [6]「Install Android Studio」(
https://developer.android.com/studio/install)
- [7]
- [8]「diva-android」(
https://github.com/payatu/diva-android)
- [9]
- [10]「Frida」(
https://frida.re/)
執筆者プロフィール
谷口 太郎(たにぐち たろう)
セキュリティ技術センター リスクハンティングチーム
主にペネトレーションテスト、脆弱性診断などを担当し、
NECグループのセキュア開発・運用を推進。
最近はペネトレーションテスト能力を向上する目的でHack The Boxに取り組み中。

執筆者の他の記事を読む
アクセスランキング
2025年4月13日~4月19日に読まれた記事のランキング