認定ペンテストにおけるプロキシローテーション完全ガイド

認定ペンテストやバグバウンティでレジデンシャルプロキシのローテーションを活用し、WAF検知回避とレート制限対策を実現する実践手法を解説。スコープ内の合法的なテストに限定します。

認定ペンテストにおけるプロキシローテーション完全ガイド

なぜ認定ペンテストでプロキシローテーションが必要なのか

バグバウンティプログラムやペネトレーションテストの依頼を受けているあなたは、次のような経験がないだろうか。

  • サブドメイン列挙中にWAFに検知され、IPがブロックされる
  • コンテンツディスカバリでレート制限に引っかかり、403/429が連続で返ってくる
  • スキャン元IPがブラックリストに入り、以降の正当なテストもできなくなる

これらはすべて、少数のIPから大量のリクエストを送っていることが原因だ。ペンテストプロキシローテーション(pentest proxy rotation)は、この問題を根本的に解決する。リクエストを複数のIPに分散させることで、ターゲットのWAFやレートリミッターに「通常のユーザートラフィック」として認識させることができる。

ただし、プロキシローテーションは認定されたスコープ内でのみ使用すべき技術である。無断で他人のシステムをスキャンすることは犯罪であり、本稿は一切の違法行為を推奨しない。

スコープと法的枠組み:すべては明示的な許諾から始まる

バグバウンティプログラムのルール

バグバウンティに参加する際、まず確認すべきはプログラムのスコープ定義だ。HackerOneやBugcrowdのプラットフォームでは、各プログラムが以下を明記している。

  • In-scopeドメイン:テストが許可される対象
  • Out-of-scopeドメイン:テストが禁止される対象
  • 許可されるテスト手法:自動スキャンの可否、レート制限の上限など
  • Safe Harbor条項:スコープ内の行為について法的追及をしないという宣言

Safe Harborがあるからといって、何をしてもよいわけではない。多くのプログラムは「DoSを発生させるテストは禁止」「1秒あたりXリクエスト以内」といった制約を設けている。プロキシを使ってIPを分散しても、ターゲット全体へのリクエスト総数が制限を超えれば違反である。

ペネトレーションテストの依頼契約

企業から直接依頼を受けるペンテストでは、ルールオブエンゲージメント(RoE)が契約書に含まれる。RoEには通常以下が記載される。

  • テスト期間の開始・終了日時
  • スキャンを許可するIPレンジ(あなたの送信元IPを事前登録)
  • 禁止される攻撃手法(バッファオーバーフロー、エクスプロイト実行など)
  • インシデント発生時の連絡先と対応フロー

レジデンシャルプロキシを使用する場合、送信元IPが動的に変化することを事前にクライアントに説明し、合意を得ておく必要がある。WAFのホワイトリストに依存する環境では、プロキシ経由のトラフィックがブロックされる可能性もあるため、事前調整が不可欠だ。

⚠️ 法的警告: 明示的な許諾なしにウェブアプリケーションをスキャンすることは、日本の不正アクセス禁止法、米国のComputer Fraud and Abuse Act(CFAA)、欧州のComputer Misuse Act等に違反する可能性がある。本稿の技術情報は、スコープが明示された合法的なセキュリティテストにのみ適用すること。

サブドメイン列挙:レジデンシャルIPでWAF検知を回避

サブドメイン列挙は、ペンテストの偵察フェーズで最もリクエスト数が多くなる工程の一つだ。OSINTソースからの受動的収集であればIPは露呈しにらいが、アクティブなDNSブルートフォースやゾーン転送試行では、ターゲットのDNSインフラに大量のクエリを送ることになる。

Amassでのプロキシ統合

AmassはOWASPプロジェクトのサブドメイン列挙ツールで、プロキシ設定をサポートしている。設定ファイルでProxyHatのレジデンシャルプロキシを指定することで、列挙トラフィックを分散IPから送信できる。

Amassの設定ファイル(

~/.config/amass/config.yaml
)に以下を追加する:

# Amass config.yaml — ProxyHat residential proxy
pki:
  ca_bundle: ""
network:
  http_proxy: "http://user-country-US:YOUR_PASSWORD@gate.proxyhat.com:8080"
  https_proxy: "http://user-country-US:YOUR_PASSWORD@gate.proxyhat.com:8080"
  dns_resolver: "1.1.1.1:53"
  timeout: 30

この設定により、AmassのHTTP/HTTPSリクエストがすべてProxyHatのレジデンシャルプロキシ経由で送信される。国コードをターゲットの所在地に合わせることで、より自然なトラフィックパターンになる。

実行コマンド例:

# アクティブ列挙をプロキシ経由で実行
amass enum -active -config ~/.config/amass/config.yaml \
  -d target-scope.example.com \
  -o subdomains.txt

Subfinderとの併用

Subfinderは受動的なソースのみを使用するため、プロキシの必要性は低いが、APIソースへのアクセスでIPベースのレート制限に遭遇する場合はプロキシが有効だ。環境変数で設定できる:

export HTTP_PROXY="http://user-country-US:YOUR_PASSWORD@gate.proxyhat.com:8080"
export HTTPS_PROXY="http://user-country-US:YOUR_PASSWORD@gate.proxyhat.com:8080"

subfinder -d target-scope.example.com -o passive_subs.txt

ウェブ資産発見フロー:プロキシローテーションでコンテンツディスカバリを安定化

サブドメインが特定できたら、次はコンテンツディスカバリだ。隠しパス、API エンドポイント、バックアップファイルなどを発見するこのフェーズでは、ffufやgobusterといったツールが大量のHTTPリクエストを送信する。

ffufでのプロキシローテーション

ffuf-xフラグでプロキシを指定できる。ProxyHatのレジデンシャルプロキシを使用する例:

# ffuf でコンテンツディスカバリ(ProxyHat経由)
ffuf -u https://target-scope.example.com/FUZZ \
  -w /opt/wordlists/seclists/Discovery/Web-Content/common.txt \
  -x http://user-country-US:YOUR_PASSWORD@gate.proxyhat.com:8080 \
  -rate 50 \
  -mc 200,301,302,403 \
  -o ffuf_results.json

重要: -rate 50で1秒あたり50リクエストに制限している。プロキシでIPを分散していても、ターゲットへの総リクエストレートを制御することがペンテストのエチケットである。

スティッキーセッションの活用

一部のテストでは、同じIPからセッションを維持する必要がある。例えば、ログイン後の認証済みスキャンでは、IPが変わるたびにセッションが無効化される可能性がある。ProxyHatではユーザー名にセッションIDを含めることでスティッキーセッションを実現できる:

# スティッキーセッション(同じIPを維持)
ffuf -u https://target-scope.example.com/FUZZ \
  -w /opt/wordlists/seclists/Discovery/Web-Content/common.txt \
  -x http://user-session-pentest01-country-US:YOUR_PASSWORD@gate.proxyhat.com:8080 \
  -rate 30 \
  -mc 200,301,302 \
  -H "Cookie: session=authenticated_token" \
  -o ffuf_auth_results.json

gobusterでのプロキシ設定

gobusterも-pフラグでプロキシをサポートしている:

gobuster dir -u https://target-scope.example.com \
  -w /opt/wordlists/seclists/Discovery/Web-Content/common.txt \
  -p http://user-country-US:YOUR_PASSWORD@gate.proxyhat.com:8080 \
  -t 20 \
  -s "200,301,302"

スキャナートラフィックの偽装:Burp Suite + 上流レジデンシャルプロキシ

手動テストやBurp SuiteのActive Scanを使用する際、データセンタIPからのトラフィックはWAFに「スキャナー」と判定されやすい。レジデンシャルプロキシを上流に配置することで、トラフィックをより自然に見せることができる。

Burp Suiteの上流プロキシ設定

Burp SuiteでProxyHatを上流プロキシとして設定する手順:

  1. Project Options → Connections → Upstream Proxy Serversを開く
  2. Addをクリックし、以下を入力:
    • Destination host: *(すべてのトラフィックを経由)
    • Proxy host: gate.proxyhat.com
    • Proxy port: 8080
    • Username: user-country-US
    • Password: あなたのProxyHatパスワード
  3. 「Use this proxy for all destinations」にチェック

この設定により、Burpから送信されるすべてのリクエストがProxyHatのレジデンシャルIP経由でターゲットに到達する。

Burpのレート制限設定

Active Scanの速度を制御するには、Project Options → Connections → Throttlingでリクエスト間隔を設定する。バグバウンティのスコープで1秒あたり10リクエスト以下が指定されている場合、100ミリ秒の間隔を設定する。

Burp拡張でのIPローテーション自動化

より高度なローテーションを行うには、Burpの拡張機能(PythonやJava)でリクエストごとにProxyHatのユーザー名を変更する方法がある。例えば、リクエストごとにuser-session-{random}-country-USを生成することで、リクエスト単位のIPローテーションが可能だ。

レート制限のエチケット:強力なツールには強力な責任が伴う

プロキシローテーションを使えば、理論上はターゲットのIPベースのレート制限を回避できる。しかし、それをやってはならない。理由は3つある。

  1. 倫理的責任:スコープ契約で指定されたレート制限は、IP単位ではなくターゲット全体への総リクエスト数として解釈すべきだ
  2. 実用的理由:過剰なリクエストはターゲットにDoS状態をもたらし、インシデント対応チームを招集させる——これはあなたのテストが中断されることを意味する
  3. 評判の維持:レート制限を悪用する研究者はプラットフォームから禁止される。バグバウンティは長期的な信頼関係の上に成り立つ

レート制限のベストプラクティス

  • スコープのレート制限を確認し、その50〜70%以下で運用する(余裕を持たせる)
  • ツールの同時接続数(-t-cフラグ)を控えめに設定する
  • 1時間ごとにリクエスト数をログで確認し、上限に近づいていないか監視する
  • 429レスポンスを受け取ったら、即座にスキャンを一時停止し、間隔を広げる

プロキシタイプ別のペンテスト適性比較

ペンテストに最適なプロキスタイプは、テストのフェーズによって異なる。以下の表で比較しよう。

プロキスタイプサブドメイン列挙コンテンツディスカバリ認証済みスキャンWAF回避性コスト
レジデンシャル◎ 最適◎ 最適△ セッション維持要注意◎ 非常に高い中〜高
モバイル○ 良好○ 良好△ セッション維持要注意◎ 非常に高い
データセンタ△ WAF検知リスク△ WAF検知リスク◎ セッション安定✕ 低い

推奨戦略: 偵察フェーズ(サブドメイン列挙・コンテンツディスカバリ)ではレジデンシャルプロキシを使用し、認証済みの手動テストではスティッキーセッション付きのレジデンシャルプロキシまたはデータセンタプロキシを使用する。

OSINT収集におけるプロキシの役割:ターゲットへの帰属を防ぐ

ペネトレーションテストの偵察フェーズでは、OSINT(オープンソースインテリジェンス)の収集も重要な工程だ。Shodan、Censys、PublicWWWなどのプラットフォームにクエリを送る際、あなたの自宅やオフィスのIPがログに残ることを避けるべきだ。

レジデンシャルプロキシを経由することで:

  • ターゲット組織への帰属を防ぐ:ペンテストの実施元が特定されるのを回避
  • 調査対象との接触を最小化:直接のIP接触を避け、OPSECを強化
  • ジオ制限を回避:特定国からのみアクセス可能なOSINTソースにアクセス

curlでの基本的なOSINT収集例:

# Shodan APIクエリをProxyHat経由で実行
curl -x http://user-country-US:YOUR_PASSWORD@gate.proxyhat.com:8080 \
  "https://api.shodan.io/shodan/host/search?query=hostname:target-scope.example.com&key=YOUR_API_KEY"

分散スキャン:レート制限耐性のある脆弱性スキャン

NucleiやNiktoなどのスキャナーを使用する際、単一IPからのスキャンはWAFに検知されやすい。複数のIPにスキャンを分散させることで、検知リスクを下げつつ、スコープ内のレート制限を遵守できる。

セッションIDを使ったリクエスト単位ローテーション

ProxyHatでは、ユーザー名にランダムなセッションIDを含めることで、リクエストごとに異なるIPを取得できる:

# リクエストごとにIPをローテーション(bash + curl)
for i in $(seq 1 100); do
  SESSION="scan-$(openssl rand -hex 4)"
  curl -x "http://user-session-${SESSION}-country-US:YOUR_PASSWORD@gate.proxyhat.com:8080" \
    -s -o /dev/null -w "%{http_code}" \
    "https://target-scope.example.com/page/${i}"
done

このアプローチをNucleiのテンプレート実行に適用するには、プロキシURLを環境変数に設定し、Nucleiの-proxyフラグを使用する:

nuclei -u https://target-scope.example.com \
  -proxy http://user-country-US:YOUR_PASSWORD@gate.proxyhat.com:8080 \
  -rate-limit 20 \
  -severity medium,high,critical

実践的なペンテストプロキシ運用フロー

これまでの内容を統合した、実践的な運用フローをまとめる。

  1. スコープ確認:プログラムルール・RoEを精読し、許可されるレート制限とテスト手法を確認
  2. 受動的列挙(プロキシ任意):Subfinder、AmassのパッシブモードでOSINT収集
  3. アクティブ列挙(プロキシ必須):Amassのアクティブモード、DNSブルートフォースをレジデンシャルプロキシ経由で実行
  4. コンテンツディスカバリ(プロキシ必須):ffuf/gobusterでパス・エンドポイント探索、レート制限を遵守
  5. 手動テスト(プロキシ推奨):Burp Suite + 上流レジデンシャルプロキシでWAF検知を回避
  6. 脆弱性スキャン(プロキシ推奨):Nuclei等をプロキシ経由で実行、レート制限を厳格に管理
  7. 報告:発見事項を責任ある開示プロセスに従って報告

重要な法的注意事項

本稿の内容を最後にもう一度強調する。

  • 明示的な許諾がない限り、いかなるシステムもスキャンしてはならない
  • バグバウンティプログラムのスコープ外のドメインをスキャンすることは、プログラムのルール違反であり、場合によっては違法行為となる
  • プロキシローテーションを使ってレート制限を回避し、ターゲットに過負荷をかけることは、DoS攻撃に該当する可能性がある
  • クライアントとの契約(RoE)で許可された範囲を超えるテストは、契約違反であり法的責任を問われる場合がある
  • 各国の法律(日本の不正アクセス禁止法、米国CFAA、英国Computer Misuse Act等)を理解し、遵守すること
プロキシは道具に過ぎない。 ナイフが料理にも攻撃にも使えるように、プロキシローテーションも合法的なセキュリティテストにも違法な攻撃にも使える。違いは許諾と意図にある。常にスコープ内で、常に責任を持って。

Key Takeaways

  • ペンテストプロキシローテーションは、WAF検知回避とレート制限管理に不可欠——ただしスコープ内のみで使用
  • バグバウンティのレジデンシャルプロキシは、サブドメイン列挙やコンテンツディスカバリでデータセンタIPのブラックリスト入りを防ぐ
  • Amassは設定ファイルで、ffuf-xフラグで、Burp Suiteは上流プロキシ設定でProxyHatを統合可能
  • プロキシでIPを分散しても、ターゲットへの総リクエストレートを制御することがエチケット
  • 明示的な許諾がすべての前提——無断スキャンは犯罪であり、本稿は合法的なテストのみを対象とする
  • スティッキーセッション(user-session-XXX)は認証済みテストで、リクエスト単位ローテーションは偵察フェーズで使い分ける

認定されたセキュリティテストでプロキシローテーションを活用する準備はできたか。ProxyHatのレジデンシャル・モバイル・データセンタプロキシは、柔軟なプランで利用可能だ。また、190カ国以上のロケーションでジオターゲティングにも対応している。

他のユースケースについては、ウェブスクレイピングのユースケースSERPトラッキングのユースケースも参照してほしい。

始める準備はできましたか?

AIフィルタリングで148か国以上、5,000万以上のレジデンシャルIPにアクセス。

料金を見るレジデンシャルプロキシ
← ブログに戻る