
# iOSアプリのペネトレーションテスト

Aikido Pentestは、**Mobile Application**アセスメントでネイティブおよびハイブリッドのiOSアプリを評価します。テストはホワイトボックス方式のため、iOSアプリのソースコードを含むリポジトリを接続してください。

## 1つのアプリまたは両方をテストする

**Scope**ステップで、このアセスメントの対象となるモバイルアプリをアップロードし、それらが呼び出すWebアプリまたはAPIを追加します。

| 含めるもの | Aikidoがテストする対象 |
| --- | --- |
| IPAとWeb URL | iOSアプリと、そのWebアプリまたはAPI |
| APKとWeb URL | Androidアプリと、そのWebアプリまたはAPI。[Androidアプリのペネトレーションテスト](https://help.aikido.dev/docs/docs-ja/pentests/configure-a-pentest/android-pentesting)を参照してください。 |
| APK、IPA、およびWeb URL | 両方のアプリと、共有のWebアプリまたはAPI |

アプリにバックエンドがある場合は、Web URLを追加してください。AndroidとiOSの両方がある場合は両方のアプリをアップロードすると、1つのアセスメントで共有のWebアプリまたはAPIを一度だけテストし、両方のクライアントをカバーできます。アセスメントを分けると、その作業が重複します。

モバイルアプリのないWebサイトまたはAPIは、**Web Application**アセスメントになります。[ペネトレーションテストのセットアップ方法](https://help.aikido.dev/docs/docs-ja/pentests/configure-a-pentest/starting-an-assessment)を参照してください。

{% hint style="warning" %}
本番環境に近いテスト環境に対してアセスメントを実行してください。本番データや本番アカウントは使用しないでください。
{% endhint %}

## 前提条件

* **Manage Pentests**の[権限](https://help.aikido.dev/docs/docs-ja/getting-started/automated-user-management/setting-roles-and-permissions)
* [ウォレット](https://help.aikido.dev/docs/docs-ja/miscellaneous-info/wallet-and-credits)内の**十分なクレジット**
* Aikidoに接続できるリポジトリ内の**iOSアプリのソースコード**
* 証明書ピンニング、脱獄検出、エミュレーターチェックのない**署名済みで暗号化されていないIPA**(最大500 MB)

## IPAを準備する

Aikidoはアップロードされたファイルをインストールします。App StoreおよびTestFlightのビルドはFairPlayで暗号化されているため、Aikidoはインストールできません。Xcodeから**Development**、**Ad Hoc**、または**Enterprise**のIPAをエクスポートしてください。このファイルは署名済みで、暗号化されていません。

そのテストビルドでは、次の設定を行います。

* 証明書ピンニングを無効にする。
* 脱獄検出とエミュレーターチェックを無効にする。

1. Xcodeで、**Product** → **Archive**を選択します。
2. Organizerで、**Distribute App**をクリックします。
3. **Development**、**Ad Hoc**、または**Enterprise**を選択します。
4. `.ipa`をエクスポートします。

ハイブリッドアプリ(例:React NativeやFlutter)も同じ方法でエクスポートします。ファイルは`.ipa`である必要があり、`.app`や`.xcarchive`は使用できません。

## iOSアセスメントを作成する

{% stepper %}
{% step %}
### Mobile Applicationを選択する

**Pentests**に移動し、**Project**を開いて、**Create Assessment**をクリックします。**Select Pentest Target**ステップで、**Mobile Application**を選択します。
{% endstep %}

{% step %}
### テスト範囲を定義する

**Scope**ステップで、AikidoがそれらのエンドポイントをテストできるようにWebアプリまたはAPIのURL(例:`https://api.application.com`)を追加します。

**iOS Application**で、IPA(最大500 MB)をアップロードします。Aikidoはファイルからバンドル IDを読み取ります。IPAは暗号化されていない必要があり、証明書ピンニング、脱獄検出、エミュレーターチェックを使用していてはいけません。

iOSのみで実行する場合は、IPAのみをアップロードします。アセスメントで両方のアプリをカバーする場合は、このステップでAPKもアップロードしてください。[Androidアプリのペネトレーションテスト](https://help.aikido.dev/docs/docs-ja/pentests/configure-a-pentest/android-pentesting)を参照してください。

**Test entire application**または**Test specific parts only**を選択します。
{% endstep %}

{% step %}
### テストユーザーを追加する

管理者、一般ユーザー、別テナントのユーザーなど、Aikidoにテストさせたいロールごとにテストユーザーを追加します。

アセスメントに両方のアプリが含まれる場合は、iOSユーザーの**Platform**を**iOS**に設定します。ユーザー名とパスワードによる認証では、AikidoはログインURLの代わりにバンドルIDを使用します。

起動前にログインのプリフライトチェックを実行できます。[テストユーザーのセットアップ](https://help.aikido.dev/docs/docs-ja/pentests/configure-a-pentest/setting-up-authenticated-testing)を参照してください。
{% endstep %}

{% step %}
### アクセス、コンテキスト、安全性を設定する

ウィザードの残りのステップを設定します。

* **Allowed Domains:** テスト中にアプリがアクセスする必要のあるドメインを許可します。
* **Code & Documentation:** iOSアプリのソースコードを含むリポジトリを接続します。Aikidoはモバイルアプリに対してホワイトボックステストのみをサポートしているため、アセスメントにはそのリポジトリが必要です。バックエンドのリポジトリをリンクしたり、ドキュメントを追加したりすることもできます。[コードとドキュメントの活用](https://help.aikido.dev/docs/docs-ja/pentests/configure-a-pentest/leveraging-code-and-documentation)を参照してください。
* **Safety Check:** リクエストレートと許可するテスト時間帯を設定します。[安全対策](https://help.aikido.dev/docs/docs-ja/pentests/configure-a-pentest/safety-measures)を参照してください。
* **Pricing:** アセスメントプロファイルを選択し、クレジットコストを確認します。[ペネトレーションテストの料金](https://help.aikido.dev/docs/docs-ja/pentests/pentest-pricing)を参照してください。
{% endstep %}

{% step %}
### 確認して起動する

**Summary**ステップで、**iOS App**のバンドルIDとその他の設定を確認し、**Run Assessment**をクリックします。
{% endstep %}
{% endstepper %}

## 結果を確認する

アセスメントを開いて進捗を追跡し、**Issues**タブを確認します。iOSの検出結果には、機密データの取り扱い、ネットワークセキュリティ、URLスキームとユニバーサルリンク、WebViewのセキュリティ、クライアント側の認証、暗号化、プライバシー、リリース設定などが含まれる場合があります。

アセスメントが完了したら、アセスメントからPDFをダウンロードできます。[ペネトレーションテストレポート](https://help.aikido.dev/docs/docs-ja/pentests/coverage-and-findings/pentest-reports)を参照してください。

既存のアセスメントでIPAを差し替える機能は近日提供予定です。[ペネトレーションテストの検出結果の再テスト](https://help.aikido.dev/docs/docs-ja/pentests/coverage-and-findings/retest-pentest-findings)を参照してください。

## 関連情報

{% content-ref url="android-pentesting.md" %}
[Androidアプリのペネトレーションテスト](https://help.aikido.dev/docs/docs-ja/pentests/configure-a-pentest/android-pentesting)
{% endcontent-ref %}

{% content-ref url="setting-up-authenticated-testing/" %}
[テストユーザーのセットアップ](https://help.aikido.dev/docs/docs-ja/pentests/configure-a-pentest/setting-up-authenticated-testing)
{% endcontent-ref %}

{% content-ref url="leveraging-code-and-documentation.md" %}
[コードとドキュメントの活用](https://help.aikido.dev/docs/docs-ja/pentests/configure-a-pentest/leveraging-code-and-documentation)
{% endcontent-ref %}
