Shikata Ga Nai

Private? There is no such things.

APIの特定と列挙方法をまとめてみた

Hello there, ('ω')ノ

1. パッシブリコン(受動的な情報収集)

パッシブリコンは、APIと直接やり取りすることなく、外部から公開されている情報を収集する方法です。この方法では、以下のような手段を活用します。

1.1 公開ドキュメントの検索

多くのAPIプロバイダーは、以下のような情報を含む公開ドキュメントを提供しています。

  • APIのエンドポイント
  • 使用可能なメソッド(例: GET, POST, DELETE)
  • パラメータや認証メカニズム

これらのドキュメントは、公式ウェブサイト、オンラインフォーラム、コードリポジトリ(GitHubなど)で見つかることが多いです。

1.2 公開トラフィックの分析

WiresharkやFiddlerといったツールを使うことで、公開されているAPIトラフィックをキャプチャし、その動作を分析できます。これにより、APIの使い方やデータ形式を把握することが可能です。

1.3 漏洩した情報の探索

APIキーやパスワードなどの機密情報が、誤ってコードリポジトリやフォーラムに公開されていることがあります。これらは、検索エンジンやShodanのようなツールで見つけることができます。


2. アクティブ列挙(積極的な調査)

アクティブ列挙は、APIと実際にやり取りしながら情報を収集する方法です。このプロセスでは、APIプロバイダーがログを記録している可能性がある点に注意が必要です。

2.1 エンドポイントの発見

  • スパイダーの使用
    SitebulbやScreaming Frog SEO Spiderなどのツールを使って、APIのエンドポイント(URL)を列挙します。

2.2 リクエストの送信

  • curlやPostmanを使用
    APIエンドポイントにリクエストを送ることで、動作を確認します。以下は、Postmanで構築したリクエストをcurlコマンドに変換した例です:
$ curl --location 'https://url/api' \
--header 'Authorization:<認証トークン>' \
--form 'form_field_1="フィールド 1 の内容"' \
--form 'upload=@"/path/file_to_upload"' \
--form 'form_field_2="フィールド 2 の内容"' \
--form 'format="PDF"' \
--form 'description="ファイルの詳細"'

この例のポイント

  • エンドポイントURL: APIが待ち受けているURLを指定します。
  • ヘッダー: 認証トークンを含めることで、APIにアクセス権を与えます。
  • フォームフィールド: パラメータを指定して、APIの挙動を確認します。

2.3 パラメータの検証

APIのエンドポイントには、動作を制御するためのパラメータが含まれていることがあります。これらのパラメータに対して異なる値を与え、その結果を分析することで、APIの動作を深く理解できます。

2.4 認証メカニズムのテスト

認証が必要なAPIの場合、その認証メカニズムをテストします。以下のポイントを確認します: - 認証なしでアクセスできるエンドポイントがあるか - 特殊な認証情報や無効なデータでの動作 - 認証トークンや資格情報の安全性


3. ツールの活用

APIセキュリティやペネトレーションテストで役立つツールには以下のものがあります:

  • Wireshark/Fiddler: トラフィックのキャプチャと分析。
  • Postman: APIリクエストの作成とテスト。
  • Sitebulb/Screaming Frog SEO Spider: エンドポイントの列挙。
  • Shodan: インターネット上で公開されている情報の検索。
  • crAPI: 練習用のAPIを提供するペネトレーションテスト用ツール。

まとめ

APIの特定と列挙は、APIセキュリティを確保するための重要なステップです。パッシブリコンを利用して公開情報を収集し、アクティブ列挙でさらに詳細な情報を得ることで、APIの動作やセキュリティの弱点を深く理解できます。

Best regards, (^^ゞ