Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help


title: “モバイル Pentest の基礎と環境構築” part: “Part 5” chapter: “5-1”

モバイル Pentest の基礎と環境構築

本章では、モバイル Pentest の目的と特徴、および演習・評価に必要となる基本環境の構築方針を整理する。

本章のゴール

  • 前提:Part 2〜4 で Web / API の基礎と Burp Suite の利用に触れている。
  • 到達目標:モバイル Pentest の評価範囲(通信・端末内データ・耐性)を整理し、端末/エミュレータ、プロキシ、解析ツールを用いた検証環境の構成要素を説明できる。
  • 対応演習:検証用の Android 端末/エミュレータでプロキシ設定と CA 証明書インポートを行い、Burp Suite で HTTPS 通信を観測できる状態を作る(対象アプリは演習用を想定する。確認結果は 学習ログテンプレート(Burp Academy / 演習) に記録する)。

モバイル Pentest の目的

モバイルアプリの Pentest は、単にアプリ単体の脆弱性を探すだけでなく、次の観点を含む。

  • アプリとバックエンド API 間の通信が安全に設計・実装されているか
  • デバイス上に保存されるデータ(キャッシュ、ログ、設定ファイル等)が適切に保護されているか
  • リバースエンジニアリングや動的解析に対する耐性(難読化、root/Jailbreak 検知など)が、想定どおりに機能しているか
  • 認証・認可フロー(OAuth2 / OIDC 等)が、クライアント実装の不備により迂回可能になっていないか

Web / API と比較して、クライアント側により多くのロジックや秘密情報が埋め込まれがちな点が、モバイル特有のリスクとなる。

評価対象プラットフォーム

本書では、主に次のプラットフォームを想定する。

  • Android アプリ(.apk / .aab
    Java/Kotlin ベースのネイティブアプリ、および一部のクロスプラットフォームフレームワーク(Flutter など)。
  • iOS アプリ(.ipa
    Swift/Objective-C ベースのアプリ。Jailbreak 環境が前提となるケースが多い。

演習および多くの実務環境では、Android を主対象とし、iOS については設計観点や一部ツールの使い方にフォーカスするケースが多い。

環境構築の基本方針

モバイル Pentest の環境は、おおむね次の要素から構成される。通信経路とデータ保護ポイントを把握するために、図5-1 を参照する。

図5-1: モバイルアプリとバックエンドの構成例

flowchart LR
    UA[ユーザ] --> APP[モバイルアプリ]
    APP --> API[バックエンド API]
    APP --> Store[セキュアストレージ\n(Keystore/Keychain)]
    API --> DB[(データベース)]
    API --> IDP[Authorization Server / IdP]

図5-1 では、モバイルアプリからバックエンド API への通信と、端末内の保存領域(セキュアストレージ)を分けて示している。前者はプロキシ観測、後者は端末内データの保護確認というように、評価アプローチが異なる点を意識する。

  • テスト端末
    • Android エミュレータ(Android Studio / Genymotion 等)または実機
    • iOS シミュレータ(機能制限あり)または Jailbreak 済み実機
  • プロキシ環境
    • Burp Suite 等の HTTP(S) プロキシ
    • 端末にインストールされた Burp の CA 証明書
  • 解析ツール
    • MobSF(静的・動的解析用)
    • Frida / objection(ランタイムフック用)

安全性と再現性の観点から、原則として業務用端末や個人端末ではなく、専用の検証用端末/エミュレータを準備することを推奨する。

プロキシ設定のポイント

モバイルアプリとバックエンド API 間の通信を観測するためには、端末側で HTTP(S) プロキシを設定し、Burp などを経由させる必要がある。

  • Wi-Fi 設定でプロキシを手動設定し、Burp のアドレス/ポートを指定する
  • Burp の CA 証明書を端末にインポートし、「ユーザ証明書」として信頼させる(OS バージョンにより手順が異なる)

近年のアプリでは、証明書ピンニング(特定の証明書または公開鍵のみを信頼する仕組み)が実装されていることが多く、その場合は Frida 等を用いたバイパスが必要となる。証明書ピンニングのバイパス手法は、後述の動的解析章で扱う。

次に読む章

本章のポイント

  • モバイル Pentest は、通信の安全性、端末内データ保護、リバースエンジニアリング耐性、クライアント実装起因の認証・認可リスクを統合して評価する。
  • 再現性と安全性のため、専用の検証端末/エミュレータ、Burp Suite 等のプロキシ環境、MobSF / Frida / objection を組み合わせた評価環境を前提とする。
  • 通信観測にはプロキシ設定と CA 証明書インポートが必要であり、証明書ピンニングがある場合は動的解析によるバイパスを検討する。