コンテンツにスキップ

IDEの使用: 検索と分析

IDEの目標は、手動での評価を容易にし、テイント分析(taint analysis)、動的コールトレース、傍受されたトラフィック、スキャンされたAPIリクエストなど、Ostorlabが行うすべての分析に加えて、カスタムチェックを記述する機能を提供することです。

IDEへのアクセス

IDEにアクセスするには、スキャンページに移動し、「analysis」をクリックします。

analysis_button

ナビゲーション

IDEのセクションは左側にリストされています: ide_navigation

  1. Files: APKとIPAは、それぞれAndroidとiOSのモバイルアプリ用パッケージファイル形式です。これらのファイルには、モバイルデバイスにアプリをインストールして実行するために必要なすべてのリソースとコードが含まれています。「Files」オプションを使用すると、APKまたはIPAファイルの内容を検査できます。アプリを構成するファイルとディレクトリのリストが表示されます。これらのファイルには、アプリのコード、画像や音声などのリソース、設定ファイル、およびアプリで使用されるその他のアセットが含まれる場合があります。
  2. HTTP Folders: エンドポイントごとに分類され整理された、収集されたすべてのネットワークトラフィック。
  3. Static: 静的分析ナビゲーションは、エンジニアがコード内の潜在的な問題を特定できるように作成されています。これには、コードの読み取り、変数の型や関数の検査、およびNullポインタ参照、メモリリーク、バッファオーバーフローなどの一般的なコーディングミスの検索が含まれます。
  4. Dynamic: 動的セクションには、動的分析中に収集されたアプリケーションのコールトレースが表示されます。動的分析は、Java、C、Flutter、およびSwiftをサポートしています。
  5. Call Coverage: Call Coverage(コールカバレッジ)は、Ostorlabのロボットがアプリを使用する際に通過する画面やページの順序を示す、モバイルアプリケーションのUIフロー(UI flow)です。ユーザーが目標を達成するためにアプリのユーザーインターフェースとどのように対話するかをシミュレートします。モバイルアプリの典型的なUIフローには、ランディングページ、ナビゲーション、コンテンツページ、認証、ダイアログ、およびモーダルなどのステップが含まれる場合があります。
  6. Traffic: リクエストとしてリストされた、収集されたすべてのネットワークトラフィック。
  7. API: APIは、Ostorlabのロボットがアプリケーションと対話する際にアプリケーションによって生成されるネットワークトラフィックです。これは、JSONペイロード、HTTPメソッド、HTTPプロトコルバージョン、ステータス、および要求されたリソースのURIを含むHTTPリクエスト/レスポンスメッセージを確認するのに役立ちます。
  8. Search: searchセクションを使用して、すべてのアプリケーションファイル内で特定のキーワードを検索できます。
  9. Logs: 「Logs」セクションでは、動的スキャンプロセス中に生成されたデバイスログを表示できます。
  10. Pcap: ダウンロード用にリストされた、登録済みのすべてのPcapファイル。
  11. Agent Logs: スキャン中のエージェントのすべてのログ。深刻度、エージェントキー、検索のフィルターが付いています(カスタムエージェントに特有)。
  12. Vulnerabilities: Vulnerabilitiesオプションは、静的および動的分析によって検出された脆弱性のリストにリダイレクトします。

ファイル

このセクションでは、APKおよびIPAファイルの内容を検査できます: files_section アプリを構成するファイルとディレクトリのリストが表示されます。これらのファイルには、アプリのコード、画像や音声などのリソース、設定ファイル、およびアプリで使用されるその他のアセットが含まれる場合があります。 list_files

IDEは以下をサポートしています:

  • ほとんどのプログラミング言語のコードハイライト: code_highlighting
  • バイナリPlistの抽出: plist_extraction

HTTP フォルダー

HTTP Foldersセクションには、収集されエンドポイント別に整理されたすべてのネットワークトラフィックがリストされます: http_folders

静的 (Static)

静的分析セクションは、エンジニアがコード内の潜在的な問題を特定できるように作成されています。これには、コードの読み取り、変数の型や関数の検査、およびNullポインタ参照、メモリリーク、バッファオーバーフローなどの一般的なコーディングミスの検索が含まれます。 static_analysis - コールトレースのコンテキスト生成 c_code_decompilation

検索を使用して、1つまたは複数のメソッドを検索できます。 static_search

フィルタータブを使用してすべてのメソッドをテーブルにリストし、その後1つまたは複数のメソッドを選択して、マップ内でそれらのつながりをハイライト表示できます。 static_filter 静的分析の検索機能は、つなぎ合わせることができる複数のキーワードをサポートしています。たとえば、「mem」という単語を含むすべてのメソッドを検索する場合。search コロン mem と入力できます。 static_search_example サポートされているキーワードのリストは次のとおりです:

  • search: メソッドまたは関数のすべての属性内の任意の検索。
  • path: APKまたはIPAファイル内のパス。
  • package: パッケージ名(該当する場合)。
  • class: クラス名(該当する場合)。
  • method: メソッド名。
  • function: 関数名。
  • signature: メソッドまたは関数のシグネチャ。
  • sink: sink(シンク)カテゴリ。ワイルドカードとして*をサポート。
  • source: ソースカテゴリ。ワイルドカードとして*をサポート。
  • privacySource: プライバシーソースカテゴリ。ワイルドカードとして*をサポート。
  • input: 入力カテゴリ。ワイルドカードとして*をサポート。
  • sanitizer: サニタイザー(sanitizer)カテゴリ。ワイルドカードとして*をサポート。
  • persistRead: 永続読み取りカテゴリ。ワイルドカードとして*をサポート。
  • persistWrite: 永続書き込みカテゴリ。ワイルドカードとして*をサポート。
  • deprecated: 最新のAPIで非推奨となった関数またはメソッド。

関数のタグ付けは、セキュリティのホットスポットを特定するのに役立ちます。簡単なユースケースは、SQLインジェクションを引き起こす可能性のあるすべてのメソッドを見つけ、コールトレース機能を使用してそのメソッドがどこで使用されているか、そして攻撃者が潜在的に入力を制御しているかどうかを確認することです:

タグ付けは以下を区別します:

  • Sink: 1ダース以上のシンクカテゴリ。シンクは脆弱性につながる可能性のある関数またはメソッドであり、ユーザーが入力制御している場合にSQLインジェクションを引き起こす可能性のあるexecSQLなどが該当します。
  • Source: ソース関数とメソッドは、ネットワーク、IPC、ファイルシステム(外部ストレージ)などから来る可能性のある信頼できない入力を返します。
  • Privacy Source: プライバシーソース関数とメソッドは、ユーザーの場所、SMS、Wi-Fiエンドポイントなど、ユーザーのプライバシーに影響を与える可能性のある機密入力を返します。
  • Input: 入力(input)メソッドは通常、コールバックとして機能するオーバーライド可能なメソッドであり、そのパラメータは信頼できず、攻撃者によって操作される可能性があります。典型的な例は、コンテンツプロバイダーのquery、update、insert、deleteなどのメソッドです。
  • Sanitizer: サニタイザー関数とメソッドは、特定のAPI使用のために信頼できない入力をスクラブ(クリーニング)するために使用されます。
  • Persist Read and Write: 永続読み取り(persist read)と書き込み(persist write)は、2次的なインジェクションの脆弱性を見つけるのに役立ちます。読み取りと書き込みの操作は分かれています。
  • Deprecated: 単純に非推奨の関数とメソッド。

動的 (Dynamic)

動的分析セクションには、動的分析中に収集されたアプリケーションのコールトレースが表示されます。 動的分析は、Java、C、Flutter、およびSwiftをサポートしています。 dynamic_analysis

任意のスタックトレース(stack trace)をクリックして、そのフレームを表示できます。 stack_trace_frames コールトレースは、クラス名、関数、パッケージ、パス、値、およびタイプでフィルタリングできます。 call_trace_filter

コールカバレッジ

Call Coverageセクションは、Ostorlabのロボットがアプリを使用する際に通過する画面やページの順序を示す、モバイルアプリケーションのUIフロー(UI flow)を表示します。 ユーザーが目標を達成するためにアプリのユーザーインターフェースとどのように対話するかをシミュレートします。 モバイルアプリの典型的なUIフローには、以下のステップが含まれる場合があります: ランディングページ、ナビゲーション、コンテンツページ、認証、ダイアログ、およびモーダル。 ui_flow

トラフィック

Trafficセクションは、動的スキャン全体で収集されたすべてのトラフィックをリストします。 traffic_section

API

APIセクションは、Ostorlabのロボットがアプリケーションと対話する際にアプリケーションによって生成されるネットワークトラフィックを表示します。 これは、JSONペイロード、HTTPメソッド、HTTPプロトコルバージョン、ステータス、および要求されたリソースのURIを含むHTTPリクエスト/レスポンスメッセージを確認するのに役立ちます。 api_traffic

検索

searchセクションを使用して、すべてのアプリケーションファイル内で特定のキーワードを検索できます。 search_section

ログ

「Logs」セクションでは、動的スキャンプロセス中に生成されたデバイスログを表示できます。 device_logs

Pcap

Pcapセクションは、さらに調査するためにダウンロードできるpcapファイルとして収集されたネットワークトラフィックを提供します。 pcap_files

エージェントログ

エージェントログ(agent logs)セクションでは、実装した可能性のあるカスタムエージェントのログへのアクセスを提供します。 agent_logs

脆弱性

Vulnerabilitiesオプションは、静的および動的分析によって検出された脆弱性のリストにリダイレクトします。 各検出結果には、名前、説明、推奨事項、参考資料、および技術的な詳細が含まれます。 vulnerabilities_list