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, (^^ゞ