Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
IPSpinner — IPSpinnerはローカルプロキシとして動作し、外部サービス経由でリクエストをリダイレクトします。 | Kitploit
ツール/GitHubGitHub/synacktiv/ipspinner
パスワード攻撃ウェブプロキシと傍受IDS/IPS回避ペネトレーションテストクラウドセキュリティレッドチーミング
GitHubsynacktiv/ipspinner

IPSpinner

IPSpinnerはローカルプロキシとして動作し、外部サービス経由でリクエストをリダイレクトします。

リポジトリを見る
12381年前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

🔁 IPSpinner

IPSpinner は、選択したさまざまなプロバイダーにすべての受信リクエストをリダイレクトできるローカルプロキシです。目的は、各リクエストの送信元 IP アドレスをローテーションするパススループロキシを作成することです。例えば、IPSpinner を介してブルートフォース攻撃を実行すると、サーバーは何百もの異なる IP アドレスからリクエストを受信するため、検知を回避するのに役立ちます。

IPSpinner は現在、AWS (API Gateway)、Azure (Cloud Shell)、GitHub (GitHub Actions) に対応しています。

目次

  1. 仕組みは?
    1. 概要
    2. プロバイダーとランチャー別
      1. AWS API Gateway
      2. Azure Cloud Shell
      3. GitHub Actions
    3. ランチャーの比較
  2. インストール方法は?
    1. Go のインストール
    2. IPSpinner のクローンとビルド
    3. ビルドのクリーンアップ
  3. 使い方は?
    1. 概要
      1. コマンドライン引数
      2. 設定ファイル
    2. プロバイダー別
      1. AWS
      2. Azure
      3. GitHub
  4. 詳しい使い方は?
    1. HTTP/2 サポート?

I/ 仕組みは?

1) 概要

図 1: IPSpinner - 全体図 図 1: IPSpinner - 全体図

IPSpinner は、外部サービスを介してリクエストをリダイレクトするローカルプロキシとして動作します。このために、IPSpinner はプロバイダーとランチャーを利用します。

プロバイダーとは、クラウドプロバイダーまたはオンラインサービスプロバイダー (AWS、Azure、GitHub など) に相当し、ユーザーのリクエストを中継できるさまざまなサービス、いわゆるランチャー (AWS API Gateway、GitHub Actions、Azure Cloud Shell など) を提供します。

そのため、IPSpinner を起動するには、ユーザーは使用したいプロバイダーの認証情報と、ランチャーの追加設定を提供する必要があります。複数のランチャータイプを同時に使用でき、IPSpinner は各リクエストに対して利用可能なランチャーの中からランダムに 1 つを選択します。

さらに、IPSpinner はプリロード機能を実装しています。一部のランチャーは、プロキシが新しいホストを検出した場合の再設定遅延を避けるためにプリロードできます。これらのランチャーでは、プリロード手順は推奨されますが必須ではありません。その他のランチャーでは、プリロードは不要です。

2) プロバイダーとランチャー別

i. AWS API Gateway

はじめに

IPSpinner は、リクエストの送信に AWS API Gateway を利用できます。この実装は、受信リクエストをリダイレクトする REST API Gateway を作成する FireProx に基づいています。FireProx は、API Gateway ごとに複数のホストを処理し、新しい機能を実装するために適合されています。要約すると、IPSpinner はリクエストを受信すると、適切な API Gateway インスタンスを選択または作成してリクエストを送信します。次に、レスポンスを収集してユーザーに返します。これにより、対象サーバーはユーザーから直接ではなく、API Gateway からリクエストを受信します。API Gateway はリクエストごとに送信元 IP をローテーションするため、IPSpinner はこの機能を利用して IP アドレスをローテーションします。

図 2: AWS API Gateway - 全体図 図 2: AWS API Gateway - 全体図

次のグラフは、2024 年 10 月に作成されたもので、送信されたリクエスト数に応じた AWS リージョンごとの利用可能な固有 IP アドレス数を示しています。ほとんどのリージョンで 100 を超える IP アドレスが提供されており、複数のリージョンを同時に使用できるため、ユーザーは世界中の数千のアドレスを介してリクエストをプロキシできます。

図 3: AWS API Gateway - リージョンごとの利用可能な IP アドレス 図 3: AWS API Gateway - リージョンごとの利用可能な IP アドレス

最後に、図 4 は、対数スケールの緑色の色レベルで、国ごとに利用可能なアドレス数を示しています。これは、ユーザーがどの大陸のアドレスでも送信元 IP アドレスを偽装できる可能性があることを示しています。

図 4: AWS API Gateway - 国ごとの IP アドレス 図 4: AWS API Gateway - 国ごとの IP アドレス

注目すべき詳細

IPSpinner は、作成された FireProx インスタンスを定期的に削除して更新するローテーション機能を実装しています。次のグラフが示すように、FireProx インスタンスをローテーションすると、新しい IP サブセットが提供される場合があります。ただし、各 AWS リージョンには限られた IP セットしかないため、いずれはローテーションしても新しい IP が提供されなくなります。

図 5: AWS API Gateway - ローテーションプロセス 図 5: AWS API Gateway - ローテーションプロセス

このランチャーはプリロード手順を実装しています。前述のとおり、必須ではありませんが、再設定後の最初の数秒間に発生する再設定の遅延や同期エラーを防ぐことができます。

さらに、API Gateway はデフォルトで X-Forwarded-For ヘッダーを設定します。このヘッダーは削除できませんが、上書きは可能です。したがって、ユーザーは IPSpinner 設定で、各リクエストに対してランダムな IP が選択される IP アドレス範囲 (IPv4 または IPv6 範囲) を指定できます。

ii. Azure Cloud Shell

はじめに

IPSpinner は、リクエストの送信に Azure Cloud Shell を利用します。Azure Cloud Shell は、Azure リソースを管理するための、対話型で認証済みのブラウザアクセス可能なターミナルです。Cloud Shell は、セッションごと、ユーザーごとに提供される一時的なホスト上で実行されます。

そのため、IPSpinner は、Cloud Shell セッションが準備された複数の Azure ユーザーを使用します。その後、各リクエストは初期化された Cloud Shell にリダイレクトされ、IP アドレスをリセットするために更新されます。

図 6: Azure Cloud Shell - 全体図 図 6: Azure Cloud Shell - 全体図

次のグラフが示すように、Cloud Shell セッションを展開できるさまざまなリージョンは、それぞれ数十の IP アドレスを提供します。ユーザーは複数のリージョンを同時に設定して、IP プールを増やすことができます。

図 7: Azure Cloud Shell - リージョンごとの利用可能な IP アドレス 図 7: Azure Cloud Shell - リージョンごとの利用可能な IP アドレス

ただし、IP アドレスは AWS API Gateway よりも集中しています。次の地図が示すように、そのほとんどは米国、ヨーロッパ、インドにあります。

図 8: Azure Cloud Shell - 国ごとの IP アドレス 図 8: Azure Cloud Shell - 国ごとの IP アドレス

注目すべき詳細

Cloud Shell の更新プロセスの遅延のため、リクエストのフローレートを制限することをお勧めします。詳細はランチャーの比較のサブセクションを参照してください。

iii. GitHub Actions

はじめに

IPSpinner は、リクエストの送信に GitHub Actions を利用することもできます。この実装は git-rotate に触発されていますが、キャッチャーサーバーを排除するために完全に変更および適合されています。

IPSpinner は、事前定義されたワークフローテンプレートを持つリポジトリを作成します。次に、各リクエストについて、環境変数を介してリクエスト情報を渡し、ワークフローを実行します。すべてのデータは暗号化され、外部ユーザーが読み取れないようにします。最後に、IPSpinner はワークフローログからレスポンスデータを収集します。

図 9: GitHub Actions - 全体図 図 9: GitHub Actions - 全体図

次の図は、GitHub Actions が何千もの異なる IP アドレスを提供することを示しています。

図 10: GitHub Actions - リージョンごとの利用可能な IP アドレス 図 10: GitHub Actions - リージョンごとの利用可能な IP アドレス

ただし、次の地図は GitHub Actions が米国の IP アドレスのみを提供することを示しています。分析の結果、それらのワーカーは Azure インフラストラクチャ上に展開されているようです。

図 11: GitHub Actions - 国ごとの IP アドレス 図 11: GitHub Actions - 国ごとの IP アドレス

注目すべき詳細

⚠️ さらに、「GitHub は Actions の悪用とスパムを深刻に受け止めており、『スパムユーザー』を追跡する専任チームがいます。」 したがって、アカウント停止の問題を避けるために、ユーザーは自分のアカウントや会社のアカウントでこのプロバイダーを使用してはなりません。

GitHub REST API の 1 時間あたりの制限により、障害を避けるために最大リクエストフローレートを制限する必要があります。詳細はランチャーの比較のサブセクションを参照してください。

3) ランチャーの比較

II/ インストール方法は?

1) Go のインストール

このプロジェクトは go バージョン >= 1.21 でテストされていますが、それより低い go バージョンでも動作する可能性があります。

Go のインストールドキュメント を参照してください。

インストール後、デフォルトの go バイナリが正しいことを確認してください:

root@kitploit:~
$ go version
go version go1.21.1 linux/amd64

2) IPSpinner のクローンとビルド

root@kitploit:~
$ git clone https://github.com/synacktiv/IPSpinner.git
$ cd IPSpinner
$ go mod tidy

$ make build-linux # For Linux AMD64 arch
$ make build-windows # For Windows AMD64 arch

実行ファイルは、Linux ではデフォルトで "ipspinner"、Windows では "ipspinner.exe" という名前になります。

3) ビルドのクリーンアップ

使用後は、次のコマンドでビルドをクリーンアップできます:

root@kitploit:~
$ make clean

III/ 使い方は?

1) 概要

IPSpinner の使い方についてヘルプを表示するには、引数なしでコマンドを実行してください:

root@kitploit:~
$ ./ipspinner -h
    Help will be displayed

すべての情報 (リクエストのリダイレクトを除く) は ipspinner.log ファイルに記録されます。

いくつかの一般的なオプションは引数として利用でき、その他の設定情報は INI 設定ファイルで提供する必要があります。

i. コマンドライン引数

ユーザーは次のコマンドライン引数を指定できます:

一部のグローバルパラメータとプロバイダーパラメータは、INI 設定ファイルで指定する必要があります。設定ファイルは、IPSpinner を実行する前に準備しておく必要があります。その内容については、次のサブセクションで説明します。デフォルトでは、IPSpinner は config.ini という名前の設定ファイルを探します。

https リクエストを処理するために、IPSpinner は認証局 (CA) 証明書とキーを必要とします。ユーザーが証明書を提供しない場合、IPSpinner は自己署名証明書とキーを生成します。ユーザーは --export-ca-cert を使用して生成された証明書を取得できます (例: ブラウザにインポートするため)。それ以外の場合、ユーザーは設定ファイルで独自の CA 証明書とキーを提供できます (次のパートを参照)。

ユーザーは --host と --port でリスニングホストとポートを指定できます。

最後に、3 つの verbose モードが利用可能です:

  • --v: 作成ログを出力します
  • --vv: --v と同じで、リクエストのリダイレクトを出力します
  • --vvv: --vv と同じで、リクエストの詳細情報を出力します

ii. 設定ファイル

次に、INI 設定ファイル のテンプレートがプロジェクトリポジトリで利用可能です。

proxy セクションでは、ユーザーは次のパラメータを指定できます:

その他すべてのセクションは、対応するプロバイダーの章で説明します。

ユーザーは複数のプロバイダーとランチャーを同時に有効にできることに注意することが重要です。IPSpinner は、各リクエストに対して、利用可能なすべてのランチャーの中からランダムに 1 つを選択します。

2) プロバイダー別

i. AWS

AWS の設定パラメータ (aws セクション):


API Gateway の設定パラメータ (aws セクション):

ii. Azure

Azure の設定パラメータ (azure セクション):


Azure Cloud Shell の設定パラメータ (azure セクション):

iii. GitHub

GitHub の設定パラメータ (github セクション):

パラメータ必須デフォルト値説明
username✅GitHub ユーザー名
token✅指定されたユーザー名に関連付けられた GitHub トークン

GitHub Actions の設定パラメータ (github セクション):

パラメータ必須
(ga_enabled=true の場合)
デフォルト値説明
ga_enabled/GitHub Actions ランチャーを有効にします

IV/ 詳しい使い方は?

1) HTTP/2 サポート?

IPSpinner は HTTP/2 プロトコルをサポートしていません。プロキシが最初の TLS 接続を終端するため、プロトコルの利点は失われ、基本的な HTTP/1.1 接続として見えます。

したがって、IPSpinner を Burp Suite と一緒に使用する際に HTTP/2 の問題を避けるには、HTTP/2 クライアントサポートを無効にしてください: 設定 > ネットワーク > HTTP > HTTP/2 > HTTP/2 チェックボックスのチェックを外します。

ツールをダウンロード
AWS API GatewayAzure Cloud ShellGitHub Actions
利用可能な IP アドレス≈ 12,418≈ 276> 6,000
平均応答時間0.46s13.04s21.42s
平均再設定時間なし20sなし
理論上の最大フローレート4,000 ~ 16,000 req/h107 req/h/Cloud Shell インスタンス1,000 req/h
プリロードできる/必要か?✅❌❌
用途: ブラウジング✅❌❌
用途: パスワードスプレー✅✅✅
パラメータ必須デフォルト値
--config❌config.ini
--export-ca-cert❌
--host❌
--port❌8080
--v, --vv, --vvv❌
パラメータ必須デフォルト値説明
preload_hosts_file❌ホストをプリロードできるプロバイダー向けに、プリロードする URL/ホストのリスト
whitelist_hosts_file❌ホワイトリストに登録された URL/ホストのリスト (デフォルトでは他のすべてがブラックリストに登録されます)
blacklist_hosts_file❌ブラックリストに登録された URL/ホストのリスト (ホワイトリストが設定されている場合は無視されます)
ca_cert_file & ca_cert_key_file❌ユーザー提供の CA 証明書 (デフォルトで生成された証明書を置き換えたい場合)
user_agents_file❌リクエストに対してランダムに選択されるユーザーエージェントのリスト
debug_response_headers❌falseプロキシ応答に 2 つのデバッグヘッダー (X-IPSpinner-Provider と X-IPSpinner-Provider-NbTotalReqSent) を追加します
wait_for_launcher_available_timeout❌60ランチャーが利用可能にならない場合にリクエストをタイムアウトさせるまでの秒数
パラメータ必須デフォルト値説明
regions✅リソースをデプロイできるリージョンのカンマ区切りリスト
profile❌使用する AWS CLI プロファイル
access_key✅
(または profile)
AWS ユーザーアクセスキー
secret_key✅
(または profile)
AWS ユーザーシークレットキー
session_token❌AWS ユーザーセッショントークン
パラメータ必須
(ag_enabled=true の場合)
デフォルト値説明
ag_enabled/API Gateway ランチャーを有効にします
ag_max_instances❌5デプロイできる API Gateway インスタンスの最大数 (リージョンごとではなく全体の最大数)
ag_rotate_nb_requests❌5,000API Gateway をローテーションするまでのリクエスト数
ag_forwarded_for_range❌35.180.0.0/16X-Forwarded-For ヘッダー用の IP アドレス範囲 (IPv4 または IPv6 範囲)
ag_instance_title_prefix❌fprAPI Gateway 情報のカスタマイズ
ag_instance_deployment_description❌IPSpinner FireProx ProdAPI Gateway 情報のカスタマイズ
ag_instance_deployment_stage_description❌IPSpinner FireProx Prod StageAPI Gateway 情報のカスタマイズ
ag_instance_deployment_stage_name❌ランダムな英単語 3 つAPI Gateway 情報のカスタマイズ
パラメータ必須デフォルト値説明
admin_email✅
(または accounts_file)
Azure 管理者メール
admin_password✅
(または accounts_file)
Azure 管理者パスワード
tenant_id✅テナント ID
subscription_id✅サブスクリプション ID
accounts_file❌admin_email と admin_password を上書きする、事前作成されたアカウントのリスト (メールとパスワードを 1 行に 1 つずつ)
パラメータ必須
(cs_enabled=true の場合)
デフォルト値説明
cs_enabled/Cloud Shell ランチャーを有効にします
cs_preferred_locations✅Cloud Shell インスタンスをデプロイする場所
cs_nb_instances❌5デプロイする Cloud Shell インスタンスの数